Journal des modifications

Toutes les modifications notables de Moorly sont documentées ici.

Version actuelle : v1.25.1

[1.25.1] — 2026-05-21

Fix — Tarification : décimales de pied perdues par `round()` sans précision

[1.25.0] — 2026-05-21

Feat — Rapport financier : génération PDF réelle

[1.24.4] — 2026-05-21

Ux — Rapport financier : ordre des colonnes + clarification taxes

[1.24.3] — 2026-05-21

Ux — Rapport financier : colonnes du tableau ajustées

[1.24.2] — 2026-05-21

Fix — Rapport financier : "Quai" affiché pour toutes les ententes mooring

[1.24.1] — 2026-05-21

Fix — Rapport financier : affichage des services

[1.24.0] — 2026-05-21

Feat — Rapport financier : wizard de revérification des montants

[1.23.2] — 2026-05-08

Feat — Dashboard : scope par administration

Test infrastructure

[1.23.1] — 2026-05-08

Fix — Bucket C : compléter le verrouillage license_admin

[1.23.0] — 2026-05-08

Feat — Tenant : scoping des admins par administration portuaire

[1.22.1] — 2026-05-07

UX — Bateaux : indicateurs visuels pour `tc_inactive`

[1.22.0] — 2026-05-07

Feat — Bateaux : Gross Tonnage + Port of Registry persistés + tc-verify-bulk section toggle

[1.21.1] — 2026-05-07

Feat — TC lookup retourne aussi le statut + tc-verify-bulk auto-tag CLOSED/SUSPENDED

[1.21.0] — 2026-05-07

Feat — Bateaux : flag "TC inactif" (CLOSED/SUSPENDED)

[1.20.3] — 2026-05-06

Fix — TC lookup : entités HTML non décodées dans les champs texte

[1.20.2] — 2026-05-06

Fix — Ententes : `update()` n'incluait pas `port_id` dans l'UPDATE SQL

[1.20.1] — 2026-05-05

Fix — Ententes : port jamais sauvegardé sur `e.port_id`

[1.20.0] — 2026-05-05

Feat — Ententes : cas de location (locataire ≠ propriétaire)

[1.19.6] — 2026-05-05

UX — Ententes : retirer la séparation entre hivernal et estival

[1.19.5] — 2026-05-05

UX — Ententes : regrouper hivernal + estival sous "Parc à bateau"

[1.19.4] — 2026-05-05

Feat — Ententes : exposer "Parc estival" en plus de "Parc d'hivernement"

[1.19.3] — 2026-05-05

Fix — Ententes : page blanche en français (apostrophe non échappée)

[1.19.2] — 2026-05-04

Fix — Import KML : POST jamais déclenché après clic côté eau

[1.19.1] — 2026-05-04

Fix — Import KML : finitions UX

[1.19.0] — 2026-05-04

Feat — Import KML pour les lignes d'amarrage (`/quais`)

[1.18.98] — 2026-04-29

Fix — Upload bathymétrie : csrf_invalid

[1.18.97] — 2026-04-29

Fix — Toggle FR/EN backend : cookie résiduel host-only

i18n backend — Synthèse globale (v1.18.92 → v1.18.96)

[1.18.96] — 2026-04-29

i18n backend — Phase 5 : controllers (flash/error messages)

[1.18.95] — 2026-04-29

i18n backend — Phase 4 : modules P3 (specialty)

[1.18.94] — 2026-04-29

i18n backend — Phase 3 : modules P2 (usage quotidien)

[1.18.93] — 2026-04-29

i18n backend — Phase 2 : modules P1 (haute-fréquence)

[1.18.92] — 2026-04-29

i18n backend — Phase 1 : infrastructure

[1.18.91] — 2026-04-29

Fix — Création de tenant : schéma canonique au lieu des migrations Prisma cassées

[1.18.90] — 2026-04-28

Fix — fetchNewArrivals : `Unknown column 'e_new.type'`

[1.18.89] — 2026-04-28

UX — Mouvement par port : section « Nouveaux N-1 → N »

UX — Non-renouvellements : Copier (presse-papiers) + Imprimer (PDF) à la place du CSV

[1.18.87] — 2026-04-22

UX — Non-renouvellements : flag visuel pour téléphone/courriel mal formatté

[1.18.86] — 2026-04-22

UX — Non-renouvellements : colonne Solde N-1, courriel + bouton Export CSV

[1.18.85] — 2026-04-22

UX — Non-renouvellements : « Cette saison » remplace « Montant N-1 »

[1.18.84] — 2026-04-22

Feat — Dashboard : section « Non-renouvellements » sous Mouvement par port

[1.18.83] — 2026-04-22

UX — Dashboard : graphique revenus mensuels = facturation + paiements (2 lignes)

[1.18.82] — 2026-04-22

Feat — Modal entente : bouton « Recalculer » dans l'onglet Paiements

[1.18.81] — 2026-04-22

UX — Home mobile : icônes de ports toutes navy/teal (plus de rotation)

[1.18.80] — 2026-04-22

Fix — Assurance (KPI + liste mobile) filtrée sur bateaux avec entente active

[1.18.79] — 2026-04-22

Feat — Système d'alertes + KPIs mobile cliquables

[1.18.78] — 2026-04-22

Fix — OCR sur Sonnet (plus précis) + mic feedback iOS

[1.18.77] — 2026-04-22

Feat — OCR mobile : accepte aussi le nom du bateau (pas juste l'immatriculation)

[1.18.76] — 2026-04-22

Fix — OCR : photo > 5 Mo refusée par Claude Vision

[1.18.75] — 2026-04-22

Fix — OCR 500 + CSP bloquait `blob:` (preview images compressées)

[1.18.74] — 2026-04-22

Fix — Upload photo mobile : compression client-side (PHP upload_max_filesize = 2 Mo)

[1.18.73] — 2026-04-22

Feat — App mobile recherche : micro (voix) + caméra (OCR Claude Vision)

[1.18.72] — 2026-04-22

UX — App mobile home : bouton doré devient « Signaler un incident »

[1.18.71] — 2026-04-22

UX — App mobile : retrait du select « Méthode de notification » (redondant)

[1.18.70] — 2026-04-22

Fix — App mobile : formulaire d'avertissement complet (types DB, photo caméra, frais)

[1.18.69] — 2026-04-22

Fix — Vue port mobile cassée : `.mx-result` n'avait pas `display:block`

[1.18.68] — 2026-04-22

UX — App mobile : vue port refonte + navigation vers `/app/bateau/:id`

[1.18.67] — 2026-04-22

UX — App mobile : page détail bateau dédiée (au lieu de l'expand inline)

[1.18.66] — 2026-04-22

UX — App mobile tenant : redesign complet

[1.18.65] — 2026-04-22

UX — App mobile recherche : services listés sous chaque contrat

[1.18.64] — 2026-04-22

UX — App mobile recherche : icônes de services restaurées, basées sur la période courante

[1.18.63] — 2026-04-22

UX — App mobile recherche : point d'état selon ententes + assurance

[1.18.62] — 2026-04-22

UX — App mobile tenant : recherche bateau liste tous les contrats actifs ordonnés

[1.18.61] — 2026-04-21

Cleanup — Suppression complète du système de synchronisation legacy

[1.18.60] — 2026-04-21

UX — Occupation par port : passage de 3 barres à un heatmap grid

[1.18.59] — 2026-04-21

Perf — Dashboard occupation : pattern stale-while-revalidate avec cache mis à jour par /quais

[1.18.58] — 2026-04-21

Perf — Dashboard occupation : capacité estimée utilise la moyenne réelle des bateaux

[1.18.57] — 2026-04-21

Perf — Dashboard occupation : 12 calls API + turf.js → 1 call serveur (~7ms)

[1.18.56] — 2026-04-21

UX — `/ententes` : tri par bateau ASC + filtre Active par défaut

[1.18.55] — 2026-04-21

UX — `/clients` : retrait du filtre type + colonne Ententes actives au lieu de Port principal/ville

[1.18.54] — 2026-04-21

Fix — `/clients` colonne port : prioriser le type Principal au lieu de la date

[1.18.53] — 2026-04-21

UX — `/clients` : par défaut, seulement clients avec entente active

[1.18.52] — 2026-04-21

UX — Modal client, onglet Ententes : pattern actives + historique collapsible (cohérent avec bateaux)

[1.18.51] — 2026-04-21

UX — Tri chronologique des ententes + badge type dans le modal bateau

[1.18.50] — 2026-04-21

UX — `/bateaux` : port toujours à droite du badge dans la colonne Ententes

[1.18.49] — 2026-04-21

UX — `/bateaux` : ajout du filtre Port

[1.18.48] — 2026-04-21

UX — `/bateaux` : retrait des dates de la colonne Ententes

[1.18.47] — 2026-04-21

UX — `/bateaux` : remplacement du filtre type bateau par filtre entente, défaut « actives »

[1.18.46] — 2026-04-21

Fix — Indicateur de profondeur bathymétrie : ancré sur la map au lieu du body

[1.18.45] — 2026-04-21

Fix — Couleurs bateaux par type d'entente : `entente_type` était droppé par `array_map` du serializer

[1.18.44] — 2026-04-21

UX — `/quais` : panneau Occupation déplacé sous la sélection de port

Note — Investigation couleurs bateaux par entente_type

[1.18.43] — 2026-04-21

Fix — CSP `connect-src` étendu (unpkg + cdnjs + Stripe)

[1.18.42] — 2026-04-21

UX — Couleurs unifiées Principal / Avant-pêche / Après-pêche

[1.18.41] — 2026-04-21

UX — `/bateaux` : retrait de la longueur dans le sous-titre

[1.18.40] — 2026-04-21

UX — `/bateaux` : rééquilibrage des colonnes pour les ententes multiples

[1.18.39] — 2026-04-21

UX — Liste `/bateaux` : colonne Entente affiche toutes les ententes actives

[1.18.38] — 2026-04-21

UX — Modal bateau : section « Historique » déployable sous les contrats actifs

[1.18.37] — 2026-04-21

UX — Modal bateau admin : onglet « Contrats » filtre uniquement les ententes actives

[1.18.36] — 2026-04-20

UX — `/dashboard` client (espace client) : refonte selon `design-preview/client-portal.html`

[1.18.35] — 2026-04-20

Fix — FA Free ne contient presque pas d'icônes `far` (regular) : bascule `far` → `fas`

[1.18.34] — 2026-04-20

Fix — CSP `frame-src` : iframe Google Maps bloqué par `default-src 'self'`

[1.18.33] — 2026-04-20

Fix — **Root cause** des icônes FA cassées dans les pages CMS : `.mm-cms-content *` forçait `font-family: inherit !important`

[1.18.32] — 2026-04-20

Fix — `/contact` : retour à Google Maps (définitif) + z-index du wrapper + cache-bust FA CSS

[1.18.31] — 2026-04-20

Fix — Icônes FA : remplacement des fichiers locaux par la version officielle FA Free 6.5.1

[1.18.30] — 2026-04-20

Fix — Icônes FA rendues en carré : bascule sur CDN FA 6.5.1 Free

Fix — `/contact` : retour à Leaflet+OSM (Google bloqué même avec `www.`)

[1.18.29] — 2026-04-20

Fix — `/contact` : retour à Google Maps (demande utilisateur)

[1.18.28] — 2026-04-20

Fix — CSP bloquait Nominatim + icônes services ne matchaient aucun slug

[1.18.27] — 2026-04-20

Fix — `/contact` public : carte Google bloquée, remplacée par Leaflet + OSM

[1.18.26] — 2026-04-20

UX — `/dashboard` (admin) : refonte selon design-preview

[1.18.25] — 2026-04-20

UX — Layout : suppression du topbar, user block déplacé en bas de la sidebar (design-preview)

[1.18.24] — 2026-04-20

UX — Sidebar : badges de comptage sur les items du menu

[1.18.23] — 2026-04-20

UX — `/tarifs` : liste récap des exceptions de services par administration

[1.18.22] — 2026-04-20

Fix — CSRF token manquant dans les appels `fetch()` natifs (422 Unprocessable Entity)

[1.18.21] — 2026-04-20

Fix — recompute ententes 2026 avec prix scope-aware (per_administration)

[1.18.20] — 2026-04-20

Fix — prix services stales dans `dock_services_detail`

[1.18.19] — 2026-04-20

Data — Purge ententes dupliquées + backfill season

[1.18.18] — 2026-04-20

Data + UI — Application des taxes (TPS 5% + TVQ 9.975%) sur les factures

[1.18.17] — 2026-04-20

Fix — `/facturation` : retirer le label "Hors taxes" partout

[1.18.16] — 2026-04-20

Fix — `/facturation` : TypeError dans openModal (élément modalTitle manquant)

[1.18.15] — 2026-04-20

Data — Génération des factures manquantes pour les ententes 2026

[1.18.14] — 2026-04-20

Design applied — `/facturation`

[1.18.13] — 2026-04-20

Fix — breakdown tarif ODYSSEE : largeur 16.99pi → 17pi

[1.18.12] — 2026-04-20

Fix — ententes : import dates legacy + affichage signature papier

[1.18.11] — 2026-04-20

Fix — ententes : montants corrects + breakdown complet du calcul

[1.18.10] — 2026-04-20

Fix — ententes 2026 : codes services, totaux incorrects, port manquant, détail calcul

[1.18.9] — 2026-04-20

Data — Enrichissement des ententes 2026 depuis le dump legacy

Gitignore

[1.18.8] — 2026-04-20

Fix — `/ententes` modal n'affichait pas les montants de l'entente

[1.18.7] — 2026-04-20

Data fix — split concatenated client addresses

[1.18.6] — 2026-04-20

Design applied — `/clients`

[1.18.5] — 2026-04-20

Design applied — `/ports`

[1.18.4] — 2026-04-20

Design applied — `/administrations`

[1.18.3] — 2026-04-20

Design applied — `/login`, `/register`, `/change-password` (+ `/register-client`)

`layouts/auth.php`

`login.php`

`register.php` (inscription organisation)

`register-client.php` (inscription client d'un port)

`change-password.php` (reset / forced password change)

[1.18.2] — 2026-04-20

Design applied — `/aide` (centre d'aide)

[1.18.1] — 2026-04-19

Design applied — `/errors/404`

[1.18.0] — 2026-04-19

Design Preview v2 — 30 nouveaux mockups HTML statiques

9 sections couvertes (44 mockups au total = 14 exemplars + 30 nouveaux)

Approche par mockup

Aucun changement prod

[1.17.41] — 2026-04-19

Refonte deep — Section Opérations (3 vues)

`/machinerie`

`/incidents`

`/pos` (terminal de caisse + sous-vues)

[1.17.40] — 2026-04-19

Fix — classes inventées dans facturation, comptabilite, tarifs

`/facturation`

`/comptabilite`

`/tarifs`

[1.17.39] — 2026-04-19

Fix — modals administrations & ports cassés visuellement (regressed in v1.17.38)

[1.17.38] — 2026-04-19

Refonte deep — Section Infrastructure (3 vues)

`/administrations`

`/ports`

`/quais` (carte d'amarrage Leaflet)

[1.17.37] — 2026-04-19

Refonte deep — Section Finance (suite, 4 vues)

`/facturation`

`/comptabilite`

`/rapport-financier`

`/tarifs`

[1.17.36] — 2026-04-19

Refonte deep — Section Finance (1/5) : `/transactions`

[1.17.35] — 2026-04-19

Refonte deep — Section Conformité (5 vues)

`/conformite`

`/compliance` (Suivi documentaire)

`/infractions`

`/legal-docs`

`/ppb-outils` (Boîte à outils PPB)

[1.17.34] — 2026-04-19

Fix — table names section Clients (permis + bookings)

Corrigé

[1.17.33] — 2026-04-19

Fix — `/clients` 500 error

Corrigé

[1.17.32] — 2026-04-19

Refonte deep — Section Clients (4 vues)

`/clients`

`/permis` (Clients commerciaux)

`/demandes`

`/renouvellements`

[1.17.31] — 2026-04-19

Refonte modals admin + danger zone licence

CMS modal — refonte aside+tabs

Utilisateurs modal — refonte aside+tabs

Licence — danger zone restaurée

[1.17.30] — 2026-04-19

Refonte deep — `/analytiques` (Dashboard analytics)

Modifié

Préservé

[1.17.29] — 2026-04-19

Refonte deep — `/licence` (Plan + abonnement)

Modifié

Préservé

[1.17.28] — 2026-04-19

Refonte deep — `/cms` (Contenu du site)

Modifié

Préservé intact

[1.17.27] — 2026-04-19

Refonte deep — `/utilisateurs` (Admin section)

Modifié

Préservé

[1.17.26] — 2026-04-19

Extension migration — Modal headers light theme everywhere

Corrigé

[1.17.25] — 2026-04-19

Extension migration — Final responsive CSS migrated to .ui-*

[1.17.24] — 2026-04-19

Extension migration — Form controls + final dead CSS cleanup

[1.17.23] — 2026-04-19

Extension migration — Cleanup CSS legacy round 2

[1.17.22] — 2026-04-19

Extension migration — Bootstrap modal harmony

[1.17.21] — 2026-04-19

Extension migration — Bootstrap nav-tabs styling + form controls

[1.17.20] — 2026-04-19

Extension migration — Form sections (.s-form-section + .s-step → .ui-section-header)

[1.17.19] — 2026-04-19

Extension migration — Stat cards (.s-stat-* → .ui-kpi*)

[1.17.18] — 2026-04-19

Extension migration — Final sweep (variants)

[1.17.17] — 2026-04-19

Extension migration — Groupes 7 + 8 (clients views + POS sub)

[1.17.16] — 2026-04-19

Extension migration — Groupe 6 (meta)

[1.17.15] — 2026-04-19

Extension migration — Groupe 5 (admin/secondaire)

[1.17.14] — 2026-04-19

Extension migration — Groupe 4 (finance)

[1.17.13] — 2026-04-19

Extension migration — Groupe 3 (conformité)

[1.17.12] — 2026-04-19

Extension migration — Groupe 2 (infrastructure)

[1.17.11] — 2026-04-19

Extension migration — Groupe 1 (high-traffic)

Swaps appliqués

[1.17.10] — 2026-04-19

Task 8/8 — Cleanup CSS legacy (partiel)

Retiré

Conservé

Migration UI polish — État final

Migration restante (future)

[1.17.9] — 2026-04-19

Fix — POS renderCart cartEmpty reference

Corrigé

[1.17.8] — 2026-04-19

POS — Alignement visuel avec le mockup design-preview

Ajouté

Modifié

Résultat

[1.17.7] — 2026-04-19

Fix — POS onclick attribute parsing

Corrigé

[1.17.6] — 2026-04-19

Task 7/8 — Migration `/pos` (point de vente)

Modifié

Préservé

Prochaine étape

[1.17.5] — 2026-04-19

Task 6/8 — Migration `/configuration` (10 sections)

Modifié

Préservé

Prochaine étape

[1.17.4] — 2026-04-19

Task 5/8 — Migration `/dashboard` admin

Modifié

Préservé intact

Prochaine étape

[1.17.3] — 2026-04-19

Task 4/8 — Migration `/ententes` complète

Modifié

Préservé

Prochaine étape

[1.17.2] — 2026-04-19

Task 3/8 — Migration `/bateaux` complète

Modifié

Préservé

Prochaine étape

[1.17.1] — 2026-04-19

Task 2/8 — Migration sidebar + topbar shell

Modifié

À noter

Prochaine étape

[1.17.0] — 2026-04-19

Task 1/8 — Landing stitch.css en prod (invisible)

Ajouté

À noter

Plan complet

[1.16.1] — 2026-04-19

Ajouté — 5 mockups additionnels pour valider la continuité entre pages

shared.css — extensions

À noter

[1.16.0] — 2026-04-19

Ajouté

À noter

Spec associée

[1.15.2] — 2026-04-19

Ajouté

Correction mineure

Couverture finale

[1.15.1] — 2026-04-19

Ajouté

Couverture service layer

[1.15.0] — 2026-04-19

Ajouté

[1.14.11] — 2026-04-19

Modifié

Bilan service layer (session du 2026-04-19)

[1.14.10] — 2026-04-19

Modifié

[1.14.9] — 2026-04-19

Modifié

[1.14.8] — 2026-04-19

Modifié

[1.14.7] — 2026-04-19

Modifié

[1.14.6] — 2026-04-19

Modifié

[1.14.5] — 2026-04-19

Modifié

[1.14.4] — 2026-04-19

Modifié

[1.14.3] — 2026-04-19

Modifié

[1.14.2] — 2026-04-19

Modifié

[1.14.1] — 2026-04-19

Ajouté

[1.14.0] — 2026-04-18

Ajouté

[1.13.3] — 2026-04-18

Performance

[1.13.2] — 2026-04-18

Sécurité

[1.13.1] — 2026-04-18

Ajouté

Sécurité

[1.13.0] — 2026-04-17

Ajouté

Sécurité

[1.12.0] — 2026-04-09

Ajouté

[1.11.0] — 2026-04-08

Ajouté

[1.10.0] — 2026-04-07

Ajouté

Corrigé

Modifié

[1.9.0] — 2026-04-07

Ajouté

[1.8.0] — 2026-04-07

Ajouté

Modifié

[1.5.0] — 2026-04-07

Ajouté

Modifié

[1.4.0] — 2026-04-07

Ajouté

[1.3.0] — 2026-04-07

Ajouté

[1.2.0] — 2026-04-06

Ajouté

Modifié

Corrigé

[1.1.1] — 2026-04-06

Modifié

[1.1.0] — 2026-04-06

Ajouté

[1.0.0] — 2026-04-06

Fonctionnalités principales

Infrastructure

Clients et bateaux

Ententes et tarification

Facturation et paiements

Site web public (CMS)

Dashboard

Conformité et opérations

Plateforme et abonnements

Conformité légale

Centre d'aide

🍪 Avis sur les cookies et la confidentialité

Ce site utilise des cookies essentiels (session, préférence de langue) nécessaires au fonctionnement de la plateforme. Nous n'utilisons aucun cookie de suivi ou publicitaire. Vos données personnelles sont traitées conformément à notre politique de confidentialité et à la Loi 25 du Québec.