hermes-agent/apps/desktop/src/components
Brooklyn Nicholson f97e7086c7 fix(desktop): keep the first-run local-start error from being wiped on mount
Clicking "Install Hermes locally" surfaced no error when the bridge was
missing, if the click landed before React drained the passive effect that
reacted to the first bootstrap snapshot. The effect cleared the transient
button state on every change of setupChoice.activeRoot, and the very first
snapshot counts as a change: it moves the root from null to its initial
value. The choice paints as soon as that snapshot commits, so a fast click
produced an error that the effect then cleared before it ever rendered.

The state now records the root it was produced under and is read back only
under that same root, so leaving a phase still discards it but arriving in
one cannot. Deriving it removes the effect rather than adding a guard to it.

Reproduced by observing the DOM with a MutationObserver instead of findBy*,
which only settles on a timer tick — by then the effect has already run and
the window is closed. Reverting the component change fails the new test.
2026-07-25 21:34:35 -05:00
..
assistant-ui Merge pull request #71664 from NousResearch/bb/composer-slash-trigger 2026-07-25 21:26:14 -05:00
chat lint(desktop): ban atom-mirrored refs via no-restricted-syntax eslint rule 2026-07-25 18:12:48 -07:00
onboarding refactor(desktop): extract shared Progress primitive; billing uses it 2026-07-22 18:53:26 -05:00
pane-shell test(desktop): cover hidden-tab resolution for drops, focus, and timeline 2026-07-25 00:09:30 -05:00
particles feat(desktop): TikTok-style vibe hearts on a reusable particle system 2026-07-10 05:42:14 -05:00
pet lint(desktop): ban atom-mirrored refs via no-restricted-syntax eslint rule 2026-07-25 18:12:48 -07:00
ui refactor(desktop): add shared Field form-dialog primitive 2026-07-24 19:16:45 -05:00
Backdrop.tsx feat(desktop): add a chat backdrop on/off toggle 2026-07-14 16:50:03 -04:00
billing-banner.tsx feat(desktop): billing toast + in-chat status-row banner with smart CTA 2026-07-22 18:09:08 -05: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 feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
brand-mark.tsx docs(desktop): add DESIGN.md design-system guide + close two consistency gaps (#40823) 2026-06-06 22:13:17 +00:00
desktop-install-overlay.test.tsx fix(desktop): keep the first-run local-start error from being wiped on mount 2026-07-25 21:34:35 -05:00
desktop-install-overlay.tsx fix(desktop): keep the first-run local-start error from being wiped on mount 2026-07-25 21:34:35 -05:00
error-boundary.tsx feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -05:00
first-run-remote-form.tsx feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
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 perf(desktop): faster session resume & warm AudioContext at idle 2026-06-12 21:07:40 -05:00
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 Add searchable language picker 2026-06-06 07:51:44 -07:00
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): keep model picker aligned with session state 2026-07-25 16:01:43 -06:00
model-visibility-dialog.tsx fix(desktop): scope model options by profile (#62795) 2026-07-22 09:40:50 -04:00
notifications.tsx lint(desktop): ban atom-mirrored refs via no-restricted-syntax eslint rule 2026-07-25 18:12:48 -07:00
page-loader.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
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 refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
session-picker.tsx style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
status-dot.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00