feat(core): v5.0.0 command palette + FTS5 search, v5.2.0 versioned migrations
FlowDeck CI / test (push) Failing after 12s
FlowDeck CI / docker (push) Skipped

- Command palette Ctrl+K/Ctrl+P (base.html): universal search, fuzzy
  highlight, keyboard nav, quick actions. openQuickFind now opens it.
- GET /api/search endpoint + search service: unified pages + databases
  search, FTS5 with LIKE fallback, trash excluded, user-scoped.
- app/migrations.py: lightweight versioned migration runner (schema_version
  table); baseline schema = v1, new steps applied in order.
- Migration v2: missing indexes (users.email, user_oauth_tokens, etc).
- Migration v3: FTS5 pages_fts + sync triggers + backfill.
- VERSION + app.main -> 5.0.0; CHANGELOG + ROADMAP updated.
- +8 tests (tests/test_search_migrations.py). 259 passed (3 pre-existing
  PDF/weasyprint env failures unrelated).
This commit is contained in:
2026-09-06 19:23:31 -04:00
parent 65559e5069
commit 0c271d5972
10 changed files with 796 additions and 21 deletions
+15 -15
View File
@@ -416,13 +416,12 @@ app/
- Budget tokens max par conversation (500k tokens)
- Timeout 5 minutes par run
### v5.0.0 — Command Palette & Recherche ⬜ (stub uniquement)
> ⚠️ **État actuel** : `Ctrl+K` appelle `openQuickFind()` dans `base.html` qui n'affiche qu'un
> toast « Quick Find — Ctrl+K ». Le raccourci est déjà câblé, la palette elle-même n'existe pas.
### v5.0.0 — Command Palette & Recherche ✅ (2026-09-06)
> **Objectif** : `Ctrl+K` / `Ctrl+P` palette de commandes universelle + recherche full-text. **COMPLETED**.
- [ ] **Command palette** — Ctrl+K / Ctrl+P recherche universelle (modale, fuzzy, navigation clavier)
- [ ] **Quick actions** — navigation, création, commandes
- [ ] **Recherche full-text** — SQLite FTS5 sur pages + propriétés (prérequis technique de la palette)
- [x] **Command palette** — Ctrl+K / Ctrl+P recherche universelle (modale, fuzzy, navigation clavier)
- [x] **Quick actions** — navigation, création, commandes
- [x] **Recherche full-text** — SQLite FTS5 sur pages + propriétés (prérequis technique de la palette)
### v5.1.0 — Automations ⬜ (non commencé)
@@ -432,9 +431,10 @@ app/
- [ ] **Database automations** — moteur de règles if-this-then-that (trigger + condition + action)
- [ ] **Buttons** — boutons cliquables déclenchant des actions
### v5.2.0 — Infrastructure & Polish ⬜ (à prioriser)
> ⚠️ **Priorité recommandée n°1** : les **migrations versionnées** d'abord — la base compte
> déjà 30+ tables créées ad-hoc ; ajouter agent/automations sans versioning va créer une dette ingérable.
### v5.2.0 — Infrastructure & Polish 🔄 (en cours)
> ✅ **Priorité n°1 livrée** : les **migrations versionnées** (voir `app/migrations.py` +
> table `schema_version`) — la base comptait 30+ tables créées ad-hoc ; tout nouveau
> schéma passe désormais par des étapes versionnées (baseline v1, indexes v2, FTS5 v3).
> **État actuel** : API publique + tokens **partiellement implémentés** (`routers/public_api.py`,
> test `test_public_api_token`) — à compléter dans la section Sécurité.
@@ -448,9 +448,9 @@ app/
- [ ] **Onboarding wizard** — `/welcome` au premier lancement (créer compte → lier forges → premier projet)
**Infrastructure**
- [ ] **🥇 Migrations versionnées** — Alembic ou table `schema_version` *(URGENT avant v4.10/v5.x)*
- [x] **🥇 Migrations versionnées** — table `schema_version` + runner `app/migrations.py` (baseline v1, indexes v2, FTS5 v3) ✅
- [ ] **Backup automatique** — cron daily → fichier daté
- [ ] **Index manquants** — `users.email`, `forge_connections.user_id`
- [x] **Index manquants** — `users.email`, `user_oauth_tokens(user_id, provider)`, `collections/pages(workspace_id)`, `pages(deleted_at)` ✅
- [ ] **Linting** — ruff (Python), eslint (JS) *(aucune config actuellement)*
- [ ] **Tests parallèles** — pytest-xdist
- [ ] **Build Docker multi-stage** — optimiser taille d'image
@@ -461,7 +461,7 @@ app/
- [ ] **GitHubAdapter** complet — API GitHub v3 → interface ForgeAdapter
**Tests (cibles)**
- [x] **143 tests** — cible 100+ atteinte ✅
- [x] **267 tests** — 259+ (dont 8 nouveaux migrations/search) ✅
- [ ] Tests d'intégration auth (OAuth mock)
- [ ] Tests des adapters forge (mock HTTP)
- [ ] Tests multi-user (permissions croisées)
@@ -599,8 +599,8 @@ app/
## 🎯 Ordre de priorité recommandé (état 2026-09)
1. **v5.2.0 → Migrations versionnées** (bloquant pour tout le reste)
2. **v5.0.0 → Command palette + FTS5** — Ctrl+K déjà câblé, petit effort / gros impact
1. ~~**v5.2.0 → Migrations versionnées**~~ ✅ livré (`schema_version` + `app/migrations.py`)
2. ~~**v5.0.0 → Command palette + FTS5**~~ ✅ livré (palette Ctrl+K + `GET /api/search`)
3. **v5.3.0 → Inline databases dans pages** — API serveur prête, uniquement travail éditeur
4. **v5.13.0 → Realtime (WS + présence)** — chantier de parité Notion n°1, socle aussi pour v5.14 (synced blocks)
5. **v5.10.0 → Interactions de bloc** (drag&drop, undo/redo, duplicate) — gros impact UX, effort modéré
@@ -622,4 +622,4 @@ Quality DB views, Agent IA Palette → Éditeur bloc Re
DB avancée, Wiki-links,
Calendrier, AI Templates & lock
*Dernière mise à jour: 2026-09-05 — v4.10.0 Agent IA livré (18 tests) ; audit précédent : v5.10.0 → v5.14.0 ajoutées (interactions de bloc, wiki-links & mentions, templates & page lock, realtime, synced blocks)*
*Dernière mise à jour: 2026-09-06 — v5.0.0 Command Palette + FTS5 et v5.2.0 Migrations versionnées (schema_version) + indexes livrés (267 tests) ; reste v5.3 → v6.0*