hermes-agent/apps/desktop/src/app
Brooklyn Nicholson 94d70dee54 perf(desktop): stop ChatBar re-rendering on cross-session status/queue churn
Audit follow-up. ChatBar subscribed to the whole `$statusItemsBySession` (a
computed that rebuilds the entire map) + `$previewStatusBySession` maps just to
derive a boolean, so every per-item status mutation (a subagent tick, the 5s
background poll) and every OTHER session's change re-rendered the ~1.4k
component. The queue hook likewise subscribed to the whole `$queuedPromptsBySession`
map.

- Add `useSessionStatusPresence` — a coarse edge (useSyncExternalStore) that
  flips only when the stack shows/hides; ChatBar uses it for the styling
  data-attr instead of the two map subscriptions.
- Add generic `useSessionSlice(store, key)` — subscribes to one session's array,
  bailing out when other sessions churn (the plain atom keeps per-key refs
  stable). The queue hook now reads its slice through it.

Result: ChatBar re-renders only when the stack's presence flips or this session's
queue changes — not on background/subagent status streaming or other sessions.

Verified: typecheck clean, 0 lint errors, composer tests 39/40 (pre-existing
attachments failure unrelated).
2026-06-30 04:19:10 -05:00
..
agents feat(desktop): unify non-settings overlays under a shared Panel primitive 2026-06-28 20:56:52 -05:00
artifacts refactor(desktop): formalize row-as-button primitive (RowButton) 2026-06-30 01:56:57 -05:00
chat perf(desktop): stop ChatBar re-rendering on cross-session status/queue churn 2026-06-30 04:19:10 -05:00
command-center chore(desktop): keep the diff surgical 2026-06-28 21:30:14 -05:00
command-palette feat(desktop): flag already-installed themes in the install pickers 2026-06-29 23:29:20 -05:00
cron style(desktop): prettier + eslint pass 2026-06-28 21:04:43 -05:00
gateway/hooks refactor(desktop+dashboard): extract shared WebSocket/JSON-RPC layer 2026-06-28 21:20:35 -05:00
hooks feat(desktop): multi-terminal panel with side tab rail 2026-06-28 19:06:55 -05:00
messaging fix(desktop): broken "Open setup guide" button for plugin platforms 2026-06-27 04:34:08 +05:30
overlays refactor(desktop): formalize row-as-button primitive (RowButton) 2026-06-30 01:56:57 -05:00
pet-generate style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
pet-overlay refactor(desktop): collapse overlay zoom-anchor math 2026-06-26 00:42:19 -05:00
profiles style(desktop): prettier + eslint pass 2026-06-28 21:04:43 -05:00
right-sidebar feat(desktop): persist & restore terminal tabs + scrollback across relaunch 2026-06-28 22:12:29 -05:00
session/hooks Merge pull request #55504 from NousResearch/bb/desktop-split-prompt-body 2026-06-30 03:22:43 -05:00
settings refactor(desktop): formalize row-as-button primitive (RowButton) 2026-06-30 01:56:57 -05:00
shell feat(desktop): let the pet perch on the status bar and profile rail 2026-06-29 14:26:02 -05:00
skills style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
desktop-controller-utils.test.ts refactor(desktop): thin desktop-controller by extracting session-list actions 2026-06-30 01:34:12 -05:00
desktop-controller-utils.ts refactor(desktop): thin desktop-controller by extracting session-list actions 2026-06-30 01:34:12 -05:00
desktop-controller.tsx refactor(desktop): thin desktop-controller by extracting session-list actions 2026-06-30 01:34:12 -05:00
floating-hud.ts fix(desktop): make ⌘K / session-switcher HUDs ignore titlebar drag band 2026-06-30 02:06:30 -05:00
index.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
layout-constants.ts feat(desktop): hover-reveal collapsed sidebars as fixed overlays (#41670) 2026-06-07 22:41:21 -05:00
model-picker-overlay.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
model-visibility-overlay.tsx feat(desktop): inline model picker in the status bar 2026-06-02 19:09:41 -05:00
page-search-shell.tsx feat(desktop): add i18n with Simplified Chinese (zh-Hans) support 2026-06-05 10:32:26 -07:00
routes.ts chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
session-picker-overlay.tsx desktop: registry-driven slash commands + first-class /resume & /handoff (#42351) 2026-06-11 01:49:24 +00:00
session-switcher.tsx style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
types.ts fix(desktop): render send/prefill directive notices (/goal, /undo) (#49073) 2026-06-19 07:28:50 -07:00
updates-overlay.tsx Merge pull request #52828 from helix4u/fix/desktop-backend-update-indicator 2026-06-26 11:49:07 -05:00