Metadata
| Status | done |
|---|---|
| Assigned | agent-1306 |
| Agent identity | f51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e |
| Created | 2026-05-01T00:17:00.464357431+00:00 |
| Started | 2026-05-01T00:17:43.244061185+00:00 |
| Completed | 2026-05-01T00:47:28.071473228+00:00 |
| Tags | fix,html,viz, eval-scheduled |
| Eval score | 0.83 |
| └ blocking impact | 0.85 |
| └ completeness | 0.84 |
| └ coordination overhead | 0.88 |
| └ correctness | 0.82 |
| └ downstream usability | 0.86 |
| └ efficiency | 0.80 |
| └ intent fidelity | 0.83 |
| └ style adherence | 0.90 |
Description
Description
The TUI shows a small letter / envelope indicator on tasks that have unread messages from wg msg send. The wg html export currently doesn't show this. User wants parity.
User quote 2026-04-30: 'it would be great if that were also present in the HTML publish, in the HTML export.'
Spec
- Render a small icon (envelope / letter / 📩-style) next to the task id in the html viz when the task has unread messages
- Same icon shape across the task-list rows AND inside the inspector side panel detail
- Default click on the indicator: opens the inspector and shows the message log section (or scrolls to it if already open)
- Color follows theme (dark/light) — same treatment as other status indicators
- If we're rendering for a static deployment with mostly read messages: indicator should be present whenever the message count > 0 from the task's data, OR specifically when there are unread ones (which depends on whether wg's read-state is tracked per-machine or globally — verify)
Implementation
- Source: the task data already includes message metadata (per the wg msg list / --json command)
- Hook into the existing per-task render where status glyphs are emitted
- Add CSS class
has-unread-msg(or similar) and a corresponding visual element - For the inspector panel: a 'Messages (N unread)' section that lists them
Validation
- Failing test or repro: render html on a project where some tasks have unread messages. Pre-fix: no indicator. Post-fix: indicator visible on those tasks.
-
Live smoke:
wg msg send <task> 'test',wg html, open in browser, confirm indicator on that task - Inspector shows the message content when the task is clicked
- No regression of other html features
- cargo build + cargo test pass
- cargo install --path . was run before claiming done
Coordinate with fix-msg-indicator
Sister task fix-msg-indicator is fixing the TUI's indicator-disappears bug. The two tasks share concerns: same data source, same logical state. If fix-msg-indicator changes the unread-state computation, this task's html implementation should consume the same source. Run after or alongside; coordinate via wg log if needed.
Depends on
Required by
- (none)
Log
- 2026-05-01T00:17:00.449994082+00:00 Task paused
- 2026-05-01T00:17:18.448998061+00:00 Task published
- 2026-05-01T00:17:40.910899557+00:00 Lightweight assignment: agent=Careful Programmer (f5143935), exec_mode=full, context_scope=task, reason=Careful Programmer is the only agent with implementation capability; established track record (0.79 score, 455 tasks) and Careful tradeoff match this visual correctness-critical work.
- 2026-05-01T00:17:43.244064321+00:00 Spawned by coordinator --executor claude --model opus
- 2026-05-01T00:17:55.829204454+00:00 Starting investigation: locating html viz code and msg data source
- 2026-05-01T00:21:28.095629292+00:00 Plan: surface message indicator in task list, per-task page, and inspector panel; wire data via tasks JSON; CSS theme-aware classes mirroring TUI status (Unseen/Seen/Replied)
- 2026-05-01T00:44:18.027086849+00:00 Implementation complete: indicator on task list rows + inspector panel + per-task page; data via task_messages loader; CSS theme-aware. 35/35 html lib tests pass; new wg_html_msg_indicator smoke scenario passes; sibling html scenarios still pass; cargo install applied.
- 2026-05-01T00:45:20.203876486+00:00 Committed: b9242def7 — pushed to remote
- 2026-05-01T00:47:28.071482205+00:00 Task pending eval (agent reported done; awaiting `.evaluate-*` to score)
- 2026-05-01T00:49:31.499665686+00:00 PendingEval → Done (evaluator passed; downstream unblocks)