Skip to content

Commit 5d12ba8

Browse files
nullvariantclaude
andauthored
fix(ux): improve identity management usability (#241)
* feat(i18n): add UX improvement keys for 17 languages Add i18n keys for identity management UI improvements: - Edit button tooltip - Manage Identities title with gear emoji - Empty state placeholder message - Name validation error message - ID format validation with length parameter 🖥️ IDE: [Cursor](https://cursor.sh) 🔌 Extension: [Claude Code](https://claude.ai/download) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Model-Raw: claude-opus-4-5-20251101 * feat(ui): implement manage identities UI with inline buttons - Add showManageIdentitiesQuickPick() with edit/delete inline buttons - Add ManageIdentitiesResult and ManageIdentityQuickPickItem types - Change showAddIdentityWizard() to return boolean - Change showEditIdentityWizard() to accept optional targetIdentity - Change handleAddIdentity() and handleDeleteIdentity() to return boolean - Add hasDangerousChars() validation for name input - Add security logging via logConfigChange() - Implement manage identities loop structure in handlers 🖥️ IDE: [Cursor](https://cursor.sh) 🔌 Extension: [Claude Code](https://claude.ai/download) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Model-Raw: claude-opus-4-5-20251101 * feat(ui): implement Esc-to-go-back navigation in identity wizards - Refactor showAddIdentityWizard() to use state machine pattern - Refactor showEditIdentityWizard() with field selection loop - Extract validation functions for reusability - Add defense-in-depth comments for security validation - Organize code into logical sections (Types, Validation, UI, Persistence, Wizards) - Reduce cognitive complexity by extracting helper functions 🖥️ IDE: [Cursor](https://cursor.sh) 🔌 Extension: [Claude Code](https://claude.ai/download) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Model-Raw: claude-opus-4-5-20251101 * test(git-id-switcher): update E2E tests for Phase 5 UX improvements - identityPicker.test.ts: Add 14 tests for showManageIdentitiesQuickPick - Title bar button (add), item buttons (edit/delete) - Back button behavior, empty state, selection handling - identityManager.test.ts: Rewrite with 19 tests - Add Wizard normal flow and Esc-back navigation - Edit Wizard with targetIdentity and Esc-back - Security validation (ID, Name, Email inputs) - handlers.test.ts: Add 8 tests (16 total) - handleDeleteIdentity with targetIdentity parameter - handleAddIdentity cancel/success flows - MAX_IDENTITIES limit, security logging verification All tests pass successfully. 🖥️ IDE: [Cursor](https://cursor.sh) 🔌 Extension: [Claude Code](https://claude.ai/download) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Model-Raw: claude-opus-4-5-20251101 * fix(ux): improve identity management usability - Add inline edit/delete buttons to manage identities menu - Implement Esc-to-go-back navigation in wizards - Preserve focus position after edit/delete operations - Show empty state message when no profiles exist - Fix magic number lint error with ADD_WIZARD constants - Update version to 0.15.1 🖥️ IDE: [Cursor](https://cursor.sh) 🔌 Extension: [Claude Code](https://claude.ai/download) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Model-Raw: claude-opus-4-5-20251101 * test: fix E2E test timeouts and email validation test - Fix selectPlaceholder/selectIdentity mock to trigger hideCallback after acceptCallback - Fix email validation test to use getAllValidateInputs instead of getLastValidateInput 🖥️ IDE: [Cursor](https://cursor.sh) 🔌 Extension: [Claude Code](https://claude.ai/download) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Model-Raw: claude-opus-4-5-20251101 --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 5033254 commit 5d12ba8

26 files changed

Lines changed: 1873 additions & 625 deletions

extensions/git-id-switcher/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.15.1] - 2026-01-27
11+
12+
### Changed
13+
14+
- **Identity Management UX Improvements**:
15+
- Manage menu now shows profile list with inline edit/delete buttons
16+
- Back button in title bar (standard VS Code pattern)
17+
- Esc key now goes back one step instead of cancelling entire wizard
18+
- Focus position preserved after edit/delete operations
19+
- Empty state message when no profiles exist
20+
1021
## [0.15.0] - 2026-01-26
1122

1223
### Added

extensions/git-id-switcher/l10n/bundle.l10n.bg.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Изберете действие",
7070
"Select identity to edit": "Изберете самоличност за редактиране",
7171
"Failed to add identity: {0}": "Неуспешно добавяне на самоличност: {0}",
72-
"Failed to edit identity: {0}": "Неуспешно редактиране на самоличност: {0}"
72+
"Failed to edit identity: {0}": "Неуспешно редактиране на самоличност: {0}",
73+
"Edit": "Редактирай",
74+
"⚙️ Manage Identities": "⚙️ Управление на самоличности",
75+
"(No identities)": "(Няма самоличности)",
76+
"Name contains invalid characters": "Името съдържа невалидни символи",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "ID трябва да съдържа от 1 до {0} буквено-цифрови символа, долни черти или тирета"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.cs.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Vyberte akci",
7070
"Select identity to edit": "Vyberte identitu k úpravě",
7171
"Failed to add identity: {0}": "Nepodařilo se přidat identitu: {0}",
72-
"Failed to edit identity: {0}": "Nepodařilo se upravit identitu: {0}"
72+
"Failed to edit identity: {0}": "Nepodařilo se upravit identitu: {0}",
73+
"Edit": "Upravit",
74+
"⚙️ Manage Identities": "⚙️ Spravovat identity",
75+
"(No identities)": "(Žádné identity)",
76+
"Name contains invalid characters": "Jméno obsahuje neplatné znaky",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "ID musí mít 1-{0} alfanumerických znaků, podtržítek nebo pomlček"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.de.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Aktion auswählen",
7070
"Select identity to edit": "Zu bearbeitende Identität auswählen",
7171
"Failed to add identity: {0}": "Identität konnte nicht hinzugefügt werden: {0}",
72-
"Failed to edit identity: {0}": "Identität konnte nicht bearbeitet werden: {0}"
72+
"Failed to edit identity: {0}": "Identität konnte nicht bearbeitet werden: {0}",
73+
"Edit": "Bearbeiten",
74+
"⚙️ Manage Identities": "⚙️ Identitäten verwalten",
75+
"(No identities)": "(Keine Identitäten)",
76+
"Name contains invalid characters": "Name enthält ungültige Zeichen",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "ID muss 1-{0} alphanumerische Zeichen, Unterstriche oder Bindestriche enthalten"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.es.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Seleccionar una acción",
7070
"Select identity to edit": "Seleccionar identidad a editar",
7171
"Failed to add identity: {0}": "Error al agregar identidad: {0}",
72-
"Failed to edit identity: {0}": "Error al editar identidad: {0}"
72+
"Failed to edit identity: {0}": "Error al editar identidad: {0}",
73+
"Edit": "Editar",
74+
"⚙️ Manage Identities": "⚙️ Administrar identidades",
75+
"(No identities)": "(Sin identidades)",
76+
"Name contains invalid characters": "El nombre contiene caracteres no válidos",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "El ID debe tener de 1 a {0} caracteres alfanuméricos, guiones bajos o guiones"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.fr.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Sélectionner une action",
7070
"Select identity to edit": "Sélectionner l'identité à modifier",
7171
"Failed to add identity: {0}": "Échec de l'ajout de l'identité: {0}",
72-
"Failed to edit identity: {0}": "Échec de la modification de l'identité: {0}"
72+
"Failed to edit identity: {0}": "Échec de la modification de l'identité: {0}",
73+
"Edit": "Modifier",
74+
"⚙️ Manage Identities": "⚙️ Gérer les identités",
75+
"(No identities)": "(Aucune identité)",
76+
"Name contains invalid characters": "Le nom contient des caractères non valides",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "L'ID doit contenir de 1 à {0} caractères alphanumériques, underscores ou tirets"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.hu.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Válasszon műveletet",
7070
"Select identity to edit": "Válassza ki a szerkesztendő identitást",
7171
"Failed to add identity: {0}": "Nem sikerült hozzáadni az identitást: {0}",
72-
"Failed to edit identity: {0}": "Nem sikerült szerkeszteni az identitást: {0}"
72+
"Failed to edit identity: {0}": "Nem sikerült szerkeszteni az identitást: {0}",
73+
"Edit": "Szerkesztés",
74+
"⚙️ Manage Identities": "⚙️ Identitások kezelése",
75+
"(No identities)": "(Nincs identitás)",
76+
"Name contains invalid characters": "A név érvénytelen karaktereket tartalmaz",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "Az ID-nak 1-{0} alfanumerikus karakterből, aláhúzásból vagy kötőjelből kell állnia"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.it.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Seleziona un'azione",
7070
"Select identity to edit": "Seleziona identità da modificare",
7171
"Failed to add identity: {0}": "Impossibile aggiungere l'identità: {0}",
72-
"Failed to edit identity: {0}": "Impossibile modificare l'identità: {0}"
72+
"Failed to edit identity: {0}": "Impossibile modificare l'identità: {0}",
73+
"Edit": "Modifica",
74+
"⚙️ Manage Identities": "⚙️ Gestisci identità",
75+
"(No identities)": "(Nessuna identità)",
76+
"Name contains invalid characters": "Il nome contiene caratteri non validi",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "L'ID deve contenere da 1 a {0} caratteri alfanumerici, underscore o trattini"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.ja.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "操作を選択",
7070
"Select identity to edit": "編集するプロフィールを選択",
7171
"Failed to add identity: {0}": "プロフィールの追加に失敗しました: {0}",
72-
"Failed to edit identity: {0}": "プロフィールの編集に失敗しました: {0}"
72+
"Failed to edit identity: {0}": "プロフィールの編集に失敗しました: {0}",
73+
"Edit": "編集",
74+
"⚙️ Manage Identities": "⚙️ プロフィール管理",
75+
"(No identities)": "(プロフィールがありません)",
76+
"Name contains invalid characters": "名前に無効な文字が含まれています",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "IDは1〜{0}文字の英数字、アンダースコア、ハイフンで入力してください"
7378
}

extensions/git-id-switcher/l10n/bundle.l10n.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,10 @@
6969
"Select an action": "Select an action",
7070
"Select identity to edit": "Select identity to edit",
7171
"Failed to add identity: {0}": "Failed to add identity: {0}",
72-
"Failed to edit identity: {0}": "Failed to edit identity: {0}"
72+
"Failed to edit identity: {0}": "Failed to edit identity: {0}",
73+
"Edit": "Edit",
74+
"⚙️ Manage Identities": "⚙️ Manage Identities",
75+
"(No identities)": "(No identities)",
76+
"Name contains invalid characters": "Name contains invalid characters",
77+
"ID must be 1-{0} alphanumeric characters, underscores, or hyphens": "ID must be 1-{0} alphanumeric characters, underscores, or hyphens"
7378
}

0 commit comments

Comments
 (0)