b711fd0513
Completes PR #74468 (remote gateway headers for Cloudflare Access, #74466) against the v2 multi-connection registry that landed after the PR was authored, and closes the review blockers: - connection-registry: additive optional `headers` field on remote/cloud entries (normalized through the same forbidden-name filter, secret envelopes like `token`); inherited on edit, treated as dial material by connectionDialFieldsChanged, preserved by normalizeRegistry, and carried through migrateV1ToRegistry. v2 registries without the field load unchanged — no version bump. - main.ts registry paths: connectRegistryBackend dials with the entry's headers (readiness probe, ticket mint, descriptor REST via getJsonForBackend/fetchJsonForBackend, registry ws-url minting with rememberRemoteWsHeaders so renderer upgrades get them injected). - saveRegistryConnection encrypts incoming plaintext header values with the same safeStorage/allowPlainText seam as tokens; sanitizeRegistryConnection exposes only header NAMES to the renderer — values never cross IPC. - Connection tests exercise the leg they validate: both hermes:connection-config:test and hermes:connections:test now send the configured headers on the HTTP status call, the ws-ticket mint, AND the live WebSocket probe (probeGatewayWebSocket grew an injectable `headers` option passed as the undici WebSocket constructor's second argument). - Settings → Connections gains an "Extra gateway headers" editor for remote/cloud entries (name + secret value rows, stored values shown as saved-but-hidden, clearable), with i18n keys (en + zh; other locales fall back through defineLocale).