hermes-agent/apps/desktop/src/app/settings
Brooklyn Nicholson b94b3622b5 feat(desktop): per-session profile switching + cross-profile sessions
Add first-class profile support to the desktop app without app reloads.

- Swap the single live gateway onto a session's profile lazily (spawned on
  demand by the Electron backend pool), so one backend serves the active
  profile and others stay cold — no OOM with many profiles.
- Aggregate sessions across profiles by reading each profile's state.db
  read-only; unified "All profiles" view groups sessions per profile with
  per-profile pagination, while the default view stays scoped to one profile.
- Add an Arc-style profile rail at the sidebar foot: a default<->all toggle
  pinned left, colored named-profile squares scrolling between, Manage pinned
  right. Profile identity is a deterministic per-name color.
- Route profile-scoped REST (config/env/skills/tools/model) to the active
  gateway profile and invalidate React Query caches on swap. Single-profile
  users never trigger a swap, so their path is unchanged.

Backend:
- web_server: profile-aware active/list endpoints + per-profile session
  totals; hermes_state: session_count(exclude_children); main.py: honor
  --profile over HERMES_HOME env for pooled backends.

UI primitives:
- Add a position-aware Tip tooltip (instant, themed) as a drop-in for native
  title=, and strip redundant tooltips from self-descriptive chrome.
2026-06-04 16:35:34 -05:00
..
about-settings.tsx refactor(desktop): DRY/elegance pass over PR-touched files 2026-06-04 00:28:57 -05:00
appearance-settings.tsx feat(desktop): global Cmd+K palette + UI consistency overhaul 2026-06-03 23:45:45 -05:00
config-settings.tsx feat(desktop): global Cmd+K palette + UI consistency overhaul 2026-06-03 23:45:45 -05:00
constants.ts feat(desktop): dedicated Providers settings + polished Accounts/API-keys UX (#38551) 2026-06-04 03:03:42 -05:00
env-credentials.tsx feat(desktop): per-session profile switching + cross-profile sessions 2026-06-04 16:35:34 -05:00
gateway-settings.tsx chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
helpers.test.ts feat(desktop): dedicated Providers settings + polished Accounts/API-keys UX (#38551) 2026-06-04 03:03:42 -05:00
helpers.ts feat(desktop): dedicated Providers settings + polished Accounts/API-keys UX (#38551) 2026-06-04 03:03:42 -05:00
index.tsx feat(desktop): per-session profile switching + cross-profile sessions 2026-06-04 16:35:34 -05:00
keys-settings.tsx feat(desktop): dedicated Providers settings + polished Accounts/API-keys UX (#38551) 2026-06-04 03:03:42 -05:00
mcp-settings.tsx refactor(desktop): DRY/elegance pass over PR-touched files 2026-06-04 00:28:57 -05:00
model-settings.test.tsx refactor(desktop): move model management from Command Center into Settings 2026-06-02 05:53:15 -04:00
model-settings.tsx chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
primitives.tsx style(desktop): migrate bespoke pills to shared Badge; tidy cron/titlebar 2026-06-03 23:52:51 -05:00
providers-settings.tsx chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
sessions-settings.tsx feat(desktop): per-session profile switching + cross-profile sessions 2026-06-04 16:35:34 -05:00
toolset-config-panel.test.tsx fix(desktop): reflect active toolset provider in config panel 2026-06-02 03:25:46 -04:00
toolset-config-panel.tsx feat(desktop): per-session profile switching + cross-profile sessions 2026-06-04 16:35:34 -05:00
types.ts feat(desktop): dedicated Providers settings + polished Accounts/API-keys UX (#38551) 2026-06-04 03:03:42 -05:00
use-deep-link-highlight.ts refactor(desktop): DRY/elegance pass over PR-touched files 2026-06-04 00:28:57 -05:00