Skip to content

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 06 Sep 06:40
· 2 commits to main since this release
d1a2452
  • docs(spec): sidebar-trace-navigation

Design spec for trace interaction in the sidebar: l/h descend into and
return from an expanded card's traces, j/k walk the settled-call ring
(full ring while focused), o/Enter and mouse click-again open a detail
panel showing the retained args preview with width-aware scrolling.
Covers the pair-identity focus model (card + toolUseId), OpenTrace
outcome plumbing with the run loop as single resolver, sub-card span
export with newest-first dedup, honest cross-card reflow, settled-only
data reality, and the test plan.

Written via /lifeline:planner with per-section codex review (6 section
passes, 20 findings applied).

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(spec): apply codex feedback

Final whole-spec pass: l becomes an EnterTraces outcome resolved by the
run loop against the canonical ring (rendered geometry cannot pick a
hidden selectable row); the when-line freezes at open so the minute
tick never rewrites panel text; l is inert inside the trace zone (only
zone entry and j/k reattach); every cursor-changing card click clears
trace focus (pane-unique ids could leak across cards); rows without an
exact done/failed status are display-only, enforcing the settled-only
guarantee instead of assuming it.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(spec): mark spec codex-reviewed

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(plan): sidebar-trace-navigation

Ten-task TDD plan for the trace-navigation spec: duration formatter,
pure trace hit-test, view geometry export with focus rendering,
pair-safe reconcile, key/mouse outcome plumbing, the frozen TraceDetail
panel with shared-width scrolling, the snapshot builder, the run-loop
resolver with row-granularity follow, and the help surface — each task
red-green with exact code and its own commit.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(plan): apply codex feedback

Plan-review round 1: expanded_card keeps its signature via a
_with_traces sibling (30+ callers); the e2e ViewInput literal joins
Task 3; reconcile takes the pre-rehome cursor and corrections re-render
synchronously; route_mouse test migration named; Row gains Clone,
cursor_mut its arm; Row::Text implements the spec's verbatim wrapping
(Note collapses indentation) with a genuinely width-sensitive scroll
test; the snapshot narrows to (title, rows) with a recorded spec
amendment; newest_selectable_id deduplicates before selecting; named
resolvers with happy-path/refusal tests; routed accepts outcome
variants as observable.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(plan): apply codex feedback round 2

Task boundaries made self-contained: the second ViewInput constructor
and the e2e literal are listed and staged; the focused full ring drops
the +N older remainder with a test; Task 4's test blocks match the
five-argument reconcile; import edits scheduled (LineSpan/trace_at,
qualified AutoExpand, serde_json::Value); the rows_text exhaustive
match gains its Text arm; wrap_verbatim splits hard newlines first with
a line_count test; the spec's snapshot sentence is amended before this
plan (not during implementation); missing §6 cases added (header-click
onto another card, q-close, collapse-drop reconcile, content-compared
snapshot survival, frozen when-line across differing now).

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(spec): narrow the TraceDetail snapshot to rendered content

The panel model is a frozen (title, rows) pair; card id, agent label,
and tool_use_id were listed but never rendered or needed — the panel
opens from the selected card. Amended before plan finalization so the
plan implements the current spec, not an in-flight rewrite.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(plan): apply codex feedback round 3

view_input gains the trace-focus parameter with all four call sites
named; Panel/Row enter tui.rs scope via a module-level import; the
q/esc test drops its dead outer binding and the when-closure takes a
slice; the nonexistent offset accessor instruction is gone.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(plan): apply codex feedback round 4

Remove the last stale offset-accessor reference in Task 7.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • docs(plan): mark plan codex-reviewed

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • feat(sidebar): compact duration formatter

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): pure trace-row hit-test

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): export trace-row geometry and render trace focus

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): trace-focus state with pair-safe reconcile

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): trace-zone key transitions as outcomes

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): trace-aware mouse outcomes

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): frozen TraceDetail panel with verbatim width-aware scrolling

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): frozen trace snapshot builder

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): resolve trace outcomes and follow the selected row

Co-Authored-By: codex executor noreply@openai.com

  • fix(sidebar): eager then_some in trace_at

Clippy unnecessary_lazy_evaluations, introduced by the plan's own Task 2
snippet; authorized as an out-of-task edit in the M5 fix cycle.

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): trace keys on the help sheet and trailer

Co-Authored-By: codex executor noreply@openai.com

  • feat(sidebar): zone-aware key footer

The pinned footer names what the keys do right now: 'l traces' appears
only while the cursor card is expanded with a selectable trace (the
exact state where l acts, and it outlives 'x menu' when narrowing);
inside the trace zone the hints flip to 'o/↵ open · h back'. The footer
thereby doubles as a zone indicator. Spec §4 amended accordingly.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • chore: 0.2.6

Trace navigation for the sidebar: press l on an expanded card to enter
its traces (full 50-call ring), walk rows with j/k, open a frozen
detail panel with o/Enter showing status, timing, and the complete
retained args preview (pretty-printed JSON, scrollable at any width);
h returns to the cards. Mouse: click a trace row to deep-select, click
it again to open — extending 0.2.5's opt-in mouse support one level
deeper. The key footer is now zone-aware and doubles as an indicator,
advertising l only when it works and flipping to 'o open · h back'
inside the trace zone.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

  • fix(sidebar): canonical descendability and nonempty trace identities

Two chatgpt-codex-connector findings on PR #2, both judged valid
against the code-reviewer principles and fixed:

F1: the zone-aware footer computed descendability from rendered
trace_spans, so with trace_lines = 1 and a display-only newest row the
'l traces' hint hid while l still entered the hidden selectable row.
The footer now derives from the canonical ring via the same predicate
the resolver uses.

F2: an empty-string toolUseId passed as_str().is_some() and became a
selectable identity, and multiple empty-id rows deduplicated into one.
call_id() now treats empty as missing: display-only, never deduped,
never exported.

Consolidation: call_id / selectable_call / newest_selectable_id now
live once in view.rs; tui.rs imports them, removing the drift class
that caused F1.

Codex-Verify: cycle-1 pass
Closes-Codex-Threads: PRRT_kwDOT46cgc6fgAh6 PRRT_kwDOT46cgc6fgAh7
Co-Authored-By: Claude Fable 5 noreply@anthropic.com


Co-authored-by: Claude Fable 5 noreply@anthropic.com
Co-authored-by: codex executor noreply@openai.com

What's Changed

  • feat(sidebar): trace navigation with detail panel and zone-aware footer by @winoooops in #2

New Contributors

Full Changelog: v0.2.5...v0.2.6