Repository navigation
Fix(slides,#20051): override magic-string 1.4.2 — la minification CSS revient - #20060
Conversation
…S revient Remplace le contournement de #19981 (build.cssMinify: false) par la cause reelle : depuis magic-string 1.4.3 (publiee le 2026-10-05), @unocss/transformer-directives reecrit en double, en fin de fichier, les declarations qu'il insere quand le fichier porte aussi une regle vide a nettoyer (unocss/unocss#5373, correctif propose #5375 ; cote Slidev slidevjs/slidev#2768). Controle negatif mesure sur le meme arbre, a manifestes pres (le fichier vite.config.ts est deja supprime dans les deux cas) : - magic-string 1.4.3 (manifestes de main) -> build 01-introduction ECHEC rc=1, "[lightningcss minify] Invalid token in pseudo element: Dimension 1.5rem" - override magic-string@^1 -> 1.4.2 -> build VERT, CSS minifie (1 ligne) - slides/package.json : override "magic-string@^1": "1.4.2" ; @slidev/theme-default passe de "latest" a "^0.25.0" (seule dependance du deck sans borne ; le paquet porte les animations importees par theme-ia101/index.ts) - slides/package-lock.json : regenere avec npm 11, le format du lock committe (18 champs libc preserves ; npm 10.9.7 les supprimait, bruit hors sujet) ; 0 occurrence de 1.4.3 restante - slides/theme-ia101/vite.config.ts : supprime -- son unique contenu actif etait build.cssMinify: false, le retirer laissait une configuration vide - slides/README.md : l'invariant "Invariants Slidev (regression-prone)" consigne le symptome, la cause amont et le point de retrait de l'override, ainsi que la regle des racines ou Slidev lit un vite.config.* See #20051, #19981, #19727. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…g-override # Conflicts: # slides/package-lock.json # slides/package.json
Conflit resolu — tete
|
| Mesure | Resultat |
|---|---|
| entrees ajoutees | 8, toutes magic-string = 1.4.2 (copies imbriquees sous @slidev/cli, @unocss/*, @unhead/bundler, @shikijs/vitepress-twoslash, magic-string-stack) |
| entrees retirees | 1 — node_modules/magic-string = 1.4.3 (la copie hissee, remplacee par l'override) |
| entrees changees | 0 |
node_modules/katex |
0.18.10 (l'override de #20038, preserve) |
Le delta est exactement l'effet de l'override, sans bruit de majeur npm. La suppression de slides/theme-ia101/vite.config.ts (le contournement cssMinify: false) reste le cœur de la PR et n'a pas ete touchee par la fusion.
Effet de bord : la tete a bouge (8e214cffce -> ca366ec919). Un dossier de prevalidation bati sur l'ancienne tete est perime ; la nouvelle tete re-arme aussi le minuteur de merge, par construction d'un commit.
Lane myia-po-2026:CoursIA-2.
|
[ADJOINT PREFLIGHT] |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
|
[ADJOINT PREFLIGHT] |
Path-collision (organ #13359/#13615)Cette PR #20060 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
Grain: MED/tooling — lane myia-po-2026:CoursIA-2 — prev: LIGHT/guard #19985
Fix(slides,#20051): override magic-string 1.4.2 — la minification CSS revient
Issues : #20051 (dispatch coordinateur, claim posée sur l'issue), #19981 (le contournement que cette PR remplace), #19727, #19441.
La cause, mesurée à deux niveaux
Le build des decks échouait sur :
#19981a débloqué les decks en désactivant la minification (build.cssMinify: falsedans le thème) et attribuait le défaut à Slidev + Vite 8. Le déclencheur est plus bas : depuismagic-string1.4.3 (publiée le 2026-10-05),@unocss/transformer-directivesréécrit en double, en fin de fichier, les déclarations qu'il insère quand le fichier porte aussi une règle vide à nettoyer (unocss/unocss#5373 ; correctif proposé #5375 ; côté Slidev slidevjs/slidev#2768).Le chemin réel dans notre arbre :
@unocss/transformer-directives→@unocss/rule-utils(magic-string: ^1.4.1). Le transformer ne déclare et n'importe pasmagic-stringlui-même — vérifié : sesdependenciessont@unocss/core,@unocss/rule-utils,css-tree, et aucunimportdu paquet n'apparaît dans sondist. Le lock committé le résolvait bien en 1.4.3 (l. 6243-6247, cité par l'issue).Le contrôle négatif — la mesure qui tranche
Un build qui passe ne dit pas pourquoi il passe. Le même arbre a donc été construit deux fois, à manifestes près — le fichier
vite.config.tsest déjà supprimé dans les deux cas, seul l'override change :magic-stringrésoluslidev build 01-introductionmain(sans override)Invalid token in pseudo element: Dimension 1.5remmagic-string@^1)C'est donc l'override qui porte le résultat, et non la suppression du
vite.config.tsni autre chose. Le même contrôle exécuté sans le second changement de manifeste (@slidev/theme-default) est équivalent : ce pin ne touche pasmagic-string.Ce que la PR change (4 fichiers, +86/-40)
slides/package.json— override"magic-string@^1": "1.4.2"à côté delz-string, et@slidev/theme-defaultpasse de"latest"à"^0.25.0": c'était la seule dépendance du deck sans borne. Le paquet n'est pas décoratif —theme-ia101/index.tsimporte@slidev/theme-default/animations.slides/package-lock.json— régénéré avec npm 11, qui est le format du lock committé (18 champslibc). Régénérer avec npm 10.9.7 supprimait ces 18 champs : du bruit sans rapport avec le sujet, écarté pour que le diff se lise.magic-string1.4.3 : 0 occurrence restante dans le lock.slides/theme-ia101/vite.config.ts— supprimé. Son unique contenu actif étaitbuild: { cssMinify: false }; le retirer laissait un fichier de configuration vide. Le savoir durable qu'il portait est conservé (point 4).slides/README.md— la section « Invariants Slidev (regression-prone) » gagne le symptôme, la cause amont, le point de retrait de l'override, et la règle des racines où Slidev lit unvite.config.*(thème, addons, racine du deck — unslides/vite.config.tsserait ignoré). C'est ce fait qui explique pourquoi la configuration vivait dans le thème ; il n'était écrit nulle part ailleurs.Preuve
01-introductionvert en 4,2 s, CSS minifié (1 ligne,index-*.cssde 89 Ko) ;03-logiquevert en 18,4 s — le deck lourd, celui qui OOM sous le plafond de tas par défaut du runner.slides/package.json,slides/package-lock.jsonetslides/theme-ia101/, donc l'organeslides-build-advisory(jambe PR, bloquante) voitSHAREDnon vide et construit tous les decks du dépôt. C'est le check-run qui porte le décompte complet.?clicks=99, deux decks, serveur de développement local :01-introduction— slide 1 (couverture, titre et filet du thème) et slide 5 (contenu : marqueurs de liste, titres de section, pagination5 / 48).03-logique— slide 5 (bloc de code avec ses numéros de ligne, soit exactement les pseudo-éléments.slidev-code-line-numbersque le défaut CSS atteignait), slide 9 (image enimg-stack) et slide 11 (tableau : bordures et alignement rendus).03-logiqueslide 5 vient du markdown lui-même (un<div class="img-stack absolute">posé sur un texte qui coule), pas de la feuille de style — le diff ne touche aucun contenu de deck.Failed to patch FloatingVue(Popper indéfini) venue de@shikijs/vitepress-twoslash. Elle est sans rapport avecmagic-string(aucune arête entre les deux) et n'apparaît pas dans la construction statique.Collision à déclarer —
#20038touche les deux mêmes fichiers#20038(mon autre PR ouverte, l'override katex) modifie aussislides/package.jsonetslides/package-lock.json. Les deux ajoutent une entrée dans le même objetoverrides, et les deux régénèrent le lock.Conséquence, à traiter au merge et non avant : la seconde à merger trouvera un conflit sur
slides/package-lock.json. La résolution est mécanique et sans arbitrage — fusionnerorigin/main, puis régénérer le lock parnpm install(les deux overrides coexistent alors danspackage.json), jamais résoudre le JSON à la main. Les deux PR étant de la même lane, ce geste est à sa portée. Ordre indifférent.Retrait de l'override
L'override se retire quand une version d'UnoCSS portant le correctif de #5375 est publiée et tirée par Slidev — dans une PR dédiée. La case de suivi vit dans #20051, qui reste ouverte jusque-là.
Issues liées : #20051 (dispatch coordinateur), #19981, #19727, #19441, #19999.
🤖 Generated with Claude Code