feat(groups): session de groupe au parent commun + redirection vers le terminal
Le cwd d'une session de groupe devient le PARENT COMMUN des répertoires couverts (racine neutre, chemins relatifs cross-repo naturels) au lieu du premier repo arbitraire ; chaque repo reste relié en --add-dir. Garde-fou : si le parent commun est la racine du FS, on retombe sur le premier répertoire. Nouveau module pur resolveGroupCwd (core/group-session.ts). Côté web, un lancement réussi redirige vers le terminal plein écran de la session, avec un toast (succès ou couverture partielle).
This commit is contained in:
@@ -13,6 +13,7 @@ import type { WorktreeManager } from '../core/worktree-manager.js';
|
||||
import type { PtyManager } from '../core/pty-manager.js';
|
||||
import type { Db } from '../db/index.js';
|
||||
import { recordAudit } from '../core/audit-log.js';
|
||||
import { resolveGroupCwd } from '../core/group-session.js';
|
||||
import { sendManagerError } from './repos.js';
|
||||
|
||||
export function registerGroupRoutes(
|
||||
@@ -137,13 +138,14 @@ export function registerGroupRoutes(
|
||||
if (!dirs.includes(match.path)) dirs.push(match.path);
|
||||
}
|
||||
|
||||
const [primary, ...rest] = dirs;
|
||||
if (primary === undefined) {
|
||||
if (dirs.length === 0) {
|
||||
return reply.status(400).send({ error: { code: 'BAD_REQUEST', message: 'no directory to span (group has no resolvable worktree)' } });
|
||||
}
|
||||
// cwd = parent commun des repos couverts, chacun relié en --add-dir (P6). Voir resolveGroupCwd.
|
||||
const { cwd, addDirs } = resolveGroupCwd(dirs);
|
||||
|
||||
try {
|
||||
const session = manager.spawn({ cwd: primary, addDirs: rest, command, groupId: id });
|
||||
const session = manager.spawn({ cwd, addDirs, command, groupId: id });
|
||||
recordAudit(db, {
|
||||
actor: req.authContext?.tokenId ?? 'unknown',
|
||||
action: 'group.session.create',
|
||||
|
||||
Reference in New Issue
Block a user