hermes-agent/apps/desktop/src/app
Brooklyn Nicholson 00694b935f perf(desktop): composer typing no longer re-renders ChatBar (imperative draft sync)
The real composer state-engine fix. ChatBar subscribed to the full draft string
(`useAuiState(s => s.composer.text)`), so every keystroke re-rendered the whole
~2k-line component even though the contentEditable DOM already owns the text.

Replace that with:
- an imperative composer-runtime subscription (useComposerRuntime().subscribe)
  that mirrors text into draftRef, repaints the editor ONLY on external changes
  (clear/restore/insert; the focused editor is the source otherwise), and drives
  the debounced per-session stash — all without a React render. This folds the
  old `[draft]` sync effect and the `[draft]` debounced-stash effect into one
  place keyed off the runtime, surviving core rebinds via the effect dep.
- coarse edge selectors (hasText / isHelpHint / isSteerableText, plus
  isEmpty / hasHardNewline in useComposerMetrics) for the chrome, which only
  re-render when an edge actually flips.

Net: typing within a line does zero ChatBar re-renders / style invalidations;
work happens only on real edges. Behaviour-preserving — draftRef + editor are
already kept current by every mutation path; verified by the composer DOM repro
tests (enter-submit, IME composition, slash-nav) + text-guard.
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): composer typing no longer re-renders ChatBar (imperative draft sync) 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