Repository navigation
Releases: chriswritescode-dev/opencode-manager
Releases · chriswritescode-dev/opencode-manager
Release list
OpenCode Manager v1.1.0
Highlights
- Linked OpenCode servers: pair any machine running
opencode servewithocm linkand a QR code, then run sessions, terminals, schedules, multi-runs, goals and permission modes on it from Manager. Linked servers' projects appear on the home page. - Repository secrets and variables: GitHub Actions–style global, repository and environment secrets and variables, mapped through
.ocm/project.jsoninto agent shells, terminals, project actions and sandboxed shells, with secret values masked in tool output. - QR device pairing: Settings → Account → Connect a device signs in a phone or browser with a QR code, each with its own session.
- Sandboxed schedules: a schedule can run each run in its own microVM, with optional CPU and memory limits.
- Voice conversation mode: hands-free talk with the agent from the composer, with replies read aloud (now also on iOS).
- Offline start: the app restores the signed-in session and cached lists before the network answers.
- Sessions tool panel: on desktop the session picker lives in the right tool panel, replacing the Activity tool.
What's Changed
Features
- feat(servers): link remote OpenCode servers with QR pairing (#442, #445): terminals, notifications, permission modes, goals, multi-runs and schedules on linked servers; shared model favorites, recents and variants; a compact server switcher. The separate server page is replaced by linked-server projects on the home page.
- feat(secrets): repository secrets and variables for agent shells and terminals (#432): a Secrets tool on repository pages, a global section in Settings → OpenCode Config, and the env mapping shown in trust review.
- feat(device-pairing): pair phones and browsers with a QR code (#461)
- feat(schedules): run scheduled jobs in a per-job sandbox microVM (#469)
- feat(frontend): hands-free voice conversation mode in the composer (#459)
- feat(frontend): persist the query cache and restore the signed-in session offline (#463)
- feat(sessions): move the session picker into the desktop right tool panel (#471)
- feat(frontend): mobile sessions sheet and session details header (#462), with context usage on the composer model pill.
- feat(frontend): restyle the session transcript as a plain log with collapsible tool details (#457)
- feat(frontend): composer layout refresh and activity scanner under the composer (#454)
- feat(frontend): in-row mobile voice recorder (#456) and mobile add-repo action in the search row (#458)
- feat(sessions): full-screen mobile question sheet with persisted draft answers (#447)
- feat(navigation): drag-resizable desktop sidebar (#443)
- feat(header): move mobile reports into the More menu and compact the header (#444)
- feat(chat): dedicated card for Code Mode
executecalls and images returned by tools (#440) - feat(ocm-cli):
ocm link,ocm login --name, and warp replaces theocmprocess withopencode.
Fixes
- fix(auth): update the auth stack, make session revocation immediate and stop logging tokens (#455); auth rate limiting keys on the socket address only.
- fix: issues found in a full desktop and mobile evaluation (#460): TTS on iOS, STT endpoints with a trailing
/v1, terminal output capture, git identity validation. - fix(events): clear stale pending questions from remote servers (#451, #452)
- fix(ocm-cli): detect the OpenCode service in
ocm link(#449) - fix(sessions): keep the question card within the space above the prompt (#448)
- fix(git): refresh branch labels after branch changes (#439)
- fix(notifications): phrase permission labels without losing acronyms (#466)
- fix(schedules): fill available panel height with the jobs table (#467)
- refactor(activity): remove the compact activity list from the mobile More drawer (#468)
- fix(frontend): collapse the linked-server project header when a tool panel is docked
Upgrade Notes
- Database migrations run on first start: linked servers, session server scope, multi-run and schedule targets, secrets, session device names, push subscription sessions and schedule sandbox config. Migrations only go forward, so back up the data volume first if you might need to roll back to v1.0.1.
- OpenCode 2.1.2 is now the bundled and pinned version (was 2.0.15).
- The server page is gone. Linked servers' projects are on the home page; switch servers from the header or sidebar.
- Session revocation is immediate. Revoking a session or device signs it out at once.
ocm0.4.1 addsocm link, which needs Manager 1.1.0+. Update withpnpm add -g @opencode-manager/ocm-cli.- Installer users: re-run
curl -fsSL https://opencodemanager.app/install | shto update. Source checkouts update as before withgit pulland./scripts/docker-upgrade.sh.
Full Changelog: v1.0.1...v1.1.0
OpenCode Manager v1.0.1
Highlights
- Active work: one place to see which sessions need input, are running, or finished recently, across every repository. It appears as an Activity tool on the desktop tool rail, as an Active tab in the session picker, and at the top of the mobile More drawer.
- Per-session sandboxing: each sandboxed session runs its agent shell in its own microVM, which mounts only that session's repository or worktree. You can toggle it per session from the composer and set CPU and memory per session.
- Agent-built change walkthroughs: a separate walkthrough agent session reads the diff and builds an interactive HTML walkthrough. You can stop it, refine it, or open its session.
- HTML artifacts: an agent can write a self-contained HTML page and show it inline in the chat with the
ocmtool'sshow_artifactaction. - Session picker tabs: switch between Active, Sessions and Projects with
Ctrl+S. - Read what's on screen: leader then
Sreads aloud the assistant messages currently visible.
What's Changed
Features
- feat(activity): surface active work across the session picker, tool rail and mobile (#436, #438): grouped as Needs input, Running and Recent. Subagent work rolls up to its root session, worktree sessions show under the repository that owns them, and the sidebar and repo cards show an activity spinner. The recent window is set in Settings → General → Activity (15 minutes to 24 hours, default 30 minutes).
- feat(sandbox): per-session sandbox VMs with resource settings and provider arbitration (#430):
- One microVM per sandboxed root session; child sessions inherit the setting.
- New sessions are sandboxed by default while sandbox support is on.
- VMs are removed when a session's sandbox is turned off, the session is deleted, or the VM sits idle. A cap limits how many VMs run at once.
- When another sandbox provider such as opencode-forge also wants to wrap a command, one provider is chosen per call, and the tool call badge shows which one ran it.
- feat(walkthrough): build the change walkthrough in a spawned agent session (#435, #437): replaces the stop-by-stop walkthrough. A version appears in the panel as soon as one is published, and the build stops after 15 minutes. The
open_walkthroughtool now waits until the walkthrough is ready. - feat(walkthrough): stop an in-flight change walkthrough generation (#417)
- feat(artifacts): render agent HTML files inline in the session chat (#420): the page renders in a sandboxed frame with Reload and Open in new tab. It must be an
.htmlor.htmfile of at most 5 MB inside the session directory. - feat(sessions): switch between sessions and projects in the session picker (#425)
- feat(tts): play TTS for visible messages with a keyboard shortcut (#426): the floating speaker button also reads the replies on screen when you have scrolled up.
- feat(chat): tailor replies for mobile and text-to-speech (#429): prompts sent from a phone ask the agent for replies that read well on a small screen and aloud.
- feat(markdown): render inline images in messages and markdown files (#424)
- feat(sessions): show background activity for shells and child sessions (#419)
- feat(composer): keep the mobile send button and move dictation into the tools menu (#423)
- feat(workspaces): group multi-run worktrees in the worktrees tab (#415)
- feat(session): show the workspace branch in the session detail header
Fixes
- fix(permissions): prioritize the viewed session and add request context to the permission dialog (#428)
- fix(session): stop the background activity indicator going stale (#431), and follow a moved session's new directory without a reload.
- fix(sse): close the event stream on pagehide and reconnect on bfcache restore (#434)
- fix(sessions): match OpenCode TUI context usage (#421)
- fix(tts): prevent overlapping playback and corrupted audio cache (#416)
- fix(chat): show a stopped message as a small muted status line instead of a large red error
Tests
- test(e2e): Playwright suite for every app route, core session streaming, stop and permission prompts (#422, #427)
- test(backend): isolate the sandbox environment in binary-backed tests (#433)
Upgrade Notes
- Database migrations run on first start: per-session sandbox modes, and new walkthrough storage. Migrations only go forward, so back up the data volume first if you might need to roll back to v1.0.0.
- Existing change walkthroughs are cleared. Walkthroughs are now built as HTML by an agent session, so walkthroughs saved by v1.0.0 are dropped. Generate them again.
- Sandboxing is now per session. With sandbox support on, new sessions are sandboxed by default. Change this with Sandbox new sessions by default in Settings → OpenCode Config → Server maintenance → Sandbox. Each sandboxed session only sees its own repository or worktree, not every project.
- Installer users: re-run
curl -fsSL https://opencodemanager.app/install | shto update. Source checkouts update as before withgit pulland./scripts/docker-upgrade.sh.
Full Changelog: v1.0.0...v1.0.1
OpenCode Manager v1.0.0
Highlights
- Desktop tool panel: Files, Source Control, Terminal, Walkthrough, Preview, MCP, Skills, Actions and Schedules dock in a right-side panel on desktop. Mobile keeps its drawers.
- Change walkthroughs: an agent explains a session's changes stop by stop. You can walk through the session, uncommitted, staged, unstaged, branch or pull request changes, and an agent can open the walkthrough itself.
- Multi-run fusion: combine two to five completed multi-run results into one fused session, from a new runs sheet.
- App-wide keyboard shortcuts, with import of your OpenCode TUI keybinds.
- Model selection that matches the TUI: chat, schedules, agents, the goal auditor and the walkthrough all share the TUI's model preferences, favorites and recents.
/ocm-moveinto worktrees: moving a local session no longer fails when the Manager checkout is dirty, behind or on another branch. The session moves into an OpenCode worktree instead.
What's Changed
Features
- feat(ui): dock repo and session tools in a desktop side panel (#400): the open tool lives in the URL (
?panel=), so it survives reloads and can be linked. - feat(walkthrough): session change walkthroughs (#386, #402, #407, #412): a walkthrough opens on an overview page, then pages through stops. Large diffs are planned once and explained in parallel, four stops at a time, with stops appearing as they finish. Explanations are reused when the code they cover hasn't changed. Choose the source (session, uncommitted, staged, unstaged, branch or pull request), and set a walkthrough model in Settings. The
ocmtool'sopen_walkthroughaction lets an agent open it. - feat(multi-run): fusion and a runs sheet (#386, #391): fuse two to five completed runs with a chosen model and optional instructions, optionally in an isolated workspace. One right-side runs sheet replaces the multi-run and fusion dialogs. A fusion no longer asks permission once for each source workspace.
- feat(schedules): workspace modes and worktree management (#385): each schedule runs in a fresh worktree per run, kept worktrees, one shared worktree, or the repository checkout itself. Its leftover worktrees can be inspected and cleaned up.
- feat(ui): app-wide keyboard shortcuts with TUI keybind import (#401): new actions include clear prompt, toggle terminal, toggle source control and cycle favorite models (Ctrl+R). Focus returns to where it was when an overlay closes.
- feat(sessions): TUI-style session picker (#403): Pinned, Today and Older sections, type-to-filter search, a This project / All scope, and inline pin and delete. Sessions from the project's worktrees and schedule runs are included (#409, #410).
- feat(composer): unified prompt suggestions (#394): one fuzzy-ranked list for commands, agents, skills and files, with
@skillmentions and a mobile insert keybar. - feat(chat): group exploration tool calls (#392): consecutive reads, searches and fetches collapse into one summary line, as in the TUI. Toggle it in Settings.
- feat(ocm): move sessions into OpenCode worktrees (#408):
/ocm-movereplaces the Manager checkout only when it is on the branch, clean and not ahead. Otherwise it reuses a clean worktree on that branch or creates one. A server branch with commits the local branch lacks is never rewound. - feat(tui): session goals, multi-runs and server switching in the ocm TUI (#395, #396):
/ocm-goal,/ocm-multirunand switching servers from inside the TUI. - feat(sidebar): match repo names and debounce session search
Fixes
- fix(models): model pickers no longer stay empty (#413): the model list reloads when the event stream reconnects. Model and provider changes now reach every open tab, including the model pickers in Settings.
- fix(commands): the slash menu no longer gets stuck on built-in commands (#406): command, agent and skill lists reload on reconnect. Changes to them reach every open tab.
- fix(pwa): persistent update banner instead of a toast (#405): a new build shows a status bar with a Reload button that stays until used.
- fix(proxy): remote terminals over the OpenCode proxy (#397): a remote TUI can now open terminals through Manager.
- fix(ocm): scope the repo proxy to the requested worktree (#389): after
/worktreeor/projects,ocmloads sessions, agents, models and config for the selected directory. - fix(permissions): clear expired permission requests (#390): requests the server no longer knows about are dismissed with a notice instead of getting stuck.
- fix(walkthrough): name the selected source in the no-changes message (#411)
- fix(navigation): scope the mobile Files tab to the assistant workspace (#393)
- fix(mobile): tighter repo header actions, and the reports inbox hides when empty (#399)
- fix(composer): keep the mobile caret aligned when command mode toggles
- fix(sidebar): give sessions the spare height and cap the menu section
Refactors
- refactor: unify model selection with the TUI (#387): one provider catalog, one model-preference store in the TUI's
model.jsonformat, and a sharedModelComboboxacross chat, schedules, agents, the goal auditor and the walkthrough.
Docs
- docs(ocm): refresh env and CLI guides (#398):
.env.exampledocumentsOPENCODE_HEALTH_*,OPENCODE_BIN,REPO_BROWSE_ROOTandPREVIEW_PORT. The internal settings API no longer returns stored credentials. - docs: refreshed README (#414)
Upgrade Notes
- Version jump. The planned 0.22.0 was never released, so this release goes straight from v0.21.0 to 1.0.0 and includes all of those changes.
- Database migrations (schedule workspace modes, multi-run fusions, change walkthroughs and walkthrough sources) run on first start. Migrations only go forward, so back up the data volume first if you might need to roll back to v0.21.0.
- ocm-cli 0.4.0 is published with this release and pairs with Manager 1.0.0 for
ocm push,ocm pulland/ocm-move. On those commands Manager 1.0.0 tells ocm-cli 0.3.0 to upgrade, and ocm-cli 0.4.0 reports when a Manager is too old. Update withnpm i -g @opencode-manager/ocm-cli@latest. - Installer users: re-run
curl -fsSL https://opencodemanager.app/install | shto update. Source checkouts update as before withgit pulland./scripts/docker-upgrade.sh.
Full Changelog: v0.21.0...v1.0.0
OpenCode Manager v0.21.0
Highlights
- One-line install —
curl -fsSL https://opencodemanager.app/install | shsets up and starts OpenCode Manager with Docker. No clone and no.envrequired. - Integrated terminal and project actions — run shells, dev servers and watchers from the WebUI, including on mobile.
- Session automation — per-session auto-accept, session goals that keep working until an objective is met, and multi-run across up to five models.
- Expanded source control — worktrees from existing branches, merge or cherry-pick integration, stashes, conflict continue/abort, AI commit messages and git identities.
- Docs moved to opencodemanager.app/docs.
What's Changed
Features
- feat(docker): one-line installer and release Compose file (#384) —
scripts/install.shchecks for Docker and Compose v2, installs into~/opencode-manager(override withOCM_DIR), and asks before sharing anything from the host: importing your OpenCode config and state, mounting a repos folder, and phone/LAN sign-in. Re-running it updates to the latest release. The newdocker-compose.release.ymlruns the published image under the Compose project nameocm; a checkout'sdocker-compose.ymlkeeps building from source. The installer refuses to install over a source checkout or next to a running install, so it never takes over existing data. - feat(docker): generate
AUTH_SECRETautomatically — WhenAUTH_SECRETis unset, the container generates one on first start and stores it in the data volume at/app/data/.auth-secret(mode 0600), so it survives restarts and updates. AnAUTH_SECRETyou already set keeps taking priority. - feat(terminal): integrated terminal (#381) — Open terminals for a repository or session directory from the sidebar or the More drawer, with tabs, confirmation before closing a running shell, and exit codes. Terminals are OpenCode PTYs, so they reattach and replay output after a browser reload. A mobile key bar adds Esc, Tab, Ctrl, arrows and
| ~ /. Terminals receive the repository's GitHub token, soghworks without extra setup. - feat(project-actions): run and stop project commands (#381) — Define dev servers, build watchers and test runners per repository, either as personal actions or in a committed
.ocm/project.json, and run them from the header menu. URL templates support{worktree}and{branch}, and local dev URLs open in the Preview panel. - feat(ui): preview port menu and terminal auto-start — The Preview panel gains a port menu, and opening the terminal starts a shell when nothing is running in that directory.
- feat(sessions): permission modes (#379) — Choose ask or auto per session, with a default for new sessions. Auto answers each permission request from the backend. Child sessions inherit their root's mode, forks copy it, and scheduled runs and agent-created sessions always ask.
- feat(sessions): session goals (#379) — Arm a goal in the composer and the session keeps going until an auditor model reports it done or blocked, within continuation and token limits. Goals can be paused, resumed or cancelled, recover after a restart, and send outcome notifications.
- feat(sessions): multi-run (#379) — Run one prompt on up to five models in parallel from the repo page, optionally each in its own OpenCode workspace, and track each run's status, then open or discard it.
- feat(ocm): session management for the assistant (#379) — The
ocmtool can list, create, follow up on, read replies from and fork sessions, with a matching assistant skill. - feat(ocm): let the assistant clone repositories (#382) — The assistant can add a repository from an HTTPS or SSH URL, with an optional branch and directory name. This reuses the Add Repository flow, so deduplication, SSH setup and rollback behave the same.
- feat(git): worktrees, integrate and branch management (#380) — Create worktrees from a new branch or an existing local or remote branch. Bring a worktree branch into a target branch by merge commit or cherry-pick. When deleting a worktree, choose whether to keep its branch, delete it locally, or delete it locally and on the remote. Rename and delete branches; the current branch and branches checked out elsewhere are protected.
- feat(git): stashes and conflict handling (#380) — A stash tab shared across a repository and its worktrees (push, apply, pop, drop). Detects an in-progress merge, rebase, cherry-pick or revert, lists the conflicted files, and lets you continue, abort, or hand the conflicts to an agent.
- feat(git): AI commit messages and identities (#380) — Generate a commit message from staged changes. Set a default git identity and saved presets, applied per repository and shared by its worktrees.
- feat(frontend): mobile composer tools menu and base branch select
- feat(schedules): read aloud playback on scheduled run reports
Fixes
- fix(git): guard remote branch deletion and skip applied cherry-picks — A remote branch is deleted only when its upstream has the same name, and without force only when it is merged, so pushed unmerged commits are not lost. Cherry-pick integration skips commits already on the target and merge commits.
- fix(sessions): prevent duplicate goal starts and lost autosave updates
- fix(schedules): open the repo session for finished worktree runs — Open session now finds the run's session after its worktree is cleaned up.
- fix(terminal): larger mobile key bar keys, and the dialog stays above the keyboard
- fix(pwa): maskable icons and corrected branding metadata
- fix(git): detect repositories reached through symbolic links
- fix: documentation drift and phone layouts — Source control tabs and commit rows fit on phone widths.
Refactors
- refactor(ui): unify branch pickers into a searchable BranchCombobox — Used by the worktree, integrate, multi-run and schedule dialogs.
- refactor(git): typed
GitOperationErrorwith one route helper for git error mapping
Docs
- docs: move documentation to opencodemanager.app/docs and refresh branding — The in-repo MkDocs site is removed.
Upgrade Notes
- Existing installs need no changes. A source checkout updates as before with
git pulland./scripts/docker-upgrade.sh. YourAUTH_SECRETin.envis still used, so nobody is signed out. - Database migrations 025–027 (permission modes, session goals, multi-runs) run on first start. Migrations only go forward, so back up the data volume before upgrading if you might need to roll back to v0.20.0.
- New port 5004 — Compose now publishes the Preview gateway on 5004. If that port is already in use on your host, the container will not start. Remap it in
docker-compose.override.ymlwithports: !override, which replaces the whole list, so repeat every port you need (5003,5100–5103). A plainports:override adds to the list and keeps5004:5004. When serving over HTTPS (for example, through a Cloudflare Tunnel), setPREVIEW_PUBLIC_URL, and never add it toAUTH_TRUSTED_ORIGINS. - Installer vs. checkout — The installer uses the Compose project name
ocm, so its volumes are separate from a checkout's. Switching from a checkout to the installer starts with empty data.
Full Changelog: v0.20.0...v0.21.0
OpenCode Manager v0.20.0
What's Changed
Features
- feat(themes): apply OpenCode color themes app-wide with a settings picker (#364) — Vendors the 36 OpenCode theme palettes into the shared package (synced via
pnpm themes:sync), adds acolorThemepreference, and applies the theme across messages, repos, sessions, settings, agent colors, git status, and diff viewers through a ThemeProvider. Adds a theme picker to General settings; model quick-select follows the active theme (fixes #355). - feat(themes): drive code block syntax highlighting from active theme — Code blocks now use the active theme's syntax colors.
- feat(files): fullscreen preview, relative markdown links, and preinstalled Chromium (#369) — Desktop file preview gains a fullscreen toggle with a minimal close control. Relative and absolute markdown links resolve against the previewed file and open in the file browser, while external links open in a new tab. Playwright and Chromium are preinstalled in the Manager image so agents can run browser automation without a project-local install.
- feat(opencode-config): redact secrets and add MCP listing to the internal config API (#366)
- feat(schedules): attach MCP servers to scheduled runs
- feat(schedules): add unread run report notifications and run search
- feat(schedules): open repo session with run context for finished worktree runs
- feat(opencode): surface server startup and recovery failures in-app
- feat(commands): align built-in slash commands with OpenCode v2 — Replaces the built-in command list with one typed registry. Removes the broken themes/share/unshare/editor entries, and server and custom commands now win on a name clash. Adds
/copy,/btw,/rename,/fork(message picker),/timeline,/model,/agent,/variants,/mcp,/skills,/settings, and/connect./modelworks while a response is running, and attachments are kept when a built-in command is submitted. - feat(frontend): default sidebar sections open and theme toasts — Sidebar sections are tracked independently and open by default; toasts use app color tokens and the selected theme mode.
Fixes
- fix: stabilize scheduled runs and background task tracking (#365) — Routes directory-less session events to backend listeners so scheduled runs finish and failure push notifications fire. Background shell status is resolved from the transcript when OpenCode no longer lists the shell, and a kill is no longer reported as completed. Child-session reconciliation is tightened, finished background tasks are hidden, and long dialog titles are clipped.
- fix(files): resolve workspace paths and add sandboxed HTML preview (#367) — Accepts workspace-absolute paths, serves raw content under a CSP sandbox, previews HTML in a sandboxed iframe with a raw toggle, and fixes file-click path resolution and initial directory navigation.
- fix(files): skip broken symlinks during directory scans
- fix(navigation): show Assistant sessions in the sidebar and repo switcher (#368)
- fix(opencode-config): reject redacted placeholder in raw-text config writes
- fix(opencode): harden supervised server startup failure diagnostics
- fix(commands): run multi-line and Enter commands, restore focus, refresh forks — Multi-line commands run instead of being sent as text, a complete command name runs on Enter, prompt focus is restored when a session opens or a dialog closes, and forked sessions appear in the sidebar immediately.
- fix(schedules): run reports and history — Report links open in place, schedule notifications route to the run report, older run links resolve, session lookups are indexed, local report links are intercepted while repo data loads, and cached reports stay visible after polling errors.
- fix(schedules): use real row buttons and correct run timestamps — Rows are accessible buttons, the active run stays resolvable when filtered out, and
startedAtis shown consistently. - fix(schedules): mobile layout — Improves the run history and table layouts, applies tab bar padding to scrollable panels, and lets drawer content scroll under the safe area.
- fix(frontend): keep sidebar state usable when localStorage throws
- fix: reconcile documentation guarantees and enforcement (OM-15)
Refactors and Style
- refactor(frontend): drop sidebar action bus and primary CTAs
- refactor(schedules): improve mobile table layout and extract tabbar padding utility
- style(frontend): apply thin theme-matched scrollbars globally
Docs
- docs: refresh screenshots, trim feature docs, and drop the New Repo sidebar CTA (#363)
- docs: add theme showcase video to README
- docs: correct --create push behavior (OM-15)
Full Changelog: v0.19.1...v0.20.0
OpenCode Manager v0.19.1
What's Changed
Features
- feat(session): surface background shell and subagent work (#360) — Surfaces background shell and subagent work in the session view: a background-work bar, live shell tracking over SSE, and projection support for background tool calls.
- feat(sidebar): add repo-grouped session navigation with live status (#361) — Adds a searchable, collapsible session tree to the desktop sidebar grouped by repository with pinned and time-bucketed ordering, per-session busy/retry/compact status from a shared SSE-fed store, shared navigation components for the desktop tree and mobile repo sheet, a Git tab in the mobile repo tab bar, and a shared relative-time formatter.
- feat(sidebar): make desktop sidebar sections mutually exclusive — Replaces independent per-section collapse state with an accordion hook so opening Sessions or Menu closes the other.
- feat(sidebar): add loading state to new session button and reposition repo toggle — The new-session button shows a spinner and disables while creation is pending, and the repo expand/collapse toggle moves to the leading edge of the repo header.
CI
- ci(ocm-cli): publish via npm OIDC trusted publishing
Full Changelog: v0.19.0...v0.19.1
OpenCode Manager v0.19.0
What's Changed
Features
- feat(opencode): migrate OpenCode Manager to OpenCode 2 (#359) — Adopts the OpenCode 2 API surface end to end:
@opencode/client@2.0.15becomes the single typed contract, with a Manager-owned binary installer that downloads fromopencode.ai/files/bin, an always-set server password, location-scoped requests viax-opencode-directory, and V2 event aggregation, restart resume, schedules, git worktrees, provider/OAuth integrations, and MCP OAuth relay. Generated plugins are rewritten as V2{ id, setup(ctx) }modules installed inopencode/plugins/, the manager tool moves to the V2 tool API with a JSON Schema input, the frontend moves to a singleopenCodeApifacade and a V2 session transcript projector, and config is read fromopencode.json/opencode.jsonconly with a legacyconfig.jsonfolded automatically. - feat(ocm-cli): add
ocm installvendored setup command (#359) — Vendors the CLI and TUI plugin into the OpenCode config directory in one idempotent step: it copies the package intoplugin/ocm-cli, registers./plugin/ocm-cli/distincli.json(comment-preserving), and links~/.local/bin/ocm. TheocmCLI also moves to attaching viaopencode --serverthrough a repo-scoped proxy and moving sessions with V2 export/import.
Full Changelog: v0.18.0...v0.19.0
OpenCode Manager v0.18.0
What's Changed
Features
- feat(config): support layered OpenCode config sources with revision-guarded saves (#358) — The global OpenCode configuration is now a merged set of recognized sources in OpenCode order (
config.json,opencode.json,opencode.jsonc), with comment-preserving writes into the preferred source, source-set revision checks that reject stale saves, shadowed-removal rejection, and last-known-good recovery across every source.
Bug fixes
- fix(schedules): fall back to the config default model when an override is gone (#356)
- fix(download): keep iOS home screen app saves in-app via the share sheet (#353)
- fix(session): load more pages when filtered list underfills viewport (#351)
Refactors
- refactor(config): make on-disk opencode.json the single source of truth (#354) — Drops the
opencode_configstable, named profiles, and per-repo config switching; reads and writes go through one file owner and one apply owner. - refactor(settings): redesign OpenCode settings with shared collapsible sections
- refactor(settings): remove command slash prefix and collapse mobile row actions
Build
- build(docker): bake chromium runtime libs and refresh pinned tools (#357)
- build(docker): exclude nested node_modules and scratch dirs from build context
Full Changelog: v0.17.5...v0.18.0
OpenCode Manager v0.17.5
What's Changed
Features
- feat(source-control): edge-anchored sidebar toggle, branches header cleanup, orange current-branch accents (#349) — Edge-anchored sidebar toggle, branches header cleanup, and orange current-branch accents.
- feat(notifications): target one tab on click, deep-link worktree sessions, action-first payload — Notification clicks now target one tab, deep-link into worktree sessions, and carry an action-first payload.
- feat(ocm-move): plan worktree mirror targets and stream move progress (#345) — ocm-move plans worktree mirror targets and streams move progress.
Bug fixes
- fix(sandbox): open up corepack cache to exec user, pin uv, bump guest image
- fix(sandbox): accept OpenCode and forge worktrees as sandboxed project roots
- fix(mobile): show branch label in repo quick switch sheet so worktrees are distinguishable (#346)
- fix(sandbox): mount agent tmp, tool-output, and global skills into the guest and add missing network tools
- fix(sandbox): pin the guest pnpm store via PNPM_CONFIG_STORE_DIR
Full Changelog: v0.17.2...v0.17.5
OpenCode Manager v0.17.2
What's Changed
Features
- feat(settings): add manager logs viewer (#344) — Settings gains a manager logs viewer backed by backend log capture, with a layout that works on mobile and renders full-height output.
- feat(sandbox): boot the shared microVM at startup when sandboxing is enabled — Startup and the enforcement toggle now run the same ensureWorkspaceSandbox path a command triggers, so the image pull, microVM boot, attestation, and exec-user provisioning are done before the first command instead of on it. One microVM serves every repo and schedule worktree.
- feat(sandbox): cache the guest image at startup instead of on first command — The configured guest image is pulled in the background at Manager boot and when enforcement is switched on, so a sandboxed command no longer pays the multi-gigabyte download. msb pull is a no-op once cached, startup is never blocked by it, and a command racing the pull joins the same in-flight boot.
- feat(sandbox-image): align guest toolchain with Manager image
- feat(source-control): add branch search filter
Bug fixes
- fix(sandbox): wait for guest agent, verify exec user provisioning, pin rebuilt image (#343) — Exec-user provisioning now gates on guest-agent readiness bounded by SANDBOX_START_TIMEOUT_MS instead of racing boot, the canonical shell spec is derived from the create args so msb 0.6.15 recordings match attestation, spawned commands close stdin so msb exec no longer hangs waiting for EOF, provisioning attempts are serialized and background retries cancelled on stop, and the rebuilt guest image digest is pinned.
- fix(sandbox): pin the guest image by digest so rebuilds are adopted — msb caches images by reference and pull without --force never contacts the registry, while attestation compares the reference string, so a floating tag kept a stale guest image forever while still passing attestation. The default is now pinned to the published index digest, making IfMissing pull the new image and forcing the running microVM to be recreated on deploy.
- fix(sandbox): make the guest toolchain and sudo usable by the exec user — Writable guest HOME and shared COREPACK_HOME, bunx exposed, npm/pnpm global installs redirected to a PATH dir, Debian's externally-managed pip guard lifted, and the toolchain verified as an unprivileged uid at build time. passwd/group/shadow entries are provisioned for the numeric exec uid at sandbox create, start, and Manager boot so passwordless sudo works in the guest.
CI
- ci: remove the Sandbox Image workflow and document the local build
Full Changelog: v0.17.1...v0.17.2