# Changelog — FlowDeck ## v1.5.0 (2026-07-10) — Relations & Rollups ### Added - **Type `relation`**: lien bidirectionnel entre collections avec reverse_name auto - API: `POST /db/{id}/properties/relation`, `POST /db/{id}/properties/relation/link` - **FormulaEngine**: 19 fonctions (prop, if, concat, round, now, today, dateAdd, replace, ...) - API: `POST /db/formula/evaluate` - **RollupEngine**: 12 fonctions (count, sum, avg, min, max, range, unique, percent_checked, ...) - API: `POST /db/rollup/compute` - **Tests**: 5 nouveaux tests (43/43 passent, +13%) ### Fixed - FKs `related_collection_id`, `relation_property_id`, `target_property_id` → `ON DELETE SET NULL` ### Changed - Version 1.4.0 → 1.5.0 ## v1.4.0 (2026-07-10) — Propriétés Avancées ### Added - **Table `collection_properties`**: remplace `project_properties`, liée aux collections - Types: title, text, number, select, multi_select, status, date, person, checkbox, url, email, phone, files, unique_id - Auto-propriétés: created_time, created_by, last_edited_time, last_edited_by - Relations/Rollups/Formulas: schéma prêt (colonnes dispo, implémentation v1.5) - **Service `property_types.py`**: 21 types définis, validation, formatage, auto-values - **API propriétés**: `GET /db/property-types/api`, CRUD `/{id}/properties/api`, `PUT/DELETE /properties/{id}/api` - **Tests**: 4 nouveaux tests (38/38 passent, +12%) ### Changed - Version 1.3.0 → 1.4.0 ## v1.3.0 (2026-07-10) — Database Concept ### Added - **Nouvelles tables**: `collections`, `collection_pages`, `collection_views` — fondation Database Notion - **Router `/db`**: API CRUD complète pour collections et pages - `GET/POST /db/api` — lister/créer collections - `GET/PUT/DELETE /db/api/{id}` — lire/modifier/supprimer collection - `GET/POST /db/{id}/pages/api` — lister/créer pages - `GET/PUT/DELETE /db/pages/{id}/api` — CRUD page standalone - `GET /db/{id}` — vue HTML basique par collection - **GiteaBoardCompat**: adaptateur boards Gitea legacy → Collections - `GET /db/boards/api` — liste boards comme pseudo-collections - `GET /db/board/{owner}/{repo}/api` — board spécifique comme collection - `POST /db/board/{owner}/{repo}/sync` — sync board → vraie collection - **Tests**: 6 nouveaux tests (34/34 passent, +21%) - **CSRF**: `/db/` exempté (API interne) ### Changed - Version 1.0.0 → 1.3.0 (main.py, api.py, health) - `db.py` init: 3 nouvelles tables + index - Architecture DB: `collection_pages` utilise `property_values_json` (JSON flexible) ## v1.0.0 (2026-07-08) — Production ### Added - **UI Notion-complete**: sidebar 240px, topbar 44px, dark mode (#191919/#222/#333) - **5 vues**: Kanban, Detailed Board, Table, Status Overview (SVG donut), Team Load (stacked bars) - **Filtres cumulables AND** avec status dropdown checkboxes, filtres par assignee/tag - **Tri multi-critères** hiérarchique (N niveaux, asc/desc) - **Card detail modal**: titre éditable, propriétés, checklists, commentaires Gitea - **Création d'issues inline** depuis le board - **Propriétés custom** par projet: select, multi_select, date, person, text - **AI keywords**: extraction automatique depuis labels + body, table `ai_keywords` - **Sync API**: `POST /board/api/sync/{owner}/{repo}` — bidirectionnelle complète - **CI/CD**: Gitea Actions workflow - **Tests**: 25 tests, couvrant toutes les vues, APIs, filtres, tris ### Changed - FastAPI `on_event` → `lifespan` handler (deprecation fix) - Version bump 0.3.0 → 1.0.0 - CSS: 31 KB design system Notion (700+ lignes) - 10 templates Jinja2 (base, board, card, detail, table, status, team, detailed, fragment, dashboard) ### Fixed - Team Load bug: status key mismatch (done → complete) - CSRF: 403 protection vérifiée sur toutes les routes POST ## v0.3.0 (2026-06-??) - OAuth2 Gitea, CSRF, rate limiting, webhooks ## v0.2.0 (2026-05-??) - Dashboard + Board Kanban + Gitea sync + Notes + Docker