New
- Chat: agents draw tables, charts, steps and forms in their replies. They use the app's own look whatever model wrote them, and a form collects your choices and sends them back as one answer.
- Sidebar: arrange its sections and build your own. Reorder Chats, Pinned, In work and Projects, and add sections that filter by state, type, linked PR or issue, title or project, or group several projects under one caption. Open it from the display menu with Customize sections.
- Canary builds: pick Stable or Canary updates in Settings > About. Canary is built from main every night, shows what changed, and carries the Android and iOS apps (thanks to @yulia-ivashko).
- Memory: agents can keep what they learn across sessions. Turn on Agent memory tool in Settings > General > OpenChamber Tools; the entries show on the Memory tab of Project knowledge.
- Workflows: an agent can run a multi-step job with a plan you approve and a report at the end. Turn on Workflow tool in Settings > General > OpenChamber Tools.
- Secrets: an agent that needs an API key or a password asks for it on a private card in the chat, and the value stays out of the conversation (thanks to @JosueGalRe).
- Composer: Cmd+Up (Ctrl+Up on Windows and Linux) opens a searchable list of your earlier prompts (thanks to @mattv8).
- Header tabs: a draft gets its own tab, a new-session button starts a session in the tabs' folder, and Cmd+W closes the tab.
- Header: the context ring, Open In and the project action stay in the header in every layout.
- Scheduled tasks: a task can run in its own worktree from a branch you pick (thanks to @ArdaEkiz0), and can move to another project from its editor.
- Settings > Sessions: a Compaction section sets automatic compaction, the room left before the limit, the recent context kept, and background compaction.
- Projects: Add project offers once to import the folders OpenCode already knows (thanks to @cemarta7).
- Agents: an agent can start a new session in Chats (thanks to @cemarta7).
- Mobile: Connect by address and Instances take extra headers for a server behind a protected proxy (thanks to @cemarta7).
- Dictation: an option sends the message when you stop dictating (thanks to @jsuchal).
- Git: in a project with submodules or nested repositories, the Git and Changes views let you pick them (thanks to @gaojunran).
- Usage: the OpenCode Zen workspace shows its requests and spend (thanks to @milesbuckton).
- Settings: a page with settings you have not seen yet carries a
newbadge (thanks to @xhang1108). - Session panel: copy the link of a PR or issue from Context sources or from its open card (thanks to @yulia-ivashko).
- Archive: right-click a session to copy its ID (thanks to @yulia-ivashko).
- Settings > Integrations: Browse integrations opens the integrations catalog.
- Projects: 26 more icons for actions and 28 more symbols for projects.
- Chat: the line above the composer says what the agent is doing in your language, with a thinking joke now and then.
- Push and merge confetti knows holidays and seasons (thanks to @yulia-ivashko).
Improvements
- Mobile: the composer, the chat, drawers and dialogs move together with the iOS keyboard, and taps, drawers and panels respond at once.
- The app is quieter at rest: fewer borders, colour only where it marks a state, one set of shadows, and menus that open on a spring. Message footers show model, agent and duration, with actions on hover.
- Chat: long sessions open faster, long answers draw only what is on screen, and scrolling up on iOS no longer shakes.
- Chat: your place in the chat holds when a turn ends, when you open a row, and while a collapsed turn keeps working.
- Composer: the model, agent and thinking pickers are calmer, and the model list opens fast with many models. The phone's model and agent sheets got the same treatment.
- Composer: the thinking level is remembered per model (thanks to @Hayston1001).
- Mobile: the phone sidebar has the desktop look.
- Files: long file names stay whole and the tree scrolls sideways, and tree folders open and close with the sidebar's motion.
- Panels: an expanded panel can be resized, and one shortcut expands any panel.
- Markdown previews open faster, and dragging the sidebar or a panel follows the pointer.
- Terminal: Cmd+Backspace, Cmd+Left/Right, Option+Left/Right and the scroll shortcuts work like in Ghostty (thanks to @gaojunran).
- Sessions: generated titles are short and follow the language of your message (thanks to @MorningStar0709).
- Settings > About: one row per version with its update action, and two Canary builds of one day read apart.
- Images and files show a loading and a failure state (thanks to @mossgowild).
- Chat: the agent picker warns when the session's folder does not have that agent.
- Usage: Copilot shows credits used and the plan name (thanks to @milesbuckton).
- Linux: middle-click paste and terminal selections use the primary selection (thanks to @mutageneral).
Fixes
- Projects: starting the app no longer adds your home folder, /tmp and every folder you ever used as projects, or brings back projects you removed.
- Folder trust: sessions in a folder you never trusted stay out of In work, Pinned, search and notifications, and moving a session into such a folder asks for trust first.
- MCP: a server you switch off stays off after OpenCode restarts.
- Windows: projects on a network share open again.
- Files: a CSV with many columns opens without freezing the app.
- Mobile: saving an image to Photos on iOS no longer closes the app.
- iPhone: typing / or @ no longer crashes the chat, and the keyboard no longer loses text written after a paragraph break (thanks to @yulia-ivashko).
- Chat: shell output shows while the command runs (thanks to @yulia-ivashko).
- Chat: a chat outside any project no longer offers an agent it cannot run, and an agent you pick holds until your next message.
- Chat: a chat pinned in the side panel lists its own folder's models and agents.
- Chat: interrupted chats resume after the bundled OpenCode restarts (thanks to @noget1200).
- Chat: /compact uses the session's selected model and effort (thanks to @bashrusakh).
- Chat: Alt+Enter inserts a new line (thanks to @Cyneric).
- Chat: a single tilde no longer strikes text through (thanks to @gaojunran), and inline code no longer breaks inside a word (thanks to @bashrusakh).
- Chat: the $ skill list says it is loading while skills are read, and the @ list no longer jumps while you type.
- Chat: a dropped file gives the model its full path (thanks to @DeryFerd).
- Chat: pinned messages stay in their own session, and a child session shows the tool results its parent holds (thanks to @mradwankhalil).
- Chat: a question stays answerable after its turn stops (thanks to @Edigorin), and deleting a long answer no longer crashes the question form (thanks to @alohaninja).
- Chat: a page waiting for your answer scrolls into view after a long reply, and a message sent before the page appeared no longer waits behind it (thanks to @yulia-ivashko).
- /btw: it sees the main chat's latest answer (thanks to @IbrahimKhan12), the favorite-model shortcuts switch its model (thanks to @yulia-ivashko), and notifications open its parent chat (thanks to @Naputt1).
- Chat: the response style stays across turns (thanks to @theacrat).
- Composer: a file over 20 MB is refused when attached, and a large file attached from the desktop can be removed (thanks to @yulia-ivashko).
- Composer: a forked mention no longer sends its file twice (thanks to @xhang1108), issue and PR chips stay with their session (thanks to @Chapax), and comments and quotes go to the composer you are using (thanks to @gaojunran).
- Sessions: a session started with only a comment or an annotation gets a title from that context.
- Sessions: a todo or plan sent to a new session starts on that project's default model and agent.
- Sessions: an agent's message brings an archived chat back to the sidebar (thanks to @yulia-ivashko).
- Sidebar: the row you are reading stays in place when sessions or projects change above it or when you switch Detailed rows.
- Sidebar: subagents stay under their parent (thanks to @IbrahimKhan12), a non-Git project's rows stay on one line and the one-project picker survives a restart (thanks to @Hayston1001), and Archive acts on a session's own subsessions (thanks to @woolsen).
- Mobile: the answer field stays in view when the keyboard opens on a question (thanks to @yulia-ivashko), and the terminal no longer squeezes its text when the keyboard opens.
- Mobile: the return key sends a comment and a long-press newline stays a newline (thanks to @gaojunran).
- Mobile: New chat shows without any project (thanks to @IbrahimKhan12), Open settings opens Settings (thanks to @rebelliard), and project icons show their symbol (thanks to @yulia-ivashko).
- Mobile: the terminal no longer stays blank when the phone's clock is ahead of the server (thanks to @yulia-ivashko).
- Android: a PDF in Files shows its pages (thanks to @yulia-ivashko), pasting an image from the keyboard no longer closes the app (thanks to @mannex111), and read-aloud pauses other audio (thanks to @dmyoung9).
- Voice: read-aloud no longer starts in the background or reads an older answer (thanks to @dmyoung9), and OpenAI-compatible services can use a custom endpoint path (thanks to @MorningStar0709).
- Notifications: phone notifications arrive after a brief network drop (thanks to @yulia-ivashko), an interrupted step no longer alerts as an error (thanks to @gaojunran), and opening a session from a notification no longer reloads the web app (thanks to @ykai55).
- Desktop: Cmd+W closes the side panel's tab and leaves the window open (thanks to @yulia-ivashko), and Restart to Update installs the update already downloaded (thanks to @MLGSW4G).
- macOS: the app asks for Local Network access in its own name, so terminals reach hosts on your network (thanks to @yulia-ivashko). Closing a full-screen window no longer leaves a black screen (thanks to @mossgowild), and a maximized window stays maximized after you minimize it (thanks to @Cyneric).
- Desktop: the dock badge counts only sessions the sidebar shows (thanks to @yulia-ivashko).
- Windows: the window no longer freezes for seconds while Open In looks for apps, and archiving a worktree with long paths finishes (thanks to @yulia-ivashko). SSH remote connect works (thanks to @Pterosaur), and dictation works (thanks to @IbrahimKhan12).
- Git: managed SSH keys with a passphrase work (thanks to @cemarta7), and Sync pulls a clean tree that uses CRLF or Git LFS (thanks to @yulia-ivashko).
- Git: Gitea and Forgejo work behind SSH host aliases and newer Forgejo versions (thanks to @JeremyKennedy), Gitea Actions links open (thanks to @akrhin), and GitHub sign-in honors
XDG_CONFIG_HOME(thanks to @pwuersch). - Terminal: when it cannot connect, it shows an error and Try again (thanks to @yulia-ivashko).
- MCP: Test connection no longer switches off a server it just repaired, a failed server with browser sign-in offers sign-in again, and Submit and Cancel on a server's input form work again (thanks to @yulia-ivashko).
- Extensions: installing, updating or rebuilding an extension reaches every window and device without a reload (thanks to @JosueGalRe).
- Settings: global plugins show when
OPENCODE_CONFIGis set, and providers with only image models show (thanks to @yulia-ivashko). - Settings: select fields show the option's name, and comments in config arrays survive a save (thanks to @IbrahimKhan12).
- Settings: plugin cards are no longer duplicated (thanks to @ChangeHow), and plugins without a pinned version keep updating (thanks to @IbrahimKhan12).
- Small Model: OpenCode Zen free models are no longer offered without a login (thanks to @yulia-ivashko).
- Files: the Wrap lines choice survives a reload.
- Search: file-name search honors the hidden and gitignored toggles (thanks to @xhang1108).
- Worktrees: commands and file search follow a worktree session's folder (thanks to @moczix), and a worktree whose checkout failed can be recovered.
- Scheduled tasks: multiline command prompts keep their full text (thanks to @mpeter), and a dispatched run is marked as sent (thanks to @DeryFerd).
- Projects: a label you typed is kept (thanks to @DeryFerd), and project edits are saved when you leave the editor (thanks to @xhang1108).
- Goal Mode: the goal check waits for commands the agent started in the background.
- Workflows: every run waiting for approval shows a card, and the Workflows panel can decline it.
- Usage: Kimi tries every saved credential (thanks to @NemeZZiZZ), and the MiniMax card says why its limits are missing (thanks to @yulia-ivashko).
- SSH: reconnecting keeps one remote server when the remote profile sets a UI password (thanks to @yulia-ivashko).
- Linux: dev servers published from Docker show in the dev server list, so remote preview can open them (thanks to @IbrahimKhan12), and the startup service runs the new version after an update (thanks to @yulia-ivashko).
SDK
- Services: subscribe to session events from every project with
contributes.sessionEvents, and become a notifications channel next to the phone withcontributes.notifications(thanks to @deatheros). - Trackers: an extension can bring work items from YouTrack, Jira or Plane next to Linear with
provides: ["tracker"]andcontributes.tracker(thanks to @deatheros). - Shared surfaces: key events carry the
keyCodethe viewer's browser computed (thanks to @JosueGalRe). - UI kit: panels match the app's new shadows and badges, and progress reaches 100% only when done.
Misc
- Bundled OpenCode updated to 2.2.5; OpenChamber now needs at least 2.2.4. OpenCode's built-in Claude Agent provider shows with the Claude logo and subscription usage, so the Claude Code plugin card is retired.
- Electron updated to 44.10.
- Canary has its own icon: a yellow canary on a blue cube (thanks to @yulia-ivashko).
- Nix builds take their dependencies from
bun.lock(thanks to @mausch).