-
v2026.5.45 Stable
released this
2026-05-08 16:31:09 +02:00 | 0 commits to main since this releasev2026.5.45 — Dock latéral drag&drop, fix verdicts ghost, multi-onglets EZV résolu
Refonte de l'expérience drag&drop avec dock latéral pour parquer des interventions entre les jours, fix critique du parser de fiches qui marquait à tort des interventions terminées comme annulées, résolution des 6 issues ouvertes (multi-onglets EZV, absences récurrentes, popups épinglés, pompier absent), et nombreux ajustements d'ergonomie.
Issues résolues
- #3 — Coches « Absences récurrentes » : merge propre avec l'état stocké au lieu d'écrasement, les coches sont retenues lors d'un changement de groupe ou d'une réouverture des paramètres.
- #4 — Perte de session EZV multi-onglets : permission optionnelle
cookies+ listenercookieChangedcôté background, toggle dans Paramètres → Diagnostics. La session reste valable même après reconnexion et fermeture d'un onglet EZV. - #5 — Bouton de copie de référence dans une popup épinglée : handler
copy-refajouté. - #6 — Popup épinglée au premier plan : clic sur une popup recalcule le z-index pour la passer au-dessus des autres.
- #7 — Notification « +2 min » fantôme : reset des flags d'alerte slide au retour de la prolongation.
- #8 — Compteur pompier : un pompier absent toute la journée est exclu du compteur.
Dock latéral drag&drop
Le dock à droite permet de mettre des interventions de côté pendant qu'on navigue entre les jours, puis de les redéposer plus tard.
- Apparition graduelle pendant un drag : peep-min (sans contenu), peep (avec cartes), expanded (au survol ou au bord droit).
- Délai 500 ms pour expand/collapse pour éviter le flicker quand le curseur effleure le bord du dock.
- Card du dock : référence + durée prévue (
1h,1h30,45min) avec barre verticale 4 px sur la gauche dans la couleur de la catégorie. Fond transparent. - Bouton de retrait
×: appui long 2 s avec animationconic-gradient. Un clic simple ne fait rien. - Drag depuis le dock : retrait différé à l'activation effective du drag (5 px). Ghost flottant sans heure à gauche. Drop sur tech → modal de confirmation. Drop hors zone / Échap / sur le même slot d'origine → restauration dans le dock.
- Plus de scrollbar horizontale en bas du dock, plus de clic-through dans la zone autour du bouton « Tout annuler ».
Verdicts ghost — fix critique
Une intervention terminée par le tech mais dont la fiche était passée en statut « Redirigé » / « Finalisation » / « Exécution » était à tort marquée comme « annulée » et retirée du planning, parce que le parser de fiche cherchait les dates d'action aux indices
[8]/[9]du tableaurowsalors que le layout EV récent les place en[6]/[7](et la description en[9]au lieu de[11]).- Détection robuste : scan des valeurs pour le pattern
DD/MM/YYYY HH:MM:SS, garde des 2 dernières occurrences comme (création, fin). Survit aux variations de layout EV. - Décorrélation logs / KEEP-forcé : nouvelle case dédiée « Garder les disparitions » dans Paramètres → Diagnostics, indépendante des « Logs verbeux ». Mode prod par défaut → verdict
REMOVEappliqué (statut Annulé/Supprimé, ou statut clos sans commentaire du tech, ou action sans commentairelogin:).
Drag&drop bloqué pour les interventions non-déplaçables
_canRescheduleIvrefuse maintenant explicitement le drag pour :- iv en verdict
terminated-pending(gris « fait »). - iv en verdict
terminated-clos(vert ✓✓). - iv dont le statut EV est dans
CLOSED_STATUSouRESOLVED_STATUS. - iv en cours d'analyse de disparition (
_disappearChecking).
Popups dépinglés
- Auto-fermeture du popup dépinglé quand la souris quitte sa zone et celle des cards liées de la même iv (300 ms de grâce). N'interfère pas avec un drag de planning en cours.
Tooltip / contact
- Le contact n'inclut plus les labels « fiche » (
Étage,Bureau,Service,Matériel,Problème,TFS,Date,Heure,Lieu,Bénéficiaire,Nom utilisateur) qui se collent parfois à la valeur du contact à cause de séparateurs perdus dans la source EV. Le tooltip insère un saut de ligne avant chaque label collé pour la lisibilité.
Downloads
-
v2026.5.44 Stable
released this
2026-05-01 18:08:18 +02:00 | 3 commits to main since this releasev2026.5.44 — Refonte topbar, personnalisation Apparence, onboarding équipe, refresh séquentiel
Refonte visuelle de la topbar (vue classique + horizontale), nouveau panneau
de personnalisation (couleur de la barre du haut + police de l'application
sur toute la page), nouvelle expérience d'onboarding quand aucun technicien
n'est sélectionné, refonte du système de verdicts ghost (✓✓ clos / ✓ Fait /
✓ Suspendu), refresh strictement séquentiel avec arrêt instantané, et
plusieurs corrections.Refresh / cache / verdicts ghost
- Rafraîchissement séquentiel (1 fiche à la fois) au lieu de 5 workers
parallèles → arrêt instantané via le bouton « ✕ Arrêter » (AbortController),
plus de races DOM, ordre d'affichage cohérent (pompier d'abord, puis alpha,
puis matin → après-midi). - Re-fetch du checksum frais via
basicAutoComplete+redirectHeader
(plus de fiche périmée entre sessions). - Cache merge robuste (fallback
cachedByRefquandactionIdchange) et
cache écrit toutes les 5 fiches pendant le refresh (incrémental). - Système de verdicts ghost unifié : ✓✓ vert (clos / résolu officiel),
✓ gris « Fait » (terminated-pending), ✓ jaune « Suspendu »
(terminated-suspended), retrait silencieux pour cancelled / cancelled-
reservation / cancelled-absence. - Statuts EV (clos / résolu / annulé / suspendu) éditables depuis Paramètres
→ EasyVista avec matching insensible à la casse, accents et conjugaisons. - Mise à jour live du tooltip et du popup épinglé après un verdict (plus
besoin de fermer/réouvrir). - Clic immédiat sur la carte dès que le verdict tombe (avant la fin du
refresh complet). - Boutons « Actualiser » (rapide, ne re-télécharge pas les fiches déjà
connues) vs « Tout recharger » (force tout sauf les ✓✓ déjà clos). - Mode diagnostic optionnel (Paramètres → Diagnostics) : aucune
intervention disparue n'est retirée silencieusement, tout est tracé sous
le préfixe[disparition]dans la console F12 pour debug. En PROD
(par défaut), les ivcancelledsont bien retirées comme avant.
Topbar — vue classique
- Sélecteur de date du planning ancré au centre absolu : il ne se décale
plus quand le bouton « ✕ Arrêter » apparaît à droite pendant un
rafraîchissement. - Bouton « Aujourd'hui » affiché en toutes lettres (au lieu de « Auj. »).
- Horloge contextuelle (date du jour + heure) réduite et discrète, à côté
du bouton Aujourd'hui dans un cadre encadré. - Date du planning agrandie et neutre (couleur stable, plus de bascule
selon la date sélectionnée).
Personnalisation — Paramètres → Apparence
- Couleur de la barre du haut : 12 presets cliquables (Défaut, Blanc,
Gris clair, Anthracite, Bleu DGNSI, Marine, Vert sapin, Brique, Violet,
Rouge, Bleu pastel, Vert pastel) + picker custom + champ hex#rrggbb- bouton « Réinitialiser ».
- La couleur s'applique uniquement à la topbar (et à la sidebar quand on
est en vue horizontale). - Le texte de la topbar (titre, horloge, date, capture-info, badges,
boutons) s'adapte automatiquement (clair/foncé) selon la luminance
de la couleur choisie pour rester toujours lisible. - Police de l'application : 28 choix organisés en familles
(sans-serif : Arial, Helvetica, Verdana, Tahoma, Trebuchet, Calibri,
Segoe UI, Gill Sans, Futura, Optima ; serif : Times New Roman, Georgia,
Cambria, Garamond, Palatino, Bookman ; monospace : Courier New, Consolas,
Lucida Console, JetBrains Mono ; display : Comic Sans MS, Impact,
Brush Script, Copperplate ; condensée : Arial Narrow). La police choisie
s'applique à toute la page (topbar, cards, popups, tooltips, panel
admin) et chaque option du select s'affiche dans sa propre police pour
prévisualiser le rendu, avec un aperçu live à droite. - Export / import du cache et de
admin_configdepuis Paramètres →
Diagnostics.
Vue horizontale
- Bloc « Aujourd'hui + horloge » empilé verticalement dans la sidebar, dans
le même cadre encadré que la vue classique. - Date sélectionnée mise en avant (taille augmentée, en gras), date du
jour et heure réduites à la même petite taille pour rester discrètes. - Barre verticale verte ajoutée à droite des mini-cards quand le
ticket est officiellement clôturé / résolu (✓✓), avec léger décalage du
✓✓ pour ne pas chevaucher la barre. - Quand l'utilisateur a choisi une couleur de topbar, la sidebar prend
aussi la couleur : titre, horloge, capture-info, stats, today-block,
date sélectionnée, boutons, theme-toggle et séparateurs adoptent une
teinte translucide cohérente (viacolor-mix) qui contraste correctement
sur n'importe quel fond.
Statistiques globales
- Nouveau compteur « X faits / Y clos » entre
(matin · après-midi)
ettech. dispo. Inclut tous les tickets terminés (clos/résolus officiels- verdicts ghost « Fait » / « Suspendu »).
- En vue classique, séparateur
//aprèsclos(au lieu de·). - En vue horizontale (sidebar), une barre horizontale 1px sépare le
bloc interventions/faits/clos du bloc tech. dispo + pompiers / absents.
Onboarding équipe (1ʳᵉ install ou config vide)
- L'erreur générique « Aucun technicien sélectionné » est remplacée par une
carte d'onboarding centrée comprenant :- icône (👥) cerclée en couleur accent du thème ;
- titre « Aucune équipe configurée » ;
- description claire ;
- bouton primary « Ouvrir paramètres » qui ouvre directement le panel
admin sur la section Équipe.
- Carte centrée verticalement et horizontalement dans la zone disponible,
identique en vue classique et horizontale.
Bugfix
- Issue #1 (Pompier + Absence) : si un tech est à la fois pompier ET
absent, les deux badges s'affichent désormais avec un séparateur/au
lieu de masquer l'absence derrière le badge pompier. - Absences récurrentes : quand on changeait de groupe puis revenait au
groupe initial, les jours d'absence cochés pour les techniciens
disparaissaient visuellement (la donnée elle-même restait en storage).
Correction : restauration depuiscfg.recurringAbsencesà chaque
re-render. - Barre de progression / bannière session expirée : suivent désormais
la hauteur dynamique de la topbar (variable CSS--topbar-heightmesurée
par unResizeObserver). Plus de chevauchement quand on scrolle. - STATUS_FR regex : limite augmentée de 30 à 200 caractères (battait
sur « Suspendu : Attente info bénéficiaire/demandeur »). - Description action : décodage
" → ",<br> → \n, HTML
strippé. Préfixe « login: » retiré du commentaire technicien dans le
tooltip / popup. - Tooltip référence : flèche « ↗ » retirée du lien cliquable.
Downloads
- Rafraîchissement séquentiel (1 fiche à la fois) au lieu de 5 workers
-
v2026.5.43 Stable
released this
2026-04-27 04:57:04 +02:00 | 10 commits to main since this releaseFix Firefox : positionnement menu dock + stabilité popup pin/unpin
Menu hover sur pastille du dock (popup réduit)
Bug Firefox uniquement : quand un popup épinglé était réduit dans la taskbar du bas, le menu qui apparaît au survol de la pastille (Agrandir / Fermer) se positionnait trop haut, pas juste au-dessus de la pastille.
Fix : positionnement hors écran initial, force-layout via
void offsetHeight, mesure des dimensions, puis pose finale. CSS de l'animation simplifiée en opacité-only (plus detransform: translateYqui faussaitgetBoundingClientRectcôté Firefox).Stabilité popup au pin/unpin
Bug (tous navigateurs) : la popup épinglée bougeait de 16px et changeait légèrement de taille (1px de bordure) quand on la dé-épinglait avec le bouton 📌.
Fix :
.soft-unpinnedconserve désormais les mêmespadding-top: 28pxetborder: 2pxque.pinned-popup. Position et taille stables. La bordure passe juste en gris discret (--border-strong) au lieu du bleu accent pour signaler le mode "détaché".
Téléchargements
- Chrome / Edge :
planification-v2026.5.43-chromium.zip - Firefox :
planification-v2026.5.43-firefox.xpi— soumettre sur AMO en mode "On your own" pour signature.
Downloads
- Chrome / Edge :
-
v2026.5.42 Stable
released this
2026-04-27 03:28:13 +02:00 | 13 commits to main since this releaseNettoyage de commentaires + exemples génériques
Passage en revue des commentaires de
src/viewer.js: les exemples qui illustraient le parsing des contacts / lieux / références / codes-barres ont été uniformisés en placeholders abstraits (Nom1 Prénom1 +41XXXXXXXXX,SYYMMDD_NNNNN,XXXX_NNNNNNNN, etc.) plutôt que des chaînes spécifiques.Comportement runtime strictement inchangé — uniquement de la documentation et des commentaires.
Mise à jour cohérente du README, du CHANGELOG et des pages wiki Versions / Utilisation pour utiliser les mêmes notations génériques.
Téléchargements
- Chrome / Edge :
planification-v2026.5.42-chromium.zip— décompresser, charger en mode développeur. - Firefox :
planification-v2026.5.42-firefox.xpi— soumettre sur AMO en mode "On your own" pour signature, puis drag-and-drop dansabout:addons.
Downloads
- Chrome / Edge :
-
v2026.5.41 Stable
released this
2026-04-27 02:11:22 +02:00 | 5 commits to main since this releaseSuppression des hardcodes runtime
- Plus aucun hardcode pour le groupe EV, les domaines, la liste de techniciens ou les absences récurrentes. Tout est piloté par
admin_config(chrome.storage.local), persisté entre les mises à jour. - Au 1er install : aucun tech sélectionné, aucune absence récurrente. Le viewer affiche "Aucun technicien sélectionné" tant que l'utilisateur n'a rien configuré dans Paramètres → Équipe.
UX admin
- Auto-refresh à l'enregistrement (équipe / domaines / heures) → plus besoin de recharger l'extension manuellement.
- Bouton ✓ Appliquer pour les heures de la journée + toast de confirmation.
- Toasts au-dessus du flou du panel admin (z-index relevé).
- Onglet Statuts retiré (placeholder lecture-seule).
- Tri équipe : inclus d'abord, puis exclus, alphabétique dans chaque groupe.
Thème unifié
- Le toggle 🌙 de la topbar et le sélecteur Apparence du panel admin écrivent dans la même clé. Mode "Automatique" résolu en JS via
prefers-color-scheme(avant : le CSS retombait sur le clair même quand l'OS était en sombre). ListenermatchMediapour bascule live.
Conflit absence/réservation × intervention
- Si une intervention est planifiée pendant qu'un tech a une absence (toute la journée ou demi-journée) ou une réservation au même créneau, sa carte est peinte en rouge plein. Logique : full-day → toutes ; partiel → seules celles en chevauchement.
Permissions runtime pour domaines
optional_host_permissions: ["https://*/*"]dans manifest.json.chrome.permissions.request()au save d'un domaine custom dans Paramètres → EasyVista.
Synchronisation des heures EV
- Les requêtes
planning_xhr.php,plan_set_holidays_popup.php,plan_set_tech_planif_popup.phplisent désormaiscfg.dayStart/cfg.dayEnd. Avant : 8/18/19 hardcodés (l'affichage suivait, les requêtes pas).
Vue horizontale
- Popups au survol/clic limités à
dessous/dessus(la sidebar à gauche et la timeline pleine largeur rendent gauche/droite peu praticables).
Ménage
- Suppression de
isPillonelAbsentFriday(),CACHE_DAYS,LS_THEME, commentaire historique surinitAdminMenu().
Téléchargements
- Chrome / Edge :
planification-v2026.5.41-chromium.zip— décompresser, charger en mode développeur. - Firefox :
planification-v2026.5.41-firefox.xpi— drag-and-drop dansabout:addons(ou signature AMO).
Downloads
- Plus aucun hardcode pour le groupe EV, les domaines, la liste de techniciens ou les absences récurrentes. Tout est piloté par
-
v2026.5.40 Stable
released this
2026-04-27 00:57:13 +02:00 | 6 commits to main since this releasev2026.5.40 — Sélection groupe EV + édition domaines + tri équipe + vue horizontale enrichie
Onglet Équipe (panel admin)
- Sélecteur de groupe EasyVista (SI-CSS, SI-EXT, …) en tête de section, détecté automatiquement à l'ouverture du panel via le
<select id="plan_group_id">de la page Planning EV. Robuste aux ajouts/renommages côté EV. - ID groupe affiché en italique (ex:
ID groupe : 191). - Refresh auto de la liste d'équipe au changement de groupe.
- Plus de bouton "Détecter" : tout est auto à l'ouverture.
- Tri double des techniciens : inclus d'abord, puis exclus, alphabétique dans chaque sous-groupe.
Onglet EasyVista (panel admin)
- Édition manuelle des deux domaines (interne DGNSI / externe Internet).
- Bouton Enregistrer (normalise URLs) + bouton Réinitialiser.
- Les défauts restent codés en dur en fallback.
Onglet Statuts retiré
- Section supprimée du panel admin (placeholder lecture seule).
Vue horizontale enrichie
- Chaque segment timeline contient désormais une barre verticale couleur catégorie à gauche, la référence en gras, et la ville en gris muted.
- Hauteur de la timeline horizontale 22→32px.
Coulisses (
background.js)- Nouveau message
detectGroups+ fonctiondetectGroupsFromEV(). detectTeamFromEV()accepte ungroupIden argument.- ⚠ Le fetch du planning continue d'utiliser
group_id=191codé en dur — branchement effectif dans une prochaine version.
Téléchargements
- Chrome / Edge :
planification-v2026.5.40-chromium.zip— décompresser, charger en mode développeur. - Firefox :
planification-v2026.5.40-firefox.xpi— drag-and-drop dansabout:addons(ou signature AMO si distribution officielle).
Downloads
- Sélecteur de groupe EasyVista (SI-CSS, SI-EXT, …) en tête de section, détecté automatiquement à l'ouverture du panel via le
-
v2026.5.39 Stable
released this
2026-04-26 02:20:00 +02:00 | 8 commits to main since this releasev2026.5.39 — Séparation matin/après-midi + Apparence (thème, taille, cache, heures) + À propos
Séparation matin / après-midi
- Pill "MATIN" / "APRÈS-MIDI" entre interventions (vue classique), grise
neutre, ligne 3px épaisse. Affiché aussi entre les absences partielles. - Si une période est vide, son séparateur n'apparaît pas.
Timeline — coupure midi très visible
- Bande verticale composée d'un trait massif + stripes diagonales (effet
césure). Visible immédiatement, sans label superflu.
Vue horizontale (sidebar)
- Tout centré horizontalement (align-items + text-align)
- min-height: calc(100vh * --zoom-inv) — sidebar atteint toujours le bas
de l'écran, même quand le user dézoom le texte - Bouton "Aujourd'hui" : style identique aux autres boutons (Absence,
Douchette...), centré - Boutons d'action (Absence/Douchette/Actualiser/Tout recharger/Vider
cache/Thème) poussés en bas via margin-top: auto + bordure top de
séparation visuelle
Section Apparence — refondue + en première position
- Thème : sélecteur Auto / Clair / Sombre
- Durée du cache (jours) : configurable, défaut 7. Lue par viewer (purge
auto en cas de quota) ET background (au boot). Tooltip au survol qui
montre l'emplacement physique du cache (adapté browser + OS) - Taille du texte : slider horizontal avec 5 dots, 5 paliers (-30%, -15%,
100%, +10%, +20%). Zoom appliqué uniquement au release (pas pendant le
drag) pour éviter l'effet yo-yo. Couvre TOUS les textes visibles
(interventions, popups, absences, réservations, "En pompier du...",
date+heure de la même taille, etc.) - Heures de la journée : 2 inputs Début/Fin, défaut 8h-18h. Lecture au
boot via _initDayBoundsFromConfig() qui met à jour DAY_START/END/LEN
Section À propos (nouvelle, dernière du panel)
- Extension : Planification
- Version, Auteur (Quentin Rouiller), Affiliation (Technicien DGNSI —
Canton de Vaud), Licence MIT, Code source (lien Gitea) - Description courte mise en avant
Bouton "Vue" (popup user-badge) — plus clair
- Affiche la vue de DESTINATION (pas la vue actuelle)
- en classique → "Passer en vue Horizontale" + logo ≡
- en horizontal → "Passer en vue Classique" + logo ⊞
Tooltips
- Apparition : 500ms (cancellable au mouseleave)
- Disparition : 500ms (au lieu de 1000ms)
- Comportement uniforme entre vue classique et horizontale
Stats
- "X tech. dispo" (nouveau) : disponibles = pas absent + pas réservé
toute la journée. Pompier compte comme disponible.
Downloads
- Pill "MATIN" / "APRÈS-MIDI" entre interventions (vue classique), grise
-
v2026.5.38 Stable
released this
2026-04-26 01:00:00 +02:00 | 9 commits to main since this releasev2026.5.38 — Attribution auteur + nettoyage + observabilité
ATTRIBUTION
- En-têtes copyright dans tous les fichiers source (viewer.js, viewer.html,
viewer.css, background.js) - @author Quentin Rouiller sur 22 fonctions clés
- Signature "Développé par Quentin Rouiller" en bas du popup user-badge
- description manifest mentionnant DGNSI
NETTOYAGE
- Retrait fonction vide initAdminMenu()
- Retrait classes CSS orphelines (.date-picker-day, .intervention v1)
- Retrait 14× console.log [viewMode] verbeux + 5× console.log [bg]
- extendBtn.onclick → addEventListener (cohérence + cleanup possible)
OBSERVABILITÉ
- Module LOG unifié : préfixe + timestamp + version + niveau
- Handlers globaux window/self.error + unhandledrejection (viewer + bg)
- Toggle "Logs verbeux (debug)" dans le panel admin (Diagnostics)
- Synchronisation viewer ↔ background via chrome.storage.onChanged
- LOG.info muet par défaut, visible quand debug ON
GARDE-FOUS
- sendMessage avec timeout 15s (évite promises pendantes si SW MV3
oublie sendResponse) - writeCache avec gestion quota (purge auto entrées > 7 jours puis retry,
sinon toast user) - renderFromData wrappé try/catch + null checks DOM
- JSON.parse [timeline] : log warn avec snippet du contenu fautif
- .catch(() => {}) swallowed remplacés par log warn (clipboard, session,
cache) - getManifest centralisé dans LOG.version()
BUILDS
- dist/chromium/ et dist/firefox/ prêts à charger en mode dev
- planification-v2026.5.38-chromium.zip (~152 Ko)
- planification-v2026.5.38-firefox.xpi (~152 Ko, à signer sur AMO)
Downloads
- En-têtes copyright dans tous les fichiers source (viewer.js, viewer.html,
-
v2026.5.37 Stable
released this
2026-04-25 18:00:00 +02:00 | 12 commits to main since this releaseVersion 2026.5.37 — Refonte vue horizontale (sidebar complète)
- Topbar supprimée, user-badge + titre déplacés en sidebar
- Bouton Aujourd'hui pleine largeur, stats empilées
- Banderole pompier masquée en vue horizontale
Downloads
-
v2026.5.36 Stable
released this
2026-04-25 14:00:00 +02:00 | 13 commits to main since this releaseVersion 2026.5.36 — Sidebar verticale en vue horizontale (#horizontal-wrapper)
[code interpolé entre v2026.5.35 et v2026.5.37]Downloads