Skip to content

Montées mineures (2) : dix paquets, le SDK d'agent, et ce que la montée a mis au jour - #41

Merged
Shaenn merged 16 commits into
mainfrom
montees-mineures-2
Sep 2, 2026
Merged

Montées mineures (2) : dix paquets, le SDK d'agent, et ce que la montée a mis au jour#41
Shaenn merged 16 commits into
mainfrom
montees-mineures-2

Conversation

@Shaenn

@Shaenn Shaenn commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Le deuxième lot de montées mineures, plus les deux chantiers qu'il a ouverts.

Montées

Dix paquets, un commit chacun, chaque fois vérifié seul : markdown-it 15.0.1,
mermaid 11.17.2, quasar 2.28.0, vue 3.5.42, vue-i18n 11.4.10,
vue-router 5.3.0, zod 4.5.4, @quasar/app-vite 3.8.1, tsx 4.23.13,
eslint 10.9.1.

Puis @anthropic-ai/claude-agent-sdk 0.3.233 → 0.3.252, qui embarque le CLI
2.1.252. Cette montée-là ne se juge pas à la compilation : la surface de types
bouge à peine, mais le binaire est ce qui émet les transcripts que l'Atelier
relit. Le harness a donc fait produire les deux versions et comparé — aucune
espèce de message ni aucun mot du vocabulaire traduit n'apparaît ou ne disparaît
sur la plage. Le témoin même-version donne le même zéro, les comptes bruts
variant de ±14 % : l'écart mesuré est bien nul, pas simplement petit.

Une seule rupture dans les seize versions du CLI traversées : ExitReason perd
bypass_permissions_disabled. AURA ne s'en sert nulle part.

Ce que la montée a mis au jour

Le catalogue de hooks avait trois événements de retard. PreModelSwitch et
PostModelSwitch arrivent avec le CLI 2.1.251 — le premier peut refuser un
changement de modèle, ce qu'aucun autre hook ne sait faire. DirectoryAdded
manquait depuis plus longtemps. Le catalogue de l'écran est en dur parce qu'il
fixe l'ordre d'affichage, que HOOK_EVENTS ne donne pas : il se compare à la
main à chaque montée.

Les réglages gagnent sept clés ouvertes par la même plage : les deux durées
de cache de prompt, keybindingFlavor, desktopSessionCleanupPeriodDays,
spellcheck.enabled et trois interrupteurs. modelSettings s'affiche en lecture
seule, comme la status line.

Deux formes nouvelles les portent, et prolongent le principe déjà posé par la
page — une clé absente n'est pas une valeur, c'est Claude Code qui décide.
choiceField donne à un choix fermé la même troisième position qu'un booléen ;
triNested fait de même sur une clé imbriquée et retire le bloc parent s'il ne
reste rien dedans, pour qu'un "spellcheck": {} résiduel ne se lise pas comme un
réglage posé.

Restent dehors volontairement : modelPicker, modelPricing et
managedSourcesBehavior, que leur documentation destine aux réglages managés
d'une organisation, et headersHelper, qui relève de MCP — AURA ne gère aucun
en-tête de serveur MCP.

L'autocomplétion des clés de traduction

Trois commits venus du même chantier : DefineLocaleMessage est étendue du
catalogue français, si bien qu'une clé mal orthographiée casse désormais
vue-tsc au lieu de se découvrir à l'écran. Un test couvre ce que le typecheck
ne voit pas : une clé citée dans un t() mais absente du catalogue.

Vérification

pnpm lint, pnpm typecheck et pnpm test passent, à l'exception de trois à
quatre invariants de test/corpus.test.ts qui dépassent le testTimeout de 5 s
sur le corpus réel de la machine — ils repassent tous à 120 s. C'est une lenteur,
pas une régression, et elle est antérieure à ce lot.

Shaenn and others added 16 commits September 2, 2026 09:55
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Le binaire embarqué suit : CLI 2.1.252. Relevé du harness sur la plage
231 → 252 — aucune espèce de message ni aucun mot du vocabulaire traduit
n'apparaît ou ne disparaît ; l'Atelier voit la même chose qu'avant.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`DefineLocaleMessage` est l'interface que vue-i18n laisse vide exprès : tant que
personne ne l'étend, `t()` accepte n'importe quelle chaîne et l'éditeur n'a rien
à proposer. L'étendre du catalogue français — la source de vérité, celle dont
`MessageSchema` est déjà dérivé — fait connaître les clés de TypeScript, dans
les `.ts` comme dans les templates.
Les tranches se contrôlaient chacune de leur côté — `const layout: MessageSchema['layout']` —
mais rien ne vérifiait l'assemblage : les deux `index.ts` anglais ne faisaient que
composer, sans être typés. Une tranche ajoutée au français et oubliée en anglais
passait donc en silence jusqu'à l'écran, là où une clé, elle, était vue.

Les annoter ferme le dernier trou de la parité.
Le typecheck ne peut pas la voir : vue-i18n type sa clé en `Key | (string & {})`,
une union qui garde l'autocomplétion mais accepte n'importe quelle chaîne. Une
faute de frappe ne se lisait donc qu'à l'écran, sous la forme de la clé rendue
telle quelle.

Rendre `t` strict aurait demandé de toucher les quatre-vingt-dix composants qui
passent par `useI18n()`, et aurait rejeté les clés construites. Le test, lui,
vérifie les clés écrites en toutes lettres, et la racine fixe des autres — un
renommage de branche est vu même là.
PreModelSwitch et PostModelSwitch arrivent avec le CLI 2.1.251 ; le premier
peut refuser un changement de modèle, ce qu'aucun autre hook ne sait faire.
DirectoryAdded, lui, manquait depuis plus longtemps.

Le catalogue de l'écran est en dur et ne se déduit pas du SDK : il fixe
l'ordre d'affichage, que HOOK_EVENTS ne donne pas. Il se compare donc à la
main à chaque montée.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sept réglages entrent dans le formulaire : les deux durées de cache de
prompt et keybindingFlavor en Général, desktopSessionCleanupPeriodDays,
spellcheck.enabled et trois interrupteurs en Interface. modelSettings
s'affiche en lecture seule, comme la status line : c'est une table indexée
par nom de modèle, pas un champ — mais le taire laisserait croire que le
seul effort en vigueur est le global.

Deux formes nouvelles pour les porter. `choiceField` donne à un choix fermé
la même troisième position qu'un booléen : « Hérité » supprime la clé, au
lieu d'écrire une valeur que personne n'a demandée. `triNested` fait de même
sur une clé imbriquée, et retire le bloc parent s'il ne reste rien dedans —
un `"spellcheck": {}` résiduel se lirait comme un réglage posé.

Restent dehors, et le restent volontairement : modelPicker, modelPricing et
managedSourcesBehavior, que leur documentation destine aux réglages managés
d'une organisation. AURA est mono-utilisateur et locale.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shaenn
Shaenn merged commit c1bcd70 into main Sep 2, 2026
1 check passed
@Shaenn
Shaenn deleted the montees-mineures-2 branch September 2, 2026 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant