docs: mise à jour ROADMAP.md, CHANGELOG.md et docs/ROADMAP.md
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped

ROADMAP.md:
- Ajout v2.4.0 (tags/user), v2.5.0 (admin panel), v2.6.0 (my account)
- Ajout v2.7.0 (Gitea P1), v2.7.1 (private pages)
- Roadmap future: v2.8.0 (Gitea P2), v2.9.0 (GitHub), v3.0.0 (Pro UX)

CHANGELOG.md:
- Entries v2.4.0 → v2.7.1 avec tous les détails
- Structure Added/Fixed cohérente

docs/ROADMAP.md (v3.0):
- Phase 1-5 checkboxes mises à jour (45/52 items done)
- Reste: GitHub OAuth, Quick switch, API tokens, sessions actives
This commit is contained in:
2026-07-13 17:05:45 -04:00
parent 5cc27b4535
commit c1f854a54a
3 changed files with 240 additions and 294 deletions
+76 -4
View File
@@ -1,9 +1,82 @@
# Changelog — FlowDeck
## v2.7.1 (2026-07-13) — Private Pages Gitea
### Added
- **Table `gitea_private_pages`**: pages FlowDeck locales liées à un projet Gitea (user_id, owner, repo)
- **API CRUD**: GET/POST/PUT/DELETE `/api/gitea/projects/{owner}/{repo}/private-pages`
- **UI**: liste des pages privées + éditeur titre/contenu dans le workspace Gitea
- **Sidebar**: lien "Private Pages" dans l'arborescence du workspace
- **Persistance**: les pages survivent au changement de workspace / session
### Fixed
- `get_user_repos(limit=100)` — `bruno/flowdeck` était tronqué à la page 2 (30 repos par défaut)
## v2.7.0 (2026-07-13) — Intégration Gitea Phase 1
### Added
- **OAuth2 Provider**: Gitea comme fournisseur OAuth2 pour FlowDeck (Client ID/Secret dans `.env`)
- **Redirect URI dynamique**: basé sur le header `Host` — fonctionne depuis `localhost` et `192.168.x.x`
- **Workspace listing**: 2 sections — My Workspaces + Gitea Projects (groupés par organisation)
- **Tabs par org**: All | user | org1 | org2 avec compteurs de projets
- **Barre de recherche**: filtrage live par nom/description dans Gitea Projects
- **Lazy tree**: arborescence chargée un dossier à la fois (API Gitea `GET /repos/{o}/{r}/contents`)
- **File viewer**: lecture fichiers Gitea avec décodage base64
- **Éditeur + commit**: modifier un fichier et commiter dans Gitea avec message personnalisé
- **Delete fichier**: suppression avec confirmation + commit
- **Arborescence dans le sidebar**: comme un workspace local, avec lazy-load des sous-dossiers
- **Settings › Integrations**: connecter/déconnecter Gitea (`GET /api/gitea/status`, `DELETE /api/gitea/disconnect`)
- **Fallback token admin**: opérations GET utilisent le token serveur si pas de token OAuth utilisateur
- **Write ops protégées**: commit et delete exigent un token OAuth utilisateur
- **Routes API**: `/api/gitea/orgs`, `/api/gitea/projects`, `/api/gitea/projects/{o}/{r}/tree`, `/api/gitea/projects/{o}/{r}/file`, `/api/gitea/projects/{o}/{r}/labels`
### Fixed
- Bouton "Register with Gitea" ne crée plus de session admin fantôme (fallback retiré)
- `_sidebar_data` gère le cookie `gitea:owner:repo` pour l'arborescence
## v2.6.0 (2026-07-13) — My Account & Auth Locale
### Added
- **Section My Account**: modifier username, full name, email, mot de passe
- **Toggle mot de passe**: bouton voir/cacher dans les formulaires login/register
- **Label "Email or username"**: login accepte les deux formats
- **Refresh cookie session**: après modification du compte, le cookie est mis à jour
- **Register avec Gitea**: boutons dynamiques "Login/Register with Gitea" selon l'onglet actif
### Fixed
- Session cookie non rafraîchi après `PUT /api/settings/account` (création nouvelle session)
- Input login `type="email"` → `type="text"` (accepte usernames non-email)
## v2.5.0 (2026-07-13) — Administration Avancée
### Added
- **Premier compte = admin automatique**: `is_admin=1` pour le premier utilisateur créé
- **Panneau Admin dans Settings**: visible uniquement pour les admins
- **Users & Roles**: créer/modifier/supprimer utilisateurs, changer rôles
- **Table `login_history`**: audit des connexions (IP, user_agent, timestamp)
- **Statistiques par utilisateur**: workspaces, pages, dernière connexion
- **API `/api/admin/*`**: users, stats, audit — protégées par `admin_required`
- **CSRF fix**: token CSRF dans toutes les requêtes admin (`adminFetch`)
## v2.4.0 (2026-07-13) — Tags Personnalisés par Utilisateur
### Added
- **Tags isolés par `user_id`**: chaque utilisateur voit uniquement ses propres tags
- **`UNIQUE(name, user_id)`**: remplace `UNIQUE(name)` dans la table `tags`
- **Migration**: tags existants assignés au premier utilisateur
- **Filtrage transparent**: l'API retourne les tags filtrés par `user_id` (session cookie)
### Fixed
- Affichage des tags dans le menu contextuel workspace (sync Alpine.js)
- Création de tag avec couleur persistée
- Fermeture auto du menu contextuel après ajout de tag
- Filtrage par tags: `toggleTagFilter()` appelle `doFilter()`
- Pastilles tags: fond = couleur du tag, sans rond séparé
## v2.3.0 (2026-07-12) — Multi-Vues Workspace & Preview Panel
### Added
- **Sélecteur de vue**: 🌳 Tree, 📋 List, 📊 Details, 🏷️ Title, 📝 Content — 5 modes d'affichage
- **Sélecteur de vue**: Tree, List, Details, Title, Content — 5 modes d'affichage
- **Vue List**: liste compacte avec Name, Type, Size, Modified
- **Vue Details**: table complète avec Path, Author, Tags
- **Vue Title**: grille de cartes avec icônes et métadonnées
@@ -21,12 +94,12 @@
### Added
- **Tags**: système complet de tags avec tables `tags` + `page_tags`, CRUD API
- **API Tags**: `GET/POST/DELETE /api/local-workspace/items/{id}/tags`, `GET /api/local-workspace/tags`, `GET /api/local-workspace/tags/search?tags=...`
- **API Tags**: `GET/POST/DELETE /api/local-workspace/items/{id}/tags`, `GET /api/local-workspace/tags`
- **Vue Table enrichie**: colonnes Name, Path, Size, Modified, Type, Author, Tags
- **Filtrage par tags**: barre de chips avec compteurs, clic pour filtrer
- **Ajout/retrait tags inline**: bouton + dans la table, chips avec × pour retirer
- **Tree endpoint enrichi**: chaque nœud retourne `size`, `size_display`, `created_at`, `updated_at`, `author`, `tags`
- **Filtre "Dossiers"**: nouveau chip 📁 Folders dans la barre de filtres
- **Filtre "Dossiers"**: nouveau chip Folders dans la barre de filtres
- **Auto-switch table**: quand recherche/filtre actif, passe en vue table automatiquement
## v2.1.1 (2026-07-12) — Fix Arborescence Workspace
@@ -36,7 +109,6 @@
- **parentFolder**: corrigé le bug où `parentFolder` était nullifié avant l'insertion dans l'arbre JS
- **displayTree**: nouvelle référence array après chaque mutation pour forcer le re-render Alpine.js
- **doSort/doFilter**: gèrent maintenant le cas où un filtre/tri est actif après création
- **_doUpload**: corrigé `this._reloadAfterAction` → `self._reloadAfterAction`
## v2.1.0 (2026-07-10) — Intégrations Avancées