Commit Graph

9 Commits

Author SHA1 Message Date
Naiyuan Qing
30a7fcc8ec fix(views): fold copy timestamps into full-body copy (merge #5873)
Reconcile #5873's "timestamps in copied events" (merged to main) with
this branch's full-body copy rewrite: traceEventCopyText now prefixes
each line with the RFC 3339 timestamp when created_at is valid, on top of
the complete (untruncated) body, events separated by a blank line. The
two #5873 copy tests are updated to the full-body format; the orphaned
formatEventForClipboard helper is removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:04:43 +08:00
Naiyuan Qing
38a985a7bd refactor(views): filters always persist, drop "on behalf of" wording, surface run time
Three follow-ups from review:
- Remove the "Preserve filters" toggle. Persisting the filter selection
  is the only sensible behavior (a facet a run lacks already no-ops), so
  it should not be a user-facing switch. Filters now always persist;
  drop preserveFilters + the session-vs-persisted branching from the
  store and dialog.
- Inline attribution showed "on behalf of <name>", which read backwards
  and doubled up under the ⓘ "Triggered by" label. Render just the
  avatar + name; the source stays in the tooltip.
- Surface the run time (started ?? created) on the toolbar left next to
  duration and event count — "when did this happen" is read-before-you-
  read context. Full-precision timestamps remain in the ⓘ popover.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:01:46 +08:00
Naiyuan Qing
741028343b refactor(views): transcript header — two-tier by necessity (ⓘ popover), trigger source, full status machine
Following PR #5747's design lesson: split header metadata by whether a
viewer needs it BEFORE reading. The flat facts line put diagnostics
(provider, runtime hostname, mode, workdir, timestamps) on the
always-visible surface with equal weight.

- Identity row (tier 1): status · agent · trigger source · attribution.
  Trigger source ("Initial run" / "From a comment" / "Retry" / ...)
  answers "why does this run exist" — restored from #5747, was dropped.
- Status badge now covers the full state machine (queued / dispatched /
  cancelled / waiting), not just running/completed/failed.
- ⓘ Run-details popover (tier 2): runtime, provider, mode, workdir
  (copyable), created/started/completed — off the default surface.
- Toolbar left carries duration + event/tool counts (a read-before-you-
  read summary), so the control row balances instead of stranding the
  controls at the right with empty left space.

Persisted preferences (sort, filter selection, preserve-filters, expand
density) are untouched — same controls, same behavior.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:01:46 +08:00
Naiyuan Qing
0fc21f77e7 refactor(views): transcript header — status-first identity row, facts as typography, list toolbar
The header mixed five different natures in one visual container: status
pill, attribution badge, nine equal-weight metadata chips (including
truncated agent-description prose and a hostname), and the list controls
— everything a rounded bordered capsule, so information and controls
were indistinguishable and wrapped into a ragged 2-3 lines.

Restructure into three fixed-purpose rows:
- Identity: status pill anchors the left edge (the fact every viewer
  opens the dialog for), then the agent through its existing avatar
  component (hover card for details; fixes the empty-name case via
  agentInfo fallback) and a new borderless `inline` AttributionBadge
  variant. Close stays at the right.
- Facts: one dot-separated plain-text line — provider, runtime mode
  (hostname in hover title), duration, counts, timestamp; the workdir
  path collapses into a copy icon with the path as tooltip. The
  agent-description chip is gone (it lives in the avatar hover card).
- List toolbar: expand mode / sort / filter / copy move to their own
  row attached to the list they operate.

Only controls keep borders; only status keeps color; entities render
through their identity components; facts are typography.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:01:46 +08:00
Naiyuan Qing
a7ec1287b3 feat(views): transcript reading hierarchy — presenter, expand modes, log-scale markdown
The transcript rendered all five event kinds as identical truncated
one-liners: agent replies and errors were clipped to half a sentence and
only readable through an 11px bordered scroll box, indistinguishable in
weight from dozens of tool rows.

- trace-event-presenter.ts: pure presentation rules — kind, verbatim
  tool labels, newline-free one-line summaries, shell-wrapper stripping
  for command summaries, and per-kind default expansion.
- Smart reading hierarchy: agent text renders in place through
  RichContent (compact density + transcript-prose log scale: headings
  demoted to body size, 12.5px/11px two-step type ramp) and errors read
  unboxed; thinking and tool rows stay folded to one line.
- Expand mode menu replaces the expand-visible toggle: a persisted
  three-way preference (smart / expand all / collapse all) with per-item
  descriptions; row-level toggles override it until the mode changes.
  transcript-view-store migrates the legacy defaultExpanded boolean.
- Tool params/output expand into a quiet borderless surface; long
  content fades behind "Show all" instead of a nested scrollbar.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:01:46 +08:00
Naiyuan Qing
11e437b7e7 fix(views): virtualize execution log transcript rows (#5733)
Long runs produce hundreds to thousands of task-message events; the
transcript dialog mapped every event straight into the DOM, freezing the
browser when the log grew. Render the event list through react-virtuoso
so only the visible window mounts. Timeline segment navigation switches
from node refs + scrollIntoView to index-based scrollToIndex, and sort
toggling scrolls the virtualized list instead of the container div.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 15:54:27 +08:00
Multica Eve
a767c5b361 feat(transcript): include timestamps in copied events (#5873)
Co-authored-by: Eve <eve@multica-ai.local>
Co-authored-by: multica-agent <github@multica.ai>
2026-07-24 13:56:25 +08:00
CAVIN
310634064f fix(transcript): explain unavailable Antigravity live events (#5182)
* docs: design Antigravity live transcript empty state

* docs: plan Antigravity live transcript empty state

* fix(transcript): explain unavailable Antigravity live events

* chore: remove agent planning artifacts

---------

Co-authored-by: CAVIN <zzz163519@users.noreply.github.com>
2026-07-16 10:28:23 +08:00
Naiyuan Qing
dd9996d0aa MUL-4014: persist transcript filters and expansion (#4884)
* feat(transcript): persist log view preferences

Co-authored-by: multica-agent <github@multica.ai>

* fix(transcript): wrap modal header controls

Co-authored-by: multica-agent <github@multica.ai>

---------

Co-authored-by: multica-agent <github@multica.ai>
2026-07-03 16:45:53 +08:00