docs(website): add changelog page and publish v0.1.14 notes

This commit is contained in:
Mohamed Boudra
2026-02-19 10:07:03 +07:00
parent f1f4afaaa9
commit dd5218ebdb
9 changed files with 1353 additions and 2 deletions

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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": {

View File

@@ -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,
}

View 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>
)
}

View File

@@ -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"

View File

@@ -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;

View File

@@ -0,0 +1,4 @@
declare module '*.md?raw' {
const content: string
export default content
}

View File

@@ -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' } }),