d58c321c0744fb7bc022ab3a3fac0c569f2b7810
Tiroir Comments - Section « Reactions » au-dessus des fils : émoji, compte (si >1) et texte ancré lu dans le DOM (reactionList() / _anchorText(), offsets source hors pastilles) ; l'état vide ne s'affiche plus s'il reste des réactions. - Suppression : ✕ sur la ligne du tiroir (mes réactions) ET croix ::after au survol de la pastille sur l'émoji que j'ai posé (aucun nœud ajouté → offsets intacts). Deux entrées → removeReaction() → POST toggle → loadReactions(). Menu de sélection (maquette ASCII) - Ligne 4 = rangée scannée : 💬 Comment (libellé) à gauche, 🙂+ réaction à droite (.ft-row-split) ; la réaction sort de la ligne 3. - Entête Skills avec ≡ à droite (::after), liste Skills scrollable. - ✨ Ask AI retiré de la toolbar : doublon exact de « Edit with AI » du pied. - Écart volontaire à la maquette : le barré (T) de la ligne 2 est conservé. Fix racine (flake de gate) - _is_public_host attrape OSError (le garde SSRF renvoie un booléen, il ne lève plus) : un socket.timeout DNS ne bascule plus fetch_og_metadata dans son except Exception → repli silencieux → AssertionError. - fixture stub_dns sur TestOGParser (même motif que test_agent_web_tools) : zéro vrai DNS dans les tests OG. Tests: pytest tests/ -q -n auto → 1390 passed / 0 failed (flake corrigé) ; ruff check app tests → OK ; e2e v764 (réactions dans le tiroir + suppression A/B), v762 (nouvelle ligne 4), v766, v7641, v763 → 6 passed sur :8081 (image flowdeck:v7.67.0 rebuild + redéployée).
FlowDeck
Clone complet de Notion intégré nativement à Gitea — Databases, Pages, Kanban, Calendar, Gallery, Timeline, List, Multi-Users.
7.3.9 — audit sécurité P0→P2 (A1–A26, A33–A36, A43 : auth 401 partout, CSRF sans exemption cookie-auth, SSRF, autoescape, logs d'exceptions) · avant : v6.7.x SSO/SAML + OIDC, v6.6.x agent API, v6.5.x synced blocks, v6.4.0 realtime, PWA offline
Quick Start
cp .env.example .env
# Éditer .env avec votre token Gitea
docker compose up -d
# → http://localhost:8080
Features
Database & Properties (v1.3–v1.5)
- Collections: databases indépendantes de Gitea, schéma JSON
- 21 types de propriétés: title, text, number, select, status, date, person, checkbox, url, email, phone, files, unique_id, relation, rollup, formula + auto-props
- Relations bidirectionnelles + Rollups (12 agrégations) + Formulas (19 fonctions)
- GiteaBoardCompat: adaptateur boards Gitea legacy → Collections
Vues Multiples (v1.6–v1.7)
- Table: colonnes SSR, triables
- Board (Kanban): colonnes, groupes, drag & drop
- Calendar: grid mensuel, navigation, événements
- Gallery: cartes visuelles, card_size configurable
- List: vue compacte avec preview
- Timeline: barres Gantt horizontales
- Status Overview: Donut chart SVG
- Team Load: Barres empilées
Sub-items & Dépendances (v1.8)
- Sub-items: parent_id auto-référence, hiérarchie illimitée
- Status aggregate: parent = Done si tous enfants Done
- Dependencies: Blocking/Blocked by, contrainte de transition
My Tasks (v1.9)
- Dashboard cross-collection agrégeant toutes les tâches assignées
- Vues: All, Today, Overdue, Next 7 days
Multi-User & Collaboratif (v2.0)
- Workspaces: espaces partagés avec rôles (admin, editor, commenter, viewer)
- Comments: commentaires threadés sur les pages
- Page History: historique des modifications avec snapshots
- Favorites: favoris par utilisateur
- Templates: database + page templates
- CSV Import/Export
- Public Sharing: lien de partage lecture seule
API & Intégrations (v6.3–v6.6)
- API publique REST v2:
/api/v2— CRUD complet, Bearer + scopesread/write/admin, pagination, filtres, erreurs RFC 7807, idempotence, audit — guide · OpenAPI/docs - API agent publique (v6.6):
/api/v2/agents/*— agents, conversations, run synchrone JSON, journal d'actions + rollback,triggerexterne - Marketplace de skills (v6.6): export/import portable + galerie de 6 presets installables (
/api/v2/skills/*), section « Galerie » dans la palette/de l'agent - API publique v1:
/api/v1(lecture seule, compat) - Webhooks sortants: gestion + dispatcher d'événements (CRUD v2)
- Web Clipper: extension navigateur Manifest V3 (article/sélection/bookmark/screenshot)
- PWA: manifest.json + service worker, offline support
UI Notion-Style (v1.1–v1.2)
- Sidebar gauche avec sections hiérarchiques
- Topbar avec breadcrumbs (workspace > projet > page)
- Dark mode Notion:
#191919fond,#222222sidebar - Éditeur de blocs: slash menu (/), navigation clavier, placeholders
Intégration Gitea
- Issues Gitea → cartes, sync labels, milestones, assignees, due dates
- OAuth2 Gitea, CSRF, rate limiting, webhooks
Stack
| Couche | Techno |
|---|---|
| Frontend | Jinja2 + HTMX + Alpine.js + SortableJS + CSS |
| Backend | Python 3.13 + FastAPI + httpx |
| BDD | SQLite (WAL, 21 tables) — /data/flowdeck.db |
| Déploiement | Docker (python:3.13-slim), docker-compose |
Configuration
GITEA_URL=https://git.dracodev.net
GITEA_TOKEN=votre_token
APP_PORT=8080
DATABASE_URL=sqlite:////data/flowdeck.db
Tests
python3 -m pytest tests/ -v # 764/764 passent (0 skip)
Roadmap
Voir ROADMAP.md — 7/7 blocs complétés, 52/52 features ✅
Licence
MIT
Languages
Python
58.1%
JavaScript
21.3%
HTML
17.3%
CSS
3.3%