From 3025a7a44ef2f242adbdaa072c2b676a54d1414c Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Sun, 6 Sep 2026 01:24:14 -0400 Subject: [PATCH] fix(agent): v4.13.2 - saisie libre redaction avec doc ouvert -> proposition appliquer/rejeter (generate sans outils) --- CHANGELOG.md | 17 +++++++++++++++++ VERSION | 2 +- app/main.py | 2 +- app/services/llm_client.py | 2 +- app/templates/agent_panel.html | 23 +++++++++++++++++++++++ 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7ed8b0..9ba36ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog — FlowDeck +## v4.13.2 (2026-09-06) — Saisie libre « écrire un texte » → proposition à appliquer au document + +> Quand un **document est ouvert** et qu'on tape directement une demande de **rédaction/contenu** +> dans le chat (« Écrire un texte sur… », « Rédige… », « Résume… », « Traduis… »), la requête est +> maintenant routée vers la **génération de texte** (sans outils) et affichée comme **proposition +> à appliquer ou rejeter** — au lieu d'un `search_workspace` puis d'un simple « Objectif traité ». +> « Traduire » remplace le contenu de la page ; les autres demandes l'insèrent en fin de page. + +### Fix +- Envoi libre avec contexte document : détection d'intention de contenu (écrire/rédiger/générer/ + résumer/traduire/améliorer/note de réunion/texte sur/série…) → `POST /api/agent/generate` + + aperçu « ✓ Appliquer au document / ✕ Rejeter ». +- Mock : « écrire » (infinitif) reconnu comme verbe de rédaction. + +### Infra +- `VERSION` → 4.13.2 ; `app/main.py` version → 4.13.2. + ## v4.13.1 (2026-09-06) — Corrections actions contenu Agent & aperçu à approuver > Corrige les actions de contenu sur document (« Résumer », « Traduire cette page », « Proposer diff --git a/VERSION b/VERSION index 56d2fb5..650edfe 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.13.1 +4.13.2 diff --git a/app/main.py b/app/main.py index ead0cca..fd85ade 100644 --- a/app/main.py +++ b/app/main.py @@ -60,7 +60,7 @@ async def lifespan(_app: FastAPI): app = FastAPI( title="FlowDeck", - version="4.13.1", + version="4.13.2", docs_url="/docs" if settings.log_level == "DEBUG" else None, redoc_url=None, lifespan=lifespan, diff --git a/app/services/llm_client.py b/app/services/llm_client.py index ca61b7c..4a4b5e1 100644 --- a/app/services/llm_client.py +++ b/app/services/llm_client.py @@ -381,7 +381,7 @@ class LLMClient: ) # ── Generic drafting verb, no title (typing directly in the chat) ── - if re.search(r"^(r[ée]dige|[ée]cris|g[ée]n[èe]re|produis|d[ée]veloppe|" + if re.search(r"^(r[ée]dige|[ée]cris|[ée]crire|g[ée]n[èe]re|produis|d[ée]veloppe|" r"[ée]cris\s+un|g[ée]n[èe]re\s+un|r[ée]dige\s+un)\b", low): return ( "## Introduction\n" diff --git a/app/templates/agent_panel.html b/app/templates/agent_panel.html index 23ee13c..b7aa862 100644 --- a/app/templates/agent_panel.html +++ b/app/templates/agent_panel.html @@ -424,6 +424,20 @@ }, // ── Document actions (no tools) → proposition à approuver / rejeter ── + _isContentRequest(t){ + var low = (t || '').toLowerCase(); + var kws = ['écris','écrire','écrit un','rédige','rédiger','génère','générer','produis', + 'développe','texte sur','paragraphe','article sur','rédaction','résume','résumer', + 'résumé de','traduis','traduire','améliore','améliorer','note de réunion', + 'série tv','série','contenu de la page','poème','histoire sur','sujet de','courriel','email sur']; + for(var i=0;i