Skip to content

feat(desktop): add a clickable session timeline above the transcript - #7771

Open
HUQIANTAO wants to merge 1 commit into
esengine:main-v2from
HUQIANTAO:feat/session-timeline
Open

feat(desktop): add a clickable session timeline above the transcript#7771
HUQIANTAO wants to merge 1 commit into
esengine:main-v2from
HUQIANTAO:feat/session-timeline

Conversation

@HUQIANTAO

Copy link
Copy Markdown
Contributor

Background

Long conversations lose their shape. Once a session spans many turns and several compactions, there is no way to see where you are in the conversation — how many exchanges happened, where the context got compressed, or which turns are rewind checkpoints. You scroll, and scroll. The transcript already carries all of this structure (user turns, compaction items, rewind checkpointTurn markers), but nothing surfaces it.

What this PR does

Adds a compact, clickable session timeline rail above the transcript:

  • Each user turn is a numbered node. The current (latest) turn is filled with the accent color; turns that are rewind checkpoints get a ring.
  • Each compaction is a diamond marker sitting on the connecting line, with a tooltip naming the trigger and how many messages were folded.
  • Clicking a turn node smooth-scrolls the transcript to that exchange — long sessions become navigable instead of scrollable.
  • Hovering a node shows the turn's prompt preview.
  • The rail only appears once a session has two or more turns, so short sessions are unaffected.

It is derived entirely from the existing items array (user items + compaction items) and reuses the transcript's own questionAnchorId anchors, so nothing about the transcript or controller changes.

Files changed

  • desktop/frontend/src/components/SessionTimeline.tsx — new component
  • desktop/frontend/src/App.tsx — render above the transcript
  • desktop/frontend/src/styles.css — rail, node, and compaction-marker styles

Verification

  • pnpm typecheck — no new errors
  • pnpm lint:hooks — clean
  • node scripts/check-css-syntax.mjs / check-z-index-tokens.mjs — pass

Documentation-impact: none - a UI navigation aid derived from existing transcript data; no documented behavior changes.

Render the conversation's structural history as a rail above the
transcript: each user turn is a numbered node, compactions appear as
diamond markers on the connecting line. Clicking a turn scrolls the
transcript to it, the current turn is highlighted, and rewind
checkpoints carry a ring. The rail is hidden for sessions with fewer
than two turns.
@github-actions github-actions Bot added v2 Go rewrite (1.x) — main-v2 branch, active development desktop Wails desktop app (desktop/**) labels Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

desktop Wails desktop app (desktop/**) v2 Go rewrite (1.x) — main-v2 branch, active development

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant