Files
openchamber/packages/vscode
Bohdan Triapitsyn c73ab9cbd5 feat(vscode): startup parity + workspace-grouped session list (#1658)
* perf(vscode): gate API readiness and coalesce duplicate startup reads

Bring the VS Code bridge runtime to parity with the web startup
optimizations (PR #1650), which were web/desktop-only.

waitForApiUrl now hands out the OpenCode API URL only once the manager
reports 'connected', instead of as soon as getApiUrl() exposes
server.url. The URL is available the moment the process is spawned —
before waitForReady confirms it can serve and during a workspace-switch
restart (stale port) — so URL-presence alone let the bridge forward to a
not-yet-ready OpenCode and surface 502s. Gating on connected status
mirrors the web proxy's isOpenCodeReady hold. Also fail fast on 'error'
status so a missing CLI doesn't burn the full 30s timeout.

Coalesce concurrent identical GET reads (config/path/agents/agent/
project/command) at the bridge proxy so the single OpenCode process
serves them once. On cold start the webview's sync bootstrap and config
store fire these reads in parallel with no shared dedup; this is the
extension-host analog of the runtimeFetch coalescer. Shared reads carry
no AbortController so one caller's abort can't strand the others, and the
entry clears as soon as it settles (never serves stale).

* perf(vscode): fade the startup splash once mounted + connected, not on live fetch

The webview's initial-loading overlay held until a successful live
/api/config/providers AND /api/agent fetch completed. After the cache
hydration work those live reads are the slowest cold-start tail — the UI
underneath already paints pickers and the sidebar from cache and refreshes
in the background — so gating the splash on them kept it spinning long
after the app was usable.

Fade the overlay as soon as the UI is mounted and OpenCode is connected.
Per-widget loaders convey any remaining background refresh, matching how
web/desktop (which have no such splash) already behave. Removes the now
-obsolete bootstrapProvidersReady/AgentsReady/Failed tracking and
recordBootstrapFetch. Connection error/disconnected splash messages are
unchanged.

* fix(vscode): include captured OpenCode output in spawn-timeout error

When the managed OpenCode server fails to emit its 'listening' line within
the start timeout, the error discarded everything the process printed to
stdout/stderr — so the status report showed a bare 'Timeout waiting for
server to start' with no clue whether the process hung, crashed silently,
or printed a config/auth error. The exit path already includes the output;
the timeout path now does too (or notes that nothing was printed).

* feat(vscode): workspace-grouped session list with working folders, pinning, and archived toggle

Replace the flat multi-workspace session list with the grouped project view,
using each open VS Code workspace folder as a header (no per-worktree
subgroups). This restores native folder and pin support, which the flat list
silently dropped, and fixes the clipped left padding on session rows.

- Group sessions strictly by open workspace; funnel all non-archived sessions
  into the workspace's group so they no longer fall into the archived bucket.
- Keep the project/group/folder + buttons but make them open a draft in the
  correct workspace and navigate to chat; hide the project actions (...) menu,
  which isn't relevant in VS Code.
- Force the minimal single-line row layout (the second metadata row is
  redundant under workspace headers) and drop the per-row tooltip.
- Add a show/hide archived toggle next to the archive-all control, since the
  VS Code header has no display-mode menu.
- Size the hover action reveal so the timestamp clears the row buttons.
2026-06-15 13:02:26 +03:00
..
2025-12-13 16:34:17 +02:00
2025-12-13 16:34:17 +02:00
2026-06-11 01:42:41 +03:00
2025-12-25 17:57:31 +02:00

OpenChamber VS Code Extension

GitHub stars GitHub release Discord Support the project

OpenCode AI coding agent, right inside your editor. No tab-switching, no context loss.

VS Code Extension

Like the extension? There's also a desktop app and web version with even more features.

What you get

  • Chat beside your code — responsive layout that adapts to narrow and wide panels
  • Agent Manager — run the same prompt across multiple models in parallel, compare results side by side
  • Right-click actions — add context, explain selections, and improve code in-place
  • Click-to-open — file paths in tool output open directly in your editor; edit-style results land in a focused diff view
  • Session editor panel — keep chat sessions open alongside files
  • Theme-aware — adapts to your VS Code light, dark, and high-contrast themes

Plus everything from the shared OpenChamber UI: branchable timeline, smart tool UIs, voice mode, Git workflows, and more.

Commands

Command Description
OpenChamber: Focus Chat Focus the chat panel
OpenChamber: New Session Start a new chat session
OpenChamber: Open Sidebar Open the OpenChamber sidebar
OpenChamber: Open Agent Manager Launch parallel multi-model runs
OpenChamber: Open Session in Editor Open current or new session in an editor tab
OpenChamber: Settings Open extension settings
OpenChamber: Restart API Connection Restart the OpenCode API process
OpenChamber: Show OpenCode Status Debug info for development or bug reports

Right-click menu

Select code in the editor, right-click, and find the OpenChamber submenu:

Action Description
Add to Context Attach selection to your next prompt
Explain Ask the agent to explain the selected code
Improve Code Ask the agent to improve the selection in-place

Configuration

Setting Default Description
openchamber.apiUrl (empty) URL of an external OpenCode API server. Leave empty to auto-start a local instance.
openchamber.opencodeBinary (empty) Absolute path to the opencode CLI binary. Useful when PATH lookup fails. Requires window reload to apply.

Requirements

  • OpenCode CLI installed and available in PATH (or set OPENCODE_BINARY env var)
  • VS Code 1.85+
Development
bun install
bun run vscode:dev

bun run vscode:dev now starts watchers + opens an Extension Development Host automatically. Webview UI changes use Vite HMR automatically.

Optional overrides:

  • OPENCHAMBER_VSCODE_BIN=cursor bun run vscode:dev
  • OPENCHAMBER_VSCODE_DEV_WORKSPACE=/path/to/workspace bun run vscode:dev
  • bun run vscode:dev /path/to/workspace

To package manually:

bun run --cwd packages/vscode build
cd packages/vscode && bunx vsce package --no-dependencies

Install locally: code --install-extension packages/vscode/openchamber-*.vsix

License

MIT