Repository navigation
feat: improve ChatTimeline presentation and controls - #1958
Douglasymlai wants to merge 3 commits into
Conversation
f532163 to
9fd771a
Compare
ea19213 to
69aeb24
Compare
There was a problem hiding this comment.
Claude Code Review
Claude Code Review is paused for this repository because its GitHub organization is not linked to your Claude organization.
To turn it back on, one person needs both roles: owner of the GitHub organization (or the account owner, for a personal repository) and admin or owner of your Claude organization. If that is not you, pass this on to someone who is.
Open Organization settings, Git providers and click Link next to the GitHub organization's name. If it is not listed, click Enable GitHub integration or Connect your GitHub first, whichever the page shows.
New pull requests are then reviewed as before. To get a review on one that is already open, someone with write access can comment @claude review.
Tip: disable this comment in your organization's Code Review settings.
Split
The implementation plan document from this branch is not carried over.
Original description
What changed
The Session title and trailing vertical three-dot icon are one menu button. Long titles fade at the existing 200px cap without an ellipsis; the mask follows the button surface in rest, hover, and open states. The full-name tooltip and accessible label remain available, the whole button shows a selected state while its menu is open, and pressing it does not scale the button. Moderate groups only adjacent calls from the same toolkit, including legacy Terminal receipts without a toolkit name. Its outer row shows the latest useful search query or the command's short display description, such as “Fetching Anthropic news page,” alongside the action count; standalone command rows use the same description. It refreshes as calls arrive and falls back to a short label when display text is unsuitable. Session rename updates the visible title immediately, then rolls back and reports an error if the save fails.
The narrower menu starts with Turn into skill and Turn into automation, using the latest completed Task in the current Session; the entries stay visible but disabled until a result exists. Turn into skill prepares an editable follow-up for the bundled skill-creator skill. Turn into automation opens the existing Automation editor prefilled from that Task, and uses the shared Zap icon. When the event-native timeline is enabled, the menu then shows an Information density slider (Minimum/Moderate/Full, stored as the existing
compact/balanced/expandedvalues) and a Dev mode switch that turns on the Trajectory view; the slider is disabled while Dev mode is on. Pin, Rename, End, and Delete follow. Moderate is the default. Minimum and Moderate count consecutive calls of one toolkit method on a single row; Full shows each action row in order.The broader ChatTimeline work also moves human approval controls above the composer and adds copy/time actions to user messages. Those actions sit below the bubble, align to the right, and appear on hover or keyboard focus while remaining visible on non-hover devices. The timestamp uses the same horizontal inset as the adjacent icon buttons. Short messages show Edit and resend beside Copy; messages longer than four lines show Expand/Collapse in that slot, revealing the full content while preserving the folded height and fade. The redundant “Eigent is working…” tail row is removed from both event-native views; the existing left-to-right ShinyText marks the active narrative action. The final-message automation buttons are removed from both event-native views and the legacy timeline. Both timeline views have a model-change divider component that appears when adjacent Runs have different recorded model identities.
Narrative task-log rows (calls, repeated-call groups, subagents, agent groups, and the Run header) share one
TaskLogprimitive: one trigger, chevron, focus ring, shimmer, and open-state rule. A row follows its own automatic state (for example, open while it waits for you), and your click wins until that state changes; a Run log you opened stays open after the Run ends. A call with nothing to reveal stays a plain line instead of opening an empty detail. Calls whose title is only the toolkit/method fallback read in the tense of their outcome: “Running npm test”, “Ran npm test”, “Failed to run npm test”, or “Stopped npm test”, with copy in all 11 locales. Minimum names only the action; Moderate and Full add the query, command, or path. Authored titles, toolkit descriptions, and human calls keep their own wording, and an unknown outcome keeps the original title. Outcomes the title doesn't state (timed out, cancelled, blocked, interrupted, unknown) appear in words after it, so status is never color-only. Rows show no duration, and an opened call shows only its request/response box.The implementation plan and remaining product-review questions are in
docs/plans/chat-timeline-experience-implementation.md.Integration and limits
resolved_modelfield for that integration.automation-draftblock from that result when one is present. The skills that produce automation drafts and interactive HTML results are in a separate PR.Validation
git diff --checkpassedgit diff --checkpassed