Table of Contents
- Versions
- Récap chronologique express
- Versions notables
- v2026.5.45 (latest, 8 mai 2026) — Dock latéral drag&drop, fix verdicts ghost, multi-onglets EZV résolu
- v2026.5.44 — Refonte topbar, personnalisation Apparence, onboarding équipe, fix #1
- v2026.5.43 — Fix Firefox menu dock + stabilité popup pin/unpin
- v2026.5.42 — Nettoyage de commentaires + exemples génériques
- v2026.5.41 — Suppression des hardcodes runtime + UX admin + thème unifié
- v2026.5.40 — Sélection groupe EV + édition domaines + tri équipe + réorga repo
- v2026.5.39 — Séparation Matin / Après-midi + Apparence
- v2026.5.38 — Attribution auteur + nettoyage + observabilité
- v2026.5.37 — Refonte vue horizontale (sidebar complète)
- v2026.5.36 — Sidebar verticale en vue horizontale
- v2026.5.32 — Vue horizontale togglable
- v2026.5.27 — Classification absences
- v2026.5.25 — Bouton Paramètres dans popup user-badge
- v2026.5.16 — Passage au versionning par année
- v5.0.0 — Refonte topbar
- v4.2.3 — Grande popup timeline persistante
- v4.1.3 — Tooltips épinglables
- v1.0.0 (16 avril 2026) — Version initiale
- Historique complet
Versions
L'extension a connu 3 systèmes de versionning successifs :
| Période | Format | Exemple |
|---|---|---|
| Avril 2026 (jeudi 16) | Versions de base | 1.0.0, 2.0.0, 3.0.0 |
| Avril 2026 | SemVer classique | 4.1.3, 4.2.8, 5.0.12 |
| Avril 2026 → maintenant | ANNÉE.MAJEURE.PATCH |
2026.5.16 → 2026.5.45 |
Récap chronologique express
| Date | Version | Résumé en 1 ligne |
|---|---|---|
| 8 mai 2026 | v2026.5.45 (latest) |
Dock latéral drag&drop + fix verdicts ghost (parser dates) + multi-onglets EZV (#4) + 5 autres issues (#3 #5 #6 #7 #8) |
| 1 mai 2026 | v2026.5.44 |
Refonte topbar + personnalisation Apparence (couleur + 28 polices) + onboarding équipe + fix #1 |
| 27 avril 2026 | v2026.5.43 |
Fix Firefox menu dock + stabilité popup pin/unpin |
| 27 avril 2026 | v2026.5.42 |
Nettoyage de commentaires + exemples génériques |
| 27 avril 2026 | v2026.5.41 |
Suppression hardcodes runtime + UX admin + thème unifié + conflits absence/intervention |
| 27 avril 2026 | v2026.5.40 |
Sélection groupe EV + édition domaines + tri équipe + vue horizontale enrichie |
| 26 avril 2026 | v2026.5.39 |
Séparation Matin / Après-midi + section Apparence (thème, taille, cache, heures) |
| 25 avril 2026 | v2026.5.38 |
Attribution auteur + nettoyage + observabilité (LOG unifié) |
| 24-25 avril 2026 | v2026.5.33 → .37 |
Vue horizontale (sidebar verticale, interactions différenciées, mini-cards) |
| 23 avril 2026 | v2026.5.16 → .26 |
Schéma YYYY.M.PATCH, drag-and-drop popups, panel admin via popup user-badge |
| 21 avril 2026 | v5.0.0 → v5.0.15 |
Refonte topbar (horloge + compteur session), absences partielles |
| 20 avril 2026 | v4.3.3 → v4.3.0 |
Soft-unpin, popup timeline persistante, drag des popups |
| 16-20 avril 2026 | v1.0.0 → v4.2.x |
Premier viewer EasyVista, tooltips épinglables, infos enrichies |
➡ Détails complets ci-dessous.
Versions notables
v2026.5.45 (latest, 8 mai 2026) — Dock latéral drag&drop, fix verdicts ghost, multi-onglets EZV résolu
Dock latéral drag&drop
Le dock à droite permet de mettre des interventions de côté pendant la navigation entre les jours, puis de les redéposer plus tard.
- Apparition graduelle pendant un drag : peep-min (sans contenu), peep (avec cartes, ~50 % visibles), 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. Wrapper debouncé qui s'auto-annule si l'intention change avant 500 ms.
- Card du dock : référence en gras + durée prévue (
1h,1h30,45min) calculée depuisstartTime/endTimedu snapshot, avec une barre verticale 4 px sur la gauche dans la couleur de la catégorie d'intervention. Fond transparent. La couleur est lue directement sur la classecolor-*de la card source du planning. - Bouton de retrait
×: repositionné dans la card (top: 2px / right: 2px). Appui long 2 s avec animationconic-gradient(@property --hold). Un clic simple ne fait rien (anti-clic accidentel). - Drag depuis le dock : retrait différé à l'activation effective du drag (5 px). Un clic-relâche sans bouger ne sort plus la carte. 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.
- Pas de scrollbar horizontale en bas du dock (
overflow-x: hiddenexplicite). Pas de clic-through dans la zone du dock en peep / expanded. - Pas de placeholder fantôme pendant un drag-from-dock : fallback sur
iv._dockHtml(HTML capturé à l'add) puisque la card source n'existe plus dans le planning courant.
Verdicts ghost — fix critique parser de fiche
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 cherchait les dates aux indices fixes [8] / [9] / [11] du tableau rows alors que le layout EV récent les place en [6] / [7] / [9].
- Détection robuste : scan des valeurs pour le pattern
DD/MM/YYYY HH:MM:SSet garde des 2 dernières occurrences comme (création, fin). Description = 2 colonnes après la date de 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 ». Persistée dans
admin_config.keepDisappearedGhosts(défaut OFF). Mode prod par défaut → verdictREMOVEappliqué. - Conditions de retrait : statut EV ∈ Annulé/Supprimé, OU statut clos sans action du tech avec commentaire, OU action sans commentaire
login: …. - Garde KEEP par sécurité sur tous les chemins d'erreur (pas de session, JSON
basicAutoCompleteinvalide, exception réseau, fiche tronquée < 20 000 octets, exception non rattrapée).
Drag&drop bloqué pour les interventions non-déplaçables
_canRescheduleIv refuse 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
- Auto-fermeture du popup
.soft-unpinnedquand la souris quitte sa zone et celle des cards liées de la même iv (300 ms de grâce, fade-out 180 ms). Hit-test géométriquemousemovedocument. - Pause du hit-test pendant un drag de planning en cours (
reschedule-dragging).
Tooltip / contact nettoyé
Le contact ne contient plus les labels « fiche » (Étage, Bureau, Service, Matériel, Problème, TFS, Date, Heure, Lieu, Bénéficiaire, Nom utilisateur) qui se collent parfois au contact à cause de séparateurs perdus dans la source EV. extractContacts détecte 2 patterns : label suivi de :, ou lettre minuscule collée à un label en majuscule. Côté tooltip, formatActionTextMultiline insère un saut de ligne avant chaque label, y compris quand le : manque mais que le label est collé à un mot minuscule.
Issues résolues — détails par ticket
- #3 — Coches « Absences récurrentes » : merge propre au lieu d'écrasement.
- #4 — Perte session EZV multi-onglets : permission optionnelle
cookies+ listenerchrome.cookies.onChangedqui broadcaste uncookieChangedau viewer. - #5 — Copie référence depuis popup épinglée : handler
copy-refajouté. - #6 — Popup épinglée premier plan au clic : recalcul du z-index sur
mousedown. - #7 — Notification « +2 min » fantôme : reset des flags slide-alert au retour de la prolongation.
- #8 — Compteur pompier : un pompier absent toute la journée est exclu du compteur.
v2026.5.44 — Refonte topbar, personnalisation Apparence, onboarding équipe, fix #1
Refonte topbar (vue classique)
- Sélecteur de date du planning ancré au centre absolu (
position: absolute; left: 50%; transform: translate(-50%, -50%)) — il ne se décale plus quand le bouton « ✕ Arrêter » apparaît à droite pendant un rafraîchissement. Auparavant il était centré viamargin-left: auto; margin-right: auto;dans le flex flow → l'arrivée du bouton Arrêter rétrécissaittopbar-leftet la date glissait vers la gauche. - 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é (today-block).
- Date du planning agrandie (28px en classique, 17px gras en horizontal) et neutre — la couleur ne change plus selon la date sélectionnée.
Personnalisation — Paramètres → Apparence
-
Couleur de la barre du haut : nouveau panneau avec 12 presets cliquables (Défaut, Blanc, Gris clair, Anthracite, Bleu DGNSI, Marine, Vert sapin, Brique, Violet, Rouge, Bleu pastel, Vert pastel) + picker custom (
<input type="color">) + champ hex#rrggbb+ bouton Réinitialiser. Persisté danscfg.topbarColor. -
Calcul automatique du contraste : la luminance de la couleur choisie détermine la couleur du texte topbar. Variable CSS
--topbar-textposée sur:root(blanc sur fond foncé, foncé sur fond clair)..topbar h1,.app-clock*,.capture-info,.date-custom, boutons et badges héritent de cette variable. Plus de texte invisible quand le user pique du noir/marine. -
Quand une couleur custom est active (
html.has-topbar-color), les boutons de la topbar (et de la sidebar en horizontal) adoptent un look translucide cohérent viacolor-mix(in srgb, var(--topbar-text) X%, transparent)(10% bg, 28% border, hover plus marqué). -
Police de l'application : sélecteur avec 28 choix organisés en familles :
- sans-serif : Arial, Helvetica, Verdana, Tahoma, Trebuchet MS, Calibri, Segoe UI, Gill Sans, Futura, Optima
- serif : Times New Roman, Georgia, Cambria, Garamond, Palatino, Bookman
- monospace : Courier New, Consolas, Lucida Console, JetBrains Mono / Fira Code
- display : Comic Sans MS, Impact, Brush Script, Copperplate
- condensée : Arial Narrow / Helvetica Narrow
La police choisie s'applique à TOUTE la page (body) — topbar, cards, popups, tooltips, panel admin. Variable CSS
--app-font. Chaque option du select s'affiche dans sa propre police pour prévisualiser, avec un aperçu live (« Aperçu — Vendredi 24.04.2026 ») à droite du select. -
Persisté dans
cfg.appFont(anciencfg.topbarFontlu en fallback pour migration).
Vue horizontale
- Bloc « Aujourd'hui + horloge » déplacé en bloc dans la sidebar (
today-blockajouté àELEMENTS_TO_RELOCATE). Aujourd'hui en haut, horloge en dessous, dans le même cadre encadré que la vue classique. - Date sélectionnée mise en avant (17px gras), date du jour + heure réduites à 12px (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 (✓✓). Pseudo-élément
::beforeàright: 0; width: 4px; background: var(--ok). Le ✓✓ est décalé àright: 14pxpour ne pas chevaucher la barre. - Quand une couleur de topbar est choisie, la sidebar adopte aussi cette couleur : titre, horloge, capture-info, stats globales, today-block, date sélectionnée, boutons (
.btn-action,.btn-refresh,.btn-today,.btn-subtle,.btn-icon,.btn-nav), theme-toggle et séparateurs prennent une teinte translucide cohérente. Bordure droite de la sidebar adaptée. Séparateurs (border-top/bottom de#stats, trait au-dessus du 1er bouton) encolor-mix(--topbar-text 30%).
Statistiques globales
- Nouveau compteur « X faits / Y clos » entre
(matin · après-midi)ettech. dispo.s.donecalculé danscomputeStatsenglobe tous les_disappearStatus∈ {closed, terminated, terminated-clos, terminated-pending, terminated-suspended} + statuts EV reconnus comme clôturés/résolus. - En vue classique, séparateur
//aprèsclos(au lieu de·). - En vue horizontale (sidebar), une barre horizontale 1px pleine largeur sépare le bloc interventions/faits/clos du bloc tech. dispo + pompiers / absents (le
//est masqué visuellement et remplacé parborder-top).
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 propre avec :
- icône
👥cerclée (88×88 px,--accent-soft/--accent) - titre « Aucune équipe configurée » (20px, gras)
- description courte (14px,
--text-muted, line-height 1.6) - bouton primary « Ouvrir paramètres » qui ouvre directement le panel admin sur la section Équipe via
showAdminPanel("team").
- icône
- Carte centrée verticalement et horizontalement dans la zone disponible :
position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%)ancré sur<main>(qui prendmin-height: calc(100vh - var(--topbar-height))quand la carte est visible). Identique en vue classique et horizontale. showError(msg, options)étendu pour supportercentered: true,icon,title,actionLabel+actionHandler.showAdminPanel(initialSection)accepte un identifiant de section ("appearance","team","easyvista","diagnostics","about") pour ouvrir directement sur l'onglet voulu.
Refresh / cache / verdicts ghost
- Rafraîchissement séquentiel (1 fiche à la fois) au lieu de 5 workers parallèles. Avantages : arrêt instantané via
AbortController(registre_evFetchControllersdansbackground.js, messageabortAllFetches), plus de races DOM, ordre d'affichage stable (pompier d'abord, alpha, puis matin → après-midi). - Re-fetch du checksum frais via
basicAutoComplete+redirectHeaderavant chaque fetch fiche → plus de fiche périmée entre sessions. - Cache merge robuste : fallback
cachedByRefquandactionIdchange. Cache écrit toutes les 5 fiches pendant le refresh (incrémental), pour ne pas perdre les statuts déjà récupérés si l'user change de date en cours. - Verdicts ghost unifiés dans
analyzeOneDisappearedIv:terminated-clos→ ✓✓ vert (clos officiel + commentaire tech)terminated-pending→ ✓ gris « Fait » (commentaire tech mais pas encore clos)terminated-suspended→ ✓ jaune « Suspendu » (statut Suspendu côté EV)cancelled/cancelled-reservation/cancelled-absence→ REMOVE silencieux
- Statuts EV configurables depuis Paramètres → EasyVista (
cfg.closedStatus,cfg.resolvedStatus,cfg.cancelledStatus,cfg.suspendedStatus) avec matching insensible à la casse, accents et conjugaisons via_normalizeStatus+_stemStatus+_statusMatchesAny. - Mise à jour live du tooltip et du popup épinglé après un verdict (plus besoin de fermer/réouvrir).
- Clic immédiat possible sur la carte dès que le verdict tombe (
updateInterventionRowattache le click handler dès queiv.ghost=falseest posé parverdict()). - 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,
LOG.isDebug()) : aucune iv n'est retirée silencieusement, tout est tracé sous le préfixe[disparition]dans la console F12. En PROD (par défaut), les ivcancelledsont bien retirées.
Bugfix #1 (Pompier + Absence)
- Si un technicien est à la fois pompier ET absent, les deux badges s'affichent désormais avec un séparateur
/(ex:Pompier / Absent) au lieu de masquer l'absence derrière le badge pompier. - Logique : détection d'un
extraAbsenceBlockqui ajoute une note d'absence sous la note pompier dans la card.
Autres bugfixes
- Absences récurrentes au switch de groupe : quand on changeait de groupe puis revenait au groupe initial, les jours d'absence cochés disparaissaient visuellement (la donnée elle-même restait en
cfg.recurringAbsences). Fix : restauration depuiscfg.recurringAbsences[id]à chaque ré-ajout de ligne dansrefreshTeamForGroupet la boucle d'auto-détection initiale. - Barre de progression / bannière session expirée : suivent désormais la hauteur dynamique de la topbar via
--topbar-heightcalculée par unResizeObserversurheader.topbar. Plus de chevauchement quand on scrolle (les ancienstop: 56pxhardcodés sont remplacés partop: var(--topbar-height, 56px)). - STATUS_FR regex : limite augmentée de
[^"]{2,30}à[^"]{2,200}(ne matchait pas « Suspendu : Attente info bénéficiaire/demandeur » qui fait 47 chars). - Description action : décodage
" → ",<br> → \n, HTML strippé via une nouvelle pipeline. Préfixelogin:retiré du commentaire technicien dans le tooltip / popup. - Tooltip référence : flèche
↗retirée du lien cliquable (.tt-ref-link::after { content: " ↗" }neutralisée).
v2026.5.43 — Fix Firefox 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. Cause : getBoundingClientRect() appelé immédiatement après appendChild sans attendre la mise en page Firefox, combiné à un transform: translateY dans l'animation. Fix : positionnement hors écran initial, force-layout via offsetHeight, puis pose finale. Animation simplifiée en opacité-only.
Stabilité popup au pin/unpin (tous navigateurs)
La popup épinglée bougeait de 16px et changeait de 1px de bordure quand on la dé-épinglait via 📌. Cause : différence de padding-top (28px vs 12px) et border-width (2px vs 1px) entre .pinned-popup et .soft-unpinned. Fix : .soft-unpinned conserve les mêmes dimensions, juste la couleur de bordure change (gris discret au lieu de bleu accent) pour signaler le mode détaché.
v2026.5.42 — Nettoyage 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 de la page wiki Utilisation pour utiliser les mêmes notations génériques dans les exemples de référence.
v2026.5.41 — Suppression des hardcodes runtime + UX admin + thème unifié
Plus aucun hardcode runtime
- Le groupe EV, les domaines, la liste de techniciens et les absences récurrentes ne sont plus codés en dur dans
background.js/viewer.js. Tout est lu depuisadmin_config(chrome.storage.local), alimenté par les onglets Équipe et EasyVista du panel admin. chrome.storage.localsurvit aux mises à jour d'extension → la configuration de l'utilisateur (groupe, équipe, absences récurrentes, domaines) est conservée d'une version à l'autre.- Au 1er install : aucun tech sélectionné, aucune absence récurrente. Le viewer affiche "Aucun technicien sélectionné. Ouvrez ⚙ Paramètres → Équipe…" tant que rien n'est configuré.
- Suppression de
isPillonelAbsentFriday()(hardcode du nom + du jour) → remplacée parisRecurringAbsence(tech, isoDate)générique. Label "Absent le X" calculé depuis le jour de la semaine.
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 11000 > 10000).
- Onglet Statuts retiré (placeholder lecture-seule).
- Tri équipe : inclus d'abord, puis exclus, alphabétique dans chaque sous-groupe (ne saute plus quand on coche/décoche).
Thème unifié
- Le toggle 🌙 de la topbar et le sélecteur Apparence du panel admin écrivent dans la même clé
cfg.theme. - 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, faute de bloc@media). - Listener
matchMediapour bascule live en mode auto.
Conflits 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 (row classique + mini-card en vue horizontale) est peinte en rouge plein avec texte blanc. Logique : full-day → toutes les interv en rouge ; partiel → seules celles en chevauchement.
Synchronisation des heures EV
- Les paramètres
day_start_hour/day_end_hourenvoyés àplanning_xhr.phpetbegin_hour/end_hourenvoyés àplan_set_holidays_popup.php(création absence) etplan_set_tech_planif_popup.php(douchette) lisent désormaiscfg.dayStart/cfg.dayEnd. Avant :8/18/19figés en dur.
Permissions runtime pour domaines
manifest.json: ajout deoptional_host_permissions: ["https://*/*"].chrome.permissions.request()au save d'un domaine custom dans Paramètres → EasyVista. Refus → toast d'avertissement.
Vue horizontale
- Popups au survol/clic limités aux candidats
dessous/dessus(la sidebar à gauche et la timeline pleine largeur rendent gauche/droite peu praticables).
Coulisses (background.js)
- Nouveaux helpers :
getAdminConfig(),getEvOrigins(),getGroupId(),getSupportIds(),getDayBounds(). fetchPlanningXml()lèveError("no_team_configured")quand la liste de techs est vide.
Ménage
- Suppression de
CACHE_DAYS(inutilisée),LS_THEME(clé localStorage obsolète), commentaire historique surinitAdminMenu(). Aucun symbole orphelin restant.
v2026.5.40 — Sélection groupe EV + édition domaines + tri équipe + réorga repo
Onglet Équipe
- Nouveau 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 → source autoritative, robuste aux ajouts/renommages côté EV (un nouveau groupe apparaît tout seul). - ID groupe affiché en italique à côté du sélecteur (ex:
ID groupe : 191). - Quand on change de groupe, la liste d'équipe se rafraîchit automatiquement avec les membres du nouveau groupe (fetch live).
- Plus de bouton "Détecter" : tout est auto à l'ouverture de l'onglet.
- Tri double des techniciens : d'abord les inclus (cases cochées), puis les exclus, et alphabétique dans chaque sous-groupe (insensible casse/accents). Le tri se rafraîchit uniquement aux render() pour éviter que les lignes sautent au toggle.
Onglet EasyVista
- Refonte complète : édition manuelle des deux domaines EV (interne DGNSI =
https://itsma.etat-de-vaud.ch, externe Internet =https://itsma.vd.ch). - Bouton 💾 Enregistrer (normalise : ajoute
https://, retire le trailing slash) + bouton ↺ Réinitialiser pour revenir aux valeurs par défaut. - Les domaines par défaut restent codés en dur en fallback ; le branchement effectif côté
background.js(utilisercfg.evOrigins) sera fait dans une prochaine version après validation.
Onglet Statuts retiré
- Section "Statuts" supprimée du panel admin (placeholder lecture-seule, jamais utile).
Vue horizontale enrichie
- Chaque segment timeline contient désormais une barre verticale couleur catégorie à gauche (mêmes teintes que les
intervention-dotde la vue classique : livraison/recup/remplacement/incident/rollout/réservation/autre), la référence (ex:SYYMMDD_NNNNN) en gras, et la ville en gris muted. - Hauteur de la timeline horizontale passée de 22px à 32px pour laisser la place au texte.
- Vue classique inchangée.
Réorganisation interne du repo
src/: sources de l'extension (manifest, background, viewer.{html,js,css}, icons).Autres/: build.sh + meta files (LICENSE, README, CHANGELOG).Builds/: artefacts distribués aux techniciens (Chromium/, Firefox/, .zip, .xpi).dist/: sortie de build (gitignoré).
Coulisses (background.js)
- Nouveau message
detectGroups+ fonctiondetectGroupsFromEV()qui fetche/index.php?eventName=HelpDesk_PlanningItemet extrait les paires(id, nom)via le<select>. detectTeamFromEV()accepte désormais ungroupIden argument → permet de basculer entre SI-CSS / SI-EXT depuis l'admin.- ⚠ Le fetch du planning continue d'utiliser
group_id=191codé en dur — sera retiré quand on validera quecfg.groupIdest bien alimenté par le sélecteur en terrain réel.
v2026.5.39 — Séparation Matin / Après-midi + Apparence
- Pills "MATIN" / "APRÈS-MIDI" entre les interventions de chaque tech
- Timeline : coupure midi très visible (bande verticale + stripes)
- Section Apparence dans les paramètres :
- Sélecteur thème (Auto / Clair / Sombre)
- Slider taille du texte (70% à 120%, 5 paliers)
- Durée du cache configurable (défaut 7 jours)
- Heures de la journée configurables (défaut 8h-18h)
- Section À propos (version, auteur, licence)
- Bouton "Vue" (popup user-badge) plus clair : montre la vue de destination
- Tooltips : 500ms à l'apparition + 500ms à la disparition (cohérent entre vues)
- Compteur "X tech. dispo" dans les stats globales
v2026.5.38 — Attribution auteur + nettoyage + observabilité
- Module
LOGunifié avec préfix + timestamp + version - Handlers globaux d'erreur (
window.error,unhandledrejection) - Toggle "Logs verbeux (debug)" dans le panel admin
sendMessageavec timeout 15swriteCacheavec gestion quota (purge auto + retry)renderFromDatawrappé en try/catch + null checks- Signature "Développé par Quentin Rouiller" en bas du popup user-badge
- En-têtes copyright dans tous les fichiers source
- Nettoyage : suppression de code mort (initAdminMenu, classes CSS orphelines, console.log debug verbeux)
v2026.5.37 — Refonte vue horizontale (sidebar complète)
- Topbar entièrement déplacée en sidebar verticale
- User-badge + titre + bouton Aujourd'hui + date/heure dans la sidebar
- Banderole pompier masquée
v2026.5.36 — Sidebar verticale en vue horizontale
- Wrapper flex-row
#horizontal-wrapper[sidebar 200px] + [main] - Déplacement physique des éléments via JS
v2026.5.32 — Vue horizontale togglable
- Bouton ⊞ "Vue" dans popup user-badge
- Toggle Vue classique ↔ Vue horizontale persisté
- Chaque tech = 1 ligne horizontale compacte
v2026.5.27 — Classification absences
- ABSENCE_LABELS regex (Congé/Maladie/Pompier)
- Couleurs catégories : Maladie indigo, Congé cyan, Pompier rouge
- Topbar une ligne, fermeture auto popups
v2026.5.25 — Bouton Paramètres dans popup user-badge
- Remplace les 5 clics sur le titre pour ouvrir admin
v2026.5.16 — Passage au versionning par année
- Format
YYYY.M.PATCH - Bump du PATCH à chaque livraison
v5.0.0 — Refonte topbar
initAppClock(horloge HH:MM)initSessionTimer(compteur de session EV, tick 1s)initAdminMenu(5 clics sur le titre, retiré en 2026.5.25)
v4.2.3 — Grande popup timeline persistante
bindTimelinePopover,showTimelinePopover- Clic = popup persistante, hover = popup qui suit la souris
v4.1.3 — Tooltips épinglables
- Introduction de
pinTooltip
v1.0.0 (16 avril 2026) — Version initiale
- Premier viewer EasyVista pour le canton
Historique complet
40+ tags depuis v1.0.0 jusqu'à v2026.5.40. Liste exhaustive accessible aux personnes ayant accès au repo.