feature/macro #19

Merged
Nora merged 57 commits from feature/macro into develop 2026-10-30 21:34:56 +00:00
Owner
No description provided.
Nora added 57 commits 2026-10-30 21:18:12 +00:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écarts : drapeau maxExclusive (lightAzimuth), shifts par défaut objet
vide (contenu par O492), clés du prototype refusées comme inconnues.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écart : zone absente = neutre, clé absente d'une zone = 0 ; checkMacroSettings
rend toujours un shifts complet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écart : LIG_HW0_RATIO = 0,04 / 0,075 (et non 0,533) pour redonner
exactement LIG_HW[0] 0,04 de la maquette au défaut.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écarts : DET[1] vaut 0 (F_1 = F_2), contrôle ±1 de k = 2 à 21 ; turnOf
comparé à 2e-9 au produit exact u32 et à 6e-7 à n·α (ALPHA_FX arrondit α
à 2^-32, l'écart croît avec n).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écarts : distance sur l'arc du ruban bornée par SEC_MAX x hw + épaisseur
(gouttière et nervure) ; SDF de la maquette pas lipschitzienne à 1,05
partout (pire rapport mesuré bouton 2,4, fleuron 2,8, ruban 1,6 ; 0,4 à
1,5 % des segments), formule gardée, test borné à la mesure x 1,5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
4000 points par cas, 0 manqué au défaut et aux coins d'O488 ; candidats
max 87 (défaut), 234 (coin dense), 110 (coin 1200) ; MAXC 24 manque 911
éléments. Fichier de test 13,2 s. query prend latticeTables() tel quel.
Écart : envBad du check de la maquette (enveloppe) non porté.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écarts : kind et face contrôlés (RangeError .field 'kind' ou 'face') ;
lumière : azimut depuis +x vers +y, élévation depuis le plan xy.
Méthode : module écrit avant le RED, retiré pour voir l'échec puis remis.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écart : toutes les valeurs de scène lues par le WGSL sont paquetées, y
compris les constantes qui ne varient pas aujourd'hui (LIG_CREASE,
DELTA_M, FLO_*, BUD_*…) ; paires de la scène en vec2f ; couleurs en
paires <nom>A / <nom>B ; liste dans macro/gpu/pack/params-fields.js.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Écarts : 10e champ nommé flags (p0 dans la maquette), mode et flags à 0
si absents ; entrées de dispatchPlan contrôlées (RangeError .field) ;
chaque lot reprend width et fullH pour packPass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZi3vxMtvaTfACoLvXs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
painters() rend macro, recréé avec les autres après une perte du device ; faux du kit (macroPainter).
Écart : macro/gpu/painter.js minimal (render et renderTiles lèvent), O506 le remplace.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Corps d'un tir ou d'un aperçu Macro par clés fermées (modèle Fleur) ; RangeError de checkMacroSettings recopiée en InvalidShot avec son champ.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
POST /api/render/preview avec collection macro : parseMacroShot, macroOp, peintre macro dans la file d'aperçu ; fleur inchangé, autre collection toujours 422.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
source.json d'un export Macro : collection, réglages complets, shader tournesol-v1-gpu.1, GPU, format, type, mark pour un print.
Écart : gpuInfoOf refuse une clé gpu inattendue (InvalidGpuInfo) au lieu de la filtrer ; le test vérifie le refus.
Coche « Commit » d'O510 et O511 rattrapée.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
MARK_STYLES.macro = MARK_STYLE à l'encre sombre de Fleur (#2E2621), brouillon [À CONFIRMER] en O522. Jouée avant O513, qui en dépend.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
POST /api/render/shot avec collection macro : épreuve ou print par runShot, dossier macro-<graine>, source.json Macro, mark en collection macro. Deux cas ajoutés : print titré (source.json garde mark) et réglage hors bornes (422 tilt, aucun export).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
COLLECTIONS gagne macro ; ingestSource aiguille par collection (OUTS) ; macroOut dans ingest/source-macro.js. Pire cas mesuré : 1 050 octets.
Écart : macroOut revalide les réglages par checkMacroSettings et les exige complets ; l'erreur lui est passée par source.js (pas d'import circulaire).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
FICHE_SEGMENT gagne macro: 'macro', brouillon : slug public [À CONFIRMER].

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
MODULE_RULES.oceanprint sert macro/.
Écart : macro/palette-shift.js importe ../src/prep/*, non servi sous oceanprint (404 gardé par routes-modules-fleur.test.js) ; résolu en O518 par une import map de la page /macro vers la racine reference. macro/gpu/ servi sans exclusion, comme fleur/gpu/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
GET /macro, gabarit (cartes de tir et d'envoi recopiées de Fleur), main.mjs squelette, liens Macro depuis Mer et Fleur.
Écart (d'O517) : import map /modules/oceanprint/src/ vers /modules/reference/ dans la page, pour les imports src/prep de macro/palette-shift.js ; vérifié dans Chromium (bounds.js chargé, aucune erreur).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
État du panneau, réglages et décalages bornés, corps des requêtes ; previewSizeFor repris de Fleur.
Écart : bornes injectées (bounds) comme Fleur, le module de page ne pouvant importer /modules/oceanprint/ sous Node ; parseSeedInput rend { seed } ou { error } (modèle Fleur) ; lightAzimuth ramené par repli modulo 360.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Libellés et aides en français (brouillons, relus par Nora en fin de chantier), tables sans import ; tests : couverture des clés, aucun texte orphelin, aucun tiret cadratin, temps de rendu pour density et spp.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Panneau par groupes (capitule, ligules, couleurs, cadrage et optique, lumière, rendu), graine, format, aperçu à chaque changement, carte de tir (print : « rendu en cours, plusieurs minutes »), carte d'envoi.
Vue dans Chromium avec le faux peintre (aperçu dessiné, réglages et bornes dans le corps, graine tirée, épreuve 201) ; pas vue dans Firefox ni avec le vrai GPU ; Tirage et carte d'envoi non exercés.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
createShotProgress(now) : attente, GPU, encodage, lignes faites, durée ; snapshot sans chemin ni réglage ; shotDeps gagne progress.
Écart : le now de shotDeps rend une Date ; elapsedMs lit Number(now()).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
runShot : start après startExport (un tir refusé en 409 ne touche pas la progression en cours), phase gpu, lignes par tuile, phase encode, end dans les deux issues. GET /api/render/progress (no-store). Cas Macro testé.
Écart : test-kit/fake-painter.js étendu par ajout (splitTiles, holdAfterTile), TILE_ROWS dépassant la face du format test ; rowsTotal = hauteur de la face.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
describeProgress : étape, pourcentage tronqué, temps écoulé, estimation du restant ; séparateur « · ».
Écart : règle de format des durées et cas limites (total nul, valeurs non finies, tout fait) fixés et testés ; accords du brouillon à relire (« environ 1 min restantes »).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
client.progress() (GET /api/render/progress, { active: false } en cas d'échec) ; la vue de tir Macro sonde toutes les 2 s et s'arrête dans les deux issues ; Mer et Fleur inchangés. Vue dans Chromium avec le faux peintre retenu (ligne « Rendu 1 % … », sondage arrêté après la fin).
Écart : barre <progress> ajoutée au gabarit, cachée hors tir ; un JSON sans active booléen vaut inactif.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Tâches faites, écarts, ce qui n'a pas pu être vu sans Firefox ni carte.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Q4YZjT6XEGrm1j2HgFBzb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fusion du lot cloud 2 Macro (O509 à O521, O524 à O527)
All checks were successful
CI / OceanPrint - tests + lint JS (pull_request) Successful in 4m21s
6e4b629efc
Peintre : version d'O506 gardée (le module minimal d'O509 est remplacé).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nora merged commit 2bb499ff40 into develop 2026-10-30 21:34:56 +00:00
Nora deleted branch feature/macro 2026-10-30 21:34:57 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Nora/OceanPrint!19
No description provided.