Commit Graph
17 Commits
Author SHA1 Message Date
Hermes Agent 4adb88fd35 refactor: subprocess.Popen au lieu de multiprocessing.Process pour les fenêtres Tk
- Nouveau module _tk_window_process.py : point d'entrée pour le subprocess
  (python -m ai_typewriter.ui._tk_window_process). Reçoit les args en
  pickle sur stdin, écrit window.result en pickle sur stdout.
- _tk_spawn.py réécrit avec subprocess.Popen. Payload picklé envoyé sur
  stdin, résultat lu via communicate() dans un thread poller.
- Plus besoin de multiprocessing.Queue ni de start_method.
- PYTHONPATH injecté automatiquement pour que le subprocess trouve le
  package ai_typewriter.
2026-09-18 14:27:35 +02:00
Hermes Agent 7fa401b287 refactor: multiprocessing.Process au lieu de threading.Thread pour les fenêtres Tk
- _tk_spawn.py : chaque fenêtre tourne dans un Process séparé (spawn,
  pas fork) avec sa propre instance tk.Tk. Résultats renvoyés au parent
  via multiprocessing.Queue + thread poller.
- API changée : spawn_tk_window(Class, *args, on_result=..., **kwargs)
  au lieu d'une lambda factory — nécessaire pour la picklabilité.
- SecureStore n'est plus passé aux processus fils (non picklable) ;
  chaque dialogue crée le sien (déjà le comportement par défaut).
- TrayApp allégé : plus de self.secure, plus d'import SecureStore.
2026-09-18 13:56:53 +02:00
Hermes Agent e07f401b5c refactor: un thread par fenêtre Tk, main thread dédié au hotkey
- Nouveau helper ui/_tk_spawn.py : chaque fenêtre Tk dans son propre thread
  avec sa propre racine tk.Tk (plus de racine partagée)
- app.py : thread principal pour le hotkey + attente stop_event,
  thread séparé pour l'icône pystray
- tray.py : suppression de get_root/_defer_tk/_present_window,
  spawn_tk_window pour chaque dialogue, callbacks on_result au lieu
  de wait_window bloquant
2026-09-18 13:25:24 +02:00
Hermes Agent 15eb856bf2 fix(tray): fenêtres invisibles et coche de profil non mise à jour
- Ajoute _present_window() (deiconify/lift/topmost/focus_force) pour que
  les Toplevel enfants d'une racine withdraw() apparaissent bien au
  premier plan sous Windows (logs, profil, ajout, authentification).
- Rend le sous-menu des profils dynamique via un générateur avec items
  radio + checked=, et appelle icon.update_menu() après changement de
  profil pour que la coche suive l'état courant.
2026-09-18 11:00:41 +02:00
Hermes Agent 2f5c428545 fix(tray): architecture hybride pystray (thread) + Tk.mainloop() (thread principal) — les callbacks dispatch via root.after() pour que Tk ait sa boucle d'événements ; fenêtres peintes et interactives 2026-09-18 10:54:03 +02:00
Hermes Agent e7d13d9ad1 fix(tray): handlers de menu à 2 args (icon,item) — le lambda 1-arg capturait l'icône au lieu du nom du profil; Icon.run() sur le thread principal (exigence pystray); logs DEBUG par défaut + formateur enrichi 2026-09-18 10:45:25 +02:00
Hermes Agent 05e6515011 fix(auth): lire p.credential sur les objets Profile; sortie propre via Event (plus de SystemExit dans le callback pystray) 2026-09-18 10:24:23 +02:00
Hermes Agent fa7b037e7f fix(tray): créer le sous-menu via l'action MenuItem (pystray n'accepte pas submenu=) 2026-09-18 10:17:17 +02:00
Hermes Agent 3e58380f80 Rework AI-Typewriter en application d'arrière-plan multi-profils
- Rollback gestion d'équations : écriture littérale caractère par caractère
  (suppression de math_format.py et de la normalisation Unicode).
- Nouveau profil par défaut 'Mathématiques (LaTeX)' : le modèle émet du
  LaTeX encadré [EQ]...[/EQ], intercepté par KeyStepper qui déclenche
  Alt+= en début d'équation et -> en fin.
- Config multi-profils dans %APPDATA%/ai-typewriter/config.json
  (ConfigStore + profils par défaut auto-créés).
- Icône de zone de notification (pystray) : Ouvrir les logs (temps réel),
  Ajouter/Modifier un profil, Gérer l'authentification, Quitter.
- Sélecteur de modèles : modèles locaux Ollama + recherche/téléchargement
  depuis la bibliothèque publique ; fournisseurs tiers (OpenAI, OpenRouter,
  Gemini, custom).
- Clés d'API stockées de façon sécurisée dans le Gestionnaire d'identifiants
  Windows via keyring (jamais en clair dans config.json).
- Tests : 44 tests verts (stepper, profils, clients IA, credentials,
  catalogue de modèles, moteur).
2026-09-18 09:48:46 +02:00
Hermes Agent d07bed60e6 Return to plain LaTeX typing mode 2026-09-12 12:17:07 +02:00
Hermes Agent 7bd423452d Use explicit Word equation markers 2026-09-11 14:26:35 +02:00
Hermes Agent 3bccabe4ec Insert Word equation objects for math output 2026-09-11 14:04:51 +02:00
Hermes Agent 6bb572f9e4 Add Unicode math output formatting 2026-09-11 13:54:01 +02:00
Hermes Agent b2d2ba58fc Handle slow AI backend timeouts 2026-09-11 13:42:42 +02:00
Hermes Agent 9320217e0f Improve clipboard workflow and logging 2026-09-11 13:24:39 +02:00
Hermes Agent e779bd3423 Add Windows build script 2026-09-11 12:56:19 +02:00
Hermes Agent 464324aedf Initial ai typewriter implementation 2026-09-11 12:01:35 +02:00