From 9eb7ed681aa3ab8d0674fcc3f6e95a0d13c925fe Mon Sep 17 00:00:00 2001 From: Edern Deneuville Date: Fri, 11 Sep 2026 13:22:24 +0200 Subject: [PATCH] Improve clipboard workflow and logging --- src/ai_typewriter/app.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/ai_typewriter/app.py b/src/ai_typewriter/app.py index d40c741..54a97e0 100644 --- a/src/ai_typewriter/app.py +++ b/src/ai_typewriter/app.py @@ -3,12 +3,13 @@ from __future__ import annotations import argparse import logging import sys +import time from threading import Lock import keyboard from .ai_client import AIClientError, ask_ai -from .clipboard_capture import capture_selection +from .clipboard_capture import capture_clipboard from .config import AppConfig, load_config from .key_stepper import KeyStepper @@ -37,10 +38,18 @@ class AITypewriterApp: def _capture_ask_and_step(self) -> None: try: - selected = capture_selection(self.config.copy_wait_seconds, self.config.restore_clipboard) - LOG.info("Texte capturé: %d caractères.", len(selected)) + selected = capture_clipboard() + LOG.info("Texte lu depuis le presse-papier: %d caractères.", len(selected)) + LOG.info("Texte capturé: %r", selected) + started_at = time.perf_counter() answer = ask_ai(selected, self.config) - LOG.info("Réponse reçue: %d caractères. Mode dactylographie actif.", len(answer)) + elapsed = time.perf_counter() - started_at + LOG.info( + "Réponse reçue en %.2f s: %d caractères. Premier caractère écrit automatiquement, %d restants au clavier.", + elapsed, + len(answer), + max(len(answer) - 1, 0), + ) if self._stepper is not None: self._stepper.stop() self._stepper = KeyStepper(answer, delay=self.config.type_delay_seconds) @@ -73,7 +82,11 @@ def main(argv: list[str] | None = None) -> int: if args.ask is not None: try: - print(ask_ai(args.ask, config)) + started_at = time.perf_counter() + answer = ask_ai(args.ask, config) + elapsed = time.perf_counter() - started_at + LOG.info("Réponse générée en %.2f s: %d caractères.", elapsed, len(answer)) + print(answer) return 0 except AIClientError as exc: LOG.error("%s", exc)