Files
hermes-agent/apps
Teknium 1ad4733343 feat(desktop): configure per-profile remote overrides from the profile rail
The Electron main has routed a profile with a `profiles.<name>` remote
entry in connection.json to its own pooled backend since
profileRemoteOverride() landed — but the only way to WRITE that entry was
hand-editing connection.json (#91349, design intent from #90223 /
6170f844: this belongs on the profile rail, not the machine-level
Gateways page).

- New "Connect to a remote host…" action on the profile-rail square's
  context menu, opening a URL + token dialog that writes the exact
  `profiles.<name>` shape through the existing typed
  getConnectionConfig/applyConnectionConfig bridge (renderer never
  touches connection.json; tokens ride the existing safeStorage
  encryption path, with the allowPlainTextToken opt-in surfaced on
  keyring-less machines).
- First-time connect shows a one-time confirmation with a plain-language
  risk note; editing an existing override (token rotation) skips it.
- Overridden profile squares carry a "remote" globe badge, and the
  tooltip/aria label names the host. A "Remove remote connection" button
  clears the override (mode: local via the existing coerce path).
- Registry name collision: the dialog warns when the profile name
  matches a v2 connections-registry id/label.
- Token rotation: when switching to an overridden profile fails with an
  auth-shaped error (401/forbidden/invalid token), a re-enter-token
  toast opens the same dialog instead of leaving a silently dead
  profile. Connectivity failures stay generic.
- All five locales updated.

Closes #91349

Design-intent analysis credit: @otfnfn
2026-08-23 03:56:42 -07:00
..