hermes-agent/apps/desktop/src/components
Brooklyn Nicholson 72dd01c553 fix(desktop): no per-paragraph action bars on sealed interim messages
Since #65919 the live view seals each chunk of mid-turn assistant
commentary (message.interim) as its own finalized bubble. Every bubble
with visible text renders the hover action footer, so a tool-heavy turn
grew a copy/refresh bar under almost every paragraph — and the live
render didn't match rehydration, which merges the turn into one bubble.

Mark sealed interim bubbles with ChatMessage.interim, carry the flag
into the runtime message metadata (custom.interim), and skip the
AssistantFooter for them. The turn's final reply keeps the footer; a
previewed final that settles onto an interim bubble clears the mark so
the settled reply regains its actions. interim joins COMPARED_FIELDS /
chatMessagesEquivalent so flipping it repaints.

Also fix an id-collision flake this surfaced: stream/interim bubble ids
were Date.now()-only, so an interim seal and the next segment's first
delta in the same millisecond reused the id and the new segment appended
into the sealed bubble. Ids now include a monotonic sequence.
2026-07-22 11:31:03 -05:00
..
assistant-ui fix(desktop): no per-paragraph action bars on sealed interim messages 2026-07-22 11:31:03 -05:00
chat fix(desktop): prevent timers from shifting as they count (#68131) 2026-07-20 16:39:20 +00:00
onboarding fix(desktop): scope model options by profile (#62795) 2026-07-22 09:40:50 -04:00
pane-shell fmt(js): npm run fix on merge (#67995) 2026-07-20 10:47:15 +00:00
particles
pet
ui fix(desktop): kill boot overlay fade-race in e2e screenshots 2026-07-20 11:44:41 -04:00
Backdrop.tsx feat(desktop): add a chat backdrop on/off toggle 2026-07-14 16:50:03 -04:00
boot-failure-overlay.test.tsx fix(desktop): recover a failed gateway from the boot-failure screen 2026-07-12 04:07:41 -04:00
boot-failure-overlay.tsx style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
boot-failure-reauth.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
boot-failure-reauth.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
brand-mark.tsx
desktop-install-overlay.tsx
error-boundary.tsx
gateway-connecting-overlay.test.tsx test(desktop): fix remaining act() warnings in gateway-connecting-overlay 2026-07-13 17:22:17 -04:00
gateway-connecting-overlay.tsx fix(desktop): address review — overlay a11y, e2e typecheck, nits 2026-07-20 14:37:39 -04:00
haptics-provider.tsx
idle-mount.test.tsx perf(desktop): idle-mount boot-hidden panes off the cold-start critical path (#67857) 2026-07-20 04:31:32 +00:00
idle-mount.tsx perf(desktop): idle-mount boot-hidden panes off the cold-start critical path (#67857) 2026-07-20 04:31:32 +00:00
language-switcher.test.tsx
language-switcher.tsx feat(desktop): button tooltip keybind hints + keybinds settings tab + unified worktree dialog (#65204) 2026-07-16 18:26:21 -04:00
model-picker.tsx fix(desktop): scope model options by profile (#62795) 2026-07-22 09:40:50 -04:00
model-visibility-dialog.tsx fix(desktop): scope model options by profile (#62795) 2026-07-22 09:40:50 -04:00
notifications.tsx
page-loader.tsx
prompt-overlays.test.tsx feat(desktop): shared UI — per-session prompt overlays, gateway overlays, tab primitives 2026-07-13 17:57:54 -04:00
prompt-overlays.tsx fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
remote-display-banner.tsx
session-picker.tsx
status-dot.tsx