Cinq retours d'usage du 2026-08-21 qui ne touchent que l'interface (lots Q, R,
S, T et V d'IDEES.md). Aucune migration, aucune entité modifiée.
Q — L'ordre des champs du formulaire livre est une décision, pas une mise en
page : type de document, thèmes, auteurs, rôles, puis le reste. Le type
commande la suite de la saisie — les rôles ne se posent que là — et il fallait
descendre tout le formulaire pour dire « c'est une BD », c'est-à-dire après
avoir saisi ce qui en dépend. Rien n'est présélectionné : « non précisé » ne
prétend toujours rien, et les rôles gardent leur règle actée (deux auteurs au
moins, BD ou non). Des tests verrouillent la préservation des rôles à chaque
frappe, que ce réordonnancement ne doit pas entamer.
R — Bandeau et menu passent dans un même conteneur collant : sur PC la rangée
des six destinations défilait avec la page et devenait inatteignable au bas
d'une longue liste. Un seul conteneur, et non deux éléments collants
superposés, qui auraient obligé à écrire en dur la hauteur d'un bandeau qui
varie avec la pastille hors-ligne et le nom d'utilisateur. Sur téléphone le
menu déployé occupe l'écran entier : sous le bandeau, il partageait l'écran
avec la liste qu'on quittait. Trois portes de sortie s'ajoutent à la fermeture
déjà en place sur LocationChanged — croix, Échap (le calque prend le focus à
l'ouverture, comme celui d'agrandissement des couvertures) et clic hors des
liens. Le plein écran est explicitement annulé au-delà de 40 rem, sans quoi un
menu ouvert au doigt puis une fenêtre agrandie laisseraient un calque sans
bascule pour le refermer. Toutes les règles du menu restent en feuille globale.
S — ⚠️ Le retour du bandeau devient une remontée hiérarchique d'un cran de
route, ce qui RENVERSE la décision actée le 2026-08-20 (« le retour passe par
l'historique du navigateur, jamais par une destination calculée »). Le motif
d'alors reste vrai — un même écran s'atteint par plusieurs chemins — mais
l'historique remonte aussi les allers-retours (filtre, ordre, édition) et l'on
cliquait cinq fois sans quitter le même écran. La parenté est une table
explicite et testable, pas un découpage naïf d'URL : toutes les routes n'ont
pas la forme d'une arborescence, /auteurs/{id}/bibliographie remontant à la
liste des auteurs, dont il n'existe pas de fiche. Le garde-fou « ne jamais
sortir de l'application » y vit désormais aussi : la fonction rend toujours un
chemin interne, là où history.length ne disait pas ce qu'on croyait dans une
PWA standalone. js/navigation.js n'a plus d'utilisateur et disparaît.
T — Sur la fiche d'une série, « Modifier » et « Changer l'ordre » rejoignent la
ligne du titre et de l'avancement, groupés à droite comme la bibliographie et
la liste des auteurs le font déjà. Reléguées au bas de l'écran, les actions
d'une saga de vingt tomes ne se découvraient qu'après avoir déroulé la liste.
« Changer l'ordre » n'apparaît toujours qu'à partir de deux tomes ou deux
sous-séries.
V — Dans la liste des revues, toute la ligne ouvre la fiche, comme la carte
entière le fait au catalogue. Le titre reste un vrai lien — adresse, clavier,
clic-milieu — et son clic ne remonte pas jusqu'à la ligne, qui naviguerait une
seconde fois ; toute action posée un jour sur cette ligne devra faire de même.
⚠️ Aucune vérification en navigateur : le rendu de ces écrans repose sur la
compilation et la relecture. 552 tests au vert (506 avant ce lot).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Le scanner s'ouvre dans la place visée d'une série, sous son champ ISBN. C'est ce
qui répond à « le retour doit ramener sur la série ET sur la place » : il n'y a
pas de retour, on n'a jamais quitté la place. Passer par l'écran d'ajout
obligeait à revenir rattacher à la main, donc à risquer le mauvais tome.
Même composant dans la voie « par ISBN » des envies, sans création de livre au
bout. L'add-on EAN-2 y est ignoré, et ce n'est pas un oubli : il ne concerne que
les revues, qui ne se souhaitent pas.
Ranger une envie dans une série se fait depuis la série — c'est là qu'on voit
l'ordre de lecture, donc là qu'on sait quelle position donner. Le geste crée une
place ordinaire, LivreId à NULL, titre repris de l'envie : rien ne relie les deux
en base, et c'est tout le sujet. Les séries sont communes au foyer, la liste
d'envies est personnelle, et son sens même est de préparer un cadeau sans que
l'autre le voie venir. Une clé étrangère afficherait « tome 3 souhaité par
untel » à tout le monde ; ce qui doit rester invisible est le lien, pas
l'existence du tome, qu'on aurait saisie à la main de toute façon.
L'envie survit au rattachement, comme une envie déjà au catalogue est signalée et
jamais supprimée — à plus forte raison ici, puisque rien n'a été acheté. Les
envies dont le titre est déjà un tome de la série ne sont pas proposées : la
place n'étant identifiée que par son titre, les offrir mènerait au doublon.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- L'arbre ne montre plus que la descendance : titre, avancement, lien. Il dépliait
auparavant la liste complète des tomes de chaque nœud, cartes de livres comprises —
un cycle occupait plusieurs écrans et l'on ne voyait plus qui contient quoi. Corollaire :
tout est déplié par défaut, et l'on replie ce dont on ne veut pas.
- /series ne charge plus le catalogue entier : l'arbre n'en a plus l'usage.
- ⚠️ Nouvelle route /series/{id}/ordre, sur le modèle de /souhaits/ordre. Les flèches
n'existent plus qu'ici : en consultation, elles se déclenchaient au défilement du pouce
et l'ordre de lecture d'une saga changeait sans qu'on l'ait voulu.
- Le mode ordre ne fait QUE réordonner : les actions par tome et l'ajout de tome n'y
figurent pas.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Réutilise la carte livre du catalogue, sépare les modes des séries et des envies, et déplie les œuvres bibliographiques non possédées.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Première relation entre livres du projet. Une série contient des séries
(un cycle EST une série de séries) et des PLACES dans l'ordre de lecture —
pas des livres : une place sans livre est le trou qu'on vient voir.
L'ordre est stocké, jamais déduit d'une année : une préquelle se lit avant
le livre paru dix ans plus tôt. Les tomes non possédés se saisissent à la
main, aucune source ne donnant l'ordre de lecture d'une saga.
Le titre de la place survit à la suppression du livre (SetNull, pas de
cascade), sans quoi perdre un exemplaire effacerait le tome 3 de la série.
Les séries sont communes au foyer. Seule exception : la mise en envies d'un
tome manquant, qui écrit dans une liste personnelle — c'est le seul point
où les deux portées se rencontrent.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>