release: git-arboretum 3.3.0 (« Démarrer le projet » : lancement multi-terminaux), vscode 0.4.0, desktop 0.1.3
All checks were successful
CI / Build & test (Node 22) (push) Successful in 10m17s
CI / Build & test (Node 24) (push) Successful in 10m13s
CI / No em/en dashes (push) Successful in 4s
Deploy site (production) / build-and-deploy (push) Successful in 24s
Release / Publish to Gitea npm registry (push) Successful in 10m17s
VSCode Release / Package VSIX (push) Successful in 9m39s
Desktop Release / Build Linux (AppImage + deb) (push) Successful in 15m41s
CI / Pack & boot smoke (Node 22) (push) Successful in 10m3s
All checks were successful
CI / Build & test (Node 22) (push) Successful in 10m17s
CI / Build & test (Node 24) (push) Successful in 10m13s
CI / No em/en dashes (push) Successful in 4s
Deploy site (production) / build-and-deploy (push) Successful in 24s
Release / Publish to Gitea npm registry (push) Successful in 10m17s
VSCode Release / Package VSIX (push) Successful in 9m39s
Desktop Release / Build Linux (AppImage + deb) (push) Successful in 15m41s
CI / Pack & boot smoke (Node 22) (push) Successful in 10m3s
« Démarrer le projet » : un repo définit une fois ses commandes de démarrage (serveur de dev, API, base de données), un clic ouvre un terminal PTY par commande dans le dock IDE. Serveur (additif, PROTOCOL_VERSION inchangé) : - LaunchCommand[] persistées sur repos.launch_commands (migration 13) ; champ additif SessionSummary.launchRunId. - POST /repos/:id/launch : résolution du worktree côté serveur, cwd de commande borné (anti-traversal), commandIds outrepasse enabled. - GET /repos/:id/launch/detect : détection package.json / Procfile / docker-compose. - Shell de login interactif ($SHELL -l -i, charge le PATH nvm/asdf) + auto-type de la commande ; le shell survit à la commande (échec visible). Web : LaunchProjectModal + actions (ProjectTreeNode, SessionsPanel, CommandPalette), stores sessions/worktrees, i18n EN/FR. Alignement du reste du projet : - Extension VS Code 0.4.0 : commande Start Project (repo/worktree), Stop Launch, badge « launch » dans l'arbre, méthode REST startLaunch. - Site vitrine : 16e feature card (Rocket) + section showcase « Start the project » (mockup fidèle au modal), i18n EN/FR. - Documentation : README (EN + FR), help-content (EN + FR), CHANGELOGs server + vscode. Vérifié : 430 tests, typecheck, build (web + site + vscode), acceptance-p13 ALL GREEN, VSIX packagé, garde anti-tirets, vérif visuelle du site (thèmes clair et sombre).
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// Types REST partagés (préfixe /api/v1).
|
||||
import type { CloneOperation, GroupSummary, PostCreateHook, RepoSummary, SessionSummary, SettingsBroadcast, WorktreeSummary } from './protocol.js';
|
||||
import type { CloneOperation, GroupSummary, LaunchCommand, PostCreateHook, RepoSummary, SessionSummary, SettingsBroadcast, WorktreeSummary } from './protocol.js';
|
||||
|
||||
export interface ApiError {
|
||||
error: { code: string; message: string; details?: unknown };
|
||||
@@ -99,6 +99,8 @@ export interface CreateRepoRequest {
|
||||
label?: string;
|
||||
postCreateHooks?: PostCreateHook[];
|
||||
preTrust?: boolean;
|
||||
/** commandes de démarrage du projet (« Démarrer le projet »). */
|
||||
launchCommands?: LaunchCommand[];
|
||||
}
|
||||
export interface UpdateRepoRequest {
|
||||
label?: string;
|
||||
@@ -106,6 +108,8 @@ export interface UpdateRepoRequest {
|
||||
preTrust?: boolean;
|
||||
/** true = masquer le repo (exclu du dashboard, conservé en DB) ; false = ré-afficher. */
|
||||
hidden?: boolean;
|
||||
/** commandes de démarrage du projet (« Démarrer le projet »). */
|
||||
launchCommands?: LaunchCommand[];
|
||||
}
|
||||
|
||||
/** Résultat d'un scan de découverte (POST /api/v1/repos/discover). */
|
||||
@@ -313,6 +317,31 @@ export interface StartRepoSessionRequest {
|
||||
newBranch?: boolean;
|
||||
}
|
||||
|
||||
// ---- « Démarrer le projet » : lancement multi-terminaux ----
|
||||
/**
|
||||
* POST /api/v1/repos/:id/launch : lance un terminal par commande de démarrage activée du repo.
|
||||
* Le worktree cible est résolu côté serveur (le client ne passe jamais de chemin absolu brut) :
|
||||
* `worktreePath` prioritaire, sinon worktree de `branch`, sinon checkout principal.
|
||||
*/
|
||||
export interface StartLaunchRequest {
|
||||
/** worktree cible (chemin absolu d'un worktree connu du repo) ; défaut : checkout principal. */
|
||||
worktreePath?: string;
|
||||
/** alternative à `worktreePath` : worktree portant cette branche. */
|
||||
branch?: string;
|
||||
/** ids des commandes à lancer (défaut : toutes les commandes activées du repo). */
|
||||
commandIds?: string[];
|
||||
}
|
||||
export interface StartLaunchResponse {
|
||||
/** un terminal (session managée) par commande lancée, partageant le même launchRunId. */
|
||||
sessions: SessionSummary[];
|
||||
/** commandes non lancées (répertoire cible introuvable, cwd invalide…). */
|
||||
skipped: Array<{ id: string; reason: string }>;
|
||||
}
|
||||
/** GET /api/v1/repos/:id/launch/detect : suggestions de commandes détectées dans le projet. */
|
||||
export interface DetectLaunchResponse {
|
||||
suggestions: LaunchCommand[];
|
||||
}
|
||||
|
||||
// ---- Groupes de travail (P5) ----
|
||||
export interface GroupsListResponse {
|
||||
groups: GroupSummary[];
|
||||
|
||||
@@ -122,6 +122,9 @@ export interface SessionSummary {
|
||||
addedDirs?: string[];
|
||||
/** groupe propriétaire d'une session de groupe (couvre plusieurs repos) ; null/absent sinon. */
|
||||
groupId?: string | null;
|
||||
// ---- Lancement de projet multi-terminaux (additif) ----
|
||||
/** identifiant partagé par tous les terminaux d'un même « Démarrer le projet » ; null/absent sinon. */
|
||||
launchRunId?: string | null;
|
||||
// ---- Masquage (additif) ----
|
||||
/** true = session découverte masquée par l'utilisateur (exclue de la liste sauf includeHidden). */
|
||||
hidden?: boolean;
|
||||
@@ -139,6 +142,22 @@ export interface PostCreateHook {
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Commande de démarrage d'un projet (« Démarrer le projet ») : une commande shell longue durée
|
||||
* lancée dans un terminal PTY managé (serveur front, back, base…). Plusieurs commandes activées
|
||||
* = plusieurs terminaux ouverts d'un seul geste. Persistée en JSON sur le repo.
|
||||
*/
|
||||
export interface LaunchCommand {
|
||||
id: string;
|
||||
/** libellé court affiché dans l'onglet du terminal (ex. « web », « api »). */
|
||||
label: string;
|
||||
/** commande shell auto-tapée dans un shell de login interactif (ex. `npm run dev`). */
|
||||
run: string;
|
||||
/** sous-répertoire relatif au worktree où exécuter la commande (borné, jamais hors du worktree). */
|
||||
cwd?: string;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
export interface RepoSummary {
|
||||
id: string;
|
||||
/** chemin absolu de la racine du repo (main worktree). */
|
||||
@@ -146,6 +165,8 @@ export interface RepoSummary {
|
||||
label: string;
|
||||
defaultBranch: string | null;
|
||||
postCreateHooks: PostCreateHook[];
|
||||
/** commandes de démarrage du projet (« Démarrer le projet ») ; [] si aucune définie. */
|
||||
launchCommands: LaunchCommand[];
|
||||
/** pré-écrire hasTrustDialogAccepted dans ~/.claude.json à la création d'un worktree. */
|
||||
preTrust: boolean;
|
||||
createdAt: string;
|
||||
|
||||
Reference in New Issue
Block a user