ui(paramètres): la liste complète des versions repousse le Journal tout en bas de Paramètres → Systèmes #372
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#372
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Contexte
Constat de Max le 2026-10-03, en testant la v0.16.0 : pour lire la ligne du contrôle de licence dans le Journal, il a fallu descendre sous toute la liste des versions. « C'est lourd, long. »
La page Paramètres → Systèmes (
src/pages/settings/SystemsSettingsPage.tsx) empile, dans cet ordre : Version, Mises à jour (UpdateCard), Journal des modifications (ChangelogContent), Journaux (LogViewerCard), mention de sécurité des données. Le Journal sert de plus en plus : depuis #365, chaque contrôle de licence y est écrit, le guide y renvoie l'utilisateur, et le bouton de rétroaction s'y trouve.Analyse (
/analyze, 2026-10-03,main0e4fef5)Le corps d'origine est archivé en commentaire. Sa prémisse sur
/changelogétait fausse :src/pages/ChangelogPage.tsxest un<Navigate to="/settings/systems" replace />depuis #190 (App.tsx:154,docs/architecture.md:472).ChangelogContentn'est importé que parSystemsSettingsPage. Aucun lien de l'app ne pointe vers/changelog.CHANGELOG.mdporte 39 en-têtes## [x]plus 10 anciennes versions sans crochets (## 0.3.2à## 0.2.1) ; la regex deChangelogContent.tsx:17les prend toutes, soit environ 49 cartes dépliées (space-y-6, L63), dont une carte « Unreleased » vide.LogViewerCarda une liste à hauteur fixe qui défile (h-64 overflow-y-auto, L120-122) : environ 400 px, donc la remonter ne pousse pas le reste très loin.UpdateCardlit les changelogs lui-même (L25-43) et ne dépend pas deChangelogContent.src/hooks/useCollapsibleGroups.ts:49(#254/#265/#288 ;isCollapsed,expandAll/collapseAll,storageKey: null= en mémoire seulement), utilisé par les tableaux de rapports,CategoryTree.tsxetStepDiscover.tsx:72-141.Décision de Max (2026-10-03) : Journal avant + repli.
ChangelogContent, la version installée est dépliée, les autres sont repliées (titre cliquable avec chevron), plus un bouton « Tout déplier / Tout replier ». État en mémoire seulement (useCollapsibleGroups,storageKey: null).getVersion()(déjà lu par la page). Si elle n'est pas trouvée dans le changelog, la première version publiée est dépliée.Écartés : une vraie page
/changelogavec un lien « Tout l'historique » (une page et une navigation de plus), et le seul déplacement du Journal (le changelog continuerait de grandir déplié).Travail à faire
SystemsSettingsPage.tsx: ordre Version, Mises à jour, Journaux, Journal des modifications, mention de sécurité.ChangelogContent.tsx: extraireparseChangeloget une règle pure « quelles versions sont dépliées au départ » (version installée, repli sur la première publiée, « Unreleased » vide masquée) ; repli par version avecuseCollapsibleGroups; bouton tout déplier/replier ;ChangelogContentreçoit la version installée en prop.aria-expanded/titre accessible du repli.docs/guide-utilisateur.md(§11 Paramètres, L482-502) : ordre des sections et repli de l'historique ; docs intégréesdocs.*si elles décrivent la page ;docs/architecture.md:468.CHANGELOG.mdetCHANGELOG.fr.md(Changed/Modifié).Surface de test
ChangelogContent,LogViewerCard,SystemsSettingsPageniChangelogPage.UpsellCtas.render.test.tsx:153-171rendUpdateCard.parseChangelog: versions avec et sans crochets, sections, « Unreleased » vide.renderToStaticMarkup) deSystemsSettingsPageou d'un sous-composant : la section Journaux précède le journal des modifications.Critères d'acceptation
npm testet la CI verts.Complexité estimée
Simple.
Liens
#190 (redirection de
/changelog), #365 (contrôle de licence écrit au Journal), #254 (repli dans les rapports).Plan d'exécution — milestone lot-v018 (planifié le 2026-10-16)
Les sections ci-dessous viennent de la séance
/plan-rundu 2026-10-16 (revue/review-specSécurité, Architecture, Technique comprise). En cas de conflit avec le corps au-dessus, elles priment.Consignes communes
v0.17.2existe (git ls-remote --tags origin v0.17.2). Sinon, arrêt sans rien écrire.main065f580; #369, #419 et #421 les ont déplacés depuis. Repérer chaque site par son contenu (symbole, chaîne), jamais par son numéro.STATE.md: le report dansSTATE.mdse fait au/merge-stack.Depends on
Note : dépendance d'ordre de la pile (fichiers partagés : CHANGELOG,
docs/architecture.md), pas de dépendance de code.Décisions prises en planification
useCollapsibleGroups, contrairement au corps. Ce hook n'a qu'undefaultExpandedglobal, sans amorce par clé.ChangelogContentgère unuseState<Set<string>>local, amorcé par la règle pure de dépliage. Le bouton Tout déplier / Tout replier agit sur ceSet.SystemsSettingsPagene monteChangelogContentqu'une foisgetVersion()résolu. En cas de rejet, la version est inconnue et la règle déplie la première version publiée. Un test de la règle couvre « version inconnue ».parseChangelogva dans un module pur partagé, par exemplesrc/utils/changelog.ts.UpdateCardgarde sa propre lecture : pas d'unification dans cette issue.Review caveats
useCollapsibleGroupsinadapté : résolu par la décision ci-dessus.Spec source
spec-plan-lot-v018.md
Archive avant réécriture par
/analyze(2026-10-03). Le corps d'origine affirmait qu'« une page/changelog(ChangelogPage) affiche déjà l'historique complet » et queChangelogContenty est partagé. C'est inexact :src/pages/ChangelogPage.tsxn'est qu'un<Navigate to="/settings/systems" replace />depuis #190, etChangelogContentn'est importé que parSystemsSettingsPage. La piste « lien Tout l'historique vers/changelog» mènerait donc sur la même page. Le constat de fond (Journal repoussé en bas) tient.Corps d'origine (2026-10-03)
Contexte
Constat de Max le 2026-10-03, en testant la v0.16.0 : pour lire la ligne du contrôle de licence dans le Journal, il a fallu descendre sous toute la liste des versions. « C'est lourd, long. »
Vérifié dans le code (
src/pages/settings/SystemsSettingsPage.tsx), la page Paramètres → Systèmes empile, dans cet ordre :UpdateCard)ChangelogContent), qui affiche chaque version du changelog, toutes dépliées : 39 sections dansCHANGELOG.mdà la v0.16.0, et une de plus à chaque releaseLogViewerCard), donc tout en basUne page
/changelog(ChangelogPage) affiche déjà l'historique complet.Le Journal sert de plus en plus : depuis #365, chaque contrôle de licence y est écrit, et le guide renvoie l'utilisateur vers lui pour savoir ce que l'app envoie. Le bouton de rétroaction s'y trouve aussi.
Pistes, à trancher par
/analyze/changelog.Les pistes se combinent ; la première règle aussi la croissance de la page à chaque release.
Fichiers
src/pages/settings/SystemsSettingsPage.tsx(ordre des sections)src/components/settings/ChangelogContent.tsx(rendu des versions), partagé avec/changelog: vérifier que la page complète reste intacteCritères d'acceptation
npm testet la CI verts.