feat(worktrees): démarrer une session sur la branche principale ou tout worktree

Ajoute le choix « créer un worktree OU bosser sur la branche principale » au
moment de démarrer le travail, sur deux surfaces :
- bouton « Démarrer » (claude/bash) sur chaque WorktreeCard, y compris le
  checkout principal (badge « principal ») — comblait un manque : impossible
  jusqu'ici de lancer une session sur un worktree existant depuis le dashboard ;
- toggle de mode (Worktree / Branche principale) dans le formulaire d'entête
  de RepoSection.

Option git « créer & basculer » : nouvel endpoint POST /api/v1/repos/:id/session
qui lance UNE session dans le checkout principal (repo.path), avec création ou
bascule de branche optionnelle (git switch[-c]) — refusée en 409 si l'arbre est
sale. Pas de hooks ni de pré-trust (c'est le dépôt réel de l'utilisateur).

- shared : type additif StartRepoSessionRequest.
- server : git.switchBranch + WorktreeManager.startMainSession + route.
- web : store worktrees.startMainSession, UI WorktreeCard/RepoSection, i18n fr/en.
- tests : +5 unitaires (switchBranch, startMainSession) ; acceptance-p3 étendue.
This commit is contained in:
2026-06-22 11:30:40 +02:00
parent ea7b2fd278
commit 915fdf185d
12 changed files with 324 additions and 21 deletions

View File

@@ -141,7 +141,16 @@ export default {
branch: 'Branch',
newBranch: 'create branch',
start: 'Start',
starting: 'Starting…',
startNone: 'no session',
startWork: 'Start work',
modeLabel: 'Mode',
modeWorktree: 'Worktree',
modeMain: 'Main branch',
branchModeLabel: 'Branch',
currentBranch: 'current branch',
newBranchOpt: 'new branch',
commandLabel: 'Command',
delete: 'Delete',
confirmDelete: 'Confirm delete',
forceDelete: 'Force delete',