v0.3.0 : migration des dialogues vers wNim + renommage NimPulse + installeur une-ligne

This commit is contained in:
2026-08-14 11:32:46 -04:00
parent 63fb250d25
commit fd2dc7fbd7
16 changed files with 451 additions and 649 deletions
+37 -13
View File
@@ -1,4 +1,4 @@
# TrayTempo
# NimPulse
Timer **Pomodoro nouvelle génération** pour Windows, écrit entièrement en
**Nim**. Il vit discrètement dans la zone de notification (system tray) et
@@ -53,14 +53,31 @@ prend soin de votre santé autant que de votre productivité, dans une interface
nimble install winim
```
- Le framework GUI [wNim](https://github.com/khchen/wNim) :
```bash
nimble install wnim
```
> **Important (Nim 2.2.x)** : wNim 1.0.0 contient deux bugs de compilation
> avec Nim 2.2.x. Appliquez ces deux correctifs dans
> `~/.nimble/pkgs2/wnim-*/wnim/` :
> 1. `private/kiwi/strength.nim` : remplacer les 4 `const X = createStrength(...)`
> par des littéraux (`REQUIRED = 1000.0`, `STRONG = 1000000.0`,
> `MEDIUM = 1000.0`, `WEAK = 1.0`).
> 2. `private/wResizer.nim` : remplacer `initHashSet[wResizable]()` par
> `HashSet[wTypes.wResizable]()`.
> Voir les issues wNim [#125](https://github.com/khchen/wNim/issues/125) et
> [#133](https://github.com/khchen/wNim/issues/133).
## Compilation
```bash
nim c -d:release --app:gui src/traytempo.nim
nim c -d:release --app:gui src/nimpulse.nim
```
Le binaire résultant `src/traytempo.exe` est autonome (aucune dépendance
externe à installer) et pèse moins de 1 Mo.
Le binaire résultant `src/nimpulse.exe` est autonome (aucune dépendance
externe à installer) et pèse environ 1,4 Mo.
> **Note** : à l'édition de liens, `winim` injecte son propre fichier de
> ressources (styles visuels / manifeste), ce qui peut produire l'avertissement
@@ -70,18 +87,26 @@ externe à installer) et pèse moins de 1 Mo.
## Distribution
- **Binaire autonome** : `src\traytempo.exe` (ou `build\traytempo.exe`).
- **Binaire autonome** : `src\nimpulse.exe` (ou `build\nimpulse.exe`).
- **Installeur une-ligne (Windows)** :
```powershell
irm https://git.dracodev.net/Projets/NimPulse/-/raw/main/install.ps1 | iex
```
Le script [`install.ps1`](install.ps1) télécharge le binaire et crée un
raccourci sur le bureau.
- **Archive portable** : lancez [`release.cmd`](release.cmd) pour compiler et
créer `build\TrayTempo-portable.zip` (version prête à copier sur une clé USB).
- **Installeur** : un script [Inno Setup](installer/traytempo.iss) est fourni.
Compilez-le avec [Inno Setup 6](https://jrsoftware.org/isinfo.php).
créer `build\NimPulse-portable.zip` (version prête à copier sur une clé USB).
- **Installeur classique** : un script [Inno Setup](installer/nimpulse.iss) est
fourni. Compilez-le avec [Inno Setup 6](https://jrsoftware.org/isinfo.php).
## Configuration
Au premier lancement (et à la sortie), l'application crée :
```
%APPDATA%\TrayTempo\
%APPDATA%\NimPulse\
├── config.json # réglages, profils, rappels santé
└── stats.json # statistiques
```
@@ -116,7 +141,7 @@ Un exemple de configuration est fourni dans
```
src/
├── traytempo.nim # point d'entrée : fenêtre cachée, boucle de messages,
├── nimpulse.nim # point d'entrée : fenêtre cachée, boucle de messages,
│ # WM_TIMER, raccourci global, mono-instance, câblage
├── config.nim # Config/Profile/HealthReminder/Lang, JSON, registre (Run)
├── timer.nim # machine à états Pomodoro (aucune dépendance Win32)
@@ -124,14 +149,14 @@ src/
├── notifications.nim # toast (NIF_INFO), son, rotation des rappels santé
├── stats.nim # compteurs jour/semaine/total, streak, CSV, JSON
├── i18n.nim # chaînes localisées (français / anglais), détection langue
├── dialogs.nim # réglages, rappels santé, assistant, statistiques (Win32)
├── 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
```
Séparation des responsabilités : `timer`, `stats` et `updater` sont purs
(aucune dépendance à l'API Win32), ce qui les rend testables ; `config`,
`tray`, `notifications`, `dialogs` et `traytempo` gèrent l'interaction avec
`tray`, `notifications`, `dialogs` et `nimpulse` gèrent l'interaction avec
Windows.
## Raccourcis
@@ -162,7 +187,6 @@ 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_dialogs.nim
```
La correspondance exigence → contrôle → résultat est détaillée dans