Repository navigation
Releases: chriswritescode-dev/opencode-forge
Releases · chriswritescode-dev/opencode-forge
Release list
v1.2.6
Host
- V2 tools are now registered per location and each call is routed to the instance registered for the calling session's location, so a session in another checkout no longer executes against the registering plugin instance. Unregistered locations fail closed with a retryable error.
- A failed tool registration at an already-registered location keeps the previous working registration instead of removing it.
- Setup failures after tool registration tear down the tools, core resources, and RPC registration instead of leaving a half-initialized instance wired into the process-wide location registry.
v1.2.5
Goals
/goalruns an objective as a sequence of chunk loops.architect-autoplans each next chunk in a detached checkout of the previous chunk tip, so chunks stack as branches and the user's main checkout is never touched.goal-statusandgoal-cancel, with amaxChunkscap and pause/restart recovery. Goals and chunks are stored with compare-and-set stage transitions.- Replaces
execute-goalgoal loops andlaunch-groupfeature groups. Migrations 150–153 remove the old goal-loop and feature-group tables. - Dashboard: the Groups section becomes a Goals section with per-goal chunk detail.
Upgrade note. Migration 150 deletes every old goal-kind loop row, including running or restartable ones, and migration 151 drops the feature-group tables. Orphaned worktrees are swept without a commit, so uncommitted work in those loops is lost. Finish or cancel any old goal loops before upgrading.
Architect
- The architect now settles the implementation route before planning: capture the goal, research, narrow, design, store, conclude.
- One grouped
questionbatch per round, with 2–4 research-backed options per route decision and the recommendation first. The stored plan records each decision and its source, andarchitect-autotreats them as binding for later chunks.
Loop
- Handoffs no longer terminate while loop sessions or subagents are still busy.
Sandbox
- Image adds Ghidra, JDK 21, and REA.
- The Rust toolchain moves off the cache disk.
v1.2.4
TUI
- Resubscribe RPC event streams after they end and re-read the state they
drive, so the loop sidebar, auto-approve, and host-sandbox state recover on
their own after a dropped connection instead of going stale until restart
Sandbox
- Repeat the host environment note on every request while the sandbox is off
- Warn that dependency directories and native build output created in the
other environment may be built for the wrong OS or architecture and must be
deleted and rebuilt rather than only reinstalled
v1.2.3
Sandbox image
- Add the GitHub CLI (
gh) and Hugging Face CLI (hf) - Add
git-lfs(system-wide filters),rsync,sqlite3, andpython3-venv
Loop
- The post-action phase waits for all sessions and subagents to settle and
requires a completion marker before terminating, re-prompting up to three times
v1.2.2
Highlights
- Host sandbox menu: the TUI's
Toggle host sandboxcommand is now aHost sandboxmenu that sets CPUs, memory, and LAN access for the project's host sandbox and applies them to a sandbox that is already running. Settings persist per project; a CPU or memory change restarts the sandbox in place, and a LAN change recreates it (confirmed first) because msb fixes network policy at create time. - LAN access control:
sandbox.network.allowLan(default off) opens sandbox egress to the local network, and both host and per-loop sandboxes can override it. Loop sandboxes gain a LAN access row in the loop settings submenu. - Playwright Chromium replaces Obscura in the sandbox image, exposed as
chromium. Google publishes no linux/arm64 Chrome build, so Chromium is the closest Chrome-compatible browser on arm64 hosts and the arch-matched build on amd64. - Auto-approve honours explicit
askrules: with per-session auto-approve on, everyaskresolves to allow unless it matches anautoApprove.denyrule; OpenCode deny rules are still never overridden. - Sandbox context note reports the sandbox's CPUs, memory, and LAN access, and says once when a sandbox was restarted (a resize) or recreated, naming what was lost.
What's Changed
- feat(sandbox): host sandbox settings and LAN access control (#108)
- docs: correct drift across guides and regenerate API docs
v1.2.1
Highlights
- Model picker lists base models and their fast variants: the execution/auditor model dialog keyed models by OpenCode 2.x's shared base
modelID, so a provider publishing both a base model and its-fastvariant collapsed the pair and only the fast variant survived. Models are now keyed by their uniqueid, so every model appears and the selection resolves to the model you picked.
What's Changed
- fix(tui): list base models alongside fast variants in execution dialog
v1.2.0
Highlights
- Unified execution dialog: one dialog configures a launch end to end — the stored plan (or a pasted one), execution and auditor models and variants, the loop name, and per-loop launch settings. Restart is now a mode of the same dialog, so
Execute planopens it for the current session's plan and falls back to restart when there is no open session. - Per-loop launch settings:
Loop settingsoverrides max iterations, turns the sandbox off for a single loop, and sets CPUs, memory, and the Docker and cache disk sizes. Overrides persist on the loop row and are applied when its sandbox is created, so a restarted loop keeps its resources and a loop launched without a sandbox stays off. Defaults come from the attached server, so they are correct against a remote one. - Remote TUI over
FORGE_RPC: the TUI reads and changes Forge state — the loop list and sidebar, the stored plan, loop restarts, host-sandbox desired/applied state, the worktree list, and per-session auto-approve — through the server's RPC surface. It holds no Forge database of its own, so it works attached to a remote OpenCode server, and it updates from server-pushed events instead of polling. The TUI and server plugin must run the same Forge version; a mismatch warns. - Per-session auto-approve:
Toggle auto-approveapproves a session's requests through OpenCode'spermission.evaluatehook, scoped to that session and its Task subagents, with configurableautoApprove.denyrules and a 15-day idle expiry. Explicit OpenCodeaskrules and configured denies still deny; loop sessions, whose ruleset already allows everything not denied, are refused. - Loop sidebar: up to three loops per project, running first, each as a status-coloured row that expands to the current phase, section, and elapsed time.
What's Changed
v1.1.1
Highlights
- Sandbox mounts are the file-tool boundary: host file tools (
read,edit,write,patch) are fenced to the sandbox mounts, and theexternal_directorypermission rules are dropped from the loop and audit rulesets. A single boundary now governs both in-container and host file access.
What's Changed
- refactor(sandbox): make sandbox mounts the file-tool boundary (#103)
v1.1.0
Requirements
- OpenCode 2.x is required. Forge now targets OpenCode 2.x only (
engines.opencodeis>=2.0.14). OpenCode 1.x is no longer supported: the V1-only plugin surfaces were removed. Upgrade OpenCode before installing this release.
Highlights
- OpenCode 2.x support on a shared host-neutral core:
createForgeCoreholds the handler bodies both hosts drive, so loop runtime, storage, sandbox, and tool logic stay single-sourced.src/index.tsandsrc/tui.tsxare thin adapters, and V2 differences are absorbed at theForgeClientport, event normalization, and the hook adapters. - Native worktrees and locations replace
warp: loop sessions are created directly atlocation.directory = <worktree>, andsession.movereplaceswarp. Loop metadata moves from the V1 workspaceextrato<worktree>/.forge/workspace.json— git-excluded and deleted with the worktree, so no new table or migration is needed. - V2 TUI: the execution dialog, loop restart, loop sidebar (capped at three loops), and loop-session deletion run on OpenCode 2.x, sharing the dashboard launcher and keybinds with the existing TUI surface.
- Installer:
--linkand--vendorwrite thecli.jsonpluginsentry alongside the existingtui.jsonpluginentry, through one shared jsonc-edit implementation. - Docs: README and
docs/cover the V2 entries, the worktree/location model, shell routing, and the install layout.
What's Changed
- feat(host): add OpenCode 2.x support on a shared host-neutral core (#102)
- refactor(v2): require OpenCode 2.x and remove 1.x-only surfaces
- feat(v2): add the execution dialog and loop controls to the V2 TUI
- feat(v2): restyle the loop sidebar and cap it at three loops
- feat(v2): delete retired loop sessions through the TUI
- fix(v2): align event mapping, toasts, and session usage with OpenCode 2.x
- fix(install): write the server plugin shim for
--linkand--vendor - feat(sandbox): auto-approve permissions in sandboxed sessions
v1.0.3
Highlights
- Sandbox create fixed on msb 0.7.x: the sandbox cache disk moved from
/opt/forge/.cacheto/opt/forge/cache. msb >= 0.7.0 derives a named disk's device id from its guest mount path and rejects ids that are not[A-Za-z0-9_-]; the dot in the old path made every sandbox create fail withmanaged additional disk has an invalid or reserved device id. Rebuild the sandbox image after upgrading so the image env matches the new path.
What's Changed
- fix(sandbox): keep the cache disk guest path free of dots