v1.0.9
Quality of life
2026-05-23
The title actually sticks
Closing the race that was reverting AI-generated chat titles back to the first message a split second after they appeared.
Fixed
- AI chat title race condition. The title generator was running and writing a real title, but the streaming run loop was concurrently saving its own in-memory chat object (whose
title still held the first-message slice) on every token update, clobbering the generated title within milliseconds. The runner's save now merges the latest stored title back in once title generation has completed.
v1.0.8
Quality of life
2026-05-23
Chats get their names back
Auto-generated AI chat titles work again — the title call no longer inherits thinking mode and no longer swallows errors silently.
Fixed
- AI chat titles stuck on the first message. Title generation was firing but silently swallowing every error and inheriting the active model's thinking / high-effort flags, so on Opus-class models the call would stall or return only thinking blocks and the chat would keep showing your first message as its title. The title generator now strips thinking and effort, caps output tokens at 256, and logs failures to the console.
v1.0.7
Quality of life
2026-05-23
It knows where it is
The AI now knows which project it's in, remembers what you tell it across chats, and shows friendlier tool labels in the panel.
Added
- Persistent AI memory. The assistant has new
remember, list_memories, and forget tools. Saved memories are injected into every system prompt so preferences, style rules, and project facts carry across chats and sessions. The prompt nudges the model to call remember proactively whenever you express a lasting preference.
- Project identity in the system prompt. The current project name and whether it's a Patchwork extension (detected via
patchwork.json) are now passed into the AI, so the assistant stops guessing what project you're in.
Changed
- Friendlier tool-call labels. Tool cards in the AI panel now show human phrasing like Checking docs, Searching the web, Remembering instead of raw names like
get_patchwork_docs.
Fixed
- "It thinks I'm in Robsets." The old system prompt used Robsets as a hardcoded example project name and never told the model the real one, so the assistant would assume any project was Robsets. The example is gone; the actual project name is now stated directly.
v1.0.6
Quality of life
2026-05-21
Sharper edges
Collaboration ergonomics and AI responsiveness, plus the first formal changelog.
Added
- Follow-user mode. Click any avatar in the online-users row to mirror their active file and viewport. A topbar pill shows who you're following;
Esc, clicking the pill, or interacting with the editor exits.
- Inline AI actions. Right-click any selection in the editor for Explain, Refactor, Fix bugs, or Write tests. Spawns a fresh AI chat with the snippet pre-filled. If no API key is set, the AI Settings modal opens.
- Automatic model fallback on rate limit. After repeated
429 / 5xx failures, the assistant retries once on the next-cheaper model in the same provider instead of giving up.
- Public changelog at
/changelog, plus CHANGELOG.md and a project-level CLAUDE.md codifying the release workflow.
Changed
- AI brevity. System prompt now defaults the assistant to short replies with no preamble or recap. Long answers only when the user explicitly asks.
- AI date awareness. Today's date and the current year are injected into the system prompt every turn, so the model stops searching for "latest updates 2024".
- Patchwork disambiguation. The assistant no longer confuses this project with the unrelated public
getpatchwork Django tracker or patched-codes framework. Those domains are blocklisted for fetches and web search.
v1.0.5
AI & Collab
2026-05-20
Open the gates
AI gets four more providers and three new tools; collab gets selection sync, server-enforced permissions, and account-wide keymaps.
Added
- Multi-provider AI. OpenAI, Google, xAI, and Mistral on top of Anthropic. Provider-aware coaching prompts; custom provider picker, key field, and toggle switch (no native form controls).
- New AI tools.
fetch_url, web_search, and dispatch_subagent for spawning a focused sub-agent that returns a summary.
- AI chat title generation. The assistant auto-titles each chat after the first user message, provider-agnostic.
- AI history drawer. List past chats, continue, delete, with theme-aware active highlight and smooth open/close.
- Live selection broadcasting. Collaborators now see each other's coloured selection highlights, not just cursors.
- Editor keymaps in account settings. Default, Vim, Emacs, Sublime, or VS Code.
- Unread chat badge on the sidebar chat icon.
- Server-enforced limits. Per-account project cap, file-size cap, path validation, rate limiting, and single-session-per-account-per-project.
Changed
- Member permissions are now enforced on the server, not just gated in the UI. Falls back to role defaults when a permission key is missing.
- Cursor and selection survive autosave trim, and the local caret stays anchored when remote edits land at or after it.
- Remote cursors render as a
::before pseudo-element so they paint instantly without a decoration flash.
Fixed
- Rate-limited / 429 / 5xx provider errors auto-retry up to 5 times with exponential backoff instead of failing the turn.
- Thinking-word animation stopped tearing down on every render; chat re-renders throttled to one per animation frame with per-message DOM diffing.
- Trailing-whitespace trim no longer touches the caret line while you're typing.
v1.0.4
Git
2026-05-13
Real projects, real Git
Pull an existing GitHub repo straight into a new project, and stop reinstalling its dependencies on every run.
Added
- GitHub repo import on project create. Paste a URL into the new-project flow and Patchwork clones it into the workspace.
Changed
- Project workdir is persisted across runs.
npm install is stripped server-side when node_modules already exists, so re-running is fast.
- Preview iframe force-reloads on
server-started instead of waiting for a manual refresh.
Fixed
- Terminal output now scrolls properly at the default panel height; the auto-scroll no longer yanks you back to the bottom while you're reading.
- Git binary resolved via absolute path so clone/push work in restricted environments.
v1.0.3
Extensions
2026-05-06
Extend everything
Extensions get permissions, settings, enable/disable, and four first-party extensions. Plus member permissions, file visibility, password reset, and 2FA.
Added
- Extension settings system. Extensions can declare configurable fields rendered in a settings modal at install time.
- Extension permissions system. Manifest declares scopes; user must confirm on install.
- Enable / disable extensions without uninstalling. Image icons supported.
- First-party extensions: Vanta Black theme, Pomodoro Timer, Git Diff Viewer, Strip Comments.
- Member permissions and file visibility. Owner-configurable per-member toggles; hide specific files or folders from chosen members.
- Remappable shortcuts and a custom editor context menu.
- Custom find / replace widget styled to match Patchwork; replaces Monaco's built-in.
- Forgot password and password reset via Resend.
- Email-based 2FA alongside TOTP.
- Public project explorer with likes, comments, and forks.
- Multi-selection in the file tree.
- Break reminder. Nudge after 1hr of activity with a 15-min grace period; toggle in settings.
- Rate limiting on auth endpoints.
Changed
- Hardcoded dark backgrounds replaced with CSS variables so theme extensions actually theme everything.
- Marketplace search bar stretches to fill the sidebar width; extension cards have more breathing room with a hover lift.
- Sticky scroll background syncs with theme variables instead of using a fixed colour.
- Permission and emoji icons replaced with inline SVGs.
Fixed
- Extension uninstall destroys the iframe immediately instead of requiring a reload.
- Password reset link now points to a working route; reset uses
?reset= to avoid conflicting with OAuth ?token=.
- Reply form on the project explorer no longer hidden by
display:flex overriding the hidden attribute.
v1.0.2
Extensions
2026-05-05
Patchwork is hackable
The extension system lands.
Added
- Extension SDK and runtime. A documented JavaScript API for reading project files, listening to editor events, adding UI, and sending AI prompts.
- Marketplace for browsing, installing, configuring, and publishing extensions, plus a developer docs page at
/extensions-docs.
- Extensions sidebar panel with Installed and Marketplace tabs.
- Platform owner badge on user profiles.
Changed
- Disabled browser autocomplete on inputs across the app for a cleaner look.
v1.0.1
Editor
2026-04-26
A real IDE in a tab
The editor goes from "works" to "feels like VS Code in the browser." The AI agent gets file tools and a shell.
Added
- AI file tools. Claude can read, write, create, and delete files with auto-accept or manual approval, rewind, and live usage tracking.
- AI shell access via a
run_command tool.
- AI history drawer with continue / delete / new-chat.
- VS-Code-style editor pack. Split editor, problems panel, outline, global find & replace, file history, unsaved-dot on tabs, resizable terminal, copy path, diff viewer, file-tree reveal, session restore, rulers, regex/case search, TODO highlighting, bookmarks, Prettier format, git status in tree, env vars manager, ANSI terminal colors, search history, ESLint, color preview, file templates, auto-save on blur, tab scroll arrows.
- @mentions in code comments. Autocomplete inside
// comments, decorated lines, file-tree indicator dot, fast-save on new mention.
- Editor settings panel. Sidebar tab visibility, font family, font size, with custom-styled checkboxes, sliders, and selects.
- Image previews when opening image files.
- Preview iframe proxied through
/preview/:projectId, with URL bar for multi-page nav.
- Run-as-fallback file picker when project type can't be detected.
- Live MD preview, binary viewer, task runner (editor prefs slice).
- Double-click rename and visual commit-diff modal with revert-to-commit.
- Default AI model switched to Sonnet for faster responses.
Fixed
- Cursor decorations cleared when a user switches files so stale cursors don't haunt other files.
- Preview HTML mutation handles gzip / br / deflate properly; framework dev servers (Vite, etc.) load through the proxy with HMR intact.
- Keyboard-shortcut conflicts resolved:
Ctrl+/ toggles comment, Ctrl+Shift+? opens shortcuts, Ctrl+Alt+F runs Prettier.
v1.0.0
Foundation
2026-04-25
Patchwork, day one
The first version. A collaborative code editor running in the browser with the bones of everything that came after.
Added
- Monaco-powered editor with the custom Patchwork dark theme and JWT-backed auth.
- Realtime collaboration. Live cursors with hovering name labels, file-tree presence dots, broadcast on file open, autosave with 1-second debounce, single-session per account.
- Claude AI assistant in the editor with a side panel, resizable sidebar, and switchable models (Opus 4.7, Sonnet 4.6, Haiku 4.5).
- Project chat with line references, autocomplete for file and line refs, and a resizable sidebar.
- Account-based snippets with editor autocomplete via
/alias.
- Invite by link or code. Login prompt on invite link when logged out.
- Landing page, legal pages (Privacy, Terms), favicon, and the Patchwork visual identity.
- Vite build + Cloudflare Pages deployment with Bearer-token auth and a same-origin API proxy.