Timeline / activity feed
Session run: events on a rail · status nodes · tab/click the top event
Error: read_file timed out
ETIMEDOUT after 30s · retried once, then skipped
tool_call: edit_file
src/components/Timeline.tsx · +42 −6
tool_call: read_file
docs/design-laws.md
Session started
Large 2.0 · 14 tools
Top event is a button. Tab to it and press Enter.
Status nodes: success · warning · error · neutral, and a live “now” node
Deploy succeeded
Zero-downtime swap · design-system
highlighted, liveCI passed
typecheck · lint · build · test
Approval required
credential-store · allowlist scope change
Build failed
dueydo · exited 1
Branch pushed
main · 3 commits
Grouped by day: audit log with “load earlier”
Tool call: run_tests
in progress, liveMemory written
“No em dashes in emails” → decisions
PR merged
· timeline component
Error: 403 from the credential store
URL not in allowlist
Compact, dense activity stream
tool_call: grep
in progress, livetool_call: read_file
tool_call: edit_file
thinking…
Turn complete
4 tools · 3.1k tok
Two-sided: events alternate either side of a center rail (roadmap / release)
Tokens published
@dizyx/nockerl-tokens v1
Docs site live
Astro Starlight catalog
Component review
one-by-one sign-off
highlighted, liveCompose package
Maven publish
Live animation is running. The “now” node fades opacity; it freezes under reduced-motion.
Parameters
Section titled “Parameters”Timeline is the chronological event feed (each node is a moment in time: timestamp + what happened), distinct from the Stepper (a forward process with done/current/upcoming flow state) and the List (plain rows). These are the real divergences:
- Designed, not extracted. The look + API are drawn from the event-sequence surfaces
the apps already have: Android’s
AgentTranscriptPanel+AgentTranscriptSegments(a time-ordered run ofsession_init/tool_use/done/errorevents) andNotificationRow(formatTimeAgo); Swift’sHistorySection(a reverse-chronological timestamped list). TheNockerlTimelinesymbols above are the intended components to extract. - Relative time: the demo uses Android’s
formatTimeAgoramp (just now · 2m · 1h · 3d · 1w · 1mo); Swift’sHistorySectionrenders an absolutemonth().day().hour().minute()instead. One format (relative gutter + absolute<time>tooltip) should win. - Two-sided + load-earlier: web-original here; the apps’ feeds are single-sided and paginate via scroll. Track before adopting on Android/Swift.