feat: Journal before the version history in Settings → System, history folded by version (#372) #470
7 changed files with 22 additions and 7 deletions
|
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
## [Non publié]
|
## [Non publié]
|
||||||
|
|
||||||
|
### Modifié
|
||||||
|
|
||||||
|
- Paramètres → Système : « Journaux et commentaires » vient désormais juste après « Mise à jour », avant l'historique des versions, qui ne repousse plus le Journal en bas de la page. L'historique des versions s'ouvre sur les notes de la version installée, les autres versions repliées : cliquez sur un numéro de version pour lire ses notes, ou sur « Tout déplier » pour ouvrir tout l'historique (#372).
|
||||||
|
|
||||||
## [0.17.2] - 2026-10-18
|
## [0.17.2] - 2026-10-18
|
||||||
|
|
||||||
### Ajouté
|
### Ajouté
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Settings → System: “Logs and feedback” now comes right after “Update”, before the version history, which no longer pushes the Journal to the bottom of the page. The version history opens on the notes of the installed version, with every other version folded: click a version number to read its notes, or “Expand all” to open the whole history (#372).
|
||||||
|
|
||||||
## [0.17.2] - 2026-10-18
|
## [0.17.2] - 2026-10-18
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ src-tauri/
|
||||||
- **Multi-profils** : bases de données séparées, protection par PIN (Argon2), switching rapide
|
- **Multi-profils** : bases de données séparées, protection par PIN (Argon2), switching rapide
|
||||||
- **Export/Import** : JSON/CSV avec chiffrement AES-256-GCM optionnel (format SREF)
|
- **Export/Import** : JSON/CSV avec chiffrement AES-256-GCM optionnel (format SREF)
|
||||||
- **Mises à jour** : auto-updater intégré (tauri-plugin-updater)
|
- **Mises à jour** : auto-updater intégré (tauri-plugin-updater)
|
||||||
- **Changelog bilingue** : page `/changelog` avec historique complet, notes de version dynamiques FR/EN depuis `CHANGELOG.md` / `CHANGELOG.fr.md` (bundlés dans `public/`)
|
- **Changelog bilingue** : historique complet des versions dans Paramètres → Système, sous les Journaux (`/changelog` y redirige), notes de la version installée dépliées et autres versions repliées ; notes de version dynamiques FR/EN depuis `CHANGELOG.md` / `CHANGELOG.fr.md` (bundlés dans `public/`)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ simpl-resultat/
|
||||||
│ ├── pages/ # 14 pages (dont 4 sous-pages rapports)
|
│ ├── pages/ # 14 pages (dont 4 sous-pages rapports)
|
||||||
│ ├── services/ # 27 services métier (21 détaillés dans la section « Services TypeScript »)
|
│ ├── services/ # 27 services métier (21 détaillés dans la section « Services TypeScript »)
|
||||||
│ ├── shared/ # Types, constantes, matrice d'entitlements (entitlements.ts), gate profils (profileGate.ts), gate de la Répartition (splitGate.ts), CTA d'upsell (upsellCta.ts), URL d'achat (purchaseUrl.ts), échéance de licence (licenseExpiry.ts)
|
│ ├── shared/ # Types, constantes, matrice d'entitlements (entitlements.ts), gate profils (profileGate.ts), gate de la Répartition (splitGate.ts), CTA d'upsell (upsellCta.ts), URL d'achat (purchaseUrl.ts), échéance de licence (licenseExpiry.ts)
|
||||||
│ ├── utils/ # 16 utilitaires purs (parsing montants/dates, détection CSV, codec de format d'import, dictionnaire lexical, signatures de banques, charts, drapeaux SQL 0/1, liste et parcours de démarrage)
|
│ ├── utils/ # 19 utilitaires purs (parsing montants/dates, détection CSV, codec de format d'import, dictionnaire lexical, signatures de banques, charts, drapeaux SQL 0/1, liste et parcours de démarrage, historique des versions)
|
||||||
│ ├── i18n/ # Config i18next + locales FR/EN
|
│ ├── i18n/ # Config i18next + locales FR/EN
|
||||||
│ ├── __fixtures__/ # csv/ : corpus de détection (15 cas figés) ; samples/ : gabarits du dossier d'exemple embarqués par Rust
|
│ ├── __fixtures__/ # csv/ : corpus de détection (15 cas figés) ; samples/ : gabarits du dossier d'exemple embarqués par Rust
|
||||||
│ ├── App.tsx # Router principal
|
│ ├── App.tsx # Router principal
|
||||||
|
|
@ -265,6 +265,7 @@ Chaque hook encapsule la logique d'état via `useReducer` :
|
||||||
|
|
||||||
- `storageKey` **non nul** → l'état de repli est **persisté par profil** dans `user_preferences` (via `userPreferenceService`), donc détruit avec le profil, sans résidu `localStorage` ([ADR 0016](adr/0016-persistance-etat-ui-par-profil.md)). Quatre surfaces persistées (les 3 rapports + budget). Hydratation **asynchrone** : le défaut (« tout replié » pour rapports/budget) est rendu d'abord, un `useEffect` hydrate ensuite → pas de flash visible.
|
- `storageKey` **non nul** → l'état de repli est **persisté par profil** dans `user_preferences` (via `userPreferenceService`), donc détruit avec le profil, sans résidu `localStorage` ([ADR 0016](adr/0016-persistance-etat-ui-par-profil.md)). Quatre surfaces persistées (les 3 rapports + budget). Hydratation **asynchrone** : le défaut (« tout replié » pour rapports/budget) est rendu d'abord, un `useEffect` hydrate ensuite → pas de flash visible.
|
||||||
- `storageKey === null` → état **purement en mémoire**, réinitialisé à chaque montage (les 2 arbres de catégories : navigation éphémère, rien à conserver ni à révéler).
|
- `storageKey === null` → état **purement en mémoire**, réinitialisé à chaque montage (les 2 arbres de catégories : navigation éphémère, rien à conserver ni à révéler).
|
||||||
|
- L'historique des versions de Paramètres → Système (`ChangelogContent`, #372) n'utilise pas ce hook : c'est une liste plate dont une seule version s'ouvre au départ, choisie par une règle, alors que le hook n'a qu'un `defaultExpanded` global, sans amorce par clé. Son état est un `Set` local, en mémoire, amorcé à chaque lecture du fichier par `initiallyExpandedVersions` (`src/utils/changelog.ts`, pur, avec `parseChangelog`) : la version installée, ou la première version publiée quand la version installée est inconnue ou absente du fichier.
|
||||||
|
|
||||||
## Import CSV — format persisté et détection
|
## Import CSV — format persisté et détection
|
||||||
|
|
||||||
|
|
@ -579,7 +580,7 @@ Les modules payants sont enveloppés dans des **layout-routes pathless `RequireF
|
||||||
| `/settings` | `SettingsLayout` (layout) + `SettingsHomePage` (index) | Hub des paramètres : 3 cards-cluster vers les sous-pages. Le layout monte `TokenStoreFallbackBanner` une seule fois, partagé par les 4 routes principales |
|
| `/settings` | `SettingsLayout` (layout) + `SettingsHomePage` (index) | Hub des paramètres : 3 cards-cluster vers les sous-pages. Le layout monte `TokenStoreFallbackBanner` une seule fois, partagé par les 4 routes principales |
|
||||||
| `/settings/users` | `UsersSettingsPage` | Comptes (Maximus), licences et guide d'utilisation (rendu inline depuis `DocsContent`) |
|
| `/settings/users` | `UsersSettingsPage` | Comptes (Maximus), licences et guide d'utilisation (rendu inline depuis `DocsContent`) |
|
||||||
| `/settings/data` | `DataSettingsPage` | Catégories (avec liens vers `/settings/categories/standard` et `/settings/categories/migrate`), backup chiffré et confidentialité de la récupération de prix |
|
| `/settings/data` | `DataSettingsPage` | Catégories (avec liens vers `/settings/categories/standard` et `/settings/categories/migrate`), backup chiffré et confidentialité de la récupération de prix |
|
||||||
| `/settings/systems` | `SystemsSettingsPage` | Version, mise à jour (`UpdateCard`), historique des versions (`ChangelogContent`), journaux + commentaires (`LogViewerCard`) |
|
| `/settings/systems` | `SystemsSettingsPage` | Version, mise à jour (`UpdateCard`), journaux + commentaires (`LogViewerCard`), puis historique des versions (`ChangelogContent`), dans cet ordre : le Journal ne descend plus sous l'historique, qui s'allonge à chaque release (#372). `ChangelogContent` n'est monté qu'une fois `getVersion()` résolu (ou en échec : version inconnue, écrite au Journal) ; il ouvre les notes de la version installée et replie les autres, chaque titre de version étant un bouton (`aria-expanded`, chevron), avec un bouton « Tout déplier / Tout replier » ; un « Unreleased » vide est masqué |
|
||||||
| `/settings/categories/standard` | `CategoriesStandardGuidePage` | Guide imprimable de la structure de catégories standard (route flat, hors `SettingsLayout`) |
|
| `/settings/categories/standard` | `CategoriesStandardGuidePage` | Guide imprimable de la structure de catégories standard (route flat, hors `SettingsLayout`) |
|
||||||
| `/settings/categories/migrate` | `CategoriesMigrationPage` | Flux de migration v1→v2 (route flat, hors `SettingsLayout`) |
|
| `/settings/categories/migrate` | `CategoriesMigrationPage` | Flux de migration v1→v2 (route flat, hors `SettingsLayout`) |
|
||||||
| `/docs` | `DocsPage` | Redirige vers `/settings/users` (rétrocompatibilité bookmarks) |
|
| `/docs` | `DocsPage` | Redirige vers `/settings/users` (rétrocompatibilité bookmarks) |
|
||||||
|
|
|
||||||
|
|
@ -583,6 +583,7 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
|
||||||
- Guide d'utilisation complet accessible directement depuis les paramètres
|
- Guide d'utilisation complet accessible directement depuis les paramètres
|
||||||
- Vérification automatique des mises à jour avec installation en un clic
|
- Vérification automatique des mises à jour avec installation en un clic
|
||||||
- Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement
|
- Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement
|
||||||
|
- Historique des versions : les notes de la version installée s'affichent d'emblée, les autres versions sont repliées et se déplient d'un clic sur leur numéro, ou toutes ensemble avec « Tout déplier »
|
||||||
- Envoi de feedback optionnel vers `feedback.lacompagniemaximus.com` (exception explicite au fonctionnement 100 % local — déclenche une demande de consentement avant le premier envoi)
|
- Envoi de feedback optionnel vers `feedback.lacompagniemaximus.com` (exception explicite au fonctionnement 100 % local — déclenche une demande de consentement avant le premier envoi)
|
||||||
- Export des données (transactions, catégories, ou les deux) en format JSON ou CSV
|
- Export des données (transactions, catégories, ou les deux) en format JSON ou CSV
|
||||||
- Import des données depuis un fichier exporté précédemment
|
- Import des données depuis un fichier exporté précédemment
|
||||||
|
|
@ -595,10 +596,11 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
|
||||||
2. Cliquez sur Vérifier les mises à jour pour voir si une nouvelle version est disponible
|
2. Cliquez sur Vérifier les mises à jour pour voir si une nouvelle version est disponible
|
||||||
3. Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez
|
3. Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez
|
||||||
4. Pour partager une suggestion ou signaler un problème, cliquez sur Envoyer un feedback dans la carte Journaux ; les cases d'identification et d'ajout du contexte/logs sont décochées par défaut
|
4. Pour partager une suggestion ou signaler un problème, cliquez sur Envoyer un feedback dans la carte Journaux ; les cases d'identification et d'ajout du contexte/logs sont décochées par défaut
|
||||||
5. Utilisez la section Gestion des données pour exporter ou importer vos données
|
5. Dans Paramètres → Système, les sections se suivent dans cet ordre : Version, Mise à jour, Journaux et commentaires, puis Historique des versions. L'historique s'ouvre sur les notes de la version installée ; cliquez sur un autre numéro de version pour lire ses notes, ou sur « Tout déplier » pour ouvrir tout l'historique (« Tout replier » le referme)
|
||||||
6. Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement
|
6. Utilisez la section Gestion des données pour exporter ou importer vos données
|
||||||
7. Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe
|
7. Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement
|
||||||
8. Pour revoir le parcours de démarrage après l'avoir masqué, ouvrez Paramètres → Utilisateurs et cliquez sur « Afficher la liste de démarrage » : le parcours réapparaît en haut des pages de ce profil, et un message le confirme. Le bouton est visible dès que le parcours est masqué, même depuis le bandeau de cette page
|
8. Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe
|
||||||
|
9. Pour revoir le parcours de démarrage après l'avoir masqué, ouvrez Paramètres → Utilisateurs et cliquez sur « Afficher la liste de démarrage » : le parcours réapparaît en haut des pages de ce profil, et un message le confirme. Le bouton est visible dès que le parcours est masqué, même depuis le bandeau de cette page
|
||||||
|
|
||||||
### Astuces
|
### Astuces
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1306,6 +1306,7 @@
|
||||||
"Complete user guide accessible directly from settings",
|
"Complete user guide accessible directly from settings",
|
||||||
"Automatic update checker with one-click install",
|
"Automatic update checker with one-click install",
|
||||||
"Application logs viewable with level filters, copy, and clear",
|
"Application logs viewable with level filters, copy, and clear",
|
||||||
|
"Version history: the installed version's notes show right away, other versions are folded and unfold with a click on their number, or all together with \"Expand all\"",
|
||||||
"Data export (transactions, categories, or both) in JSON or CSV format",
|
"Data export (transactions, categories, or both) in JSON or CSV format",
|
||||||
"Data import from a previously exported file",
|
"Data import from a previously exported file",
|
||||||
"Optional AES-256-GCM encryption for exported files",
|
"Optional AES-256-GCM encryption for exported files",
|
||||||
|
|
@ -1316,6 +1317,7 @@
|
||||||
"Click User Guide to access the full documentation",
|
"Click User Guide to access the full documentation",
|
||||||
"Click Check for Updates to see if a new version is available",
|
"Click Check for Updates to see if a new version is available",
|
||||||
"View the Logs section to see application logs — filter by level (All, Error, Warn, Info), copy or clear",
|
"View the Logs section to see application logs — filter by level (All, Error, Warn, Info), copy or clear",
|
||||||
|
"In Settings → System, the sections come in this order: Version, Update, Logs and feedback, then Version history. The history opens on the installed version's notes; click another version number to read its notes, or \"Expand all\" to open the whole history (\"Collapse all\" folds it again)",
|
||||||
"Use the Data Management section to export or import your data",
|
"Use the Data Management section to export or import your data",
|
||||||
"When exporting, choose what to include and optionally set a password for encryption",
|
"When exporting, choose what to include and optionally set a password for encryption",
|
||||||
"When importing, select a previously exported file — encrypted files will prompt for the password",
|
"When importing, select a previously exported file — encrypted files will prompt for the password",
|
||||||
|
|
|
||||||
|
|
@ -1306,6 +1306,7 @@
|
||||||
"Guide d'utilisation complet accessible directement depuis les paramètres",
|
"Guide d'utilisation complet accessible directement depuis les paramètres",
|
||||||
"Vérification automatique des mises à jour avec installation en un clic",
|
"Vérification automatique des mises à jour avec installation en un clic",
|
||||||
"Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement",
|
"Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement",
|
||||||
|
"Historique des versions : les notes de la version installée s'affichent d'emblée, les autres versions sont repliées et se déplient d'un clic sur leur numéro, ou toutes ensemble avec « Tout déplier »",
|
||||||
"Export des données (transactions, catégories, ou les deux) en format JSON ou CSV",
|
"Export des données (transactions, catégories, ou les deux) en format JSON ou CSV",
|
||||||
"Import des données depuis un fichier exporté précédemment",
|
"Import des données depuis un fichier exporté précédemment",
|
||||||
"Chiffrement AES-256-GCM optionnel pour les fichiers exportés",
|
"Chiffrement AES-256-GCM optionnel pour les fichiers exportés",
|
||||||
|
|
@ -1316,6 +1317,7 @@
|
||||||
"Cliquez sur Guide d'utilisation pour accéder à la documentation complète",
|
"Cliquez sur Guide d'utilisation pour accéder à la documentation complète",
|
||||||
"Cliquez sur Vérifier les mises à jour pour voir si une nouvelle version est disponible",
|
"Cliquez sur Vérifier les mises à jour pour voir si une nouvelle version est disponible",
|
||||||
"Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez",
|
"Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez",
|
||||||
|
"Dans Paramètres → Système, les sections se suivent dans cet ordre : Version, Mise à jour, Journaux et commentaires, puis Historique des versions. L'historique s'ouvre sur les notes de la version installée ; cliquez sur un autre numéro de version pour lire ses notes, ou sur « Tout déplier » pour ouvrir tout l'historique (« Tout replier » le referme)",
|
||||||
"Utilisez la section Gestion des données pour exporter ou importer vos données",
|
"Utilisez la section Gestion des données pour exporter ou importer vos données",
|
||||||
"Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement",
|
"Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement",
|
||||||
"Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe",
|
"Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue