Notes passe en col-span-2, hauteur fixe (!h-28) avec scroll interne.
!max-w-none neutralise le max-width:640px inline de MalioInputTextArea
(maxResizeWidth) qui empêchait la textarea de remplir les 2 colonnes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fiches Client / Prospect / Prestataire (onglet Rapport mis à part) :
- Champs email/téléphone : composants MalioInputEmail / MalioInputPhone
- Grilles en 4 colonnes (Info + blocs Contact/Adresse)
- Boutons « Nouveau contact/adresse » en secondary ; « Enregistrer » en
taille Malio standard ; marge form↔bouton homogène entre onglets
- Bouton retour ghost (mdi:arrow-left-bold) comme Starseed
- Adresse : flux CP → ville → rue (rue conditionnée au CP+ville, cascade
de reset), titre du bloc = libellé saisi
- Suppression d'un bloc Contact/Adresse : modal de confirmation (logique
centralisée dans useDirectoryDetail)
Onglet Rapport :
- Bouton d'ajout en taille Malio standard, label « Ajouter »
- Suppression compte-rendu : passe à la ConfirmModal partagée (remplace
l'ancienne ConfirmDeleteReportModal, supprimée)
- Suppression d'un document joint : ajout d'une modal de confirmation
- Upload via MalioInputUpload ; bouton supprimer document aligné
(mdi:delete-outline ghost)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Le volume Docker nommé `uploads_data` est créé root:root, or PHP-FPM tourne
en www-data (= uid host) : sans chown, l'upload de documents échoue en local
avec « mkdir(): Permission denied ». Ajoute un target `fix-uploads-perm`
idempotent, branché sur `install` (donc relancé par `reset`).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Évite la collision de cookie sur le domaine localhost en dev : plusieurs
apps Symfony (ex: Starseed) posaient toutes un cookie `BEARER` partagé,
se faisant écraser l'une l'autre → déconnexions croisées. Le cookie est
désormais nommé par app.
- lexik : token_extractors.cookie.name + clé set_cookies
- security : logout.delete_cookies
- docs (CLAUDE.md, README) mises à jour
Note : vider une fois les cookies de localhost pour purger l'ancien BEARER.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aligne les fiches Client / Prospect / Prestataire sur le design Starseed :
- Onglet Information : grille plate (suppression box blanche + box-shadow)
- Blocs Contact & Adresse : à plat, séparés par un filet noir 1px
(header titre + bouton supprimer, prop `last` sans bordure en bas)
Onglet Rapport inchangé.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Colonne « Action » avec entête (alignée à droite) sur les 3 tableaux
- Feedback hover sur les boutons d'action (poubelle / convertir)
- Conversion prospect → client passe par une modal de confirmation
- ConfirmModal basé sur MalioModal (design Starseed), remplace ConfirmDeleteModal
- Nom (client/prospect/prestataire) en gras dans les modals via <i18n-t>
- Boutons « Ajouter » : label raccourci + taille standard Malio (180px)
- Barres d'outils à hauteur homogène (48px) : le bouton ne saute plus entre onglets
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Au retour depuis une fiche (flèche de l'app ou du navigateur), la liste
revenait toujours sur l'onglet Clients. L'onglet actif est désormais
transmis via history.state (hors URL), comme sur Starseed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>