feat(web): pages locales aide / statistiques / réglages (serveur HTTP 127.0.0.1)

Nouveau module webserver.nim : mini-serveur HTTP local (port libre a partir de 38943) qui sert des pages HTML generes en Nim - aide (nouvelle entree de menu tray), statistiques et reglages. La page reglages enregistre via POST (config.json) et l'application recharge la configuration au tick suivant. Menu Aide/Statistiques/Reglages ouvrent le navigateur par defaut, avec repli sur les dialogues natifs si le serveur est indisponible. Refactor config/stats (loadConfigFrom/saveConfigTo, loadStatsFrom/saveStatsTo) pour tester sans toucher aux fichiers reels. 8 suites de tests (60 tests), ajout de test_webserver avec integration HTTP reelle.
This commit is contained in:
2026-08-14 21:50:28 -04:00
parent 584c2fd182
commit 28860eaed1
10 changed files with 888 additions and 21 deletions
+28 -4
View File
@@ -43,6 +43,9 @@ prend soin de votre santé autant que de votre productivité, dans une interface
et la configuration est stockée au même endroit (pratique sur clé USB).
- **Mise à jour automatique** (optionnelle) : vérification en arrière-plan,
notification si une version plus récente est disponible.
- **Pages web locales** : aide, statistiques et réglages présentés sous forme de
pages HTML servies localement par l'application (127.0.0.1) et ouvertes dans
le navigateur par défaut — aucune donnée ne quitte l'ordinateur.
## Prérequis
@@ -151,7 +154,9 @@ src/
├── i18n.nim # chaînes localisées (français / anglais), détection langue
├── dialogs.nim # réglages, rappels santé, assistant, stats (wNim)
├── floating.nim # fenêtre flottante compacte (toujours au-dessus)
└── updater.nim # comparaison de versions + récupération distante
├── updater.nim # comparaison de versions + récupération distante
└── webserver.nim # serveur HTTP local (127.0.0.1) : pages aide / stats /
# réglages, routage, rendu HTML, formulaire de sauvegarde
```
Séparation des responsabilités : `timer`, `stats` et `updater` sont purs
@@ -167,11 +172,29 @@ Windows.
| Menu contextuel | Clic droit |
| Démarrer / mettre en pause | Double-clic |
## Pages web locales (aide, statistiques, réglages)
Depuis le menu de l'icône, « Aide », « Statistiques » et « Réglages » ouvrent
des pages HTML **servies localement** par l'application elle-même :
- Le menu **Aide** explique le fonctionnement de l'application (périodes,
pauses, rappels santé, raccourcis, astuces).
- **Statistiques** affiche les pomodoros du jour / semaine, la série de jours
consécutifs, le total et l'historique des 7 derniers jours.
- **Réglages** présente un formulaire complet (durées, objectif, son, langue,
profil actif, rappels santé) : l'enregistrement est appliqué immédiatement
par l'application.
L'application lance un petit serveur sur `127.0.0.1` (premier port libre à
partir de `38943`), uniquement accessible en local. Aucune donnée ne quitte
l'ordinateur. Si le serveur est indisponible, les menus retombent sur les
dialogues natifs.
## Tests
Les modules purs (`timer`, `stats`, `config`, `notifications`, `updater`) sont
testés unitairement, ainsi que l'intégration Win32 (`tray`). Un exécutable
unique les lance toutes et affiche un résumé :
Les modules purs (`timer`, `stats`, `config`, `notifications`, `updater`,
`webserver`) sont testés unitairement, ainsi que l'intégration Win32
(`tray`). Un exécutable unique les lance toutes et affiche un résumé :
```bash
run_tests.cmd
@@ -187,6 +210,7 @@ nim c -r tests/test_notifications.nim
nim c -r tests/test_tray_integration.nim
nim c -r tests/test_updater.nim
nim c -r tests/test_floating.nim
nim c -r tests/test_webserver.nim
```
La correspondance exigence → contrôle → résultat est détaillée dans