feat(claude): Settings → Claude accounts registry list (T-482 part 2)

Completes the account settings surface with the global Accounts list under the
Claude category: each registered account shows a sign-in dot, name, and config
dir, with re-login and remove affordances plus an inline add-account field.

- Sign-in status: accountIsSignedIn, a read-only probe (a .credentials.json, or
  an oauthAccount marker in .claude.json; under-reports on macOS keychain).
- Add: registers ~/.claude-<name> and publishes a login action (T-485 opens the
  pane).
- Remove: registry-remove, guarded while a workspace is bound — matching the CLI
  `account remove`. --purge dir deletion stays on the CLI flag.

All management routes through the AccountRegistry + accountActionChannel, and
the list rebuilds live off the settings notifier. en/nl strings + widget/probe
tests added. Closes T-482.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-28 00:35:47 +02:00
co-authored by Claude Opus 4.8
parent c3efcf3855
commit 5c31190c4f
10 changed files with 500 additions and 4 deletions
+2
View File
@@ -239,6 +239,8 @@
"settings.claude.permissionMode.label": { "translation": "Permission mode" },
"settings.claude.permissionMode.help": { "translation": "Starting permission mode for new sessions." },
"settings.claude.account.label": { "translation": "Account" },
"settings.claude.account.registry.label": { "translation": "Accounts" },
"settings.claude.account.registry.help": { "translation": "Registered Claude accounts (each a separate config dir + login)." },
"settings.claude.account.workspace.label": { "translation": "Account for this workspace" },
"settings.claude.account.workspace.help": { "translation": "Which Claude account this repo runs under; Default uses the system login." }
}
+2
View File
@@ -239,6 +239,8 @@
"settings.claude.permissionMode.label": { "translation": "Permissiemodus" },
"settings.claude.permissionMode.help": { "translation": "Begin-permissiemodus voor nieuwe sessies." },
"settings.claude.account.label": { "translation": "Account" },
"settings.claude.account.registry.label": { "translation": "Accounts" },
"settings.claude.account.registry.help": { "translation": "Geregistreerde Claude-accounts (elk een eigen configmap + login)." },
"settings.claude.account.workspace.label": { "translation": "Account voor deze werkmap" },
"settings.claude.account.workspace.help": { "translation": "Welk Claude-account deze repo gebruikt; Standaard gebruikt de systeemlogin." }
}