Update documentation for v0.4.7 changes

Sync CHANGELOG, architecture docs, user guide, and i18n docs keys
with recent features: log viewer, sticky budget headers, sortable
report detail columns, amount toggle, migration repair, and startup
retry logic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
le king fu 2026-03-01 09:43:28 -05:00
parent 3e0f826256
commit 2a61ffcdb4
5 changed files with 63 additions and 17 deletions

View file

@ -6,6 +6,17 @@
- Error boundary catches React crashes and displays an error page instead of a white screen
- Startup timeout (10s) on database connection — shows error page instead of infinite spinner
- Error page with "Refresh", "Check for updates", and contact/issue links
- Log viewer in settings page — captures console output, filterable by level, copyable, persists across refresh
### Changed
- Report detail modal: sortable columns — click headers to sort by date, description, or amount (#1)
- Report detail modal: toggle to show/hide amounts column (#3)
- Budget table: column headers stay fixed when scrolling vertically (#2)
### Fixed
- Auto-updater on Linux: `latest.json` version field no longer has `v` prefix, package registry upload is more robust
- Startup retry: DB connection retries up to 3 times before showing error page (fixes first-launch failure on Windows)
- Migration checksum mismatch: automatically repairs stale migration 1 checksum on startup
## [0.4.4]

View file

@ -1,6 +1,6 @@
# Architecture technique — Simpl'Résultat
> Document généré le 2026-02-19 — Version 0.3.7
> Document mis à jour le 2026-03-01 — Version 0.4.7
## Stack technique
@ -26,7 +26,7 @@
```
simpl-resultat/
├── src/ # Frontend React/TypeScript
│ ├── components/ # 49 composants organisés par domaine
│ ├── components/ # 55 composants organisés par domaine
│ │ ├── adjustments/ # 3 composants
│ │ ├── budget/ # 5 composants
│ │ ├── categories/ # 5 composants
@ -35,7 +35,7 @@ simpl-resultat/
│ │ ├── layout/ # AppShell, Sidebar
│ │ ├── profile/ # 3 composants (PIN, formulaire, switcher)
│ │ ├── reports/ # 8 composants (graphiques + rapport dynamique)
│ │ ├── settings/ # 2 composants
│ │ ├── settings/ # 3 composants (+ LogViewerCard)
│ │ ├── shared/ # 6 composants réutilisables
│ │ └── transactions/ # 5 composants
│ ├── contexts/ # ProfileContext (état global profil)
@ -103,10 +103,11 @@ Les migrations sont définies inline dans `src-tauri/src/lib.rs` via `tauri_plug
| 4 | v4 | Ajout `is_inputable` sur `categories` |
| 5 | v5 | Création de `import_config_templates` |
| 6 | v6 | Changement contrainte unique `imported_files` (hash → filename) |
| 7 | v7 | Ajout sous-catégories d'assurance (niveau 3) |
Pour les **nouveaux profils**, le fichier `consolidated_schema.sql` contient le schéma complet avec toutes les migrations pré-appliquées (pas besoin de rejouer les migrations).
## Services TypeScript (14)
## Services TypeScript (15)
| Service | Responsabilité |
|---------|---------------|
@ -124,6 +125,7 @@ Pour les **nouveaux profils**, le fichier `consolidated_schema.sql` contient le
| `reportService.ts` | Génération de rapports et analytique |
| `dataExportService.ts` | Export de données (chiffré) |
| `userPreferenceService.ts` | Stockage préférences utilisateur |
| `logService.ts` | Capture des logs console (buffer circulaire, sessionStorage) |
## Hooks (12)
@ -144,7 +146,7 @@ Chaque hook encapsule la logique d'état via `useReducer` :
| `useTheme` | Thème clair/sombre |
| `useUpdater` | Mise à jour de l'application |
## Commandes Tauri (17)
## Commandes Tauri (18)
### `fs_commands.rs` — Système de fichiers (6)
@ -163,7 +165,7 @@ Chaque hook encapsule la logique d'état via `useReducer` :
- `read_import_file` — Lecture fichier chiffré
- `is_file_encrypted` — Vérification magic SREF
### `profile_commands.rs` — Gestion des profils (6)
### `profile_commands.rs` — Gestion des profils (7)
- `load_profiles` — Chargement depuis `profiles.json`
- `save_profiles` — Sauvegarde de la configuration
@ -171,6 +173,7 @@ Chaque hook encapsule la logique d'état via `useReducer` :
- `get_new_profile_init_sql` — Récupération du schéma consolidé
- `hash_pin` — Hachage Argon2 du PIN
- `verify_pin` — Vérification du PIN
- `repair_migrations` — Réparation des checksums de migration (rusqlite)
## Pages et routing
@ -181,6 +184,9 @@ Le routing est défini dans `App.tsx`. Toutes les pages sont englobées par `App
- **`ErrorBoundary`** (class component) : wrape `<App />` dans `main.tsx`, attrape les crashs React et affiche `ErrorPage` en fallback
- **`ErrorPage`** : page d'erreur réutilisable avec détails techniques (collapsible), bouton "Actualiser", vérification de mises à jour, et liens de contact/issues
- **Timeout au démarrage** : `App.tsx` applique un timeout de 10 secondes sur `connectActiveProfile()` — affiche `ErrorPage` au lieu d'un spinner infini si la connexion DB échoue
- **Retry au démarrage** : `connectActiveProfile()` réessaie jusqu'à 3 fois avec 1s de délai avant d'afficher l'erreur
- **Réparation de migrations** : `repair_migrations` (Rust/rusqlite) supprime les checksums invalides de `_sqlx_migrations` avant le chargement de la DB
- **Log viewer** : `logService.ts` capture les `console.log/warn/error` dans un buffer circulaire (500 entrées, persisté en `sessionStorage`), affiché dans la page Paramètres via `LogViewerCard`
| Route | Page | Description |
|-------|------|-------------|

View file

@ -223,6 +223,7 @@ Planifiez votre budget mensuel pour chaque catégorie et suivez le prévu par ra
- Répartition égale du montant annuel sur 12 mois
- Modèles de budget pour sauvegarder et appliquer des configurations
- Sous-totaux par catégorie parente
- En-têtes de colonnes fixes au défilement vertical
### Comment faire
@ -253,6 +254,8 @@ Visualisez vos données financières avec des graphiques interactifs et comparez
- Rapport dynamique : tableau croisé dynamique (pivot table) personnalisable
- Motifs SVG (lignes, points, hachures) pour distinguer les catégories
- Menu contextuel (clic droit) pour masquer une catégorie ou voir ses transactions
- Détail des transactions par catégorie avec tri par colonne (date, description, montant)
- Toggle pour afficher ou masquer les montants dans le détail des transactions
### Comment faire
@ -261,6 +264,8 @@ Visualisez vos données financières avec des graphiques interactifs et comparez
3. Cliquez droit sur une catégorie dans un graphique pour la masquer ou voir le détail de ses transactions
4. Les catégories masquées apparaissent comme pastilles au-dessus du graphique — cliquez dessus pour les réafficher
5. Dans Budget vs Réel, basculez entre les vues Mensuel et Cumul annuel
6. Dans le détail d'une catégorie, cliquez sur un en-tête de colonne pour trier les transactions
7. Utilisez l'icône œil dans le détail pour masquer ou afficher la colonne des montants
### Astuces
@ -295,6 +300,7 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
- Affichage de la version de l'application
- Guide d'utilisation complet accessible directement depuis les paramètres
- Vérification automatique des mises à jour avec installation en un clic
- Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement
- 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
- Chiffrement AES-256-GCM optionnel pour les fichiers exportés
@ -303,9 +309,10 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
1. Cliquez sur Guide d'utilisation pour accéder à la documentation complète
2. Cliquez sur Vérifier les mises à jour pour voir si une nouvelle version est disponible
3. Utilisez la section Gestion des données pour exporter ou importer vos données
4. Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement
5. Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe
3. Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez
4. Utilisez la section Gestion des données pour exporter ou importer vos données
5. Lors de l'export, choisissez ce qu'il faut inclure et définissez optionnellement un mot de passe pour le chiffrement
6. Lors de l'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe
### Astuces
@ -313,3 +320,5 @@ Configurez les préférences de l'application, vérifiez les mises à jour, acc
- Changez la langue de l'application via le sélecteur de langue dans la barre latérale
- Exportez régulièrement pour garder une sauvegarde de vos données
- Le guide d'utilisation peut être imprimé ou exporté en PDF via le bouton Imprimer
- Les journaux persistent pendant la session — ils survivent à un rafraîchissement de la page
- En cas de problème, copiez les journaux et joignez-les à votre signalement

View file

@ -703,7 +703,8 @@
"Annual column with automatic totals",
"Split annual amount evenly across 12 months",
"Budget templates to save and apply configurations",
"Parent category subtotals"
"Parent category subtotals",
"Column headers stay fixed when scrolling vertically"
],
"steps": [
"Use the year navigator to select the budget year",
@ -726,15 +727,20 @@
"Expenses by Category: spending breakdown (pie chart)",
"Category Over Time: track how each category evolves (line chart)",
"Budget vs Actual: monthly and year-to-date comparison table",
"Dynamic Report: customizable pivot table",
"SVG patterns (lines, dots, crosshatch) to distinguish categories",
"Context menu (right-click) to hide a category or view its transactions"
"Context menu (right-click) to hide a category or view its transactions",
"Transaction detail by category with sortable columns (date, description, amount)",
"Toggle to show or hide amounts in transaction detail"
],
"steps": [
"Use the tabs to switch between Trends, By Category, Over Time, and Budget vs Actual views",
"Adjust the time period using the period selector",
"Right-click a category in any chart to hide it or view its transaction details",
"Hidden categories appear as dismissible chips above the chart — click them to show again",
"In Budget vs Actual, toggle between Monthly and Year-to-Date views"
"In Budget vs Actual, toggle between Monthly and Year-to-Date views",
"In the category detail, click a column header to sort transactions",
"Use the eye icon in the detail view to show or hide the amounts column"
],
"tips": [
"Hidden categories are remembered while you stay on the page — click Show All to reset",
@ -750,6 +756,7 @@
"App version display",
"Complete user guide accessible directly from settings",
"Automatic update checker with one-click install",
"Application logs viewable with level filters, copy, and clear",
"Data export (transactions, categories, or both) in JSON or CSV format",
"Data import from a previously exported file",
"Optional AES-256-GCM encryption for exported files"
@ -757,6 +764,7 @@
"steps": [
"Click User Guide to access the full documentation",
"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",
"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 importing, select a previously exported file — encrypted files will prompt for the password"
@ -765,7 +773,9 @@
"Updates only replace the app binary — your database is never modified",
"Change the app language using the language selector in the sidebar",
"Export regularly to keep a backup of your data",
"The user guide can be printed or exported to PDF via the Print button"
"The user guide can be printed or exported to PDF via the Print button",
"Logs persist for the session — they survive a page refresh",
"If you encounter an issue, copy the logs and attach them to your report"
]
}
},

View file

@ -703,7 +703,8 @@
"Colonne annuelle avec totaux automatiques",
"Répartition égale du montant annuel sur 12 mois",
"Modèles de budget pour sauvegarder et appliquer des configurations",
"Sous-totaux par catégorie parente"
"Sous-totaux par catégorie parente",
"En-têtes de colonnes fixes au défilement vertical"
],
"steps": [
"Utilisez le navigateur d'année pour sélectionner l'année du budget",
@ -726,15 +727,20 @@
"Dépenses par catégorie : répartition des dépenses (graphique circulaire)",
"Catégories dans le temps : suivez l'évolution de chaque catégorie (graphique en ligne)",
"Budget vs Réel : tableau comparatif mensuel et cumul annuel",
"Rapport dynamique : tableau croisé dynamique (pivot table) personnalisable",
"Motifs SVG (lignes, points, hachures) pour distinguer les catégories",
"Menu contextuel (clic droit) pour masquer une catégorie ou voir ses transactions"
"Menu contextuel (clic droit) pour masquer une catégorie ou voir ses transactions",
"Détail des transactions par catégorie avec tri par colonne (date, description, montant)",
"Toggle pour afficher ou masquer les montants dans le détail des transactions"
],
"steps": [
"Utilisez les onglets pour basculer entre Tendances, Par catégorie, Dans le temps et Budget vs Réel",
"Ajustez la période avec le sélecteur de période",
"Cliquez droit sur une catégorie dans un graphique pour la masquer ou voir le détail de ses transactions",
"Les catégories masquées apparaissent comme pastilles au-dessus du graphique — cliquez dessus pour les réafficher",
"Dans Budget vs Réel, basculez entre les vues Mensuel et Cumul annuel"
"Dans Budget vs Réel, basculez entre les vues Mensuel et Cumul annuel",
"Dans le détail d'une catégorie, cliquez sur un en-tête de colonne pour trier les transactions",
"Utilisez l'icône œil dans le détail pour masquer ou afficher la colonne des montants"
],
"tips": [
"Les catégories masquées sont mémorisées tant que vous restez sur la page — cliquez sur Tout afficher pour réinitialiser",
@ -750,6 +756,7 @@
"Affichage de la version de l'application",
"Guide d'utilisation complet accessible directement depuis les paramètres",
"Vérification automatique des mises à jour avec installation en un clic",
"Journaux de l'application (logs) consultables avec filtres par niveau, copie et effacement",
"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",
"Chiffrement AES-256-GCM optionnel pour les fichiers exportés"
@ -757,6 +764,7 @@
"steps": [
"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",
"Consultez la section Journaux pour voir les logs de l'application — filtrez par niveau (Tout, Error, Warn, Info), copiez ou effacez",
"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'import, sélectionnez un fichier exporté précédemment — les fichiers chiffrés demanderont le mot de passe"
@ -765,7 +773,9 @@
"Les mises à jour ne remplacent que le programme — votre base de données n'est jamais modifiée",
"Changez la langue de l'application via le sélecteur de langue dans la barre latérale",
"Exportez régulièrement pour garder une sauvegarde de vos données",
"Le guide d'utilisation peut être imprimé ou exporté en PDF via le bouton Imprimer"
"Le guide d'utilisation peut être imprimé ou exporté en PDF via le bouton Imprimer",
"Les journaux persistent pendant la session — ils survivent à un rafraîchissement de la page",
"En cas de problème, copiez les journaux et joignez-les à votre signalement"
]
}
},