hermes-agent/apps/desktop/src
ethernet f1af945f6c
fix(desktop): slow session switch (#65890)
react-router v7's HashRouter wraps every route state update in
React.startTransition() by default. In React 19's concurrent renderer,
transitions are non-urgent — React can yield mid-render and come back
later. When the app is under load (streaming token deltas, gateway
events, store updates from active sessions), those higher-priority
updates keep interrupting the transition, starving the route change commit.

This matches every symptom of the session-switch lag:
- Main thread is free (animations run, clicks work) — startTransition
  defers, it does not block
- navigate() does not take effect for seconds — the transition keeps
  getting interrupted by higher-priority updates
- Worse under load — more concurrent re-renders = more interruptions
- The whole UI (sidebar + main pane) does not update — the entire route
  change is one transition, so nothing commits until it finishes

Pass useTransitions={false} to HashRouter so route state updates are
synchronous at default React priority instead of deferred transition
priority. navigate() now commits and paints immediately.

See: react-router v7 chunk-BIP66BKV.js HashRouter implementation.
2026-07-16 15:34:53 -04:00
..
app fix(desktop): refresh default-derived composer model 2026-07-16 15:15:36 -04:00
components fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
contrib fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
fonts fix(desktop): crisp terminal text via opaque xterm canvas 2026-06-12 19:36:30 -05:00
hooks refactor(desktop): share theme-repaint observer; memory-graph depth polish 2026-06-30 02:06:29 -05:00
i18n feat(desktop): add background-task indicator to sidebar session rows (#65174) 2026-07-15 20:02:23 +00:00
lib fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
plugins feat(desktop): plugin manager, runtime loader, and plugins settings 2026-07-13 17:57:53 -04:00
sdk fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
store fix(desktop): refresh default-derived composer model 2026-07-16 15:15:36 -04:00
themes refactor(desktop): retire desktop-controller for the contribution shell; views as contributions 2026-07-13 17:57:54 -04:00
types fix(moa): reject half-filled MoA saves at the API boundary and hold desktop autosave until slots are complete 2026-07-15 09:50:08 -07:00
global.d.ts feat(desktop): electron — openDir IPC + ⌘W menu bridge (tabs, not windows) 2026-07-13 17:57:54 -04:00
hermes-parity.test.ts feat(desktop): CLI/dashboard parity — skills hub, MCP test/toggle/catalog, maintenance ops, log filters (#57441) 2026-07-03 01:02:47 -07: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: limit desktop model pickers to explicit providers 2026-07-07 15:12:54 -07:00
hermes.ts Merge origin/main into bb/contrib-areas 2026-07-15 02:30:17 -04:00
main.tsx fix(desktop): slow session switch (#65890) 2026-07-16 15:34:53 -04:00
styles.css refactor(desktop): retire desktop-controller for the contribution shell; views as contributions 2026-07-13 17:57:54 -04:00
vite-env.d.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00