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. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,6 +61,54 @@ export default {
|
||||
dashboard: {
|
||||
title: 'Worktrees',
|
||||
allSessions: 'All sessions',
|
||||
groups: 'Groups',
|
||||
},
|
||||
groups: {
|
||||
title: 'Groups',
|
||||
new: 'New group',
|
||||
create: 'Create',
|
||||
creating: 'Creating…',
|
||||
nameLabel: 'Group name',
|
||||
namePlaceholder: 'e.g. Payments stack',
|
||||
colorLabel: 'Color',
|
||||
reposLabel: 'Repositories',
|
||||
empty: 'No group yet — create one above.',
|
||||
noRepos: 'No repository selected.',
|
||||
noReposInGroup: 'No repository in this group yet — add some below.',
|
||||
noReposRegistered: 'No repository registered yet — add some from the dashboard first.',
|
||||
open: 'Open',
|
||||
edit: 'Edit repositories',
|
||||
editDone: 'Done',
|
||||
remove: 'Delete',
|
||||
confirmDelete: 'Confirm delete',
|
||||
repoCount: 'no repo | 1 repo | {n} repos',
|
||||
dashboard: 'Dashboard',
|
||||
missingRepo: 'Repository unavailable',
|
||||
removeFromGroup: 'Remove from group',
|
||||
sessionsActive: 'no active session | 1 active session | {n} active sessions',
|
||||
viewList: 'Repos',
|
||||
viewGrid: 'Terminals',
|
||||
gridEmpty: 'No active session in this group.',
|
||||
gridCapped: 'Showing {shown} of {total} sessions — close some terminals to see the rest.',
|
||||
newFeature: 'New cross-repo feature',
|
||||
},
|
||||
crossRepo: {
|
||||
title: 'New cross-repo feature',
|
||||
intro: 'Create the same worktree across the selected repos, in one action.',
|
||||
branchLabel: 'Branch name',
|
||||
branchPlaceholder: 'feature/…',
|
||||
newBranch: 'create branch',
|
||||
baseRefLabel: 'Base ref (optional)',
|
||||
startLabel: 'Start session',
|
||||
startNone: 'no session',
|
||||
reposLabel: 'Apply to',
|
||||
create: 'Create across {n} repos',
|
||||
creating: 'Creating…',
|
||||
retryFailed: 'Retry failed',
|
||||
close: 'Close',
|
||||
pending: 'pending…',
|
||||
ok: 'created',
|
||||
error: 'failed',
|
||||
},
|
||||
repos: {
|
||||
add: 'Add repo',
|
||||
|
||||
Reference in New Issue
Block a user