Cinq retours utilisateur sur l'exécutable Windows GUI V6.
- Thème : `_render()` vidait les widgets mais conservait le cache
`_tab_frames`/`_visible_tab` → l'onglet Utilisation se vidait (TclError
sur widget détruit) au changement de thème. Reset du cache dans
`_render()` → onglet actif recréé proprement.
- Onglet principal « Configuration » → « Administration » (clé interne
inchangée).
- Sous-onglet « Règles 2 » → « Règles » (le « 2 » était un badge non
câblé).
- Actions de maquette non câblées (Partage Export/Import, Règles Nouvelle
règle/Recharger/Tester/Fermer) désactivées + suffixe « (à venir) » via
`_mockup_button` : plus aucune action morte qui semble fonctionner.
- Aide « ? » restaurée (façon V5) : `ui_kit.HelpButton`/`help_button`
réutilisable ouvrant une fenêtre d'aide en français simple, posée sur
Utilisation, Administration (Réglages/Masquage/Partage/Règles) et
À propos. Partage : phrase visible + aide expliquant qu'on partage les
réglages, jamais les documents patients.
`tests/unit/test_gui_v6_app_shell.py` : régression thème, libellés,
présence d'aide, navigation. 228 tests unit OK (0 régression), self-test
GUI V6 OK. V5/moteur/app_aivanov non touchés, aucune dépendance ajoutée.
Verdict Qwen requis avant push/build/diffusion.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remplace l'éditeur de masquage encastré dans l'onglet Configuration —
jugé inutilisable par Dom (document trop à l'étroit, non défilable) —
par une fenêtre dédiée où le document est majoritaire et réellement
navigable.
- gui_v6/mask_editor_model.py : couche logique pure (rectangles par
page, conversions écran↔PDF, hit-test, sérialisation template)
testable sans display ; réutilise MaskRect/Template de
pdf_mask_designer → format de template inchangé (compat moteur).
- gui_v6/mask_editor_window.py : MaskEditorWindow (CTkToplevel)
redimensionnable — canvas + scrollbars H+V câblées + molette (le
manque qui rendait l'éditeur inutilisable), zoom + ajuster
largeur/page, navigation pages, rectangles au glisser-déposer,
sélection (clic) + suppression (Suppr / clic-droit), templates
JSON/YAML, mode aperçu d'exemple sans PDF.
- tab_config.py : l'onglet Masquage lance la fenêtre dédiée ; retrait
du canvas encastré et de ~290 lignes de code mort associé.
- tests/unit/test_gui_v6_mask_editor.py : 13 tests logique + 3 smoke
headless (scrollbars, ajout/sélection/suppression, save/load
roundtrip, câblage onglet→fenêtre).
Sans nouvelle dépendance. V5, moteur et app_aivanov non touchés.
221 tests unit OK (0 régression), self-test GUI V6 OK.
Verdict Qwen requis avant push/build/diffusion.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>