hermes-agent/apps/desktop/src/app
Brooklyn Nicholson dfb561a3ae refactor(desktop+dashboard): extract shared WebSocket/JSON-RPC layer
The Electron desktop app and the web dashboard each carried their own
copy of the tui_gateway JSON-RPC WebSocket client plus near-identical
auth'd WS-URL construction. The dashboard's copy was the historical
source of the "is the dashboard required to run the desktop app?"
confusion, since the two surfaces looked coupled.

Consolidate the genuinely shared transport into the existing
framework-agnostic `@hermes/shared` package so both surfaces consume it
independently — neither app depends on the other:

- Move `resolveGatewayWsUrl` + `GatewayReauthRequiredError` (single-use
  OAuth ticket re-mint vs long-lived token fallback) into
  `@hermes/shared`; desktop now imports them directly.
- Add `buildHermesWebSocketUrl`, one base-path/scheme/auth-aware URL
  builder, and route every dashboard WS endpoint through it
  (`/api/ws`, `/api/events`, `/api/pty`, plugin WS URLs).
- Reduce the dashboard `GatewayClient` to a thin subclass of the shared
  `JsonRpcGatewayClient`, deleting ~210 lines of duplicated pending-call
  /event-dispatch/connect plumbing while keeping its dashboard-specific
  ticket-vs-token auth selection.
- Drop the stale "start it with --tui" chat banner, which implied the
  dashboard flag was required.

Behavior is preserved on both surfaces; the dashboard additionally
inherits the shared client's 15s connect timeout (previously
desktop-only), so a hung connect now fails fast instead of pinning the
composer in "connecting".
2026-06-28 21:20:35 -05:00
..
agents style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
artifacts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
chat fix(desktop): remote project picker UX and profile-scoped fs/git routing 2026-06-28 16:23:39 -05:00
command-center style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
command-palette style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
cron style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
gateway/hooks refactor(desktop+dashboard): extract shared WebSocket/JSON-RPC layer 2026-06-28 21:20:35 -05:00
hooks feat(desktop): add composer coding rail and worktree flow 2026-06-25 16:40:27 -05:00
messaging fix(desktop): broken "Open setup guide" button for plugin platforms 2026-06-27 04:34:08 +05:30
overlays refactor(desktop): converge cron overlay onto profiles' split layout 2026-06-06 16:39:56 -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,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
right-sidebar fix(desktop): remote project picker UX and profile-scoped fs/git routing 2026-06-28 16:23:39 -05:00
session/hooks fix(desktop): restore cross-wired runtime-id guard on session resume 2026-06-28 18:23:09 -05:00
settings fix(desktop): show custom (non-curated) model in Settings model pickers 2026-06-26 18:55:44 -05:00
shell fix(desktop): keep titlebar overlay off session title 2026-06-26 19:18:26 -06:00
skills style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
desktop-controller.tsx fix(desktop): remote project picker UX and profile-scoped fs/git routing 2026-06-28 16:23:39 -05:00
floating-hud.ts style(desktop): use the nous overlay surface (--stroke-nous + --shadow-nous) for the HUDs 2026-06-09 23:49:02 -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