feat(settings): réglages Claude CLI (binaire + ~/.claude) & notif « disponible »

- Réglages → Claude CLI : override du chemin du binaire `claude` (effet à la
  prochaine session, fallback `which claude`), diagnostic de détection, et
  override de la racine ~/.claude (effet au redémarrage). Validateurs stricts.
- Push : notifie aussi sur le front busy→idle (session redevenue disponible).
- Renomme l'état affiché idle → « disponible » / « available » (web EN/FR + VS Code) ;
  l'enum SessionActivity du protocole reste inchangé.
This commit is contained in:
2026-06-24 10:15:29 +02:00
parent 2506dfb1f3
commit b5236b41c8
16 changed files with 519 additions and 27 deletions

View File

@@ -296,6 +296,19 @@ export interface ServerInfo {
/** clé publique VAPID (sûre à exposer) ; null si push indisponible. */
vapidPublicKey: string | null;
vapidContact: string;
/** racine effective de l'install Claude (~/.claude, --claude-home, ou réglage claude_home). */
claudeHome: string;
/** diagnostic de résolution du binaire `claude` (présence + exécutabilité). */
claudeBin: ClaudeBinDiagnostic;
}
/** Diagnostic de résolution du CLI `claude` exposé en lecture dans les Réglages. */
export interface ClaudeBinDiagnostic {
/** chemin résolu du binaire, ou null si introuvable. */
path: string | null;
/** 'configured' = réglage explicite ; 'path' = trouvé via PATH ; null = introuvable. */
source: 'configured' | 'path' | null;
/** true si le binaire est présent et exécutable. */
ok: boolean;
}
export interface SettingsResponse {
/** réglages modifiables à chaud (allow-list serveur — jamais les secrets). */
@@ -304,6 +317,10 @@ export interface SettingsResponse {
scanRoots: string[];
/** intervalle du re-scan périodique en minutes ; 0 = périodique désactivé. */
scanIntervalMin: number;
/** chemin explicite du binaire `claude` ; null = auto-détection via PATH. Effet : prochaine session. */
claudeBinPath: string | null;
/** override de la racine ~/.claude ; null = défaut. Effet : au redémarrage du daemon. */
claudeHome: string | null;
};
server: ServerInfo;
}
@@ -312,6 +329,10 @@ export interface UpdateSettingsRequest {
scanRoots?: string[];
/** intervalle du re-scan périodique en minutes (01440 ; 0 désactive). */
scanIntervalMin?: number;
/** chemin absolu du binaire `claude` (fichier exécutable) ; '' pour réinitialiser à l'auto-détection. */
claudeBinPath?: string;
/** override de la racine ~/.claude (répertoire existant) ; '' pour réinitialiser au défaut. */
claudeHome?: string;
}
// ---- Journal d'audit (conformité entreprise) ----