Repository navigation
v0.9
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 withE. 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,2and3fold 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 runslists the runs registered for the current repo (or--allrepos), newest first, with each run's status, checks, goal and run directory;--jsonfor 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 (
Iswitches 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>, orforge ui open <run-dir>for runs kept elsewhere) instead of an empty 3D plate under filters, and the run list no longer suggestspython3 -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 --verboseand opencode with--format json, so<role>.logholds 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 opencodeerrorevent 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 versionshows that command too, instead of telling npm users to pointforge update --sourceat a Git checkout they don't have. - With
XDG_STATE_HOMEset but empty, Fractal keeps its state (its runtime and its runs) in~/.local/state/forge/fractal, where forge-ui looks, instead of in aforge/fractalfolder under whatever directory forge was started from.forge dataset import --fractalreads the same place.