hermes-agent/apps/desktop/src
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
..
app refactor(desktop+dashboard): extract shared WebSocket/JSON-RPC layer 2026-06-28 21:20:35 -05:00
components test(browser): cover open timeout diagnostics and failed navigate title 2026-06-28 12:14:21 -05:00
fonts fix(desktop): crisp terminal text via opaque xterm canvas 2026-06-12 19:36:30 -05:00
hooks feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -05:00
i18n fix(browser): extend first-open timeout and surface daemon errors 2026-06-28 12:14:21 -05:00
lib refactor(desktop+dashboard): extract shared WebSocket/JSON-RPC layer 2026-06-28 21:20:35 -05:00
store refactor(desktop+dashboard): extract shared WebSocket/JSON-RPC layer 2026-06-28 21:20:35 -05:00
themes style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
types style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
global.d.ts Merge pull request #52828 from helix4u/fix/desktop-backend-update-indicator 2026-06-26 11:49:07 -05:00
hermes-profile-scope.test.ts fix(desktop): route gateway restart / status / update to the active profile 2026-06-24 19:16:26 -05:00
hermes.test.ts fix(desktop): route profile session reads 2026-06-11 18:09:24 -05:00
hermes.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
main.tsx feat(desktop): floating pet, pop-out overlay + Cmd+K picker 2026-06-20 14:18:40 -05:00
styles.css feat(desktop): show a calm "will resume" notice for background delegate_task 2026-06-25 19:57:51 -05:00
vite-env.d.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00