wg-html-v2

wg html v2: TUI-parity viewer — clickable wg viz, edge highlighting, theme support

Metadata

Statusdone
Assignedagent-1049
Agent identityf51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e
Modelclaude:opus
Created2026-04-29T00:31:17.542961437+00:00
Started2026-04-29T01:09:31.075913828+00:00
Completed2026-04-29T01:42:06.126419106+00:00
Tagsfix,html,viz,tui-parity, eval-scheduled
Eval score0.91
└ blocking impact0.95
└ completeness0.90
└ coordination overhead0.94
└ correctness0.92
└ downstream usability0.89
└ efficiency0.88
└ intent fidelity0.91
└ style adherence0.92

Description

Description

The previous wg html redesign (commit 69f791f9a, agent-1004) shipped clickable task ids in monospace ASCII output, but the user reports it 'didn't quite land' — there's a gap between what was implemented and the actual vision. This task closes that gap.

Vision

User framing: 'this is kind of version zero of a distributed system. Just a way to view. The wg viz is the whole beginning, the nucleation of everything. The ability to visualize the graph is actually essential.'

The web view should be a read-only TUI sibling: every element you can interact with in the TUI should be clickable in the web view, opening an overlay/side panel with the same task details the TUI shows. No chat (this is viewing-only). The viz IS the interface.

Concrete spec — close the gap from v1

1. Rendering substrate: wg viz --all output, monospace, all-tasks-by-default

  • Render the full output of wg viz --all (not just public tasks unless --public-only flag is passed; current default is wrong direction for the use case)
  • Preserve ASCII layout exactly — same characters, same alignment, same colors as TUI
  • Compose with the existing --since time filter from wg-html-add (commit 52f8a4198)

2. Universal clickability — match TUI interaction model

Every interactive element in the TUI should be clickable in the web view:

  • Task ids in node labels → open task detail overlay
  • Status indicators / glyphs → same overlay (clicking a status icon should work, not just the task id text)
  • Edge labels / dependency markers → if the TUI shows edge info on click, mirror that
  • Header / cycle indicators → relevant detail overlay

Reference: the TUI's tui-detail-view (commit b07601fcd, agent-953) shows what clickable detail looks like in TUI. Mirror that pattern.

3. Edge highlighting on selection (the specific ask)

User quote: 'see the specific pattern of before and after edges drawn in the colors that we're using in the TUI.'

When a task is selected (clicked):

  • Highlight all --after edges (incoming dependencies) in the TUI's 'before' edge color
  • Highlight all --before / impact edges (outgoing dependents) in the TUI's 'after' edge color
  • Use the EXACT same color values as the TUI's terminal palette (not approximations)
  • Other edges dim out so the selection's edges pop

4. Theme support — match TUI dark/light

  • Default to dark theme (black/very-dark background, light text) — matches TUI default
  • Support light theme with same toggle UX as the TUI
  • Theme toggle button in the page header (persists via localStorage)
  • Color palette MUST be identical to TUI palette files — pull from the same source if a shared color module exists; otherwise extract carefully and document the mapping

5. Detail overlay layout (per user)

  • Click a node → overlay opens to the right (desktop) or below (narrow screens / mobile)
  • Overlay contents (mirror TUI detail view): title, status, exec mode, agent, model, executor, description (markdown rendered), recent log entries, evaluation scores (eval + FLIP + dimension breakdown), agent archives if present
  • Clicking a dependency link inside the overlay updates the overlay (no hard navigation)
  • Close button + ESC to close
  • Multiple overlays? Probably no — one at a time, replace on new click

6. Stay rsync-friendly

  • Static files only. No server. No XHR to a backend (inline JSON or per-task JSON files alongside HTML).
  • Vanilla JS for interactions. No framework.

Validation

  • Live smoke: wg html (with no flags — default should be all-tasks, dark theme) rendered on this project
  • All task ids and status glyphs are clickable; clicking opens the detail overlay
  • Selecting a node highlights its before-edges and after-edges in TUI-matching colors; non-selected edges dim
  • Detail overlay contents match what wg show <task> plus wg log <task> --agent show in the terminal
  • Theme toggle works; light theme is visually correct (not just 'inverted dark', actually styled)
  • Color values verified to match TUI palette (cite source file or document the mapping)
  • Page works as a static rsync target (open file:// URL, no server needed) with all interactivity functional
  • cargo build + cargo test pass
  • Permanent smoke scenario added that loads the rendered HTML and asserts key elements (e.g., querySelector for clickable task ids, edge-highlight class on selection); this task id in owners
  • cargo install --path . was run before claiming done
  • Record before/after screenshots in task log so the user can verify the gap is closed

Depends on

Required by

Log