feat: groupes de travail (P5)
Ajoute la notion de groupe — collection nommée de repos (membership légère persistée, many-to-many) — pour piloter plusieurs repos en simultané : - DB : migration #5 (tables groups + group_repos, FK ON DELETE CASCADE). - GroupManager (synchrone, EventEmitter) + routes REST /api/v1/groups ; ne persiste que la membership, worktrees/sessions filtrés par repoId côté client. - Protocole : GroupSummary, DTOs, topic WS « groups », events group_update/removed (additifs, PROTOCOL_VERSION inchangé). - Web : store groups, GroupsListView, GroupView (réutilise RepoSection), grille multi-terminaux (TerminalGrid/TerminalCell), action « feature cross-repo » (orchestration client, tolérante aux échecs partiels), routes + i18n EN/FR. - Tests : group-manager.test.ts + extension protocol.test.ts ; acceptance-p5.mjs.
This commit is contained in:
@@ -63,6 +63,54 @@ const fr: typeof en = {
|
||||
dashboard: {
|
||||
title: 'Worktrees',
|
||||
allSessions: 'Toutes les sessions',
|
||||
groups: 'Groupes',
|
||||
},
|
||||
groups: {
|
||||
title: 'Groupes',
|
||||
new: 'Nouveau groupe',
|
||||
create: 'Créer',
|
||||
creating: 'Création…',
|
||||
nameLabel: 'Nom du groupe',
|
||||
namePlaceholder: 'ex. Stack paiements',
|
||||
colorLabel: 'Couleur',
|
||||
reposLabel: 'Dépôts',
|
||||
empty: 'Aucun groupe — créez-en un ci-dessus.',
|
||||
noRepos: 'Aucun dépôt sélectionné.',
|
||||
noReposInGroup: 'Aucun dépôt dans ce groupe — ajoutez-en ci-dessous.',
|
||||
noReposRegistered: 'Aucun dépôt enregistré — ajoutez-en d’abord depuis le tableau de bord.',
|
||||
open: 'Ouvrir',
|
||||
edit: 'Modifier les dépôts',
|
||||
editDone: 'Terminé',
|
||||
remove: 'Supprimer',
|
||||
confirmDelete: 'Confirmer',
|
||||
repoCount: 'aucun dépôt | 1 dépôt | {n} dépôts',
|
||||
dashboard: 'Tableau de bord',
|
||||
missingRepo: 'Dépôt indisponible',
|
||||
removeFromGroup: 'Retirer du groupe',
|
||||
sessionsActive: 'aucune session active | 1 session active | {n} sessions actives',
|
||||
viewList: 'Dépôts',
|
||||
viewGrid: 'Terminaux',
|
||||
gridEmpty: 'Aucune session active dans ce groupe.',
|
||||
gridCapped: '{shown} sessions affichées sur {total} — fermez des terminaux pour voir le reste.',
|
||||
newFeature: 'Nouvelle feature cross-repo',
|
||||
},
|
||||
crossRepo: {
|
||||
title: 'Nouvelle feature cross-repo',
|
||||
intro: 'Crée le même worktree dans les dépôts sélectionnés, en une seule action.',
|
||||
branchLabel: 'Nom de branche',
|
||||
branchPlaceholder: 'feature/…',
|
||||
newBranch: 'créer la branche',
|
||||
baseRefLabel: 'Réf. de base (optionnel)',
|
||||
startLabel: 'Démarrer une session',
|
||||
startNone: 'aucune session',
|
||||
reposLabel: 'Appliquer à',
|
||||
create: 'Créer dans {n} dépôts',
|
||||
creating: 'Création…',
|
||||
retryFailed: 'Réessayer les échecs',
|
||||
close: 'Fermer',
|
||||
pending: 'en cours…',
|
||||
ok: 'créé',
|
||||
error: 'échec',
|
||||
},
|
||||
repos: {
|
||||
add: 'Ajouter un repo',
|
||||
|
||||
Reference in New Issue
Block a user