feat: styles vecteur personnalisables + fade-in synchronisé des couches - #43
Merged
Conversation
…l'ordre onReady Réinitialise `deferredCommit` dans `destroy()` pour que `isReady()` retourne `false` après destruction. Ajoute un commentaire inline dans `commit()` pour documenter que l'assignation doit précéder l'appel `onReady()`.
…s (évite un groupe de commit bloqué)
… + garde NaN largeur
…retire setRgbaOpacity mort
…(corrige la désync overlay)
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
maps | c5e6714 | Commit Preview URL Branch Preview URL |
Jun 05 2026, 10:52 PM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résumé
Récupère les bonnes idées du PR upstream open-meteo/maps#280 (« predefined charts ») sans importer son architecture multi-source (dual-path de rendu +
buildOmUrlqui aurait court-circuité le routing worker/bucket/anomalie du fork).Trois apports, branchés sur l'existant :
layers.ts, vivent désormais dans un module pur data-drivensrc/lib/vector-styles.ts(types + defaults + builders). Refactor à rendu identique, couvert par des tests (vector-styles.test.ts, mini-évaluateur d'expressions).SlotManagergagne un commit différé opt-in (deferCommit/onReady/commitNow()/isReady()), et un coordinateur danslayers.ts(beginCommitGroup/addToCommitGroup/tryFlushGroup/dropFromGroup) regroupe les couches mises à jour dans le même tick (raster principal + raster secondaire + vecteur) pour qu'elles apparaissent ensemble au lieu de chacune dans son coin.contour-settings.svelte,arrows-settings.svelte), persistées viasvelte-persisted-store(contourStyle/arrowStyle). Application live parreloadVectorStyle(). LeColorPickergagne un modeportalToBodypour ne pas être tronqué dans le drawer. Comme l'app force le dark mode, l'UI n'expose qu'une seule pastille couleur (la couleur rendue) ;lightColorreste dans le modèle de données.Au passage : corrige une désync de la couche superposée (le court-circuit en tête de
changeOMfileURLempêchait l'overlay de se rafraîchir tant que le primaire ne changeait pas → la couche 2 ne suivait pas un changement de variable et « rattrapait » au scrub). Désormais seul le rechargement primaire est conditionné à son URL ; la couche 2 a sa propre déduplication.Détails techniques
vector-styles.tsest pur (aucune dépendance store/runtime, seulementimport type maplibre). Les builders reconstruisent exactement les anciennes expressions (table d'union fidèle pour les flèches, où les seuils couleur ≠ largeur).dropFromGroup,clearOnError, échec d'enregistrement de source →onError) pour ne pas bloquer le groupe sur une couche en échec..claude/rules/architecture.mdmise à jour (3 managers, coordinateur, styles data-driven).Plan de test
npm run check(0 erreur),npx vitest run(246 verts),npm run lint,npm run buildLimitations connues / follow-ups (non bloquants)
loadingjusqu'à un refresh. À durcir avec un garde-fou (timeout de sécurité qui affiche ce qui est prêt et libère le spinner). Symptôme observé en test — à traiter avant usage intensif.resetStates()ne réinitialise pascontourStyle/arrowStyle(à ajouter si la forme des niveaux change un jour).reloadVectorStyle()lit l'URL du slot actif : edge transitoire documenté (mismatch d'une frame si on édite un style pile pendant un changement de temps).main).portaldupliquée (color-picker + advanced-panel) → extraire\$lib/actions/portal.ts.Spec & plan :
docs/superpowers/.🤖 Generated with Claude Code