Commit Graph

2 Commits

Author SHA1 Message Date
5f05ba0fb8 feat(build): version release résolue au build avec repli dev (P1-7)
Crée gui_v6/version.py (DEFAULT_VERSION + resolve_version()) qui tente
d'importer gui_v6._build_version (généré au build Windows, non commité).
Câble gui_v6.__version__ sur resolve_version(). Ajoute gui_v6/_build_version.py
au .gitignore et aux hiddenimports du spec PyInstaller. 4 tests TDD.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:02:57 +02:00
a6ee68a8a3 feat(gui): add GUI V6 G1 foundation (license client/store, shell, About tab)
Socle de la refonte GUI V6 (couche présentation uniquement, aucune logique de
détection) :
- license_store: stockage licence hors dépôt (%LOCALAPPDATA%/Aivanov | XDG),
  read/write atomique/delete, ne journalise aucun token
- license_client: LicenseStatus + activate/check/local_status, session HTTP
  injectable, serveur indisponible géré sans crash, aucune clé privée
- theme: 4 thèmes + couleurs de statut licence
- app + tab_about: shell customtkinter minimal (header, bandeau licence,
  3 onglets), onglet À propos étoffé
- Pseudonymisation_Gui_V6.py: point d'entrée + --self-test (exit 0 sans fenêtre)
- requirements.txt: customtkinter==5.2.2

Tests: 20 nouveaux (store sur vrais fichiers, client sur session injectée).
Suite tests/unit: 167 passed, 0 régression. V5/moteur/managers/specs intacts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 18:50:23 +02:00