docs(collapse) : ADR 0016 persistance UI par-profil + guide utilisateur + architecture #295
No reviewers
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#295
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-291-collapse-docs"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Resolves #291
Autopilot — generated autonomously by the /autopilot run of 2026-07-15.
Documentation-only. Documents the final multi-level category collapse behavior (shipped in #288/#289/#290) and the structural decision behind it:
user_preferences, notlocalStorage—deleteProfiledrops the.dbbut purges nolocalStorage, so a per-profile localStorage key would be a residue surviving profile deletion (privacy leak). The ADR states the boundary explicitly: profile-specific →user_preferences; machine-global (theme, subtotals position, Cartes period mode) →localStorage.docs.*i18n keys (FR and EN): multi-level collapse, collapsed-by-default, "Expand all / Collapse all", memory per profile.user_preferencesline names the 4 collapse keys,useCollapsibleGroupshook note, ADR index row.No DB migration, no behavior change.
npm run buildclean (0 TS errors), 828 vitest pass,cargo checkclean.Stacked PR: stacks on #294 (issue #290) and is the top of the 4-PR chain (#288 socle → #289 budget → #290 trees → #291 docs). Base is
issue-290-categories-unify; review/merge the chain bottom-up./pr-review — Verdict : REQUEST_CHANGES
PR documentaire soignée et techniquement exacte. J'ai vérifié chaque affirmation de l'ADR 0016 contre le code du head de la pile (
issue-291-collapse-docs, pasmainqui porte encore l'ancienne implémentation localStorage), et tout concorde. Un seul défaut bloque : l'en-tête de l'ADR pointe vers deux fichiers spec que le.gitignoregarantit absents du repo.Issue (1)
1.
docs/adr/0016-persistance-etat-ui-par-profil.md:5— liens morts vers des specs gitignorées.La ligne
- Spec:lie../../spec-decisions-collapse-multi-niveaux.mdet../../spec-plan-collapse-multi-niveaux.md. Ces deux fichiers matchent les patterns du.gitignore:Ils existent dans l'arbre de travail de l'autopilot mais ne sont pas commités dans la branche → liens 404 dans tout checkout frais et sur le miroir GitHub. Les ADR 0014/0015 ne portent aucune ligne
Spec:: c'est un motif nouveau qui casse. À noter : même une promotion enverrait ces specs versdocs/archive/(pas à la racine), donc le chemin../../serait de toute façon incorrect.Trois fixes possibles :
git add -fles deux specs à la racine (précédent existant :spec-decisions-refonte-seed-categories-ipc.md/spec-plan-refonte-seed-categories-ipc.mdsont déjà commités ainsi) → les liens résolvent tels quels.docs/archive/et corriger les chemins des liens en conséquence.- Spec:(l'ADR est auto-suffisant ; c'est le choix des ADR 0014/0015).Vérifié conforme au code (échantillon)
useCollapsibleGroups<T>(storageKey: string | null, acc, { defaultExpanded })— exacte.user_preferencesviagetPreference/setPreference(UPSERT) ;storageKey: null= état purement en mémoire, remis au défaut au montage — exact.reports-compare-expanded,reports-bva-expanded,reports-trends-expanded,budget-grid-expanded.ComparePeriodTable,BudgetVsActualTable,CategoryOverTimeTable) +BudgetTablepersistés ;CategoryTree+CategoryTaxonomyTree(guide + assistant migration) ennull/mémoire — conforme.deleteProfile(ProfileContext) ne touche jamaislocalStorage(aucunremoveItem/cleardans toutsrc), il appelledeleteProfileDb→ commande Rustdelete_profile_db— exact, l'argument « résidu qui survit » tient.localStorage:theme,*-subtotals-position,reports-cartes-period-mode, toggle chart/table — vérifié.p:<categoryId>, marche des ancêtres avec garde de cycle, polarité duSetviaisCollapsedFor— conforme àcollapsibleRows.ts.user_preferencespréexistantes citées (import_folder,balance_show_returns,balance_starter_proposed) — existent réellement.docs.budget.features7/7,.tips4/4 ;docs.reports.features10/10,.tips6/6), bouton « Tout déplier / Tout replier » et clésreports.collapse.expandAll/collapseAllprésents.Fix trivial, le reste est prêt à merger.
🤖 Review adversariale via
/pr-reviewe3ecfe7a6cto5a3d87b31fREQUEST_CHANGES adressé — repassé APPROVE
Le blocage (liens
- Spec:de l'ADR 0016 pointant vers des fichiers gitignorés → 404) est corrigé : les deux specsspec-decisions-collapse-multi-niveaux.md+spec-plan-collapse-multi-niveaux.md(v2, post-/review-spec) ont été force-add à la racine et intégrées au commit docs (amende3ecfe7→5a3d87b). Les liens../../spec-*.mdde l'ADR résolvent désormais.Choix du fix : force-add plutôt que suppression de la ligne. Motif : la convention réelle du repo est « spec trackée à la racine » —
spec-refonte-rapports.md,spec-monetisation.md,spec-decisions-refonte-seed-categories-ipc.mdy sont déjà commitées, dont une référencée par ADR. Retirer la ligne aurait perdu la traçabilité et laissé 0016 incohérent avec 0015.Précision sur la review : l'affirmation « les ADR 0014/0015 n'ont pas de ligne Spec: » est inexacte — l'ADR 0015 a une ligne
- Spec:(versspec-decisions-bilan-detail-titres.md), dont la cible est elle aussi non trackée. Le lien de 0015 est donc cassé de la même façon : bug pré-existant, hors scope de cette PR, à corriger séparément (force-add de la spec bilan-detail-titres, même remède).Issue #291 rebasculée
status:needs-fix→status:approved. La pile est de nouveau APPROVE ×4.Mergé en fast-forward dans
main(pile #292→#295), commit5a3d87b. Forgejo ne détecte pas le merge local → fermeture manuelle. L'issue liée s'est auto-fermée viaResolves #N.Pull request closed