Commit graph

900 commits

Author SHA1 Message Date
isUnknown
2186e33b29 fix forgejo ci
All checks were successful
Deploy Preprod / Build and Deploy to Preprod (push) Successful in 31s
2026-01-15 14:59:54 +01:00
isUnknown
c2a5bd7a85 Migrate to Forgejo
Some checks failed
Deploy Preprod / Build and Deploy to Preprod (push) Failing after 1m43s
2026-01-15 14:55:27 +01:00
isUnknown
9ce8135a3b Rename to CLAUDE.md and add code preferences section
Renamed from CLAUDE_PROJECT_OVERVIEW.md to follow standard naming convention
for automatic recognition. Added section documenting code standards and
work preferences.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 14:10:20 +01:00
isUnknown
6b80e242b8 Fix virtual sample routing and refactor for clarity
Virtual sample variations now display correctly when loading from URL hash.
Old URLs with underscores are normalized to hyphens on load. URL hash
updates automatically when navigating between variations.

Refactored both DynamicView and Selector components with explicit function
names, removed unnecessary comments, and improved code organization.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 13:54:36 +01:00
isUnknown
dfb8d1038b Fix routing vers une piste spécifique avec hash
Problème : L'URL avec hash (#serumwc_lasertone_empty) n'ouvrait pas la bonne
piste/variation mais toujours la première.

Cause : Incohérence entre les underscores du hash et les tirets du slug backend.
slugify convertit les underscores en tirets, mais les slugs Kirby peuvent
varier.

Solution : Comparer le hash de 3 façons :
1. Comparaison directe
2. Hash avec underscores → tirets
3. Slug avec tirets → underscores

Cela gère tous les cas de figure.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 12:29:49 +01:00
isUnknown
95a8bf99cb build plugin refresh cache 2026-01-15 12:19:35 +01:00
isUnknown
378af9ac96 Fix : affichage progression dans le texte du bouton
La div en dessous ne s'affichait pas dans le panel Kirby.
La progression s'affiche maintenant directement dans le bouton :
"En cours 0%" → "En cours 20%" → "En cours 100%" → "Terminé"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 12:18:33 +01:00
isUnknown
4669f03f16 Amélioration affichage progression du refresh cache
Ajout d'une ligne de texte sous le bouton pour afficher la progression :
- "Traitement : 10/50 projets (20%)" pendant le traitement
- "50 projets mis à jour avec succès" à la fin
- Tooltip aussi mis à jour avec la progression

Le bouton affiche "En cours…" et la progression détaillée est en dessous.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 12:13:26 +01:00
isUnknown
a57b0c203a Optimisation du refresh cache avec batch processing
Problème : Le refresh cache de tous les projets timeout côté serveur à cause
du trop grand nombre de projets à traiter en une seule requête.

Solution : Batch processing avec indicateur de progression
- Backend : traite 10 projets par batch avec offset/limit
- Frontend : fait plusieurs requêtes successives et affiche la progression
- Timeout réduit à 60s par batch au lieu de illimité
- Bouton désactivé pendant le traitement
- Ajout invalidateNotificationsCache() pour vider aussi ce cache

Affichage : "15/50 (30%)" pendant le traitement, puis "Terminé (50)"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 12:08:13 +01:00
isUnknown
86db1f5a0c Fix collectLight() : inclure author, text, location pour l'affichage
Problème : collectLight() ne retournait que id/type/isRead/date, causant
notification.author undefined dans le frontend.

Solution : Inclure tous les champs nécessaires à l'affichage (author, text,
location) mais toujours alléger en excluant les gros détails inutiles.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:55:17 +01:00
isUnknown
2791bc4462 Ajout invalidation cache notifications dans hook file-update
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:42:40 +01:00
isUnknown
bb71da081b Ajout du système de cache pour les notifications
Problème : Les notifications étaient collectées à chaque requête sur
projects.json, causant des problèmes de performance et de mémoire.

Solution : Mise en cache des notifications par projet et par utilisateur
- Nouvelle méthode getNotificationsLight() dans ProjectPage avec cache
- Cache invalidé automatiquement via les hooks existants (page/file update)
- Cache par utilisateur pour inclure le isRead spécifique

Performance : Les notifications sont calculées une fois puis servies depuis
le cache jusqu'à ce qu'un changement survienne (commentaire, brief, etc.)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:42:20 +01:00
isUnknown
e73e25b1da Ajout .user.ini : augmentation limite mémoire PHP à 512M
Temporaire pour gérer le chargement des notifications de tous les projets.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:19:14 +01:00
isUnknown
0a980603a4 Ajout de collectLight() pour optimiser le chargement du listing des projets
Problème : projects.json.php causait un dépassement mémoire en collectant
toutes les notifications complètes (avec author, location, text, etc.) pour
tous les projets.

Solution : Nouvelle méthode collectLight() qui ne retourne que les données
minimales nécessaires au frontend pour afficher les indicateurs :
- id, type, isRead, date
- location.project.uri (pour le filtrage)

Les détails complets sont toujours chargés dans project.json.php individuel.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:18:59 +01:00
isUnknown
0250dc1487 Fix : problème de mémoire lors du chargement des projets
Problème : projects.json.php collectait les notifications dérivées pour TOUS
les projets d'un coup, ce qui causait un dépassement de mémoire (HTTP 500).

Solution :
- projects.json.php : Ne collecte plus les notifications (retourne [])
- project.json.php : Collecte les notifications uniquement pour le projet affiché

Les notifications seront chargées à la demande quand on ouvre un projet,
pas lors du listing initial.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 11:16:17 +01:00
isUnknown
f614884da0 update project overview 2026-01-15 11:03:50 +01:00
isUnknown
9d12ccb209 Fix : ne compter que les commentaires des images, pas ceux du PDF
Problème : Dans le kanban, la carte du brief client custom (Images) affichait
aussi le nombre de commentaires du PDF, alors qu'il n'y a pas de système de
commentaires pour les images du brief custom.

Solution : Filtrer pour ne compter que les commentaires des fichiers de type
'image', et non tous les fichiers du step.

Bonus : Suppression du paramètre obsolète ?step=images dans ClientBrief.vue

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 10:58:41 +01:00
isUnknown
cfd679bc15 Suppression des composants obsolètes Intro et ModeSelection
Ces composants faisaient partie de l'ancien système de steps du Brief
qui a été supprimé. Ils ne sont plus utilisés.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 10:53:50 +01:00
isUnknown
04d8da39fd Simplification : Brief.vue affiche toujours Images directement
Suppression du système de steps obsolète (Intro → ModeSelection → Images).
/client-brief affiche maintenant toujours le composant Images, sans conditions
ni paramètres d'URL (?step=images).

Les briefs avec PDF sont gérés via les dialogues uniquement.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 10:52:12 +01:00
isUnknown
6ff59e9b07 Fix : URL correcte pour notifications de brief validé depuis PDF + redirect briefs vides
Problème 1 : Les notifications de brief validé depuis un PDF renvoyaient vers
/projects/xxx/client-brief au lieu de l'URL complète avec dialog et fileIndex.

Problème 2 : Les URL /projects/xxx/client-brief pour des briefs non créés
affichaient une page vide au lieu de rediriger vers le kanban.

Solutions :
- Stocker validationDialogUri lors de la validation du brief
- Utiliser ce dialogUri dans ContentProvider et Notifications.vue
- Rediriger vers le projet parent si brief vide et non validé

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-15 10:44:30 +01:00
isUnknown
a7d315942a Refonte du système de notifications : passage aux notifications dérivées
Remplace le système de notifications stockées par un système de providers
qui dérivent les notifications des données existantes (commentaires, réponses,
demandes de projet, demandes de rendez-vous, validations de brief).

- Ajout du NotificationCollector et de l'interface NotificationProvider
- Création de 5 providers : Comment, Reply, ProjectRequest, AppointmentRequest, Content
- Métadonnées de notifications stockées directement sur les entités source
- Nouvelles routes mark-as-read et mark-all-read
- Mise à jour du frontend pour le nouveau système
- Route de migration pour les données existantes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 10:31:31 +01:00
isUnknown
c68b51f639 git : ignore claude settings 2026-01-14 14:55:12 +01:00
isUnknown
d7e96541a0 remove cache busting based on query string 2025-10-08 15:50:25 +02:00
isUnknown
1e890cfa2e uncomment observers 2025-10-08 15:15:38 +02:00
isUnknown
4223a9d522 disable observer 2025-10-08 15:08:53 +02:00
isUnknown
cde0eb1943 assign default values for all projects 2025-10-08 15:03:27 +02:00
isUnknown
fb1a86712d assign default value for projects 2025-10-08 15:01:08 +02:00
isUnknown
d552b6bf5e fix unreadNotification 2025-10-08 14:58:29 +02:00
isUnknown
4054c54e57 assign default values 2025-10-08 14:53:09 +02:00
isUnknown
f9796be7f2 CI : refactor 2025-10-08 14:49:33 +02:00
isUnknown
22407bd9b2 improve CI 2025-10-08 14:47:21 +02:00
isUnknown
e5a3f7b812 imperove CI 2025-10-08 14:43:29 +02:00
isUnknown
7c0e0e4798 improve CI 2025-10-08 14:41:56 +02:00
isUnknown
dca0f18cbb improve CI 2025-10-08 14:38:42 +02:00
isUnknown
c6d973e126 CI : create specific build for preprod 2025-10-08 14:34:22 +02:00
isUnknown
d9066defce Merge branch 'preprod' 2025-10-08 12:45:33 +02:00
isUnknown
3fc9d925e5 add js/css cache busting by query string 2025-10-08 12:41:07 +02:00
isUnknown
2b461b305e Revert "add cache busting by query string"
This reverts commit 8003b51605.
2025-10-08 12:37:22 +02:00
isUnknown
8003b51605 add cache busting by query string 2025-10-08 12:33:41 +02:00
isUnknown
10352babcd #176 2025-10-08 11:54:12 +02:00
6d5899a6c7 fix #175 2025-10-07 15:41:48 +02:00
isUnknown
d3bab40167 fix undefined dynamic files 2025-10-05 17:44:16 +02:00
isUnknown
9056befcfd update CI 2025-10-05 17:32:44 +02:00
isUnknown
33ec908a23 merge main -> preprod 2025-10-05 17:31:53 +02:00
isUnknown
8eaa893994 #170 2025-10-02 15:12:20 +02:00
isUnknown
5deb07f09d #170 2025-10-02 12:42:15 +02:00
isUnknown
c11a85e7f8 vite config : ignore /local and /public/** to improve perf 2025-10-02 09:53:59 +02:00
bf23084e48 Darken tracks ::scroll-button border color #170 2025-10-01 17:06:53 +02:00
isUnknown
21714e1808 virtual sample : disable compare mode on dialog close 2025-10-01 16:30:07 +02:00
76b67e4756 hotfix .selector-dropdown label text overflow 2025-10-01 16:23:08 +02:00