feat: réactions dans le tiroir Comments (+ suppression) et refonte du menu de sélection (v7.67.0)
Tiroir Comments - Section « Reactions » au-dessus des fils : émoji, compte (si >1) et texte ancré lu dans le DOM (reactionList() / _anchorText(), offsets source hors pastilles) ; l'état vide ne s'affiche plus s'il reste des réactions. - Suppression : ✕ sur la ligne du tiroir (mes réactions) ET croix ::after au survol de la pastille sur l'émoji que j'ai posé (aucun nœud ajouté → offsets intacts). Deux entrées → removeReaction() → POST toggle → loadReactions(). Menu de sélection (maquette ASCII) - Ligne 4 = rangée scannée : 💬 Comment (libellé) à gauche, 🙂+ réaction à droite (.ft-row-split) ; la réaction sort de la ligne 3. - Entête Skills avec ≡ à droite (::after), liste Skills scrollable. - ✨ Ask AI retiré de la toolbar : doublon exact de « Edit with AI » du pied. - Écart volontaire à la maquette : le barré (T) de la ligne 2 est conservé. Fix racine (flake de gate) - _is_public_host attrape OSError (le garde SSRF renvoie un booléen, il ne lève plus) : un socket.timeout DNS ne bascule plus fetch_og_metadata dans son except Exception → repli silencieux → AssertionError. - fixture stub_dns sur TestOGParser (même motif que test_agent_web_tools) : zéro vrai DNS dans les tests OG. Tests: pytest tests/ -q -n auto → 1390 passed / 0 failed (flake corrigé) ; ruff check app tests → OK ; e2e v764 (réactions dans le tiroir + suppression A/B), v762 (nouvelle ligne 4), v766, v7641, v763 → 6 passed sur :8081 (image flowdeck:v7.67.0 rebuild + redéployée).
This commit is contained in:
+23
@@ -1501,6 +1501,29 @@ Détails livrés :
|
||||
`tests/test_v766_slash_esc_comment_btn.py` (3) ; `pytest` **1386 passed**,
|
||||
`ruff` OK ; `VERSION` + `app/main.py` = 7.66.0
|
||||
|
||||
### v7.67.0 — Réactions dans le tiroir + suppression + refonte du menu de sélection ✅ (2026-10-08)
|
||||
> **Objectif** : une réaction s'ajoute/supprime depuis le tiroir Comments, et
|
||||
> le menu de sélection correspond à la maquette ASCII fournie. **COMPLETED**.
|
||||
|
||||
- [x] **Section « Reactions » du tiroir** — `reactionList()` + `_anchorText()`
|
||||
(texte de la plage lu dans le DOM, hors pastilles), compte si >1, état vide
|
||||
adapté ; `removeReaction()` = POST toggle
|
||||
- [x] **Suppression** — ✕ dans le tiroir (mes réactions seulement) **et**
|
||||
croix `::after` au survol de la pastille sur l'émoji que j'ai posé (aucun
|
||||
nœud ajouté → offsets source intacts)
|
||||
- [x] **Refonte du menu** — ligne 4 scannée `💬 Comment | 🙂 réaction`,
|
||||
réaction sortie de la ligne 3, entête `Skills ≡`, liste Skills scrollable,
|
||||
`✨ Ask AI` retiré (doublon exact du pied)
|
||||
- écart volontaire à la maquette : le **barré (T)** de la ligne 2 est
|
||||
conservé (il n'y figure pas) pour ne pas perdre la fonction
|
||||
- [x] **Flake de gate corrigé** — `_is_public_host` attrape `OSError` (le
|
||||
garde SSRF ne lève plus) + fixture `stub_dns` sur `TestOGParser`
|
||||
(le test faisait un vrai `getaddrinfo("example.com")`, échec sous `-n auto`)
|
||||
- [x] **Tests** — `tests/test_v767_reactions_drawer.py` (3), e2e v764 étendu
|
||||
(réactions dans le tiroir + suppression A/B), e2e v762 (nouvelle ligne 4) ;
|
||||
`pytest` **1390 passed / 0 failed**, `ruff` OK ; `VERSION` +
|
||||
`app/main.py` = 7.67.0
|
||||
|
||||
---
|
||||
|
||||
## ✅ Fonctionnalités livrées hors roadmap (bonus détectés dans le code)
|
||||
|
||||
Reference in New Issue
Block a user