mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
docs(website): add changelog page and publish v0.1.14 notes
This commit is contained in:
31
CHANGELOG.md
31
CHANGELOG.md
@@ -1,5 +1,36 @@
|
||||
# Changelog
|
||||
|
||||
## [0.1.14] - 2026-02-19
|
||||
### Added
|
||||
- Added Claude `/rewind` command support.
|
||||
- Added slash command access in the draft agent composer.
|
||||
- Added `@` workspace file autocomplete in chat prompts.
|
||||
- Added support for pasting images directly into prompt attachments.
|
||||
- Added optimistic image previews for pending user message attachments.
|
||||
- Added shared desktop/web overlay scroll handles, including file preview panes.
|
||||
|
||||
### Improved
|
||||
- Improved worktree flow after shipping, including better merged PR detection.
|
||||
- Improved draft workflow by enabling the explorer sidebar immediately after CWD selection.
|
||||
- Improved new worktree-agent defaults by prefilling CWD to the main repository.
|
||||
- Improved desktop command autocomplete behavior to match combobox interactions.
|
||||
- Improved git sync UX by simplifying sync labels and only showing Sync when a branch diverges from origin.
|
||||
- Improved desktop settings and permissions UX in Tauri.
|
||||
- Improved scrollbar visibility, drag interactions, tracking, and animation timing on web/desktop.
|
||||
|
||||
### Fixed
|
||||
- Fixed worktree archive/setup lifecycle issues, including terminal cleanup and archive timing.
|
||||
- Fixed worktree path collisions by hashing CWD for collision-safe worktree roots.
|
||||
- Fixed terminal sizing when switching back to an agent session.
|
||||
- Fixed accidental terminal closure risk by adding confirmation for running shell commands.
|
||||
- Fixed archive loading-state consistency across the sidebar and agent screen.
|
||||
- Fixed autocomplete popover stability and workspace suggestion ranking.
|
||||
- Fixed dictation timeouts caused by dangling non-final segments.
|
||||
- Fixed server lock ownership when spawned as a child process by using parent PID ownership.
|
||||
- Fixed hidden directory leakage in server CWD suggestions.
|
||||
- Fixed agent attention notification payload consistency across providers.
|
||||
- Fixed daemon version badge visibility in settings when daemon version data is unavailable.
|
||||
|
||||
## [0.1.9] - 2026-02-17
|
||||
### Improved
|
||||
- Unified structured-output generation through a single shared schema-validation and retry pipeline.
|
||||
|
||||
1171
package-lock.json
generated
1171
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -17,6 +17,7 @@
|
||||
"@tanstack/react-start": "^1.120.3",
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0",
|
||||
"react-markdown": "^10.1.0",
|
||||
"wrangler": "^4.59.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
import { Route as rootRouteImport } from './routes/__root'
|
||||
import { Route as PrivacyRouteImport } from './routes/privacy'
|
||||
import { Route as DocsRouteImport } from './routes/docs'
|
||||
import { Route as ChangelogRouteImport } from './routes/changelog'
|
||||
import { Route as IndexRouteImport } from './routes/index'
|
||||
import { Route as DocsIndexRouteImport } from './routes/docs/index'
|
||||
import { Route as DocsWorktreesRouteImport } from './routes/docs/worktrees'
|
||||
@@ -31,6 +32,11 @@ const DocsRoute = DocsRouteImport.update({
|
||||
path: '/docs',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const ChangelogRoute = ChangelogRouteImport.update({
|
||||
id: '/changelog',
|
||||
path: '/changelog',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const IndexRoute = IndexRouteImport.update({
|
||||
id: '/',
|
||||
path: '/',
|
||||
@@ -79,6 +85,7 @@ const DocsBestPracticesRoute = DocsBestPracticesRouteImport.update({
|
||||
|
||||
export interface FileRoutesByFullPath {
|
||||
'/': typeof IndexRoute
|
||||
'/changelog': typeof ChangelogRoute
|
||||
'/docs': typeof DocsRouteWithChildren
|
||||
'/privacy': typeof PrivacyRoute
|
||||
'/docs/best-practices': typeof DocsBestPracticesRoute
|
||||
@@ -92,6 +99,7 @@ export interface FileRoutesByFullPath {
|
||||
}
|
||||
export interface FileRoutesByTo {
|
||||
'/': typeof IndexRoute
|
||||
'/changelog': typeof ChangelogRoute
|
||||
'/privacy': typeof PrivacyRoute
|
||||
'/docs/best-practices': typeof DocsBestPracticesRoute
|
||||
'/docs/cli': typeof DocsCliRoute
|
||||
@@ -105,6 +113,7 @@ export interface FileRoutesByTo {
|
||||
export interface FileRoutesById {
|
||||
__root__: typeof rootRouteImport
|
||||
'/': typeof IndexRoute
|
||||
'/changelog': typeof ChangelogRoute
|
||||
'/docs': typeof DocsRouteWithChildren
|
||||
'/privacy': typeof PrivacyRoute
|
||||
'/docs/best-practices': typeof DocsBestPracticesRoute
|
||||
@@ -120,6 +129,7 @@ export interface FileRouteTypes {
|
||||
fileRoutesByFullPath: FileRoutesByFullPath
|
||||
fullPaths:
|
||||
| '/'
|
||||
| '/changelog'
|
||||
| '/docs'
|
||||
| '/privacy'
|
||||
| '/docs/best-practices'
|
||||
@@ -133,6 +143,7 @@ export interface FileRouteTypes {
|
||||
fileRoutesByTo: FileRoutesByTo
|
||||
to:
|
||||
| '/'
|
||||
| '/changelog'
|
||||
| '/privacy'
|
||||
| '/docs/best-practices'
|
||||
| '/docs/cli'
|
||||
@@ -145,6 +156,7 @@ export interface FileRouteTypes {
|
||||
id:
|
||||
| '__root__'
|
||||
| '/'
|
||||
| '/changelog'
|
||||
| '/docs'
|
||||
| '/privacy'
|
||||
| '/docs/best-practices'
|
||||
@@ -159,6 +171,7 @@ export interface FileRouteTypes {
|
||||
}
|
||||
export interface RootRouteChildren {
|
||||
IndexRoute: typeof IndexRoute
|
||||
ChangelogRoute: typeof ChangelogRoute
|
||||
DocsRoute: typeof DocsRouteWithChildren
|
||||
PrivacyRoute: typeof PrivacyRoute
|
||||
}
|
||||
@@ -179,6 +192,13 @@ declare module '@tanstack/react-router' {
|
||||
preLoaderRoute: typeof DocsRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/changelog': {
|
||||
id: '/changelog'
|
||||
path: '/changelog'
|
||||
fullPath: '/changelog'
|
||||
preLoaderRoute: typeof ChangelogRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/': {
|
||||
id: '/'
|
||||
path: '/'
|
||||
@@ -271,6 +291,7 @@ const DocsRouteWithChildren = DocsRoute._addFileChildren(DocsRouteChildren)
|
||||
|
||||
const rootRouteChildren: RootRouteChildren = {
|
||||
IndexRoute: IndexRoute,
|
||||
ChangelogRoute: ChangelogRoute,
|
||||
DocsRoute: DocsRouteWithChildren,
|
||||
PrivacyRoute: PrivacyRoute,
|
||||
}
|
||||
|
||||
53
packages/website/src/routes/changelog.tsx
Normal file
53
packages/website/src/routes/changelog.tsx
Normal file
@@ -0,0 +1,53 @@
|
||||
import { Link, createFileRoute } from '@tanstack/react-router'
|
||||
import ReactMarkdown from 'react-markdown'
|
||||
import changelogMarkdown from '../../../../CHANGELOG.md?raw'
|
||||
import '~/styles.css'
|
||||
|
||||
export const Route = createFileRoute('/changelog')({
|
||||
head: () => ({
|
||||
meta: [
|
||||
{ title: 'Changelog - Paseo' },
|
||||
{
|
||||
name: 'description',
|
||||
content:
|
||||
'Product updates, fixes, and improvements shipped in each Paseo release.',
|
||||
},
|
||||
],
|
||||
}),
|
||||
component: Changelog,
|
||||
})
|
||||
|
||||
function Changelog() {
|
||||
return (
|
||||
<div className="min-h-screen bg-background">
|
||||
<div className="max-w-4xl mx-auto p-6 md:p-12">
|
||||
<header className="flex items-center justify-between gap-4 mb-8">
|
||||
<Link to="/" className="flex items-center gap-3">
|
||||
<img src="/logo.svg" alt="Paseo" className="w-6 h-6" />
|
||||
<span className="text-lg font-medium">Paseo</span>
|
||||
</Link>
|
||||
<div className="flex items-center gap-4">
|
||||
<Link
|
||||
to="/docs"
|
||||
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
Docs
|
||||
</Link>
|
||||
<a
|
||||
href="https://github.com/getpaseo/paseo"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
GitHub
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<article className="changelog-markdown rounded-xl border border-border bg-card/40 p-6 md:p-8">
|
||||
<ReactMarkdown>{changelogMarkdown}</ReactMarkdown>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -86,6 +86,12 @@ function Nav() {
|
||||
>
|
||||
Docs
|
||||
</a>
|
||||
<a
|
||||
href="/changelog"
|
||||
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
Changelog
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/getpaseo/paseo"
|
||||
target="_blank"
|
||||
|
||||
@@ -13,6 +13,68 @@
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
/* Markdown rendering styles for /changelog */
|
||||
.changelog-markdown {
|
||||
color: rgba(250, 250, 250, 0.82);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.changelog-markdown h1 {
|
||||
color: var(--color-foreground);
|
||||
font-size: 2rem;
|
||||
line-height: 1.2;
|
||||
font-weight: 600;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.changelog-markdown h2 {
|
||||
color: var(--color-foreground);
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.3;
|
||||
font-weight: 600;
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 0.75rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.changelog-markdown h3 {
|
||||
color: var(--color-foreground);
|
||||
font-size: 1.125rem;
|
||||
line-height: 1.4;
|
||||
font-weight: 600;
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.changelog-markdown p {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.changelog-markdown ul {
|
||||
list-style: disc;
|
||||
margin-left: 1.25rem;
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
display: grid;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.changelog-markdown li {
|
||||
padding-left: 0.125rem;
|
||||
}
|
||||
|
||||
.changelog-markdown a {
|
||||
color: var(--color-foreground);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 2px;
|
||||
}
|
||||
|
||||
.changelog-markdown a:hover {
|
||||
color: rgba(250, 250, 250, 0.8);
|
||||
}
|
||||
|
||||
@theme {
|
||||
--color-background: #0a0a0a;
|
||||
--color-foreground: #fafafa;
|
||||
|
||||
4
packages/website/src/types/raw-modules.d.ts
vendored
Normal file
4
packages/website/src/types/raw-modules.d.ts
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
declare module '*.md?raw' {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
import path from 'node:path'
|
||||
import { defineConfig } from 'vite'
|
||||
import tsConfigPaths from 'vite-tsconfig-paths'
|
||||
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
|
||||
@@ -5,9 +6,14 @@ import { cloudflare } from '@cloudflare/vite-plugin'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import tailwindcss from '@tailwindcss/vite'
|
||||
|
||||
const repoRoot = path.resolve(__dirname, '../..')
|
||||
|
||||
export default defineConfig({
|
||||
server: {
|
||||
port: 8082,
|
||||
fs: {
|
||||
allow: [repoRoot],
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
cloudflare({ viteEnvironment: { name: 'ssr' } }),
|
||||
|
||||
Reference in New Issue
Block a user