fix(mobile): bouton mode lecture visible uniquement fichier ouvert (BUG-016)
CI / lint (push) Successful in 1m10s
CI / security (push) Successful in 46s
CI / test (push) Successful in 2m23s
CI / build (push) Successful in 41s
CI / e2e (push) Successful in 10m28s

This commit is contained in:
2026-09-12 22:44:15 -04:00
parent cb07b92543
commit d47fcbf2be
7 changed files with 95 additions and 4 deletions
+11 -4
View File
@@ -1,6 +1,6 @@
# #69 - Éditeur mobile natif — Interface tactile optimisée
> **Statut :** ✅ Terminé — 100 % implémenté + 22 tests frontend (2026-09-11)
> **Statut :** ✅ Terminé — 100 % implémenté + 24 tests frontend (2026-09-12)
> **Effort :** 2-3 jours (réalisé) | **Impact :** 🟢
> **Références :** [Roadmap](../ROADMAP.md) · [Changelog](../../CHANGELOG.md)
@@ -10,7 +10,7 @@
- `frontend/index.html` — section « Édition mobile » du guide intégré + lien de navigation
- `frontend/locales/{fr,en}.json` — clés `mobile_editor.*` et `help.mobile_editor_*`
- `frontend/js/app.js` — appel `initMobileEditor()` au démarrage
- `tests/frontend/mobile-editor.test.mjs` — 22 tests JSDOM (helpers + câblage DOM)
- `tests/frontend/mobile-editor.test.mjs` — 24 tests JSDOM (helpers + câblage DOM)
- `.gitea/workflows/ci.yml` — test ajouté au job `lint`
- **Description :** sur téléphone et tablette, l'édition et la lecture s'adaptent au tactile :
@@ -100,17 +100,24 @@ Le bouton flottant `📖` (`#me-reading-btn`) bascule `body.reading-mode` :
borné avec message si extrémité atteinte) ;
- l'état est mémorisé (`obsigate-reading-mode`) et restauré au rechargement sur mobile.
**Visibilité conditionnelle (BUG-016).** Le bouton `📖` n'est affiché que si un **fichier est
ouvert** (`state.currentPath`) **et** que le panneau assistant est fermé : sinon il passait
au-dessus du panneau mobile plein écran et masquait le bouton d'envoi. `updateReadingButtonVisibility()`
est appelé à l'init, à chaque mutation de `#content-area` (MutationObserver) et sur les événements
`bookslm:opened` / `bookslm:closed`.
---
## Tests
`tests/frontend/mobile-editor.test.mjs` (JSDOM, 22 tests) couvre :
`tests/frontend/mobile-editor.test.mjs` (JSDOM, 24 tests) couvre :
- `FORMAT_ACTIONS`, `clampZoom`, `detectSwipe` (seuil, dominance verticale, gauche/droite) ;
- `formatChange` pour bold/italic/code/liste/lien, avec et sans sélection, toggle et ligne unique ;
- `insertText`, `applyFormatToTextarea`, `applyEditorFontSize` (clamp + persistance) ;
- le câblage DOM : construction de `#me-toolbar`, idempotence, contrôles du mode lecture,
bascule `toggleReadingMode`/`isReadingMode`.
bascule `toggleReadingMode`/`isReadingMode`, et visibilité conditionnelle de `#me-reading-btn`
(fichier ouvert + assistant fermé).
Les chemins réseau (backlinks, fichiers adjacents) et les gestes réels restent à valider en E2E
navigateur / test manuel mobile.