feat(collab): v4.9.0 Collaboration - commentaires inline, mentions @, notifications in-app + email
This commit is contained in:
+33
-1
@@ -1,6 +1,38 @@
|
||||
# Changelog — FlowDeck
|
||||
|
||||
## v4.8.1 (2026-09-03) — Fix bloc Tableau : boutons + Ligne / + Colonne, redimensionnement
|
||||
## v4.9.0 (2026-09-04) — Collaboration : commentaires inline, mentions @, notifications
|
||||
|
||||
> Implémentation complète du pilier « Collaboration » — basée sur la revue des docs Notion
|
||||
> (`docs/Guide_Complet_Notion_sharing_collaborartion.md`) : commentaires avec ancres inline,
|
||||
> mentions `@` avec autocomplétion, centre de notifications in-app et emails SMTP.
|
||||
|
||||
### Added
|
||||
- **Commentaires inline sur les pages** : sélection d'un texte dans l'éditeur → bouton flottant
|
||||
« 💬 Comment » → commentaire ancré (`block_id` + offsets). Table `comments` étendue
|
||||
(`target_type`, `target_id`, `anchor_block_id`, `anchor_start`, `anchor_end`) et **migrée**
|
||||
de son FK `collection_pages` vers un schéma générique (aucune perte de données, idempotente).
|
||||
- **Panneau de commentaires** dans l'éditeur : liste, résolution (✔/↪), suppression, compteur
|
||||
dans la topbar.
|
||||
- **Mentions `@`** : autocomplétion en temps réel (recherche d'utilisateurs), insertion de
|
||||
`@login` dans un bloc ou un commentaire → notification ciblée à l'utilisateur mentionné.
|
||||
- **Centre de notifications in-app** : cloche dans la topbar (badge non-lus, polling 30s),
|
||||
panneau déroulant, « mark as read » / « mark all read ». Table `notifications`.
|
||||
- **Emails de notification** : service SMTP (`app/services/mailer.py`) + templates HTML ;
|
||||
préférences email par utilisateur (comments/mentions) réglables dans Settings → Notifications.
|
||||
Sans SMTP configuré, seules les notifications in-app sont émises (aucune erreur).
|
||||
- **API** : `GET/POST /api/notifications`, `/api/notifications/read|read-all|prefs`,
|
||||
`/api/notifications/users/search`, `GET/POST /api/pages/{id}/comments`,
|
||||
`PUT/DELETE /api/comments/{id}`, `POST /api/pages/{id}/mentions`.
|
||||
- **Config SMTP** (`SMTP_HOST/PORT/USER/PASSWORD/FROM/USE_TLS`, `APP_BASE_URL`) dans `.env.example`.
|
||||
|
||||
### Infra
|
||||
- `VERSION` → 4.9.0 ; `app/main.py` (log + `version=`) ; router `notifications` + `collaboration`
|
||||
enregistrés ; exclusions CSRF (`/api/notifications`, `/api/comments`) ; le `RateLimitMiddleware`
|
||||
respecte désormais `settings.rate_limit_enabled`.
|
||||
|
||||
### Tests
|
||||
- **208 tests verts** (+9 v4.9.0 : table notifications, commentaires inline + mentions, centre de
|
||||
notifications, préférences, recherche utilisateurs, résolution/suppression, mentions de page).
|
||||
|
||||
### Fixed
|
||||
- **Bouton « + Row » (bas du tableau) inopérant** — le code passait la nouvelle ligne en argument `deleteCount` de `Array.splice` au lieu d'utiliser `splice(index, 0, ligne)` : aucune ligne n'était jamais insérée. Corrigé ; les insertions de lignes (menu contextuel aussi) fonctionnent.
|
||||
|
||||
Reference in New Issue
Block a user