feat(mobile): ruban d'edition style Obsidian + correctifs mobile (#83, BUG-017 a BUG-020)
- #83: ruban horizontal defilable ancre au-dessus du clavier, commandes etendues (titres, barre, surligne, code bloc, citation, listes, cases, wikilinks, tags, pieces jointes, undo/redo, colle, police) et personnalisation persistee via l'icone engrenage - BUG-017: cartes du tableau de bord compressibles (min-width:0) - BUG-018: en-tete editeur mobile compact, boutons Annuler/Sauvegarder accessibles, barre IA plus tactile - BUG-019: ancrage du ruban via visualViewport (--kb-offset) - BUG-020: suppression de la double barre de defilement Tests: mobile-editor 35/35, ai 50/50, 9 suites JSDOM, validate-imports, pytest 961 passed / 6 skipped, ruff + mypy 0.
This commit is contained in:
@@ -54,6 +54,16 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
### Ajouté
|
||||
|
||||
- **#83 Barre d'outils d'édition mobile — ruban style Obsidian Android** — la barre de mise en
|
||||
forme flottante est remplacée par un **ruban horizontal défilable** ancré juste au-dessus du
|
||||
clavier virtuel : fond anthracite aux coins arrondis, insertion/enrobage au curseur ou sur la
|
||||
sélection. Commandes : annuler/refaire, `[[ ]]` (lien interne), fichiers/modèles, tag `#`,
|
||||
pièce jointe, H1–H6, gras, italique, barré (`~~`), surligné (`==`), code en ligne/bloc, citation,
|
||||
lien externe, listes à puces/numérotées, case à cocher, indenter/désindenter, coller, A−/A+.
|
||||
Une icône **⚙** ouvre un panneau de personnalisation (ajouter / retirer / réordonner, persistance
|
||||
`localStorage`). i18n FR/EN. Helpers purs exportés (`formatChange`, `normalizeRibbonCommands`,
|
||||
`moveRibbonCommand`). Tests JSDOM `tests/frontend/mobile-editor.test.mjs` (+13) et E2E mobile.
|
||||
|
||||
- **#82 Assistant IA — menu `@` instantané** — nouvel endpoint `GET /api/vault/{vault}/paths`
|
||||
(liste plate et plafonnée de l'index des chemins). Le frontend la récupère **une fois par vault**
|
||||
(préchargée à l'ouverture du panneau) puis filtre **côté client** pendant la frappe : l'affichage
|
||||
@@ -291,6 +301,26 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
### Corrigé
|
||||
|
||||
- **BUG-017 — Accueil mobile : tuiles « Favoris » / « Récents » mal dimensionnées** — les cartes
|
||||
de tableau de bord débordaient horizontalement à cause d'un titre/chemin `nowrap` : ajout de
|
||||
`min-width: 0` et `overflow: hidden` sur `.dashboard-card` (et ses en-têtes/pieds) pour que la
|
||||
grille mobile (1 colonne) respecte la largeur du viewport. Les tuiles « Partagés » étaient déjà
|
||||
conformes.
|
||||
|
||||
- **BUG-018 — Éditeur mobile : boutons « Annuler » / « Sauvegarder » inaccessibles** — l'en-tête
|
||||
cumulait marque, titre, nom de fichier et actions, poussant les boutons hors écran. Sur mobile,
|
||||
les éléments secondaires (marque, séparateur, espaceur, présence) sont masqués, les champs
|
||||
titre/nom de fichier deviennent compressibles (`flex`, `min-width: 0`) et le libellé « Saved »
|
||||
est masqué (le point d'état reste). La barre d'outils IA reçoit des cibles tactiles plus grandes.
|
||||
|
||||
- **BUG-019 — Éditeur mobile : barre d'outils masquée par le clavier** — le ruban est désormais
|
||||
ancré via `window.visualViewport` (`--kb-offset`) pour rester juste au-dessus du clavier, quel
|
||||
que soit le défilement, et le scroller CodeMirror reçoit un `padding-bottom` pour ne pas cacher
|
||||
le curseur.
|
||||
|
||||
- **BUG-020 — Éditeur mobile : double barre de défilement** — `.editor-body` passe en
|
||||
`overflow: hidden` + colonne flex ; seul le scroller CodeMirror défile.
|
||||
|
||||
- **BUG-016 — Mobile : le bouton « mode lecture » recouvre le bouton d'envoi de l'assistant** —
|
||||
le bouton flottant `📖` (`#me-reading-btn`, `z-index: 890`) passait au-dessus du panneau
|
||||
assistant plein écran sur mobile (`z-index: 100`) et masquait le bouton d'envoi `✈️`. Il
|
||||
|
||||
Reference in New Issue
Block a user