Recette fonctionnelle version 1.0.x #17

Closed
opened 2026-09-21 23:11:08 +01:00 by maxime · 9 comments
Owner

Description

Liste des bugs trouvé lors de la recette fonctionnelle de la version 1.0.x

Taches

  • Le message d'erreur s'affiche derrière la modale. ce qui fait qu'on ne voit pas forcément l'erreur quand on saissis une date invalide lors de l'ajout d'un évènement.
    Capture d’écran 2026-09-22 à 00.10.03

  • Il faudrait un bouton de sélection rapide de tous les membres "Tous". De plus par défaut, c'est l'utilisateur courant qui est sélectionné et pas toute la famille.
    Capture d’écran 2026-09-22 à 00.13.50

  • Le changement de couleur d'un membre n'est pas pris en compte sur l'accueil ni dans les tâches tant qu'on ne recharge pas la page.

  • Synchroniser les champs de date du formulaire d'évènement : si la date de début passe après la date de fin, la fin est décalée pour ne pas être antérieure au début, et inversement.

  • Retour technique — Renommer les routes du frontend en anglais : /emploi-du-temps, /listes, /recettes, /repas, /accueil, /parametres/:section (et ses sections famille…), /bienvenue sont en français alors que tout identifiant doit l'être en anglais (AGENTS.md, Which language, where). L'application n'est pas encore déployée : aucun lien existant à préserver, donc pas de redirection depuis les anciens chemins — les redirections héritées (/administration, /mes-notifications, /famille, /dashboard, /families/:familyId/lists/…) peuvent partir aussi. Suivre les chemins partout où ils sont écrits : ex_app/src/routes.ts, les liens des notifications côté backend, la suite E2E, AGENTS.md et la page UX du wiki.

Plan d'action

Le détail et les arbitrages du 24/09 sont dans #issuecomment-215. Il y a une branche par ligne, livrées dans cet ordre.

  • fix/event-form : afficher les erreurs dans les modales, synchroniser les dates, passer à NcDateTimePicker, ajouter le bouton « Tous » aux participants et rafraîchir la couleur sur l'accueil.
  • refactor/english-routes : routes en anglais sans redirection (/calendar…), et une page « introuvable ».
  • fix/ui-defects : les défauts de #issuecomment-201, dont la suppression d'un article annulable.
  • feat/ux-rework : les arbitrages #1 à #12 de #issuecomment-202.
  • feat/visual-identity : la couleur de la famille, les icônes @mdi/js, sans surétiquettes.

Recette

  • Pour chaque branche : make lint typecheck test, make build-frontend, cd e2e && npm test, puis /code-review.
  • Rejouer chaque point de la description et des deux commentaires sur l'instance locale, sur ordinateur et sur mobile, en clair et en sombre, avec une famille d'au moins deux membres.
  • Vérifier les conversions de fuseau du formulaire d'événement après le passage à NcDateTimePicker.
  • Mettre à jour le wiki : UX (routes, vocabulaire, fiche recette, page introuvable, annulation, sélecteur de date), Architecture (route de restauration et D31), ainsi que AGENTS.md.
  • Corriger les retours fonctionnels.

Plan de MEP

Rien de particulier : pas de migration, et l'ensemble est livré avec la prochaine image.

### Description Liste des bugs trouvé lors de la recette fonctionnelle de la version 1.0.x ### Taches - [x] Le message d'erreur s'affiche derrière la modale. ce qui fait qu'on ne voit pas forcément l'erreur quand on saissis une date invalide lors de l'ajout d'un évènement. ![Capture d’écran 2026-09-22 à 00.10.03](/attachments/4a3e7ef1-74e4-4145-a6d4-11a847770611) - [x] Il faudrait un bouton de sélection rapide de tous les membres "Tous". De plus par défaut, c'est l'utilisateur courant qui est sélectionné et pas toute la famille. ![Capture d’écran 2026-09-22 à 00.13.50](/attachments/c45d01c9-b5c7-4e92-93c2-bc226cadac3e) - [x] Le changement de couleur d'un membre n'est pas pris en compte sur l'accueil ni dans les tâches tant qu'on ne recharge pas la page. - [x] Synchroniser les champs de date du formulaire d'évènement : si la date de début passe après la date de fin, la fin est décalée pour ne pas être antérieure au début, et inversement. - [x] **Retour technique** — Renommer les routes du frontend en anglais : `/emploi-du-temps`, `/listes`, `/recettes`, `/repas`, `/accueil`, `/parametres/:section` (et ses sections `famille`…), `/bienvenue` sont en français alors que tout identifiant doit l'être en anglais (`AGENTS.md`, *Which language, where*). L'application n'est pas encore déployée : aucun lien existant à préserver, donc pas de redirection depuis les anciens chemins — les redirections héritées (`/administration`, `/mes-notifications`, `/famille`, `/dashboard`, `/families/:familyId/lists/…`) peuvent partir aussi. Suivre les chemins partout où ils sont écrits : `ex_app/src/routes.ts`, les liens des notifications côté backend, la suite E2E, `AGENTS.md` et la page `UX` du wiki. ### Plan d'action Le détail et les arbitrages du 24/09 sont dans #issuecomment-215. Il y a une branche par ligne, livrées dans cet ordre. - [x] `fix/event-form` : afficher les erreurs dans les modales, synchroniser les dates, passer à `NcDateTimePicker`, ajouter le bouton « Tous » aux participants et rafraîchir la couleur sur l'accueil. - [x] `refactor/english-routes` : routes en anglais sans redirection (`/calendar`…), et une page « introuvable ». - [x] `fix/ui-defects` : les défauts de #issuecomment-201, dont la suppression d'un article annulable. - [x] `feat/ux-rework` : les arbitrages #1 à #12 de #issuecomment-202. - [x] `feat/visual-identity` : la couleur de la famille, les icônes `@mdi/js`, sans surétiquettes. ### Recette - [x] Pour chaque branche : `make lint typecheck test`, `make build-frontend`, `cd e2e && npm test`, puis `/code-review`. - [x] Rejouer chaque point de la description et des deux commentaires sur l'instance locale, sur ordinateur et sur mobile, en clair et en sombre, avec une famille d'au moins deux membres. - [x] Vérifier les conversions de fuseau du formulaire d'événement après le passage à `NcDateTimePicker`. - [x] Mettre à jour le wiki : `UX` (routes, vocabulaire, fiche recette, page introuvable, annulation, sélecteur de date), `Architecture` (route de restauration et D31), ainsi que `AGENTS.md`. - [x] Corriger les retours fonctionnels. ### Plan de MEP Rien de particulier : pas de migration, et l'ensemble est livré avec la prochaine image.
maxime added this to the 1.0.x milestone 2026-09-21 23:11:08 +01:00
Collaborator

Passe critique design / UX — 24/09

Parcours sur l'instance locale (« Famille Démo » de make seed, 1 membre), en 1440×900 et en 390×844, clair et sombre, via Playwright. Les points déjà listés plus haut ne sont pas repris. Captures en bas.

Défauts (rien à arbitrer)

  • Mobile : boutons tronqués dans la modale d'événement. Sur une série, on lit « Supprimer ce… », « A… », « Enregistrer ce… » : trois libellés longs ne tiennent pas sur une ligne de 390 px. → empiler les boutons, ou faire passer « Supprimer » dans un menu.
  • Repas : le bouton « Noter » s'affiche « No… » dans la modale de créneau, sur ordinateur comme sur téléphone.
  • Échap ne ferme ni la modale d'événement, ni celle d'un créneau repas. Constaté avec Playwright, le focus dans un champ ou non. À reconfirmer à la main, le problème peut venir de NcDialog une fois embarqué.
  • Les cases des listes n'ont pas de nom accessible. ListRow.vue ne donne aucun libellé au NcCheckboxRadioSwitch. Un lecteur d'écran annonce six fois « case à cocher » sans rien d'autre, et toucher le nom de l'article ne le coche pas : la seule cible est la case de 24 px. En magasin, à une main, c'est pourtant le geste principal. → mettre le nom de l'article dans le libellé de la case.
  • Accueil : « · admin » est collé à « Aujourd'hui ». Le séparateur se trouve à l'intérieur de la pastille colorée, et la pastille n'a pas de marge (HomeTasksCard.vue:61).
  • Une URL inconnue affiche une zone de contenu vide. /calendrier (la route que cite encore la page wiki UX) montre un écran blanc, sans message et sans entrée active dans la navigation. /recettes/<id inconnu> affiche la galerie sans dire que la recette n'existe pas, et « Recettes » n'y est plus surligné.
  • La casse des dates n'est pas cohérente. Repas affiche « Lundi 21 Sept. », les vues Jour et Planning « Jeudi 24 Septembre 2026 », et l'en-tête de la même vue « jeudi 24 septembre 2026 ». En français, le jour et le mois ne prennent pas de majuscule : c'est une habitude anglaise.
  • Le formulaire d'événement affiche 09/24/2026, 11:00 AM. Les champs natifs suivent la langue du navigateur et ignorent le format de date réglé dans Nextcloud, ce que la page UX exclut (« le format des dates est un réglage distinct »). L'effet dépend donc du navigateur.
  • Sur la semaine, la puce « 10:00 – 10:… Dentiste » est tronquée. Pour un événement de 30 min, l'heure de fin tronquée n'apporte rien et prend la place du titre. → n'afficher que l'heure de début quand tout ne tient pas.
  • Les vues Jour et Planning n'ont pas de bord coloré. Les lignes y sont grises, alors que la page UX prévoit un bord de couleur dans les vues jour, mois et planning. Le mois en a un, pas ces deux vues. À vérifier.
  • Les en-têtes des vues ne sont pas alignés entre eux, alors que la page UX veut un en-tête commun. Le titre commence à 361 px (Listes), 373 px (Repas, Emploi du temps), 473 px (Recettes) et 513 px (Paramètres). Dans Recettes et Paramètres, le titre est même plus en retrait que le contenu en dessous. La fiche recette a le même décalage : le lien de retour, « Ajouter une photo… », « Ajouter un ingrédient » et « Ajouter une étape » ne sont pas alignés sur le titre.
  • Mobile, liste ouverte : « ← Toutes les listes » est à droite, en face du menu. On cherche un retour à gauche.
  • Dans le filtre, « Enregistrer » est à gauche d'« Effacer le filtre ». Dans toutes les autres modales, le bouton principal est à droite.
  • « Supprimer » dans le menu d'un article agit tout de suite, sans annulation possible et sans le style d'une action destructive.

À arbitrer (ma préférence entre parenthèses)

  1. Sur téléphone, l'emploi du temps s'ouvre sans montrer aujourd'hui. La semaine affiche lundi à mercredi, jeudi est coupé à droite, et il faut faire défiler pour voir le jour même. Trois options : (a) faire défiler jusqu'à aujourd'hui à l'ouverture ; (b) ouvrir sur « Planning » sous 768 px, qui est déjà la meilleure vue sur téléphone ; (c) une vue sur 3 jours. (b, plus a pour qui choisit la semaine.)
  2. Il n'y a pas de bouton « Aujourd'hui » dans l'emploi du temps. Après avoir navigué, on revient en comptant les flèches. Dans Repas, « Cette semaine » est grisé entre les flèches quand on est sur la semaine en cours, ce qui ressemble à un libellé cassé, et la plage de dates est une ligne plus bas. (Les deux vues : la plage entre les flèches, un bouton « Aujourd'hui » à côté, même composant.)
  3. Le bandeau de l'accueil prend 180 px sans rien apprendre. « Aujourd'hui chez Famille Démo » répète le sélecteur, et « Les rendez-vous et les choses à faire, réunis au même endroit » décrit la page au lieu de la résumer. Sur téléphone, il repousse « À faire aujourd'hui » sous le pli, et le bouton de navigation le chevauche. (Une ligne qui résume la journée, par exemple « 1 tâche aujourd'hui · Dentiste demain à 10:00 », ou pas de bandeau du tout. Sur téléphone, « À faire aujourd'hui » avant « À venir ».)
  4. On ne peut cocher une tâche ni depuis l'accueil, ni depuis la grille. Sur l'accueil, la coche devant « Sortir les poubelles » est une icône dans un lien : on ne sait pas si elle veut dire « fait » ou « à cocher ». Dans la grille, la carte d'une échéance renvoie à « Ouvrir Listes », c'est-à-dire à la racine, pas à la liste ni à l'élément. (Une vraie case sur l'accueil, et un lien direct vers l'élément depuis la carte. Cocher passe par l'API des listes, donc D31 reste respecté.)
  5. Dans une liste de courses, les articles cochés restent à leur place. « Café » est barré au milieu de la liste. En magasin, on veut voir ce qui reste, et les applications de courses font descendre les articles cochés dans une section repliable. « Masquer les cochés » existe, mais dans le menu. Si l'on fait descendre les cochés, l'ordre affiché n'est plus l'ordre réel, et D10 demande alors de désactiver le glisser, au moins pour cette section. (Faire descendre les cochés, pour les listes de courses seulement.)
  6. La modale d'un créneau repas. Le premier champ s'appelle « Ou quelque chose de simple » : un « ou » sans rien avant. La recette, qui est le cas principal, vient après. Quand le créneau contient déjà une recette (jeudi soir, « Soupe de légumes »), rien ne le montre. Enfin, choisir une recette enregistre sans validation. (La recette d'abord, la valeur actuelle mise en évidence, et le champ libre renommé « Autre chose ».)
  7. « Générer la liste de courses » ouvre une modale « Envoyer les ingrédients ». Le bouton promet une nouvelle liste, alors que la modale en choisit une qui existe déjà. Un clic sur la liste lance l'envoi sans validation. (Le bouton devient « Ajouter les ingrédients à une liste », et on annonce après coup le nombre d'articles ajoutés.)
  8. Dans Repas, les créneaux vides n'invitent à rien. 9 créneaux sur 14 affichent « — », alors que la page UX veut des états vides qui proposent une action. Aujourd'hui n'est pas signalé (l'emploi du temps le fait), et les jours passés ne sont pas atténués. Sur téléphone, les 14 cartes s'empilent à partir de lundi. (Un « + Planifier » discret, aujourd'hui mis en évidence, et sur téléphone l'ouverture sur aujourd'hui.)
  9. L'index des listes n'affiche pas de compteur. La page UX reprend pourtant le compteur d'éléments de FamilyWall. L'accueil l'affiche, mais l'index montre à la place « Courses » ou « Tâches », que l'icône dit déjà : la liste « Tâches » a pour sous-titre « Tâches ». (Remplacer le sous-titre par le compteur.)
  10. Le vocabulaire varie d'un écran à l'autre. Pour une liste de courses, l'accueil dit « 5 choses à faire » et la liste « 5 articles restants ». La navigation dit « Emploi du temps », l'accueil « Voir l'agenda », et la carte d'une échéance « agenda dérivé ». « Élément d'un agenda dérivé » est un terme d'implémentation : l'utilisateur pense « échéance d'une tâche » ou « repas prévu ». L'accueil a aussi deux liens « Ouvrir les listes ». (Un mot par objet, gardé partout.)
  11. Les exemples dans les champs ressemblent à des valeurs. « Piscine », « Tarte aux pommes » ou « Courses du samedi » sont affichés en gris moyen dans des champs qui ont déjà un libellé, et « Créer » est désactivé sans explication : on croit le champ rempli. À l'inverse, « Où ? », « Description » et « Préparation (min) » n'ont pas de libellé, et leur sens disparaît dès qu'on commence à taper. (Un vrai libellé partout, et pas d'exemple dans le champ, ou un exemple clairement présenté comme tel.)
  12. La fiche recette cache ses actions principales. « Ajouter à la liste de courses » et « Planifier » sont dans « … ». Le formulaire, long, s'ouvre dans une modale ; les étapes sont numérotées deux fois (« 1 » à gauche, puis « Étape 1 ») ; on ne peut pas ajouter de photo à la création. (Sortir « Ajouter à la liste de courses » en bouton visible. Le reste est secondaire.)
  13. Une famille d'une seule personne voit tout l'outillage multi-membres. Elle a « Filtrer », « Jour par membre » et « Assignée à : Tout le monde ». Le principe de la page UX, que le multi-familles ne coûte rien à qui a une seule famille, vaut aussi pour les membres. C'est un cas rare hors démo. (Masquer ces contrôles sous deux membres. Priorité basse.)

Direction visuelle

L'application est propre, fidèle à Nextcloud, et le mode sombre tient partout sans couleur cassée. Ce qui lui manque, c'est une identité : on reconnaît le kit générique, avec un bandeau en dégradé et cercles décoratifs, et une surétiquette en capitales au-dessus de chaque titre de carte (« LES 30 PROCHAINS JOURS », « PRIORITÉS », « ACCÈS RAPIDE », « 4 PERSONNES · 1 H 20 ») qui ne fait que répéter le titre. Or la seule chose propre à la famille, sa couleur et son emoji, n'apparaît que dans une pastille de 32 px.

  • Arbitrage : jusqu'où s'écarter du rendu Nextcloud par défaut ? (Rester natif et ne faire qu'un geste fort : donner un rôle à la couleur de la famille, sur l'entrée active de la navigation, l'en-tête de l'accueil et le repère d'aujourd'hui, à la place des cercles décoratifs.)
  • Supprimer les surétiquettes en capitales, qui répètent les titres.
  • L'emoji ✅ d'une liste de tâches se lit comme « terminé ». Utiliser les icônes Nextcloud, qui sont aussi celles de la navigation, plutôt que des emoji.
  • La navigation n'a pas d'icônes, contrairement aux autres applications Nextcloud, ce qui la rend moins lisible d'un coup d'œil.
  • Dans la barre d'outils de l'emploi du temps, quatre boutons ont quatre formes différentes (pilule à contour, rond, rectangle teinté, pilule pleine).

Ce qui marche et qu'il faut garder

La carte de refus d'une échéance, qui dit où aller ; le filtre avec les visages ; la vue mois ; le planning sur téléphone ; la fiche recette en deux cartes, avec la colonne des quantités alignée ; la zone de suppression des paramètres, qui dit clairement ce qu'elle emporte.

Hors ticket

La page wiki UX cite encore /calendrier (§ « Les routes changent de forme ») alors que la route est /emploi-du-temps. Je n'y ai pas touché.

Captures

7 captures

Mobile — emploi du temps : aujourd'hui hors écran

Mobile — emploi du temps : aujourd'hui hors écran

Mobile — boutons tronqués (modale d'événement)

Mobile — boutons tronqués (modale d'événement)

Repas — « No… », ordre des champs, valeur courante absente

Repas — « No… », ordre des champs, valeur courante absente

Mobile — bandeau d'accueil et bouton de navigation

Mobile — bandeau d'accueil et bouton de navigation

Accueil — pastille « · admin », surétiquettes

Accueil — pastille « · admin », surétiquettes

Carte d'échéance — « agenda dérivé », « Ouvrir Listes »

Carte d'échéance — « agenda dérivé », « Ouvrir Listes »

Listes — sous-titres redondants, cochés au milieu

Listes — sous-titres redondants, cochés au milieu

## Passe critique design / UX — 24/09 Parcours sur l'instance locale (« Famille Démo » de `make seed`, 1 membre), en 1440×900 et en 390×844, clair et sombre, via Playwright. Les points déjà listés plus haut ne sont pas repris. Captures en bas. ### Défauts (rien à arbitrer) - [x] **Mobile : boutons tronqués dans la modale d'événement.** Sur une série, on lit « Supprimer ce… », « A… », « Enregistrer ce… » : trois libellés longs ne tiennent pas sur une ligne de 390 px. → empiler les boutons, ou faire passer « Supprimer » dans un menu. - [x] **Repas : le bouton « Noter » s'affiche « No… »** dans la modale de créneau, sur ordinateur comme sur téléphone. - [x] **Échap ne ferme ni la modale d'événement, ni celle d'un créneau repas.** Constaté avec Playwright, le focus dans un champ ou non. À reconfirmer à la main, le problème peut venir de NcDialog une fois embarqué. - [x] **Les cases des listes n'ont pas de nom accessible.** `ListRow.vue` ne donne aucun libellé au `NcCheckboxRadioSwitch`. Un lecteur d'écran annonce six fois « case à cocher » sans rien d'autre, et toucher le nom de l'article ne le coche pas : la seule cible est la case de 24 px. En magasin, à une main, c'est pourtant le geste principal. → mettre le nom de l'article dans le libellé de la case. - [x] **Accueil : « · admin » est collé à « Aujourd'hui ».** Le séparateur se trouve à l'intérieur de la pastille colorée, et la pastille n'a pas de marge (`HomeTasksCard.vue:61`). - [x] **Une URL inconnue affiche une zone de contenu vide.** `/calendrier` (la route que cite encore la page wiki `UX`) montre un écran blanc, sans message et sans entrée active dans la navigation. `/recettes/<id inconnu>` affiche la galerie sans dire que la recette n'existe pas, et « Recettes » n'y est plus surligné. - [x] **La casse des dates n'est pas cohérente.** Repas affiche « Lundi 21 Sept. », les vues Jour et Planning « Jeudi 24 Septembre 2026 », et l'en-tête de la même vue « jeudi 24 septembre 2026 ». En français, le jour et le mois ne prennent pas de majuscule : c'est une habitude anglaise. - [x] **Le formulaire d'événement affiche `09/24/2026, 11:00 AM`.** Les champs natifs suivent la langue du navigateur et ignorent le format de date réglé dans Nextcloud, ce que la page `UX` exclut (« le format des dates est un réglage distinct »). L'effet dépend donc du navigateur. - [x] **Sur la semaine, la puce « 10:00 – 10:… Dentiste » est tronquée.** Pour un événement de 30 min, l'heure de fin tronquée n'apporte rien et prend la place du titre. → n'afficher que l'heure de début quand tout ne tient pas. - [x] **Les vues Jour et Planning n'ont pas de bord coloré.** Les lignes y sont grises, alors que la page `UX` prévoit un bord de couleur dans les vues jour, mois et planning. Le mois en a un, pas ces deux vues. À vérifier. - [x] **Les en-têtes des vues ne sont pas alignés entre eux**, alors que la page `UX` veut un en-tête commun. Le titre commence à 361 px (Listes), 373 px (Repas, Emploi du temps), 473 px (Recettes) et 513 px (Paramètres). Dans Recettes et Paramètres, le titre est même plus en retrait que le contenu en dessous. La fiche recette a le même décalage : le lien de retour, « Ajouter une photo… », « Ajouter un ingrédient » et « Ajouter une étape » ne sont pas alignés sur le titre. - [x] **Mobile, liste ouverte : « ← Toutes les listes » est à droite**, en face du menu. On cherche un retour à gauche. - [x] **Dans le filtre, « Enregistrer » est à gauche d'« Effacer le filtre ».** Dans toutes les autres modales, le bouton principal est à droite. - [x] **« Supprimer » dans le menu d'un article agit tout de suite**, sans annulation possible et sans le style d'une action destructive. ### À arbitrer (ma préférence entre parenthèses) 1. **Sur téléphone, l'emploi du temps s'ouvre sans montrer aujourd'hui.** La semaine affiche lundi à mercredi, jeudi est coupé à droite, et il faut faire défiler pour voir le jour même. Trois options : (a) faire défiler jusqu'à aujourd'hui à l'ouverture ; (b) ouvrir sur « Planning » sous 768 px, qui est déjà la meilleure vue sur téléphone ; (c) une vue sur 3 jours. *(b, plus a pour qui choisit la semaine.)* 2. **Il n'y a pas de bouton « Aujourd'hui » dans l'emploi du temps.** Après avoir navigué, on revient en comptant les flèches. Dans Repas, « Cette semaine » est grisé entre les flèches quand on est sur la semaine en cours, ce qui ressemble à un libellé cassé, et la plage de dates est une ligne plus bas. *(Les deux vues : la plage entre les flèches, un bouton « Aujourd'hui » à côté, même composant.)* 3. **Le bandeau de l'accueil prend 180 px sans rien apprendre.** « Aujourd'hui chez Famille Démo » répète le sélecteur, et « Les rendez-vous et les choses à faire, réunis au même endroit » décrit la page au lieu de la résumer. Sur téléphone, il repousse « À faire aujourd'hui » sous le pli, et le bouton de navigation le chevauche. *(Une ligne qui résume la journée, par exemple « 1 tâche aujourd'hui · Dentiste demain à 10:00 », ou pas de bandeau du tout. Sur téléphone, « À faire aujourd'hui » avant « À venir ».)* 4. **On ne peut cocher une tâche ni depuis l'accueil, ni depuis la grille.** Sur l'accueil, la coche devant « Sortir les poubelles » est une icône dans un lien : on ne sait pas si elle veut dire « fait » ou « à cocher ». Dans la grille, la carte d'une échéance renvoie à « Ouvrir Listes », c'est-à-dire à la racine, pas à la liste ni à l'élément. *(Une vraie case sur l'accueil, et un lien direct vers l'élément depuis la carte. Cocher passe par l'API des listes, donc D31 reste respecté.)* 5. **Dans une liste de courses, les articles cochés restent à leur place.** « Café » est barré au milieu de la liste. En magasin, on veut voir ce qui reste, et les applications de courses font descendre les articles cochés dans une section repliable. « Masquer les cochés » existe, mais dans le menu. Si l'on fait descendre les cochés, l'ordre affiché n'est plus l'ordre réel, et D10 demande alors de désactiver le glisser, au moins pour cette section. *(Faire descendre les cochés, pour les listes de courses seulement.)* 6. **La modale d'un créneau repas.** Le premier champ s'appelle « Ou quelque chose de simple » : un « ou » sans rien avant. La recette, qui est le cas principal, vient après. Quand le créneau contient déjà une recette (jeudi soir, « Soupe de légumes »), rien ne le montre. Enfin, choisir une recette enregistre sans validation. *(La recette d'abord, la valeur actuelle mise en évidence, et le champ libre renommé « Autre chose ».)* 7. **« Générer la liste de courses » ouvre une modale « Envoyer les ingrédients ».** Le bouton promet une nouvelle liste, alors que la modale en choisit une qui existe déjà. Un clic sur la liste lance l'envoi sans validation. *(Le bouton devient « Ajouter les ingrédients à une liste », et on annonce après coup le nombre d'articles ajoutés.)* 8. **Dans Repas, les créneaux vides n'invitent à rien.** 9 créneaux sur 14 affichent « — », alors que la page `UX` veut des états vides qui proposent une action. Aujourd'hui n'est pas signalé (l'emploi du temps le fait), et les jours passés ne sont pas atténués. Sur téléphone, les 14 cartes s'empilent à partir de lundi. *(Un « + Planifier » discret, aujourd'hui mis en évidence, et sur téléphone l'ouverture sur aujourd'hui.)* 9. **L'index des listes n'affiche pas de compteur.** La page `UX` reprend pourtant le compteur d'éléments de FamilyWall. L'accueil l'affiche, mais l'index montre à la place « Courses » ou « Tâches », que l'icône dit déjà : la liste « Tâches » a pour sous-titre « Tâches ». *(Remplacer le sous-titre par le compteur.)* 10. **Le vocabulaire varie d'un écran à l'autre.** Pour une liste de courses, l'accueil dit « 5 choses à faire » et la liste « 5 articles restants ». La navigation dit « Emploi du temps », l'accueil « Voir l'agenda », et la carte d'une échéance « agenda dérivé ». « Élément d'un agenda dérivé » est un terme d'implémentation : l'utilisateur pense « échéance d'une tâche » ou « repas prévu ». L'accueil a aussi deux liens « Ouvrir les listes ». *(Un mot par objet, gardé partout.)* 11. **Les exemples dans les champs ressemblent à des valeurs.** « Piscine », « Tarte aux pommes » ou « Courses du samedi » sont affichés en gris moyen dans des champs qui ont déjà un libellé, et « Créer » est désactivé sans explication : on croit le champ rempli. À l'inverse, « Où ? », « Description » et « Préparation (min) » n'ont pas de libellé, et leur sens disparaît dès qu'on commence à taper. *(Un vrai libellé partout, et pas d'exemple dans le champ, ou un exemple clairement présenté comme tel.)* 12. **La fiche recette cache ses actions principales.** « Ajouter à la liste de courses » et « Planifier » sont dans « … ». Le formulaire, long, s'ouvre dans une modale ; les étapes sont numérotées deux fois (« 1 » à gauche, puis « Étape 1 ») ; on ne peut pas ajouter de photo à la création. *(Sortir « Ajouter à la liste de courses » en bouton visible. Le reste est secondaire.)* 13. **Une famille d'une seule personne voit tout l'outillage multi-membres.** Elle a « Filtrer », « Jour par membre » et « Assignée à : Tout le monde ». Le principe de la page `UX`, que le multi-familles ne coûte rien à qui a une seule famille, vaut aussi pour les membres. C'est un cas rare hors démo. *(Masquer ces contrôles sous deux membres. Priorité basse.)* ### Direction visuelle L'application est propre, fidèle à Nextcloud, et **le mode sombre tient partout** sans couleur cassée. Ce qui lui manque, c'est une identité : on reconnaît le kit générique, avec un bandeau en dégradé et cercles décoratifs, et une surétiquette en capitales au-dessus de chaque titre de carte (« LES 30 PROCHAINS JOURS », « PRIORITÉS », « ACCÈS RAPIDE », « 4 PERSONNES · 1 H 20 ») qui ne fait que répéter le titre. Or la seule chose propre à la famille, sa couleur et son emoji, n'apparaît que dans une pastille de 32 px. - **Arbitrage :** jusqu'où s'écarter du rendu Nextcloud par défaut ? *(Rester natif et ne faire qu'un geste fort : donner un rôle à la couleur de la famille, sur l'entrée active de la navigation, l'en-tête de l'accueil et le repère d'aujourd'hui, à la place des cercles décoratifs.)* - [x] Supprimer les surétiquettes en capitales, qui répètent les titres. - [x] L'emoji ✅ d'une liste de tâches se lit comme « terminé ». Utiliser les icônes Nextcloud, qui sont aussi celles de la navigation, plutôt que des emoji. - [x] La navigation n'a pas d'icônes, contrairement aux autres applications Nextcloud, ce qui la rend moins lisible d'un coup d'œil. - [x] Dans la barre d'outils de l'emploi du temps, quatre boutons ont quatre formes différentes (pilule à contour, rond, rectangle teinté, pilule pleine). ### Ce qui marche et qu'il faut garder La carte de refus d'une échéance, qui dit où aller ; le filtre avec les visages ; la vue mois ; le planning sur téléphone ; la fiche recette en deux cartes, avec la colonne des quantités alignée ; la zone de suppression des paramètres, qui dit clairement ce qu'elle emporte. ### Hors ticket La page wiki `UX` cite encore `/calendrier` (§ « Les routes changent de forme ») alors que la route est `/emploi-du-temps`. Je n'y ai pas touché. ### Captures <details><summary>7 captures</summary> **Mobile — emploi du temps : aujourd'hui hors écran** ![Mobile — emploi du temps : aujourd'hui hors écran](https://git.lozach.eu/attachments/ac1cfbeb-e1a3-442c-a568-c470f1e45aa3) **Mobile — boutons tronqués (modale d'événement)** ![Mobile — boutons tronqués (modale d'événement)](https://git.lozach.eu/attachments/5cb6887d-5ae6-4917-8d94-448489820f3b) **Repas — « No… », ordre des champs, valeur courante absente** ![Repas — « No… », ordre des champs, valeur courante absente](https://git.lozach.eu/attachments/1e1ccaee-d1fa-49d8-a20e-876792eb2b34) **Mobile — bandeau d'accueil et bouton de navigation** ![Mobile — bandeau d'accueil et bouton de navigation](https://git.lozach.eu/attachments/14c52058-ebee-4274-993c-e34f1b24285c) **Accueil — pastille « · admin », surétiquettes** ![Accueil — pastille « · admin », surétiquettes](https://git.lozach.eu/attachments/c126d14f-131a-419e-8dcd-2d2263ad8e60) **Carte d'échéance — « agenda dérivé », « Ouvrir Listes »** ![Carte d'échéance — « agenda dérivé », « Ouvrir Listes »](https://git.lozach.eu/attachments/4aaaee8b-132a-4563-8ec7-83e61f0d2e09) **Listes — sous-titres redondants, cochés au milieu** ![Listes — sous-titres redondants, cochés au milieu](https://git.lozach.eu/attachments/ff562c8d-7436-4a17-9990-c80309711fbe) </details>
Collaborator

Arbitrages de la passe design / UX (réponse au commentaire #issuecomment-201)

  • #1 Emploi du temps sur mobile : ouvrir sur « Planning » sous 768 px ; en vue semaine, défiler jusqu'à aujourd'hui.
  • #2 Aujourd'hui : un seul composant pour l'emploi du temps et Repas, avec les dates entre les flèches et un bouton « Aujourd'hui » à côté.
  • #3 Bandeau de l'accueil : une ligne qui résume la journée à la place du texte générique ; sur mobile, « À faire aujourd'hui » passe avant « À venir ».
  • #4 Cocher : une vraie case sur l'accueil (via l'API des listes, donc D31 reste respecté) ; la carte d'une échéance renvoie à la liste et à l'élément, plus à la racine.
  • #5 Articles cochés : ils descendent dans une section repliable, pour les listes de courses seulement, et on ne peut pas y glisser d'article (D10).
  • #6 Créneau repas : la recette en premier, la valeur actuelle mise en évidence, le champ libre renommé « Autre chose ». Cliquer une recette l'enregistre toujours tout de suite.
  • #7 Envoi des ingrédients : le bouton devient « Ajouter les ingrédients à une liste », et on affiche un bilan après coup (« 7 articles ajoutés à … »).
  • #8 Grille des repas : tout est retenu, soit « + Planifier » dans les créneaux vides, aujourd'hui mis en évidence, les jours passés atténués, et sur mobile l'ouverture sur aujourd'hui.
  • #9 Index des listes : on garde le type et on ajoute le compteur.
  • #10 Vocabulaire : « Agenda » partout (navigation, accueil, cartes). La route devient /agenda, avec une redirection depuis /emploi-du-temps. Au passage, remplacer « agenda dérivé » et « choses à faire » dans les listes de courses.
  • #11 Champs : un libellé sur chaque champ ; on garde les exemples, en les préfixant « ex. : » dans un gris plus pâle.
  • #12 Recette : tout est retenu, soit un bouton visible « Ajouter à la liste de courses », une seule numérotation des étapes, un formulaire en pleine page au lieu de la modale, et la photo dès la création.
  • #13 Famille d'une personne : on laisse tel quel.
  • Direction visuelle : rester natif Nextcloud et donner un rôle à la couleur de la famille (entrée active de la navigation, en-tête de l'accueil, repère d'aujourd'hui) à la place des cercles décoratifs.
  • Détails visuels : tout est retenu, soit supprimer les surétiquettes en capitales, remplacer les emoji par les icônes Nextcloud pour le type de liste, mettre des icônes dans la navigation et harmoniser les boutons de la barre d'outils.

Deux de ces choix font évoluer la documentation : #10 (renommage et nouvelle route) et #12 (fiche recette en pleine page). Il faudra mettre à jour la page wiki UX au moment de les livrer.

## Arbitrages de la passe design / UX (réponse au commentaire #issuecomment-201) - [x] **#1 Emploi du temps sur mobile** : ouvrir sur « Planning » sous 768 px ; en vue semaine, défiler jusqu'à aujourd'hui. - [x] **#2 Aujourd'hui** : un seul composant pour l'emploi du temps et Repas, avec les dates entre les flèches et un bouton « Aujourd'hui » à côté. - [x] **#3 Bandeau de l'accueil** : une ligne qui résume la journée à la place du texte générique ; sur mobile, « À faire aujourd'hui » passe avant « À venir ». - [x] **#4 Cocher** : une vraie case sur l'accueil (via l'API des listes, donc D31 reste respecté) ; la carte d'une échéance renvoie à la liste et à l'élément, plus à la racine. - [x] **#5 Articles cochés** : ils descendent dans une section repliable, pour les **listes de courses seulement**, et on ne peut pas y glisser d'article (D10). - [x] **#6 Créneau repas** : la recette en premier, la valeur actuelle mise en évidence, le champ libre renommé « Autre chose ». Cliquer une recette l'enregistre toujours tout de suite. - [x] **#7 Envoi des ingrédients** : le bouton devient « Ajouter les ingrédients à une liste », et on affiche un bilan après coup (« 7 articles ajoutés à … »). - [x] **#8 Grille des repas** : tout est retenu, soit « + Planifier » dans les créneaux vides, aujourd'hui mis en évidence, les jours passés atténués, et sur mobile l'ouverture sur aujourd'hui. - [x] **#9 Index des listes** : on **garde le type et on ajoute le compteur**. - [x] **#10 Vocabulaire** : « **Agenda** » partout (navigation, accueil, cartes). La route devient `/agenda`, avec une redirection depuis `/emploi-du-temps`. Au passage, remplacer « agenda dérivé » et « choses à faire » dans les listes de courses. - [x] **#11 Champs** : un libellé sur chaque champ ; on garde les exemples, en les préfixant « ex. : » dans un gris plus pâle. - [x] **#12 Recette** : tout est retenu, soit un bouton visible « Ajouter à la liste de courses », une seule numérotation des étapes, un **formulaire en pleine page** au lieu de la modale, et la photo dès la création. - **#13 Famille d'une personne** : on laisse tel quel. - [x] **Direction visuelle** : rester natif Nextcloud et donner un rôle à la couleur de la famille (entrée active de la navigation, en-tête de l'accueil, repère d'aujourd'hui) à la place des cercles décoratifs. - [x] **Détails visuels** : tout est retenu, soit supprimer les surétiquettes en capitales, remplacer les emoji par les icônes Nextcloud pour le type de liste, mettre des icônes dans la navigation et harmoniser les boutons de la barre d'outils. Deux de ces choix font évoluer la documentation : #10 (renommage et nouvelle route) et #12 (fiche recette en pleine page). Il faudra mettre à jour la page wiki `UX` au moment de les livrer.
Collaborator

Conception — 24/09

Ce commentaire reprend la description, la passe UX (#issuecomment-201) et ses arbitrages (#issuecomment-202). Les choix faits avec Maxime aujourd'hui sont regroupés en tête, puis le travail est découpé en cinq branches, livrées dans l'ordre.

Arbitrages du 24/09

  • Découpage : un seul ticket, cinq branches successives. Chacune passe ses contrôles et sa recette avant d'être rebasée.
  • Route de l'agenda : /calendar, sans redirection. Le retour technique l'emporte sur le « redirection depuis /emploi-du-temps » de #10, puisque l'application n'est pas déployée. À l'écran, on garde le mot « Agenda » : la source anglaise est « Calendar » et le catalogue la traduit.
  • Synchronisation des dates : on garde la durée. Déplacer le début déplace la fin d'autant. Placer la fin avant le début fait reculer le début d'autant. La règle vaut pour les deux modes : horaire et journée entière.
  • Erreurs : toutes les modales de formulaire (événement, famille, article, recette, créneau repas) affichent leur erreur à l'intérieur. En plus, le formulaire d'événement refuse une fin antérieure au début avant l'envoi.
  • Format des dates dans le formulaire d'événement : on passe à NcDateTimePicker. Le commentaire de EventDateFields.vue avait écarté ce composant à cause de sa gestion du fuseau horaire : les conversions toInstant et toLocal sont donc à revérifier et à tester.
  • URL inconnue : un écran « Page introuvable ». Une liste ou une recette inconnue affiche aussi « introuvable » dans sa propre vue.
  • Icônes : on ajoute @mdi/js (le jeu d'icônes de Nextcloud), rendu par NcIconSvgWrapper.
  • Supprimer un article : une notification avec « Annuler ». Le DELETE renvoie l'article supprimé, et une route de restauration le réinsère avec son identifiant, sa position et son état coché, puis relance syncTask (D31). Il n'y a pas de migration.

Constats de l'exploration

  • La couleur d'un membre : l'accueil garde l'ancienne couleur jusqu'au rechargement. C'est confirmé avec Playwright : assigneeColor est calculé par le serveur dans le résumé, et setMemberColor ne le rafraîchit pas. Dans une liste de tâches, en revanche, la puce change tout de suite (constaté aussi) : il reste à savoir ce que « dans les tâches » désignait. Hypothèse : les échéances de l'agenda.
  • Les participants par défaut : le code sélectionne déjà toute la famille (formFor). Je n'ai pas pu le reproduire avec la famille de démonstration, qui n'a qu'un membre. Il faut le rejouer avec deux membres. Autre hypothèse : sur la capture en mode sombre, un membre sélectionné et un membre non sélectionné sont presque identiques, donc on ne voit peut-être pas qui est coché.
  • Les liens des notifications : aucune notification ne renseigne link aujourd'hui. Côté backend, le seul chemin en français est le start_url du manifeste (lib/src/routes/static.ts).

Branche 1 — fix/event-form : les retours de la description

  • Afficher l'erreur dans la modale, pour les cinq formulaires. Valider fin ≥ début côté client.
  • Synchroniser les dates en gardant la durée, dans les deux sens et dans les deux modes.
  • Remplacer les champs natifs par NcDateTimePicker, avec des tests unitaires des conversions de fuseau.
  • Participants : ajouter une puce « Tous » en tête, qui sélectionne ou désélectionne tout, et rendre l'état sélectionné lisible en mode sombre. Reproduire d'abord le défaut avec deux membres.
  • Couleur : après setMemberColor, rafraîchir le résumé de l'accueil, et vérifier les échéances de l'agenda.
  • Tests E2E : erreur visible dans la modale, bouton « Tous », dates synchronisées, couleur reportée sur l'accueil sans rechargement.

Branche 2 — refactor/english-routes : routes en anglais

  • Renommer les routes : /home, /calendar, /lists/:listId?, /recipes/:recipeId?, /meals, /settings/:section (sections family, notifications, data, administration), /welcome. Renommer aussi le paramètre ?famille= en ?family=.
  • Supprimer les redirections héritées (/administration, /mes-notifications, /famille, /dashboard, /families/:familyId/lists/…).
  • Mettre à jour les chemins écrits en dur : App.vue, SettingsHub.vue, Welcome.vue, Recipes.vue, les Home*Card.vue, useListSelection.ts, constants/calendars.ts, le start_url de static.ts, les quatre assertions toHaveURL et le goto(…/famille) de l'E2E.
  • Ajouter une route attrape-tout vers « Page introuvable », et un état « introuvable » pour une liste ou une recette inconnue, avec l'entrée de navigation toujours surlignée.
  • Mettre à jour AGENTS.md et la page wiki UX, ce qui corrige au passage la mention de /calendrier.

Branche 3 — fix/ui-defects : les défauts de la passe UX

  • Sur mobile, empiler les boutons de la modale d'événement. Corriger le bouton « No… » de la modale de créneau repas.
  • Faire fermer les modales par Échap (vérifier d'abord à la main si le problème vient de NcDialog une fois embarqué).
  • Donner le nom de l'article comme libellé à sa case (ListRow.vue), pour que toucher le nom coche l'article.
  • Espacer la pastille « · admin » (HomeTasksCard.vue). Mettre les dates en minuscules partout.
  • Sur la semaine, n'afficher que l'heure de début dans une puce trop étroite. Ajouter le bord coloré aux vues Jour et Planning.
  • Aligner les en-têtes par un seul ViewHeader, y compris dans Recettes, Paramètres et la fiche recette.
  • Sur mobile, placer « ← Toutes les listes » à gauche. Dans le filtre, mettre le bouton principal à droite.
  • Supprimer un article : route de restauration, notification « Annuler », style destructif dans le menu. Test unitaire de la restauration (identifiant, position, projection), et test E2E.

Branche 4 — feat/ux-rework : arbitrages #1 à #12

  • #1 Ouvrir l'agenda sur « Planning » sous 768 px, et faire défiler la semaine jusqu'à aujourd'hui.
  • #2 Créer un composant de navigation par période, partagé par l'agenda et Repas : les dates entre les flèches, un bouton « Aujourd'hui » à côté.
  • #3 Remplacer le bandeau de l'accueil par une ligne qui résume la journée, en phrases complètes avec n(…). Sur mobile, « À faire aujourd'hui » passe avant « À venir ».
  • #4 Mettre une vraie case sur l'accueil (via l'API des listes, puis rafraîchir le résumé). La carte d'une échéance ouvre /lists/:id et met l'élément en évidence : il faut vérifier que l'identifiant de l'élément se retrouve à partir de l'UID dérivé (D31).
  • #5 Faire descendre les articles cochés dans une section repliable, pour les listes de courses seulement, et désactiver le glisser dans cette section (D10).
  • #6 Dans la modale d'un créneau repas : la recette en premier, la valeur actuelle mise en évidence, le champ libre renommé « Autre chose ».
  • #7 Renommer le bouton « Ajouter les ingrédients à une liste », et afficher un bilan : il faut vérifier que la réponse renvoie le nombre d'articles ajoutés.
  • #8 Dans Repas : « + Planifier » dans les créneaux vides, aujourd'hui mis en évidence, les jours passés atténués, et sur mobile l'ouverture sur aujourd'hui.
  • #9 Dans l'index des listes, afficher le type et le compteur (remaining existe déjà dans ListSummary).
  • #10 Employer « Agenda » partout, et supprimer « agenda dérivé » et « choses à faire » pour une liste de courses. Ce sont des sources anglaises, donc il faut relancer make l10n-build.
  • #11 Donner un libellé à chaque champ. Préfixer les exemples par « ex. : », dans un gris plus pâle.
  • #12 Recette : un bouton « Ajouter à la liste de courses » visible, une seule numérotation des étapes, un formulaire en pleine page (/recipes/new et /recipes/:id/edit), et la photo dès la création.

Branche 5 — feat/visual-identity : identité visuelle

  • Donner un rôle à la couleur de la famille : l'entrée active de la navigation, l'en-tête de l'accueil et le repère d'aujourd'hui, à la place des cercles décoratifs.
  • Supprimer les surétiquettes en capitales. Remplacer les emoji des types de liste par des icônes @mdi/js, et ajouter des icônes à la navigation.
  • Harmoniser les boutons de la barre d'outils de l'agenda.

Documentation à suivre

  • La page wiki UX : les routes, le vocabulaire « Agenda », la fiche recette en pleine page, la page introuvable, l'annulation d'une suppression et le sélecteur de date.
  • La page wiki Architecture : la route de restauration d'un article, et son lien avec D31. C'est peut-être une nouvelle décision D…, à voir.
  • AGENTS.md : les routes, et le paragraphe sur le shell.
## Conception — 24/09 Ce commentaire reprend la description, la passe UX (#issuecomment-201) et ses arbitrages (#issuecomment-202). Les choix faits avec Maxime aujourd'hui sont regroupés en tête, puis le travail est découpé en cinq branches, livrées dans l'ordre. ### Arbitrages du 24/09 - **Découpage** : un seul ticket, cinq branches successives. Chacune passe ses contrôles et sa recette avant d'être rebasée. - **Route de l'agenda** : `/calendar`, **sans redirection**. Le retour technique l'emporte sur le « redirection depuis `/emploi-du-temps` » de #10, puisque l'application n'est pas déployée. À l'écran, on garde le mot « Agenda » : la source anglaise est « Calendar » et le catalogue la traduit. - **Synchronisation des dates** : on **garde la durée**. Déplacer le début déplace la fin d'autant. Placer la fin avant le début fait reculer le début d'autant. La règle vaut pour les deux modes : horaire et journée entière. - **Erreurs** : **toutes les modales** de formulaire (événement, famille, article, recette, créneau repas) affichent leur erreur à l'intérieur. En plus, le formulaire d'événement refuse une fin antérieure au début avant l'envoi. - **Format des dates dans le formulaire d'événement** : on passe à **`NcDateTimePicker`**. Le commentaire de `EventDateFields.vue` avait écarté ce composant à cause de sa gestion du fuseau horaire : les conversions `toInstant` et `toLocal` sont donc à revérifier et à tester. - **URL inconnue** : un écran « Page introuvable ». Une liste ou une recette inconnue affiche aussi « introuvable » dans sa propre vue. - **Icônes** : on ajoute `@mdi/js` (le jeu d'icônes de Nextcloud), rendu par `NcIconSvgWrapper`. - **Supprimer un article** : une notification avec « Annuler ». Le `DELETE` renvoie l'article supprimé, et une route de restauration le réinsère avec son identifiant, sa position et son état coché, puis relance `syncTask` (D31). Il n'y a pas de migration. ### Constats de l'exploration - **La couleur d'un membre** : l'accueil garde l'ancienne couleur jusqu'au rechargement. C'est confirmé avec Playwright : `assigneeColor` est calculé par le serveur dans le résumé, et `setMemberColor` ne le rafraîchit pas. Dans une liste de tâches, en revanche, la puce change tout de suite (constaté aussi) : il reste à savoir ce que « dans les tâches » désignait. Hypothèse : les échéances de l'agenda. - **Les participants par défaut** : le code sélectionne déjà toute la famille (`formFor`). Je n'ai pas pu le reproduire avec la famille de démonstration, qui n'a qu'un membre. Il faut le rejouer avec deux membres. Autre hypothèse : sur la capture en mode sombre, un membre sélectionné et un membre non sélectionné sont presque identiques, donc on ne voit peut-être pas qui est coché. - **Les liens des notifications** : aucune notification ne renseigne `link` aujourd'hui. Côté backend, le seul chemin en français est le `start_url` du manifeste (`lib/src/routes/static.ts`). ### Branche 1 — `fix/event-form` : les retours de la description - [x] Afficher l'erreur dans la modale, pour les cinq formulaires. Valider fin ≥ début côté client. - [x] Synchroniser les dates en gardant la durée, dans les deux sens et dans les deux modes. - [x] Remplacer les champs natifs par `NcDateTimePicker`, avec des tests unitaires des conversions de fuseau. - [x] Participants : ajouter une puce « Tous » en tête, qui sélectionne ou désélectionne tout, et rendre l'état sélectionné lisible en mode sombre. Reproduire d'abord le défaut avec deux membres. - [x] Couleur : après `setMemberColor`, rafraîchir le résumé de l'accueil, et vérifier les échéances de l'agenda. - [x] Tests E2E : erreur visible dans la modale, bouton « Tous », dates synchronisées, couleur reportée sur l'accueil sans rechargement. ### Branche 2 — `refactor/english-routes` : routes en anglais - [x] Renommer les routes : `/home`, `/calendar`, `/lists/:listId?`, `/recipes/:recipeId?`, `/meals`, `/settings/:section` (sections `family`, `notifications`, `data`, `administration`), `/welcome`. Renommer aussi le paramètre `?famille=` en `?family=`. - [x] Supprimer les redirections héritées (`/administration`, `/mes-notifications`, `/famille`, `/dashboard`, `/families/:familyId/lists/…`). - [x] Mettre à jour les chemins écrits en dur : `App.vue`, `SettingsHub.vue`, `Welcome.vue`, `Recipes.vue`, les `Home*Card.vue`, `useListSelection.ts`, `constants/calendars.ts`, le `start_url` de `static.ts`, les quatre assertions `toHaveURL` et le `goto(…/famille)` de l'E2E. - [x] Ajouter une route attrape-tout vers « Page introuvable », et un état « introuvable » pour une liste ou une recette inconnue, avec l'entrée de navigation toujours surlignée. - [x] Mettre à jour `AGENTS.md` et la page wiki `UX`, ce qui corrige au passage la mention de `/calendrier`. ### Branche 3 — `fix/ui-defects` : les défauts de la passe UX - [x] Sur mobile, empiler les boutons de la modale d'événement. Corriger le bouton « No… » de la modale de créneau repas. - [x] Faire fermer les modales par Échap (vérifier d'abord à la main si le problème vient de `NcDialog` une fois embarqué). - [x] Donner le nom de l'article comme libellé à sa case (`ListRow.vue`), pour que toucher le nom coche l'article. - [x] Espacer la pastille « · admin » (`HomeTasksCard.vue`). Mettre les dates en minuscules partout. - [x] Sur la semaine, n'afficher que l'heure de début dans une puce trop étroite. Ajouter le bord coloré aux vues Jour et Planning. - [x] Aligner les en-têtes par un seul `ViewHeader`, y compris dans Recettes, Paramètres et la fiche recette. - [x] Sur mobile, placer « ← Toutes les listes » à gauche. Dans le filtre, mettre le bouton principal à droite. - [x] Supprimer un article : route de restauration, notification « Annuler », style destructif dans le menu. Test unitaire de la restauration (identifiant, position, projection), et test E2E. ### Branche 4 — `feat/ux-rework` : arbitrages #1 à #12 - [x] #1 Ouvrir l'agenda sur « Planning » sous 768 px, et faire défiler la semaine jusqu'à aujourd'hui. - [x] #2 Créer un composant de navigation par période, partagé par l'agenda et Repas : les dates entre les flèches, un bouton « Aujourd'hui » à côté. - [x] #3 Remplacer le bandeau de l'accueil par une ligne qui résume la journée, en phrases complètes avec `n(…)`. Sur mobile, « À faire aujourd'hui » passe avant « À venir ». - [x] #4 Mettre une vraie case sur l'accueil (via l'API des listes, puis rafraîchir le résumé). La carte d'une échéance ouvre `/lists/:id` et met l'élément en évidence : il faut vérifier que l'identifiant de l'élément se retrouve à partir de l'UID dérivé (D31). - [x] #5 Faire descendre les articles cochés dans une section repliable, pour les listes de courses seulement, et désactiver le glisser dans cette section (D10). - [x] #6 Dans la modale d'un créneau repas : la recette en premier, la valeur actuelle mise en évidence, le champ libre renommé « Autre chose ». - [x] #7 Renommer le bouton « Ajouter les ingrédients à une liste », et afficher un bilan : il faut vérifier que la réponse renvoie le nombre d'articles ajoutés. - [x] #8 Dans Repas : « + Planifier » dans les créneaux vides, aujourd'hui mis en évidence, les jours passés atténués, et sur mobile l'ouverture sur aujourd'hui. - [x] #9 Dans l'index des listes, afficher le type et le compteur (`remaining` existe déjà dans `ListSummary`). - [x] #10 Employer « Agenda » partout, et supprimer « agenda dérivé » et « choses à faire » pour une liste de courses. Ce sont des sources anglaises, donc il faut relancer `make l10n-build`. - [x] #11 Donner un libellé à chaque champ. Préfixer les exemples par « ex. : », dans un gris plus pâle. - [x] #12 Recette : un bouton « Ajouter à la liste de courses » visible, une seule numérotation des étapes, un formulaire en pleine page (`/recipes/new` et `/recipes/:id/edit`), et la photo dès la création. ### Branche 5 — `feat/visual-identity` : identité visuelle - [x] Donner un rôle à la couleur de la famille : l'entrée active de la navigation, l'en-tête de l'accueil et le repère d'aujourd'hui, à la place des cercles décoratifs. - [x] Supprimer les surétiquettes en capitales. Remplacer les emoji des types de liste par des icônes `@mdi/js`, et ajouter des icônes à la navigation. - [x] Harmoniser les boutons de la barre d'outils de l'agenda. ### Documentation à suivre - La page wiki `UX` : les routes, le vocabulaire « Agenda », la fiche recette en pleine page, la page introuvable, l'annulation d'une suppression et le sélecteur de date. - La page wiki `Architecture` : la route de restauration d'un article, et son lien avec D31. C'est peut-être une nouvelle décision `D…`, à voir. - `AGENTS.md` : les routes, et le paragraphe sur le shell.
Collaborator

Branche 1 — fix/event-form : prête pour la recette

Sept commits sur fix/event-form, rien de poussé. Chacun passe make lint typecheck test. La suite E2E complète passe à 108 sur 109 : le seul échec vient d'un test de member-colors qui échoue aussi sur main dès qu'on le lance après un mercredi (il cherche sur l'accueil un événement déjà passé). Une tâche séparée est proposée pour le corriger. /code-review a relevé deux points, corrigés tous les deux.

Ce qui change

  • Erreurs dans les modales : les formulaires d'événement, de famille, d'article, de recette et de créneau repas affichent leur erreur à l'intérieur. À l'ouverture, l'erreur précédente est effacée avant l'affichage, sans clignotement (c'est vérifié par un test).
  • Participants : il n'y avait pas de bug de sélection, les deux membres étaient bien cochés. Le problème était la lisibilité : en mode sombre, un membre sélectionné ressemblait presque à un membre non sélectionné. Un membre sélectionné est désormais une pastille pleine avec une coche. La puce « Tout le monde » sélectionne ou désélectionne toute la famille. Elle reprend le libellé déjà employé pour l'assignation.
  • Dates : les champs sont maintenant des NcDateTimePicker, avec un champ jour et un champ heure pour le début comme pour la fin. Ils suivent le format de date de Nextcloud. Un seul sélecteur date+heure n'applique rien tant qu'on n'a pas touché l'heure, d'où les deux champs séparés. Déplacer le début déplace la fin d'autant. Placer la fin avant le début fait reculer le début d'autant.
  • Couleur sur l'accueil : elle change sans recharger la page. Dans les listes, elle se mettait déjà à jour.

Trouvés en chemin

  • Les assertions de couleur de member-colors.spec ne vérifiaient rien (toHaveAttribute avec expect.stringContaining). Elles sont corrigées.
  • Il manquait une garde de génération dans openListById. Une liste cliquée pendant l'ouverture automatique de la première était remplacée par celle-ci. C'est corrigé, avec des tests unitaires.

À vérifier à la main

La famille de démo a été recréée (make seed). Pour tester « Tout le monde », invite alice dans la famille. Les tests E2E suppriment toutes les familles de toute façon.

  • Dans l'agenda, créer un événement : l'erreur éventuelle s'affiche dans la modale, et rien ne clignote quand on la rouvre.
  • Déplacer le début, puis placer la fin avant le début : les deux champs suivent.
  • Vérifier les dates en clair et en sombre, sur ordinateur et sur mobile.
  • « Tout le monde », avec deux membres.
  • Changer une couleur dans Paramètres, puis revenir à l'accueil.

La page wiki UX sera mise à jour au moment du rebase, avec trois ajouts : le sélecteur de date, « Tout le monde », et la règle d'erreur étendue à toutes les modales.

## Branche 1 — `fix/event-form` : prête pour la recette Sept commits sur `fix/event-form`, rien de poussé. Chacun passe `make lint typecheck test`. La suite E2E complète passe à 108 sur 109 : le seul échec vient d'un test de `member-colors` qui échoue aussi sur `main` dès qu'on le lance après un mercredi (il cherche sur l'accueil un événement déjà passé). Une tâche séparée est proposée pour le corriger. `/code-review` a relevé deux points, corrigés tous les deux. ### Ce qui change - **Erreurs dans les modales** : les formulaires d'événement, de famille, d'article, de recette et de créneau repas affichent leur erreur à l'intérieur. À l'ouverture, l'erreur précédente est effacée avant l'affichage, sans clignotement (c'est vérifié par un test). - **Participants** : il n'y avait pas de bug de sélection, les deux membres étaient bien cochés. Le problème était la lisibilité : en mode sombre, un membre sélectionné ressemblait presque à un membre non sélectionné. Un membre sélectionné est désormais une pastille pleine avec une coche. La puce « Tout le monde » sélectionne ou désélectionne toute la famille. Elle reprend le libellé déjà employé pour l'assignation. - **Dates** : les champs sont maintenant des `NcDateTimePicker`, avec un champ jour et un champ heure pour le début comme pour la fin. Ils suivent le format de date de Nextcloud. Un seul sélecteur date+heure n'applique rien tant qu'on n'a pas touché l'heure, d'où les deux champs séparés. Déplacer le début déplace la fin d'autant. Placer la fin avant le début fait reculer le début d'autant. - **Couleur sur l'accueil** : elle change sans recharger la page. Dans les listes, elle se mettait déjà à jour. ### Trouvés en chemin - Les assertions de couleur de `member-colors.spec` ne vérifiaient rien (`toHaveAttribute` avec `expect.stringContaining`). Elles sont corrigées. - Il manquait une garde de génération dans `openListById`. Une liste cliquée pendant l'ouverture automatique de la première était remplacée par celle-ci. C'est corrigé, avec des tests unitaires. ### À vérifier à la main La famille de démo a été recréée (`make seed`). Pour tester « Tout le monde », invite `alice` dans la famille. Les tests E2E suppriment toutes les familles de toute façon. - [x] Dans l'agenda, créer un événement : l'erreur éventuelle s'affiche dans la modale, et rien ne clignote quand on la rouvre. - [x] Déplacer le début, puis placer la fin avant le début : les deux champs suivent. - [x] Vérifier les dates en clair et en sombre, sur ordinateur et sur mobile. - [x] « Tout le monde », avec deux membres. - [x] Changer une couleur dans Paramètres, puis revenir à l'accueil. La page wiki `UX` sera mise à jour au moment du rebase, avec trois ajouts : le sélecteur de date, « Tout le monde », et la règle d'erreur étendue à toutes les modales.
Collaborator

Avancement — branches 2 et 3 intégrées dans main (rien n'est poussé)

refactor/english-routes (2 commits) : les routes sont en anglais, sans redirection. Une URL inconnue affiche « Page introuvable ». Une liste ou une recette inconnue affiche « introuvable » dans sa propre vue. L'entrée de navigation reste surlignée sur les sous-routes : router-link ne comparait pas les paramètres, c'est ce qui causait « Recettes n'y est plus surligné ». Pages wiki UX et Architecture mises à jour.

fix/ui-defects (13 commits) : les 13 défauts de #issuecomment-201. Wiki : UX, et une nouvelle décision D42 dans Architecture.

Points à vérifier pendant ta recette

  • Restauration d'un article (D42). Comme décidé, le client renvoie l'article et le serveur le revalide. Conséquence : l'auteur et la trace « coché par » deviennent ceux de la personne qui annule, pas ceux d'origine. Sinon, un client pourrait écrire « coché par Alice » à la place de quelqu'un d'autre.
  • L'annulation s'affiche dans la liste, pas dans une notification Nextcloud. C'est un bandeau « « Lait » n'est plus dans la liste. · Annuler », qui reste 8 s. Cela évite d'ajouter @nextcloud/dialogs pour un seul usage.
  • Échap. Le « bug » venait de @nextcloud/vue : ses raccourcis ignorent les touches tapées dans un champ, et nos modales s'ouvrent avec le focus dans un champ. Échap ferme désormais la modale depuis un champ, sauf quand une liste déroulante est ouverte : il la referme d'abord.
  • Alignement des titres. Toutes les vues commencent au même endroit, sauf l'accueil, dont le titre est dans le bandeau que la branche 4 remplace (#3).

Trouvé en chemin

Les lenteurs et échecs aléatoires des tests E2E venaient de la mise en veille du Mac ou de Docker Desktop : Apache n'a reçu aucune requête pendant 17 min. La suite complète se lance maintenant sous caffeinate (7 à 9 min au lieu de 18). Le seul échec restant est le test member-colors du mercredi, qui échoue aussi sur main et a sa tâche à part.

## Avancement — branches 2 et 3 intégrées dans `main` (rien n'est poussé) **`refactor/english-routes`** (2 commits) : les routes sont en anglais, sans redirection. Une URL inconnue affiche « Page introuvable ». Une liste ou une recette inconnue affiche « introuvable » dans sa propre vue. L'entrée de navigation reste surlignée sur les sous-routes : `router-link` ne comparait pas les paramètres, c'est ce qui causait « Recettes n'y est plus surligné ». Pages wiki `UX` et `Architecture` mises à jour. **`fix/ui-defects`** (13 commits) : les 13 défauts de #issuecomment-201. Wiki : `UX`, et une nouvelle décision **D42** dans `Architecture`. ### Points à vérifier pendant ta recette - **Restauration d'un article (D42).** Comme décidé, le client renvoie l'article et le serveur le revalide. Conséquence : l'auteur et la trace « coché par » deviennent ceux de la personne qui annule, pas ceux d'origine. Sinon, un client pourrait écrire « coché par Alice » à la place de quelqu'un d'autre. - **L'annulation s'affiche dans la liste, pas dans une notification Nextcloud.** C'est un bandeau « « Lait » n'est plus dans la liste. · Annuler », qui reste 8 s. Cela évite d'ajouter `@nextcloud/dialogs` pour un seul usage. - **Échap.** Le « bug » venait de `@nextcloud/vue` : ses raccourcis ignorent les touches tapées dans un champ, et nos modales s'ouvrent avec le focus dans un champ. Échap ferme désormais la modale depuis un champ, sauf quand une liste déroulante est ouverte : il la referme d'abord. - **Alignement des titres.** Toutes les vues commencent au même endroit, sauf l'accueil, dont le titre est dans le bandeau que la branche 4 remplace (#3). ### Trouvé en chemin Les lenteurs et échecs aléatoires des tests E2E venaient de la **mise en veille du Mac ou de Docker Desktop** : Apache n'a reçu aucune requête pendant 17 min. La suite complète se lance maintenant sous `caffeinate` (7 à 9 min au lieu de 18). Le seul échec restant est le test `member-colors` du mercredi, qui échoue aussi sur `main` et a sa tâche à part.
Collaborator

Avancement — branche 4 feat/ux-rework intégrée dans main (12 commits, rien n'est poussé)

Les arbitrages #1 à #12 de #issuecomment-202 sont faits ; #13 reste tel quel, comme décidé. E2E : 133 tests, 132 passent (le seul échec est le test member-colors du mercredi, déjà signalé). Wiki : UX mis à jour, et révisions de D10, D26 et D31 dans Architecture.

Écarts ou précisions à valider pendant ta recette

  • #1 : le seuil « téléphone » est celui du projet, 700 px, au lieu des 768 px de l'arbitrage. Je n'ai pas voulu introduire un deuxième seuil. Une vue choisie à la main est conservée.
  • #3 : la ligne dit par exemple « 1 tâche pour aujourd'hui. Ensuite : Dentiste, Demain · 10:00. ». Le bandeau (taille, cercles) sera traité dans la branche 5.
  • #4 : pour que la carte d'une échéance ouvre la bonne liste, la lecture d'une période ajoute listId aux événements du calendrier des tâches. Ce champ n'est jamais ajouté pour une liste d'une autre famille, ni dans la passe horaire D32.
  • #5 : la section des articles cochés est ouverte par défaut, et se replie d'un clic. « Monter / Descendre » agissent désormais sur l'ordre affiché.
  • #7 : le bilan après ajout existait déjà ; seul le vocabulaire change. Le même libellé, « Ajouter les ingrédients à une liste », sert à Repas, à la modale et à la fiche recette.
  • #9 : remaining est calculé par le serveur à chaque lecture d'une liste. L'accueil emploie la même formule que l'index (« 3 articles restants »).
  • #11 : tous les champs avaient déjà un libellé. Seuls les exemples changent (« ex. : … », plus pâles).
## Avancement — branche 4 `feat/ux-rework` intégrée dans `main` (12 commits, rien n'est poussé) Les arbitrages #1 à #12 de #issuecomment-202 sont faits ; #13 reste tel quel, comme décidé. E2E : 133 tests, 132 passent (le seul échec est le test `member-colors` du mercredi, déjà signalé). Wiki : `UX` mis à jour, et révisions de D10, D26 et D31 dans `Architecture`. ### Écarts ou précisions à valider pendant ta recette - **#1** : le seuil « téléphone » est celui du projet, **700 px**, au lieu des 768 px de l'arbitrage. Je n'ai pas voulu introduire un deuxième seuil. Une vue choisie à la main est conservée. - **#3** : la ligne dit par exemple « 1 tâche pour aujourd'hui. Ensuite : Dentiste, Demain · 10:00. ». Le bandeau (taille, cercles) sera traité dans la branche 5. - **#4** : pour que la carte d'une échéance ouvre la bonne liste, la lecture d'une période ajoute `listId` aux événements du calendrier des tâches. Ce champ n'est jamais ajouté pour une liste d'une autre famille, ni dans la passe horaire D32. - **#5** : la section des articles cochés est ouverte par défaut, et se replie d'un clic. « Monter / Descendre » agissent désormais sur l'ordre affiché. - **#7** : le bilan après ajout existait déjà ; seul le vocabulaire change. Le même libellé, « Ajouter les ingrédients à une liste », sert à Repas, à la modale et à la fiche recette. - **#9** : `remaining` est calculé par le serveur à chaque lecture d'une liste. L'accueil emploie la même formule que l'index (« 3 articles restants »). - **#11** : tous les champs avaient déjà un libellé. Seuls les exemples changent (« ex. : … », plus pâles).
Collaborator

Les cinq branches sont sur main (fast-forward, branches supprimées, rien de poussé). La recette globale peut commencer.

Portes passées sur la dernière branche : make lint typecheck test, make build-frontend, make l10n-check (438 sources, toutes traduites), /code-review sans retour. E2E : 137/138. Le seul échec est member-colors.spec « an event of one member… several wears the family's », qui existait déjà et dépend du jour de la semaine ; il a sa propre tâche.

Wiki : UX (routes, vocabulaire « Agenda », fiche recette, page introuvable, annulation, sélecteur de date, identité visuelle) et Architecture (D42 pour la restauration, révisions de D10, D26 et D31) sont à jour, ainsi que AGENTS.md.

À regarder en priorité pendant la recette (make reload avant, pour recharger le catalogue) :

  1. Formulaire d'événement : heures après le passage à NcDateTimePicker (fuseau), dates qui se suivent, « Tout le monde », erreur visible dans la modale sans clignotement.
  2. Suppression d'un article puis « Annuler » : il revient à sa place.
  3. Téléphone : l'application s'ouvre sur Planning ; semaine des repas centrée sur aujourd'hui ; boutons empilés.
  4. Accueil : case à cocher d'une tâche, tâches d'abord sur mobile ; lien vers un article (?item=) qui le met en évidence.
  5. Recette : création sur une page avec photo, puis « Ajouter les ingrédients à une liste ».
  6. Couleur de la famille : entrée de navigation active, bandeau, colonne du jour, en clair et en sombre, y compris avec une couleur très claire.
  7. Icônes de navigation et des types de liste ; barre d'outils de l'agenda (filtre en pilule).
Les cinq branches sont sur `main` (fast-forward, branches supprimées, rien de poussé). La recette globale peut commencer. **Portes passées sur la dernière branche** : `make lint typecheck test`, `make build-frontend`, `make l10n-check` (438 sources, toutes traduites), `/code-review` sans retour. E2E : 137/138. Le seul échec est `member-colors.spec` « an event of one member… several wears the family's », qui existait déjà et dépend du jour de la semaine ; il a sa propre tâche. **Wiki** : `UX` (routes, vocabulaire « Agenda », fiche recette, page introuvable, annulation, sélecteur de date, identité visuelle) et `Architecture` (D42 pour la restauration, révisions de D10, D26 et D31) sont à jour, ainsi que `AGENTS.md`. **À regarder en priorité pendant la recette** (`make reload` avant, pour recharger le catalogue) : 1. Formulaire d'événement : heures après le passage à `NcDateTimePicker` (fuseau), dates qui se suivent, « Tout le monde », erreur visible dans la modale sans clignotement. 2. Suppression d'un article puis « Annuler » : il revient à sa place. 3. Téléphone : l'application s'ouvre sur Planning ; semaine des repas centrée sur aujourd'hui ; boutons empilés. 4. Accueil : case à cocher d'une tâche, tâches d'abord sur mobile ; lien vers un article (`?item=`) qui le met en évidence. 5. Recette : création sur une page avec photo, puis « Ajouter les ingrédients à une liste ». 6. Couleur de la famille : entrée de navigation active, bandeau, colonne du jour, en clair **et** en sombre, y compris avec une couleur très claire. 7. Icônes de navigation et des types de liste ; barre d'outils de l'agenda (filtre en pilule).
Collaborator

Retours de recette, 1er lot

Corrigés sur fix/recette-17 (3 commits, rien de poussé) :

  • Repas : aujourd'hui est décalé. Dans une colonne étroite, la pastille « Aujourd'hui » passe à la ligne, donc les créneaux du jour commençaient plus bas. Chaque jour est maintenant une sous-grille : le titre et chaque créneau partagent leur ligne avec les autres jours, à 1, 2 ou 7 colonnes.
  • Les modales ne se ferment pas en cliquant à côté. NcDialog ne le fait que si on lui passe closeOnClickOutside, qui vaut false par défaut. C'est ajouté aux onze modales. Un clic dans le menu d'un sélecteur de date ou d'heure laisse la modale ouverte.
  • Survol et focus assombrissent les boutons. Le server.css de Nextcloud peint tout <button> simple au survol et au focus, et sa règle l'emporte sur une classe scoped. Un clic laisse le focus derrière lui, donc la couleur restait. J'ai relevé chaque bouton au repos, au survol et après un clic : la même perte touche tous ceux dont la couleur a un sens (« Nouvel événement », le bouton de création de liste, les puces d'événement de la semaine et du mois, le planning, les créneaux remplis, et l'état sélectionné d'une liste, d'une vue, d'une famille ou d'un participant). Chacun garde maintenant sa couleur au focus, et a son propre survol : plus clair en sombre, plus foncé en clair. Les boutons neutres reviennent aussi à leur couleur après un clic. Le focus clavier garde l'anneau de Nextcloud.

Les quatre nouveaux tests E2E échouent sans les correctifs. Le comportement du server.css est noté dans la skill (frontend-vue3.md).

## Retours de recette, 1er lot Corrigés sur `fix/recette-17` (3 commits, rien de poussé) : - [x] **Repas : aujourd'hui est décalé.** Dans une colonne étroite, la pastille « Aujourd'hui » passe à la ligne, donc les créneaux du jour commençaient plus bas. Chaque jour est maintenant une sous-grille : le titre et chaque créneau partagent leur ligne avec les autres jours, à 1, 2 ou 7 colonnes. - [x] **Les modales ne se ferment pas en cliquant à côté.** `NcDialog` ne le fait que si on lui passe `closeOnClickOutside`, qui vaut `false` par défaut. C'est ajouté aux onze modales. Un clic dans le menu d'un sélecteur de date ou d'heure laisse la modale ouverte. - [x] **Survol et focus assombrissent les boutons.** Le `server.css` de Nextcloud peint tout `<button>` simple au survol et au focus, et sa règle l'emporte sur une classe *scoped*. Un clic laisse le focus derrière lui, donc la couleur restait. J'ai relevé chaque bouton au repos, au survol et après un clic : la même perte touche tous ceux dont la couleur a un sens (« Nouvel événement », le bouton de création de liste, les puces d'événement de la semaine et du mois, le planning, les créneaux remplis, et l'état sélectionné d'une liste, d'une vue, d'une famille ou d'un participant). Chacun garde maintenant sa couleur au focus, et a son propre survol : plus clair en sombre, plus foncé en clair. Les boutons neutres reviennent aussi à leur couleur après un clic. Le focus clavier garde l'anneau de Nextcloud. Les quatre nouveaux tests E2E échouent sans les correctifs. Le comportement du `server.css` est noté dans la skill (`frontend-vue3.md`).
Collaborator

Recette manuelle validée par Maxime. fix/recette-17 est intégrée à main en fast-forward et la branche est supprimée ; rien n'est poussé.

E2E : 140/142. Il y a deux échecs :

  • member-colors « an event of several… » : connu, il dépend du jour de la semaine et a sa propre tâche.
  • timetable « the same calendar can be read… » : Nextcloud a refusé la création d'un événement, puis le test est passé deux fois lancé seul.
Recette manuelle validée par Maxime. `fix/recette-17` est intégrée à `main` en fast-forward et la branche est supprimée ; rien n'est poussé. E2E : 140/142. Il y a deux échecs : - `member-colors` « an event of several… » : connu, il dépend du jour de la semaine et a sa propre tâche. - `timetable` « the same calendar can be read… » : Nextcloud a refusé la création d'un événement, puis le test est passé deux fois lancé seul.
Sign in to join this conversation.
No description provided.