fix(editor+agent): multilignes conservees (cause reelle) + validation des modeles Nvidia
Editeur: - sync() lisait el.textContent qui supprime les <br> : ajout de gt() (innerText) utilise par sync(), tableaux (toggle/columns) et _resultText. - Scission sur Entree + limites haut/bas de bloc via splitCaret() (marqueur temporaire au curseur), plus de perte de fin de bloc multi-lignes. Agent: - fetch_provider_models() valide la liste nvidia : filtre des modeles non-chat (nom) puis probe reelle /chat/completions (6 paralleles, 6s), seuls les modeles 2xx restent. 429 conserve (route, donc utilisable). - Repli sur la liste filtree si toutes les validations echouent. - tests/test_llm_config.py : 5 cas (catalogue mock, 404 chat, autres providers non valides, chute de securite, offline). 276 tests passent.
This commit is contained in:
@@ -1,5 +1,38 @@
|
||||
# Changelog — FlowDeck
|
||||
|
||||
## v5.1.8 (2026-09-07) — Multi-lignes réellement conservées + modèles IA validés (Nvidia)
|
||||
|
||||
> Deux correctifs : le bug multi-lignes (v5.1.7 corrigeait le symptôme au
|
||||
> re-rendu, mais la vraie cause était la lecture en `textContent` qui élimine
|
||||
> les `<br>`) et, côté Agent, seuls les modèles réellement utilisables du
|
||||
> fournisseur Nvidia sont désormais proposés dans la configuration IA.
|
||||
|
||||
### Éditeur — multilignes conservées (vraie cause)
|
||||
- `sync()` lisait `el.textContent`, qui **supprime** les `<br>` : les sauts de
|
||||
ligne étaient perdus dès la sauvegarde du bloc. Ajout de `gt()` (basé sur
|
||||
`innerText`, qui rend bien les `<br>` en `\n`) utilisé par `sync()`, les
|
||||
tableaux (toggle/columns) et le calcul de position du curseur.
|
||||
- La scission sur Entrée (et la limite bas/haut de bloc) utilisait désormais
|
||||
`splitCaret()` : un marqueur temporaire est inséré au curseur puis
|
||||
`gt()`/`innerText` découpe le contenu en « avant » / « après », exactement
|
||||
comme un vrai clavier. Fini le décalage `before` qui perdait la fin d'un
|
||||
bloc multi-lignes.
|
||||
- `_resultText` (composer IA) lit par `gt()` pour préserver les `\n`.
|
||||
|
||||
### Agent — validation des modèles (fournisseur bruité)
|
||||
- `GET {base}/models` de Nvidia liste tout le catalogue, mais la plupart des
|
||||
modèles (embeddings, rerank, génération d'images…) répondent **404** sur
|
||||
`/v1/chat/completions` — l'erreur observée dans la config IA.
|
||||
- `fetch_provider_models()` filtre désormais pour `nvidia` : suppression des
|
||||
modèles manifestement non-chat (nom), puis « probe » réelle de chaque
|
||||
candidat (`POST /chat/completions`, payload minimal, pipeline limité à 6 en
|
||||
parallèle, 6 s par appel) — seuls les modèles qui répondent sont listés.
|
||||
Un 429 (limite de débit) est conservé (le modèle est routé, donc utilisable).
|
||||
- Filet de sécurité : si toutes les validations échouent, on garde la liste
|
||||
filtrée par nom plutôt que de vider le sélecteur.
|
||||
- Tests : `tests/test_llm_config.py` (5 cas) — catalogue mock, 404 chat,
|
||||
retour sans validation pour les autres providers, chute de sécurité, offline.
|
||||
|
||||
## v5.1.7 (2026-09-07) — Retours à la ligne conservés quand on change de bloc (Entrée)
|
||||
|
||||
> Un bloc multi-lignes (Shift+Entrée) perdait ses retours à la ligne dès qu'on
|
||||
|
||||
Reference in New Issue
Block a user