chore(typo): retire tous les tirets cadratins/demi-cadratins + garde CI
Some checks failed
CI / Build & test (Node 24) (push) Has been cancelled
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / No em/en dashes (push) Has been cancelled
CI / Build & test (Node 22) (push) Has been cancelled
Deploy site (production) / build-and-deploy (push) Successful in 20s
Some checks failed
CI / Build & test (Node 24) (push) Has been cancelled
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / No em/en dashes (push) Has been cancelled
CI / Build & test (Node 22) (push) Has been cancelled
Deploy site (production) / build-and-deploy (push) Successful in 20s
Remplace les 547 tirets cadratins (U+2014) et demi-cadratins (U+2013) des fichiers versionnés par la ponctuation contextuelle adaptée (point médian, deux-points, virgule, parenthèses ; tiret simple pour les plages), sur 122 fichiers (appli, vitrine, doc, tests, workflows, scripts). Ajoute le job CI « lint-dashes » (git grep -P) qui échoue si un tiret cadratin/demi-cadratin réapparaît, hors logo binaire et captures brutes du terminal (fidélité des fixtures de détection de dialogue).
This commit is contained in:
@@ -29,7 +29,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P2 — découverte & reprise : corrélation avec les sessions Claude sur disque.
|
||||
// P2 : découverte & reprise : corrélation avec les sessions Claude sur disque.
|
||||
id: 2,
|
||||
sql: `
|
||||
ALTER TABLE sessions ADD COLUMN claude_session_id TEXT;
|
||||
@@ -38,7 +38,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P3 — repos enregistrés. Les worktrees sont dérivés à la volée de git (non persistés).
|
||||
// P3 : repos enregistrés. Les worktrees sont dérivés à la volée de git (non persistés).
|
||||
id: 3,
|
||||
sql: `
|
||||
CREATE TABLE repos (
|
||||
@@ -53,7 +53,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P4 — abonnements Web Push. Liés au token d'auth (token_id) ; clés VAPID en settings.
|
||||
// P4 : abonnements Web Push. Liés au token d'auth (token_id) ; clés VAPID en settings.
|
||||
id: 4,
|
||||
sql: `
|
||||
CREATE TABLE push_subscriptions (
|
||||
@@ -70,7 +70,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P5 — groupes de travail. Un groupe = collection de repos (many-to-many).
|
||||
// P5 : groupes de travail. Un groupe = collection de repos (many-to-many).
|
||||
// Worktrees/sessions NON persistés ici : servis par WorktreeManager/PtyManager
|
||||
// et filtrés côté client par repoId. CASCADE s'appuie sur PRAGMA foreign_keys = ON (cf. openDb).
|
||||
id: 5,
|
||||
@@ -103,7 +103,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
{
|
||||
// Journal d'audit (conformité entreprise : GDPR/SOX/ISO 27001). Trace les mutations
|
||||
// sensibles (tokens, réglages, secrets, abonnements push, groupes). Ne contient JAMAIS
|
||||
// de secret en clair — `details` est un JSON de métadonnées non sensibles.
|
||||
// de secret en clair, `details` est un JSON de métadonnées non sensibles.
|
||||
id: 7,
|
||||
sql: `
|
||||
CREATE TABLE audit_logs (
|
||||
@@ -119,7 +119,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P6 — session de groupe multi-repo. Une session peut couvrir plusieurs répertoires (--add-dir)
|
||||
// P6 : session de groupe multi-repo. Une session peut couvrir plusieurs répertoires (--add-dir)
|
||||
// et appartenir à un groupe. `added_dirs` : JSON array de chemins absolus (NULL si mono-repo).
|
||||
// `group_id` : pas de FK (ALTER ADD COLUMN sqlite n'en pose pas) ; nettoyé à la suppression du groupe.
|
||||
id: 8,
|
||||
@@ -143,7 +143,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P10 — archivage automatique des sessions terminées (rétention configurable, défaut 30 j).
|
||||
// P10 : archivage automatique des sessions terminées (rétention configurable, défaut 30 j).
|
||||
// `archived_at` NULL = active. Soft-archive : JAMAIS de DELETE (resume/fork restent intacts).
|
||||
// Sémantique distincte de hidden_sessions (#9) : `hidden` est manuel et indexé par
|
||||
// claude_session_id ; `archived` est automatique par ancienneté, indexé par `id`, et ne
|
||||
@@ -155,7 +155,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P12 — connexions aux services git distants (Gitea/GitLab/GitHub). Les SECRETS (PAT, app
|
||||
// P12 : connexions aux services git distants (Gitea/GitLab/GitHub). Les SECRETS (PAT, app
|
||||
// password, tokens OAuth) sont chiffrés par SecretBox AVANT insertion (colonnes *_encrypted) :
|
||||
// la base ne contient jamais de secret en clair. `ssh_key_path`/`oauth_*` sont posés dès
|
||||
// maintenant (schéma stable) mais exploités en P12b/P12c. `test_result` = dernier diagnostic.
|
||||
@@ -181,7 +181,7 @@ const MIGRATIONS: Array<{ id: number; sql: string }> = [
|
||||
`,
|
||||
},
|
||||
{
|
||||
// P12 — un repo enregistré peut provenir d'un clone : on retient sa source (remote_url),
|
||||
// P12 : un repo enregistré peut provenir d'un clone : on retient sa source (remote_url),
|
||||
// le service détecté et le credential utilisé. PAS de FK sur credential_id (cohérent avec
|
||||
// sessions.group_id #8) : la suppression d'un credential nullifie ce champ côté manager.
|
||||
id: 12,
|
||||
@@ -205,7 +205,7 @@ export function openDb(path: string): Db {
|
||||
}
|
||||
|
||||
/**
|
||||
* Restreint la base (et ses fichiers WAL/SHM) à 0o600 — proprio uniquement. La base contient des
|
||||
* Restreint la base (et ses fichiers WAL/SHM) à 0o600, proprio uniquement. La base contient des
|
||||
* secrets (server_secret, clé privée VAPID, hashs de tokens) : elle ne doit jamais être lisible par
|
||||
* d'autres utilisateurs du système. Best-effort : ignoré sur les FS sans permissions POSIX.
|
||||
*/
|
||||
@@ -268,7 +268,7 @@ export function unhideSession(db: Db, claudeSessionId: string): void {
|
||||
db.prepare('DELETE FROM hidden_sessions WHERE claude_session_id = ?').run(claudeSessionId);
|
||||
}
|
||||
|
||||
// ---- Archivage des sessions terminées (par id, soft-archive — P10) ----
|
||||
// ---- Archivage des sessions terminées (par id, soft-archive, P10) ----
|
||||
|
||||
/** Archive une session managée (idempotent : ne touche pas une session déjà archivée). */
|
||||
export function archiveSession(db: Db, id: string, archivedAt: string): void {
|
||||
|
||||
Reference in New Issue
Block a user