Skip to content

v0.9

Choose a tag to compare

@Giamme Giamme released this 21 Oct 19:16
· 92 commits to main since this release

forge-ui has a new look and layout, a 3D stage that marks every review finding on its task, and each dwarf's and reviewer's conversation, which runs on claude, openclaude and opencode now keep in full. Also new: forge runs and a first screen that says how to get runs; npm installations now hear about new releases.

Highlights

  • forge-ui shows what each dwarf and reviewer said and did. Every attempt in the inspector links to its conversation, which opens where a diff opens: the agent's messages, its thinking folded, each command it ran with its exit code and output, each file it changed with the patch and a link to that file in the diff its review read, its other tool calls, and the final answer with tokens and cost. Search it with /, keep only what it said, ran or changed, and step through its errors with E. While the agent works, the conversation follows its log as it grows. It is read from the CLI's own log: codex, grok, opencode and claude streams event by event; for a claude run that logged only its final answer, from Claude's session file for that run if it is still on this machine; any other log as plain text. An export includes conversations only when prompts and texts are included.
  • forge-ui has a new look and better controls. It reads like a signal box's desk: engraved plates for headings, push buttons whose lamp lights when they are on, and lamps that keep one meaning everywhere (amber running, green merged, red failed, unlit pending), equally finished in light and dark. Choose between two layouts: Immersive (the default) floats the runs, the inspector and the tasks over a full-window 3D stage (on a first visit the inspector and the tasks start folded, so a run opens on its plate, and choosing a task opens the inspector), and Workbench docks them beside it with splitters you can drag. 1, 2 and 3 fold each one away, the header switches layout and theme (system, light or dark), and the runs list sorts by latest activity, state or repo. Each model shows as one name plate everywhere, a finding's severity is a shape rather than a status colour, and the run's settings, request and verification output moved from the header into the inspector (Run details). The task table and the model leaderboard sort by any column, reorder columns by dragging a header (or Alt+← →), and show or hide columns from a Columns menu. forge-ui remembers all of it in your browser.

Added

  • forge runs lists the runs registered for the current repo (or --all repos), newest first, with each run's status, checks, goal and run directory; --json for scripts. Read-only.
  • forge-ui's 3D stage shows more and is easier to steer. Every review finding now stands over its task's block as a mark shaped by its severity (P0 spike, P1 diamond, P2 cone, P3 pin); hover it for its location and summary, click it to open the diff that review read, scrolled to that finding. Choosing a task keeps its route lit, what it waits on and what waits on it (I switches this off), and hovering a task shows a card with its status, attempts, busy time, tokens, models and worst finding. Merges, failed attempts, escalations and final reviews play over the plate as they happen and as a replay passes them, and the replay now runs smoothly instead of in steps. The View menu switches each part of the drawing on or off (cables, flow, lamps, roof text, readouts, findings, finish line, districts, halos, route). New keys at the stage's edge fit what is shown (F), zoom (+ −), switch between perspective, true isometric and top-down (V), reset the view (0), open a legend of what the stage draws now (L), go full screen, and list every key (?). A block whose roof is too small to read gets its name on a tag that faces you, and on the map ← → walk the runs, ↑ ↓ the repositories and Enter opens one.

Changed

  • forge-ui's first screen, with no runs yet, now says how to get one (start a run with /forge "<goal>" --dwarf <model>, or forge ui open <run-dir> for runs kept elsewhere) instead of an empty 3D plate under filters, and the run list no longer suggests python3 -m forge_ui --root <dir>, which only worked from inside forge's ui folder. The map takes over as soon as the first run appears.
  • Runs on claude, openclaude and opencode now keep their whole conversation. forge starts claude and openclaude with --output-format stream-json --verbose and opencode with --format json, so <role>.log holds every message, tool call and result instead of only the final answer (claude) or plain text (openclaude, opencode). forge-ui shows it as the attempt's conversation. The final message, the token counts and the infrastructure checks are read from these streams: opencode now reports its tokens, its answer is the text of its last step, and an opencode error event that no answer followed (an expired token, a refused route) is classified like codex's. antigravity keeps its plain output until its stream has been seen on a working login.

Fixed

  • An npm installation now hears about new releases: the once-a-day notice after a run asks the npm registry (or npm_config_registry) and names npm's command, npm install -g @giamme/forge@latest && forge install. forge version shows that command too, instead of telling npm users to point forge update --source at a Git checkout they don't have.
  • With XDG_STATE_HOME set but empty, Fractal keeps its state (its runtime and its runs) in ~/.local/state/forge/fractal, where forge-ui looks, instead of in a forge/fractal folder under whatever directory forge was started from. forge dataset import --fractal reads the same place.