Skip to content

feat(desktop): show activity timestamps on demand#1506

Merged
tellaho merged 3 commits into
mainfrom
tho/activity-timestamps
Jul 4, 2026
Merged

feat(desktop): show activity timestamps on demand#1506
tellaho merged 3 commits into
mainfrom
tho/activity-timestamps

Conversation

@tellaho

@tellaho tellaho commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

Category: improvement
User Impact: Users can turn on timestamps in the right-pane Activity feed to see when each agent activity row happened.
Problem: The refreshed Activity feed made rows easier to scan, but it removed the always-visible timing cue people use to tell whether an agent is actively working or stale. The pane needed a way to restore that context without adding visual noise for everyone by default.
Solution: This adds a device-level Show Timestamps setting to the Activity pane header. When enabled, polished activity rows render the existing transcript timestamp style at the bottom-left, and raw activity cards show the same timestamp treatment as a low-emphasis second row inside each card. Compact profile previews stay dense, and user message bubbles keep their existing single timestamp.

File changes

desktop/src/features/agents/ui/AgentSessionTranscriptList.tsx
Adds the optional timestamp footer beneath polished activity rows and grouped summaries while preserving existing user-bubble timestamp behavior.

desktop/src/features/agents/ui/RawEventRail.tsx
Shows the timestamp inside raw activity cards when the preference is on, keeping it visible in collapsed and expanded card states without changing the raw JSON payload.

desktop/src/features/agents/ui/agentSessionTranscriptPresentation.ts
Adds the shared predicate that decides whether a transcript item should receive the new row timestamp.

desktop/src/features/agents/ui/agentSessionTranscriptPresentation.test.mjs
Covers the timestamp visibility rules, including default-off behavior, compact previews, and user-message exclusion.

desktop/src/features/agents/ui/transcriptTimestampPreference.ts
Adds a localStorage-backed device preference for showing transcript row timestamps, matching the existing animation preference pattern.

desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx
Adds the Activity settings menu toggle for Show Timestamps, keeps it available in raw mode, and passes the preference into polished rows and raw cards.

Reproduction Steps

  1. Open a channel with an agent Activity pane that has polished activity rows.
  2. Open the Activity pane settings menu and confirm Show Timestamps is off by default.
  3. Turn Show Timestamps on and confirm muted timestamps appear bottom-left beneath polished activity rows and grouped summaries.
  4. Confirm user message bubbles still show only their existing timestamp footer and do not get a duplicate timestamp.
  5. Switch to raw activity mode, turn Show Timestamps on, and confirm raw cards show muted timestamps as a second row in both collapsed and expanded states.

Screenshots/Demos

Polished activity rows:

Off (default) On
Polished activity without timestamps Polished activity with timestamps

Raw mode:

Raw off Raw on (collapsed) Raw on (expanded)
image image image

Settings menu in Raw mode:

image

Validation

  • pnpm check (biome + file-sizes + px-text)
  • pnpm typecheck
  • pnpm test — 1586/1586 passing
  • Marge screenshot pass: polished timestamps on/off, raw mode timestamps off/on collapsed/expanded, and raw-mode settings menu

Coordination: buzz://message?channel=834029ea-e573-4982-82fd-1f7af039c6c8&thread=22cdeeb1c6372dcf024f1a3409e64ad9b128862647931a85fc425192d014f1ef

npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 2 commits July 3, 2026 13:56
Adds a device-level 'Show Timestamps' preference (localStorage, default
off) mirroring the Show Animations pattern. When enabled, polished
activity rows and grouped tool-run summaries render a TranscriptTimestamp
anchored bottom-left, matching chat/transcript timestamp styling. User
message bubbles are excluded since they already carry a timestamp footer;
compact previews and raw mode are unaffected (toggle is disabled in raw
mode).

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho marked this pull request as ready for review July 3, 2026 21:14
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho tellaho enabled auto-merge (squash) July 3, 2026 22:11

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@tellaho tellaho merged commit c7a8b0b into main Jul 4, 2026
25 checks passed
@tellaho tellaho deleted the tho/activity-timestamps branch July 4, 2026 15:40
@wesbillman

Copy link
Copy Markdown
Collaborator

Retro review (Brain — PR merged before review, so this is a post-merge glance): clean, no follow-up needed

Pattern-match to transcriptAnimationPreference is exact (module-level useSyncExternalStore store, best-effort localStorage, device-level scope documented). The shouldShowTranscriptRowTimestamp predicate correctly excludes user bubbles (own footer) and compact previews, and it's unit-pinned including the default-off case.

Two trivial notes, neither worth a follow-up PR:

  1. The predicate's variant: string param could be typed to the transcript-variant union instead of bare string — as-is a typo'd variant silently behaves like "default".
  2. The diff also drops the "Slide new activity rows in…" subtitle from the Show Animations item — intentional menu tightening by the look of it, but it isn't mentioned in the PR body.

tlongwell-block pushed a commit that referenced this pull request Jul 5, 2026
* origin/main:
  fix(zoom) desktop chrome clearance under text zoom (#1490)
  fix(activity panel): handle back navigation (#1487)
  Port channel windows to mobile (#1518)
  perf: GIN index for e-tag containment + delta profile fetch (scroll-back ~2.1s/page) (#1514)
  GUI read-model overhaul: server-assembled channel windows (Correct™ pagination + relay-signed bounds) (#1500)
  feat(desktop): show activity timestamps on demand (#1506)
  feat(reconnect): replace top banner with animated sidebar overlay (#1510)
  docs(nest-skill): explain agent-owned git repos and automatic auth (#1437)
  fix(agent): make stop-hook rejection budget per-prompt, fix stale hook docs (#1503)
  chore(release): release Buzz Desktop version 0.3.42 (#1479)
  fix(desktop): bound read-state localStorage growth and recover from quota errors (#1502)
  Customize macOS DMG installer (#1496)
  mobile: thread scroll-to-bottom and desktop-parity mention autocomplete (#1499)
  fix(agent): honor stop hook retry budget (#1501)
  feat(profile): embed live activity feed in profile aux panel (#1380)
  feat(desktop): contribution heatmap and graphical cards on projects overview (#1497)
  feat(desktop): repository-first projects with git workflows (#1471)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants