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

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:
2026-07-17 16:44:00 +02:00
parent 985531a986
commit 65ef616867
122 changed files with 538 additions and 521 deletions

View File

@@ -1,4 +1,4 @@
// Protocole WebSocket Arboretum une connexion multiplexée par client.
// Protocole WebSocket Arboretum : une connexion multiplexée par client.
// Messages de contrôle : frames TEXTE JSON. Sortie terminal : frames BINAIRES
// (un chunk PTY peut couper un caractère UTF-8 en frontière de frame ; le
// décodage incombe à xterm.write(Uint8Array) côté client, jamais au transport).
@@ -11,7 +11,7 @@ export const BINARY_FRAME = {
HEADER_BYTES: 5,
/** serveur → client : sortie terminal */
OUTPUT: 0x01,
/** serveur → client : resync le client doit reset son terminal avant d'écrire le payload */
/** serveur → client : resync, le client doit reset son terminal avant d'écrire le payload */
RESYNC: 0x02,
} as const;
@@ -53,7 +53,7 @@ export const FLOW = {
/**
* Replay à l'attach : reset terminal + queue du ring (l'écran TUI se repeint en continu).
* 1 Mo (≈ 1015k lignes) pour permettre de remonter une vraie conversation Claude dans le terminal ;
* 1 Mo (≈ 10-15k lignes) pour permettre de remonter une vraie conversation Claude dans le terminal ;
* reste < LAGGING_BYTES (pas de faux lagging) et bien dans RING_CAPACITY.
*/
export const REPLAY_TAIL_BYTES = 1024 * 1024;
@@ -160,7 +160,7 @@ export interface WorktreeGitStatus {
behind: number;
dirtyCount: number;
upstream: string | null;
// ---- Champs additifs P7 (optionnels, rétrocompat) compteurs bon marché calculés dans le
// ---- Champs additifs P7 (optionnels, rétrocompat) : compteurs bon marché calculés dans le
// même passage `status --porcelain=v2` que dirtyCount. La liste détaillée des changements
// (FileChange[]) n'est JAMAIS diffusée ici : elle est servie à la demande (REST) et poussée
// uniquement aux clients qui « regardent » le worktree (voir `worktree_changes`).
@@ -231,7 +231,7 @@ export type CloneState = 'pending' | 'running' | 'done' | 'error';
export interface CloneOperation {
id: string;
state: CloneState;
/** progression 0100 si git la communique, sinon null. */
/** progression 0-100 si git la communique, sinon null. */
progress: number | null;
/** phase courante rapportée par git (« Receiving objects », « Resolving deltas »…). */
phase: string | null;
@@ -255,7 +255,7 @@ export type ClientMessage =
| { type: 'resize'; channel: number; cols: number; rows: number }
| { type: 'ack'; channel: number; bytes: number }
| { type: 'sub'; topics: Array<'sessions' | 'worktrees' | 'groups' | 'settings' | 'clones'> }
// P7 abonnement ciblé au détail d'un worktree (diff/statut fin) : on ne pousse le détail
// P7 : abonnement ciblé au détail d'un worktree (diff/statut fin) : on ne pousse le détail
// qu'aux connexions qui « regardent » ce worktree (clé = repoId + path), indépendamment du
// topic global 'worktrees' (qui ne transporte que les compteurs légers).
| { type: 'watch'; repoId: string; path: string }
@@ -270,20 +270,20 @@ export type ServerMessage =
| { type: 'control_changed'; channel: number; controlling: boolean }
| { type: 'session_update'; session: SessionSummary }
| { type: 'session_exit'; sessionId: string; exitCode: number | null; signal: number | null }
// P10 une session managée vient d'être archivée (auto par ancienneté ou manuellement). Signal
// P10 : une session managée vient d'être archivée (auto par ancienneté ou manuellement). Signal
// léger : le client met à jour son row (badge archived) et le retire si « Show archived » est off.
| { type: 'session_archived'; sessionId: string }
// P11 un réglage a changé (PATCH /settings) : on diffuse le snapshot non sensible aux abonnés
// P11 : un réglage a changé (PATCH /settings) : on diffuse le snapshot non sensible aux abonnés
// du topic 'settings' pour que tous les clients (et onglets) se synchronisent sans polling.
| { type: 'settings_update'; settings: SettingsBroadcast }
// P12 progression/fin/erreur d'un clone, poussé aux abonnés du topic 'clones'. L'état complet
// P12 : progression/fin/erreur d'un clone, poussé aux abonnés du topic 'clones'. L'état complet
// (state) discrimine progress/done/error en un seul message.
| { type: 'clone_update'; operation: CloneOperation }
| { type: 'repo_update'; repo: RepoSummary }
| { type: 'repo_removed'; repoId: string }
| { type: 'worktree_update'; repoId: string; worktree: WorktreeSummary }
| { type: 'worktree_removed'; repoId: string; path: string }
// P7 signal léger « le détail (diff/fichiers modifiés) de ce worktree a changé, refais un
// P7 : signal léger « le détail (diff/fichiers modifiés) de ce worktree a changé, refais un
// GET /changes ou /diff ». Envoyé UNIQUEMENT aux connexions ayant `watch`é cette clé. On ne
// pousse pas le diff complet dans la frame (taille/flow control) : le client re-fetch en REST.
| { type: 'worktree_changes'; repoId: string; path: string }