Salut ! Voilà ce qui a avancé pendant que tu dormais. Tout est commité + poussé sur main, tests verts à chaque étape, sans Co-Authored-By.
Le projet est passé en npm workspaces :
packages/core= @lexluthor/core, le cœur agnostique (moteur + adapters + lexique). Réutilisable partout.apps/web= la webapp (devient le démonstrateur + futur GIF).apps/vscode= l'extension VS Code (le vrai produit).- Inversion de dépendance WASM (
WasmProvider) + fabriquecreateSubtitler(provider)partagée. - 98 tests verts, build OK, webapp re-vérifiée headless (rien cassé).
Une extension toujours-active : tu ouvres un .js/.ts, les sous-titres apparaissent sans rien faire.
- Sous-titres FR sous chaque construction (via le cœur, déterministe, offline).
- Alertes sécu en rouge (
eval,Buffer.from(…,'base64'),child_process, accès dynamiques) → diagnostics (squiggle + panneau Problèmes). - Pastille VOSTFR dans la barre d'état (clic = on/off).
- Densité réglable (anti-encombrement) + activation par langage.
- Packagée en
apps/vscode/lexluthor.vsix(493 Ko), prête à installer. - 3 tests runtime verts (chargement WASM embarqué + sous-titres + alertes).
+9 idiomes JS fréquents pour que tes vrais fichiers « parlent » davantage : JSON.parse/stringify, fs.* (lecture/écriture fichier), path.join, Object.keys/values/entries, mutations de collection (push/includes…), addEventListener, hooks React (useState/useEffect…), module.exports, switch. Total : 129 tests verts (122 cœur + 4 web + 3 extension).
Tu voulais priorité au mode cinéma (sous-titre sous la ligne). Honnêtement : je n'ai pas pu le vérifier visuellement (pas de VS Code « à l'œil » en autonomie). Et techniquement, VS Code n'a pas d'API de ligne virtuelle — le « sous la ligne » repose sur un hack CSS (display:block injecté) qui peut être neutralisé par VS Code.
Donc j'ai livré les deux, basculables :
inline(défaut) : annotation grisée en fin de ligne, façon GitLens. Fiable, éprouvé.cinema(expérimental) : tente le rendu sous la ligne.
👉 À tester au réveil : commande LexLuthor : basculer cinéma / fin de ligne (ou réglage lexluthor.renderStyle). Dis-moi si en cinema le sous-titre s'affiche bien sous la ligne sur ta version de VS Code, ou s'il déborde/chevauche. Selon ton verdict, on garde cinéma ou on assume l'inline (qui, lui, est propre à coup sûr).
# Installer l'extension déjà packagée :
code --install-extension apps/vscode/lexluthor.vsix
# puis ouvre n'importe quel fichier .js ou .ts -> les sous-titres apparaissent.(ou : VS Code → Extensions → « … » → Install from VSIX… → apps/vscode/lexluthor.vsix)
La webapp démonstrateur marche toujours : npm run dev (puis le port affiché).
- ✅ Vérifié en CI/headless : moteur, lexique, 101 tests, build, chargement WASM de l'extension, runtime navigateur de la webapp.
- 👁️ Besoin de tes yeux : le rendu réel dans l'éditeur (surtout le mode
cinema) — je ne peux pas le voir sans lancer un vrai VS Code.
- i18n FR/EN/ES : je l'ai laissé pour qu'on le fasse ensemble. Décision assumée (« tu avises ») : c'est un refacto transverse (signature
render()du moteur →Message{clé,params}+ migration des 30 règles + 3 catalogues, et surtout la qualité des traductions EN/ES que tu dois valider). Le lancer seul en pleine nuit risquait de laissermainà moitié cassé pour zéro supervision. Mieux vaut un main vert + un produit qui marche. L'archi est prête à le recevoir (leSubtitleret le moteur n'attendent qu'un paramètrelocale). On l'attaque au réveil — l'EN ouvre le marketplace mondial, c'est la vraie prochaine priorité. - Profondeur (chaînage, async, densité moteur), puis largeur (Java prêt, puis Python/Go).
1ad254a— Phase 0 monorepo (packages/core + apps/web + WasmProvider/createSubtitler)a1b3d55— extension VS Code MVP (cinéma+inline, diagnostics sécu, status bar)23305b3— WAKEUP + icône extension (monogramme LL) + config F5 dev0cccb84— +9 idiomes JS (JSON, fs, path, Object.*, collections, addEventListener, hooks React, module.exports, switch)
Tout est sur main, vert, sans Co-Authored-By. Bon réveil 🌅