feat: menu + de l'assistant en hub de contexte — phase 1/8 (v7.51.0)
- Bouton + : menu à sections (fichiers/répertoires, compétences-skills,
connecteurs, Design System – Canevas, Add plugins, Mémoire on/off).
Sections pas encore livrées affichées « bientôt (phase N) » mais désactivées,
navigation clavier ↑/↓/Entrée/Échap, focus visible, la frappe referme le menu.
- Parcours « Parcourir… » : un niveau par appel via GET /api/nav/menu
(contrat : dossier = icon 'folder'), fil d'Ariane cliquable, épingle de dossier
via la ligne « 📌 Épingler le dossier ».
- Jeton folder:<id> résolu par ContextBuilder._single_folder() : titre du dossier
+ documents directs, budget ~12k caractères (marqueur « tronqué »), enfants
directs seulement.
- « Rechercher… » conserve l'ancien sélecteur de mentions (@ inline + recherche
par nom) : régression zéro sur le chemin existant.
- Tests : tests/test_v751_plus_menu.py (7 tests). Suite complète 1273 verts
(-n auto), ruff check app tests propre, eslint static/js 0 erreur.
- Docs : CHANGELOG, ROADMAP (phase 1 cochée), docs/V74_Agent_Plus_Menu.md statut.
This commit is contained in:
+23
-14
@@ -284,7 +284,7 @@ Propriétés custom, AI keywords, sync API, 12 tables DB
|
||||
|
||||
---
|
||||
|
||||
## v7.51.0 → v7.58.0 — Menu + de l'assistant : hub de contexte (planifié 2026-10-06)
|
||||
## v7.51.0 → v7.58.0 — Menu + de l'assistant : hub de contexte (phase 1 ✅ 2026-10-06 · phases 2-8 planifiées)
|
||||
|
||||
> **Objectif** : faire du bouton **+** du panneau agent (à gauche de la zone d'édition)
|
||||
> un menu à sections, tel que demandé :
|
||||
@@ -301,7 +301,7 @@ Propriétés custom, AI keywords, sync API, 12 tables DB
|
||||
> **Doc de design** : [`docs/V74_Agent_Plus_Menu.md`](docs/V74_Agent_Plus_Menu.md)
|
||||
> — maquette, découpage front/back, modèle de données, endpoints, décisions, pièges.
|
||||
|
||||
**État des lieux lu dans le code le 2026-10-06** (rien n'est livré, tout est `- [ ]`) :
|
||||
**État des lieux lu dans le code le 2026-10-06** (constat **avant** la phase 1) :
|
||||
|
||||
- Le **+** = `toggleAddPicker()` (`static/js/agent_panel_2.js:1074`) → menu **plat** de
|
||||
mentions (`GET /api/agent/mentions`, `app/routers/agent.py:596`) : documents,
|
||||
@@ -318,18 +318,27 @@ Propriétés custom, AI keywords, sync API, 12 tables DB
|
||||
**Ordre** : phases 1 → 8, chacune indépendante et livrable (version + tests verts +
|
||||
CHANGELOG). Chiffrage : S < ½ j · M = 1–2 j · L = 3–5 j.
|
||||
|
||||
### Phase 1 — v7.51.0 — Menu hub + fichiers/répertoires · effort S–M
|
||||
### Phase 1 — v7.51.0 — Menu hub + fichiers/répertoires · effort S–M ✅ (livrée 2026-10-06)
|
||||
|
||||
- [ ] **Structure du menu** — sections + sous-menus, navigation clavier (↑/↓/Entrée/Échap),
|
||||
- [x] **Structure du menu** — sections + sous-menus, navigation clavier (↑/↓/Entrée/Échap),
|
||||
styles réutilisés depuis `.fd-ap-mention-menu` ; les sections pas encore livrées
|
||||
s'affichent « bientôt » et désactivées (le menu ne promet rien que le code ne fait)
|
||||
- [ ] **Fichiers & répertoires** — picker actuel (recherche) **+ mode « Parcourir… »** :
|
||||
arborescence via `GET /api/local-workspace/tree?folder=` + enfants de page
|
||||
(`parent_id`) ; un répertoire s'épingle comme un fichier
|
||||
- [ ] **Jeton `folder:<id>`** résolu par `ContextBuilder._mentions_context`
|
||||
(contenu des pages du dossier, borné en tokens)
|
||||
- [ ] **Tests** — parcours, résolution du jeton dossier, rendu/états du menu
|
||||
- [ ] **Livraison** — `ruff` + suite verte, bump `VERSION` + `app/main.py`, CHANGELOG
|
||||
→ `FD_PLUS_MENU` / `FD_PLUS_FILES` (`static/js/agent_panel_2.js`), markup
|
||||
`.fd-ap-plus-menu` (`agent_panel.html`), Échap remonte d'un niveau, la frappe
|
||||
referme le menu
|
||||
- [x] **Fichiers & répertoires** — picker actuel (recherche) **+ mode « Parcourir… »** :
|
||||
arborescence **un niveau par appel via `GET /api/nav/menu?parent_id=`**
|
||||
(contrat : dossier = `icon === 'folder'` — plus simple que le tree récursif,
|
||||
déjà testé), fil d'Ariane cliquable ; un répertoire s'épingle comme un fichier
|
||||
(ligne « 📌 Épingler le dossier »)
|
||||
- [x] **Jeton `folder:<id>`** résolu par `ContextBuilder._mentions_context` →
|
||||
`_single_folder()` : titre du dossier + documents directs, budget ~12k caractères
|
||||
(marqueur « tronqué ») ; enfants directs seulement (récursion si besoin réel)
|
||||
- [x] **Tests** — `tests/test_v751_plus_menu.py` : **7 tests** (résolution, budget,
|
||||
id inconnu, contrat `/api/nav/menu`, rendu du menu, 6 sections / 5 désactivées,
|
||||
jeton `folder:` front+back) ; **suite complète 1273 verts**, `ruff` 0,
|
||||
`eslint` 0 erreur
|
||||
- [x] **Livraison** — `VERSION` + `app/main.py` = **7.51.0**, CHANGELOG, ce ROADMAP
|
||||
|
||||
### Phase 2 — v7.52.0 — Compétences : « Gérer » + « Parcourir » · effort M
|
||||
|
||||
@@ -407,9 +416,9 @@ CHANGELOG). Chiffrage : S < ½ j · M = 1–2 j · L = 3–5 j.
|
||||
|
||||
---
|
||||
|
||||
*Plan produit le 2026-10-06 à partir du code réel (aucune phase commencée) — à valider
|
||||
phase par phase avant « go ». Chaque phase se clôt par tests verts, bump de version,
|
||||
CHANGELOG et ROADMAP à jour.*
|
||||
*Plan produit le 2026-10-06 à partir du code réel — **phase 1 livrée le 2026-10-06
|
||||
(v7.51.0)**, phases 2-8 à valider une par une avant « go ». Chaque phase se clôt par
|
||||
tests verts, bump de version, CHANGELOG et ROADMAP à jour.*
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user