hermes-agent/apps/desktop/src/components
ethernet b2857110b4 fix(desktop): kill loading bar in boot-failure e2e screenshots
The boot-failure screenshot showed a progress bar because of two bugs:

1. waitForBootFailure matched on "Let's get you setup" (the onboarding
   header that mounts from frame 1 during normal boot), so the screenshot
   fired at ~86% progress while the Preparing component's progress bar was
   still painted.

2. The Preparing component kept rendering the progress bar even after
   boot.error was set — it just turned the bar red and appended the error
   text below it.

Fixes:
- Preparing bails out (returns null) when boot.error is set, so
  BootFailureOverlay (z-1400) owns the screen exclusively.
- applyDesktopBootProgress no longer clobbers a previously-set boot.error
  when a late progress event arrives with error: null — failDesktopBoot is
  terminal for the boot cycle.
- waitForBootFailure guards against progress bars being visible and matches
  on actual failure signals (error toast, Retry/Repair buttons), not the
  onboarding header.
- setupDeadBackend now accepts { fakeError: true } which injects
  HERMES_DESKTOP_BOOT_FAKE_ERROR to trigger a real boot failure — the
  previous dead-provider fixture never actually caused a boot failure
  (hermes serve starts fine; the dead endpoint only matters at chat time).
- boot-failure.spec.ts updated to use { fakeError: true }.

Verified: e2e test passes with 0 progress bars in the DOM at screenshot
time (confirmed via DOM inspection), 16/16 vitest tests pass, typecheck
clean.
2026-07-20 11:44:41 -04:00
..
assistant-ui fmt(js): npm run fix on merge (#67995) 2026-07-20 10:47:15 +00:00
chat perf(desktop): stop tool rows re-rendering on session/cwd change + memo leaves 2026-07-19 22:58:22 -05:00
onboarding fix(desktop): kill loading bar in boot-failure e2e screenshots 2026-07-20 11:44:41 -04:00
pane-shell fmt(js): npm run fix on merge (#67995) 2026-07-20 10:47:15 +00:00
particles feat(desktop): TikTok-style vibe hearts on a reusable particle system 2026-07-10 05:42:14 -05:00
pet chore(desktop): remove the DEV Shift+H heart preview 2026-07-10 16:09:23 -05:00
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 fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
boot-failure-reauth.test.ts fix(desktop): treat connected-but-expired remote sessions as reauth 2026-07-12 04:08:14 -04:00
boot-failure-reauth.ts fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00: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.tsx feat(desktop): ts-ify everything 2026-07-08 16:24:16 -07:00
error-boundary.tsx feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -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): kill boot overlay fade-race in e2e screenshots 2026-07-20 11:44:41 -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 refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
model-visibility-dialog.tsx fix: limit desktop model pickers to explicit providers 2026-07-07 15:12:54 -07:00
notifications.tsx refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05: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