diff --git a/CHANGELOG.md b/CHANGELOG.md index 42fa9ab..14015e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/), et [Semantic Versioning](https://semver.org/spec/v2.0.0.html). > **En cours de développement** : les changements à venir sont listés dans la section -> [Unreleased](#unreleased). La dernière version livrée est **2.42.0**. +> [Unreleased](#unreleased). La dernière version livrée est **2.43.0**. --- @@ -14,6 +14,20 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html). --- +## [2.43.0] — 2026-09-29 + +### Ajouté + +- **#154 — Refonte UI/UX de la visionneuse XLSX (Lot 4) : undo/redo, défilement et accessibilité.** + Les éditions de cellules peuvent être **annulées / rétablies** (boutons dans le ruban, + raccourcis `Ctrl+Z`, `Ctrl+Maj+Z`, `Ctrl+Y`). Les fenêtres de lignes d'une feuille tronquée se + chargent via **`IntersectionObserver`** (repli sur l'écouteur de défilement quand l'API est + absente). La grille expose désormais une sémantique **ARIA** (`role="grid"` / `row` / + `gridcell` / `columnheader` / `rowheader`). Tests JSDOM `tests/frontend/xlsx-viewer.test.mjs` + (47) et E2E `tests/e2e/xlsx-viewer.spec.js` (9) verts. Aucun changement backend. + +--- + ## [2.42.0] — 2026-09-29 ### Ajouté diff --git a/README.fr.md b/README.fr.md index bf4022c..3c46007 100644 --- a/README.fr.md +++ b/README.fr.md @@ -4,7 +4,7 @@ **Porte d'entrée web ultra-léger pour vos vaults Obsidian** — Accédez, naviguez et recherchez dans toutes vos notes Obsidian depuis n'importe quel appareil via une interface web moderne et responsive. -[]() +[]() [](https://opensource.org/licenses/MIT) [](https://www.docker.com/) [](https://www.python.org/) @@ -976,8 +976,8 @@ Ce projet est sous licence **MIT** — voir le fichier [LICENSE](LICENSE) pour l ## 📝 Changelog -Consultez le [CHANGELOG.md](./CHANGELOG.md) pour l'historique complet de toutes les versions (v1.0.0 → v2.42.0). +Consultez le [CHANGELOG.md](./CHANGELOG.md) pour l'historique complet de toutes les versions (v1.0.0 → v2.43.0). --- -*Projet : ObsiGate | Version : 2.42.0 | Dernière mise à jour : Septembre 2026* +*Projet : ObsiGate | Version : 2.43.0 | Dernière mise à jour : Septembre 2026* diff --git a/README.md b/README.md index 935d202..abd7406 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ **Ultra-light web gateway for your Obsidian vaults** — Access, browse, and search all your Obsidian notes from any device via a modern, responsive web interface. -[]() +[]() [](https://opensource.org/licenses/MIT) [](https://www.docker.com/) [](https://www.python.org/) @@ -1151,8 +1151,8 @@ This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) ## 📝 Changelog -See [CHANGELOG.md](./CHANGELOG.md) for the complete version history (v1.0.0 → v2.42.0). +See [CHANGELOG.md](./CHANGELOG.md) for the complete version history (v1.0.0 → v2.43.0). --- -*Project: ObsiGate | Version: 2.42.0 | Last updated: September 2026* +*Project: ObsiGate | Version: 2.43.0 | Last updated: September 2026* diff --git a/VERSION b/VERSION index 345a83e..5b9cd9a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.42.0 +2.43.0 diff --git a/desktop/Cargo.lock b/desktop/Cargo.lock index b2cfa43..c50f5c1 100644 --- a/desktop/Cargo.lock +++ b/desktop/Cargo.lock @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "obsigate-desktop" -version = "2.42.0" +version = "2.43.0" dependencies = [ "chrono", "env_logger", diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 4ff800f..a6075cd 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "obsigate-desktop" -version = "2.42.0" +version = "2.43.0" description = "ObsiGate Desktop — Porte d'entrée native pour vos vaults Obsidian" authors = ["Bruno Charest"] edition = "2021" diff --git a/desktop/tauri.conf.json b/desktop/tauri.conf.json index 91e039c..eafc383 100644 --- a/desktop/tauri.conf.json +++ b/desktop/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/nicedoc/obsigate/main/desktop/tauri.conf.schema.json", "productName": "ObsiGate", - "version": "2.42.0", + "version": "2.43.0", "identifier": "com.obsigate.desktop", "build": { "frontendDist": "../frontend", diff --git a/docs/GUIDES/RECHERCHE_PDF_EXCALIDRAW.md b/docs/GUIDES/RECHERCHE_PDF_EXCALIDRAW.md index aa00108..7dfd9f4 100644 --- a/docs/GUIDES/RECHERCHE_PDF_EXCALIDRAW.md +++ b/docs/GUIDES/RECHERCHE_PDF_EXCALIDRAW.md @@ -215,6 +215,9 @@ A1 au-dessus du tableau ; `Tab`/`Maj+Tab` et les flèches circulent entre les cellules, `Entrée` valide, `Maj+Entrée` insère un retour à la ligne, une plage se copie telle quelle vers un tableur. +**Annuler / rétablir** — `Ctrl+Z` (ou le bouton **Annuler** du ruban) revient +sur les dernières éditions de cellules, `Ctrl+Maj+Z` / `Ctrl+Y` les rétablit. + **Tri, filtre, recherche, export** — chaque colonne se trie (ascendant / descendant, info-bulle : le tri s'applique à l'affichage seul), les lignes se filtrent, la recherche (`Ctrl+F` du panneau) va de correspondance en diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 941b8db..ab66bc5 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,6 +1,6 @@ # ObsiGate — Roadmap -> **Version :** 2.42.0 | **Dernière mise à jour :** 2026-09-29 +> **Version :** 2.43.0 | **Dernière mise à jour :** 2026-09-29 > **Ce fichier ne contient que le travail à venir** (🔵 En cours + ⚪ Backlog) et un index compact > vers les fonctionnalités livrées. > - **Méthode de livraison à appliquer pour toute tâche : [DELIVERY_WORKFLOW.md](./DELIVERY_WORKFLOW.md)** @@ -97,11 +97,13 @@ ### 154. Refonte UI/UX de la visionneuse & éditeur XLSX (ruban, grille, inspecteur) - **Effort :** 6-9 jours (Lot 1 ✅ · Lot 2 · Lot 3 · Lot 4) | **Impact :** 🟡 -- **Statut :** 🔵 **en cours** — **Lots 1, 2 & 3 livrés le 2026-09-29** (ruban de commandes groupé, +- **Statut :** 🔵 **en cours** — **Lots 1, 2, 3 & 4 livrés le 2026-09-29** (ruban de commandes groupé, onglets de feuilles permanents avec bouton « + », badges d'état lecture seule / formules non recalculées, tokens de grille et affordances ; dialogues thémés `showConfirm`/`showPrompt`, bandeau de conflit 409 non bloquant, indicateur *dirty* ; **inspecteur droit repliable** pour le - tableau de bord avec entrée Assistant IA). Lot suivant : découpage modulaire + undo/redo. + tableau de bord avec entrée Assistant IA ; **undo/redo**, chargement via `IntersectionObserver`, + ARIA `role="grid"`). Reste **A5** : découpage modulaire (`frontend/js/xlsx/*`) et finitions + (lien dashboard → grille, inspecteur redimensionnable, split). - **Analyse, architecture cible et plan par lots :** [features/xlsx-ui-redesign.md](./features/xlsx-ui-redesign.md) - **Description :** la visionneuse XLSX (#152/#153) est fonctionnelle mais peu conviviale : commandes à plat sans hiérarchie, en-têtes de grille indistincts des cellules, états avancés @@ -113,7 +115,8 @@ badges d'état, tokens de grille et affordances visuelles (Lot 1) - [x] **A2** Dialogues thémés (modales + toasts) et feedback non bloquant des conflits 409 (Lot 2) - [x] **A3** Inspecteur droit repliable : Tableau de bord + entrée Assistant IA (Lot 3) - - [ ] **A4** Découpage `frontend/js/xlsx/*` + undo/redo + défilement via `IntersectionObserver` (Lot 4) + - [x] **A4** Undo/redo, chargement via `IntersectionObserver`, sémantique ARIA (Lot 4) + - [ ] **A5** Découpage `frontend/js/xlsx/*` + lien dashboard → grille, inspecteur redimensionnable, split --- diff --git a/docs/features/xlsx-ui-redesign.md b/docs/features/xlsx-ui-redesign.md index 48a35dd..c7fabcd 100644 --- a/docs/features/xlsx-ui-redesign.md +++ b/docs/features/xlsx-ui-redesign.md @@ -2,8 +2,8 @@ > **Item de roadmap :** [#154 — Refonte UI/UX tableur](../ROADMAP.md) > **Origine :** #152 / #153 (visionneuse XLSX fonctionnelle mais peu conviviale) -> **Statut :** 🔵 **en cours** — Lots 1, 2 & 3 livrés le 2026-09-29 -> **Effort estimé :** 6-9 jours (Lot 1 ✅ · Lot 2 ✅ · Lot 3 ✅ · Lot 4) +> **Statut :** 🔵 **en cours** — Lots 1, 2, 3 & 4 livrés le 2026-09-29 (reste A5, découpage modulaire) +> **Effort estimé :** 6-9 jours (Lot 1 ✅ · Lot 2 ✅ · Lot 3 ✅ · Lot 4 ✅ · Lot 5) > **Règle de maintenance :** la Roadmap porte les cases à cocher (suivi), cette fiche porte > l'analyse, l'architecture cible et le plan par lots. **Ne pas dupliquer le détail.** @@ -87,12 +87,19 @@ la grille ni le backend. existant) et bouton de fermeture. - **A3.3** Responsive : sous 900 px, l'inspecteur passe sous la grille. -### Lot 4 — Découpage & finitions (à venir) +### Lot 4 — Interactions : undo/redo, défilement, accessibilité ✅ *(2026-09-29)* + +- **A4.1** **Undo/redo** local (pile de commandes) pour les éditions de cellules : boutons + **Annuler / Rétablir** dans le ruban + raccourcis `Ctrl+Z`, `Ctrl+Maj+Z`, `Ctrl+Y`. +- **A4.2** Chargement des fenêtres via **`IntersectionObserver`** (repli sur l'écouteur de + défilement pour les environnements sans IO). +- **A4.3** Sémantique **ARIA** : `role="grid"` / `row` / `gridcell` / `columnheader` / `rowheader`. + +### Lot 5 — Découpage modulaire & finitions (à venir) - Extraction de `renderXlsxViewer` en modules (`frontend/js/xlsx/*.js`) : `toolbar`, `formula-bar`, - `grid`, `sheet-tabs`, `inspector`, `cell-editor`, `api`. -- **Undo/redo** local (pile de commandes), défilement paresseux via `IntersectionObserver`, - accessibilité ARIA (`role="grid"`, *roving tabindex*). + `grid`, `sheet-tabs`, `inspector`, `cell-editor`, `api` (refactor sans changement de + comportement, sous couvert des tests JSDOM/E2E existants). - Lien **dashboard → grille** (clic sur KPI/plage = scroll + sélection), inspecteur **redimensionnable**, détachement en split via `PaneManager.splitRight()`. @@ -126,3 +133,4 @@ la grille ni le backend. | 2026-09-29 | Audit UX (3 problèmes) + architecture cible + plan par lots ; **Lot 1** livré (ruban groupé, onglets permanents + « + », badges d'état, tokens de grille) | | 2026-09-29 | **Lot 2** livré : dialogues thémés (`showConfirm`/`showPrompt`) pour la structure et la confirmation de perte, bandeau de conflit 409 non bloquant avec réessai, indicateur *dirty* (bouton + onglet) | | 2026-09-29 | **Lot 3** livré : le Tableau de bord passe dans un **inspecteur droit repliable** (grille toujours visible), en-tête d'inspecteur avec entrée **Assistant IA** et fermeture, responsive < 900 px | +| 2026-09-29 | **Lot 4** livré : **undo/redo** (boutons + `Ctrl+Z`/`Ctrl+Maj+Z`/`Ctrl+Y`), chargement par `IntersectionObserver`, **ARIA** `role="grid"` ; le découpage modulaire est reporté en A5 | diff --git a/frontend/js/viewer.js b/frontend/js/viewer.js index b8cb0c1..4817896 100644 --- a/frontend/js/viewer.js +++ b/frontend/js/viewer.js @@ -1113,6 +1113,19 @@ export function renderXlsxViewer(area, data) { } } }; + // #154-A4 — ARIA grid semantics (the backend renders a plain