bruno
780cccf79f
feat: Notion sidebar complete — 7 sections, nav icons, auto-update title
...
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped
- Sidebar: 7 collapsible sections (Meetings, Recents, Favorites, Agents, Shared, Private, Notion apps)
- Nav icon row: Home with text + icon, Chat/Inbox/Search icon-only, collapse on right
- Notion apps: Library, My Tasks, Trash, Help
- Footer: New chat Ctrl+O + New page buttons
- Auto-update: sidebar items reflect title changes immediately on save
- CSS: nav-icon-btn, home-btn, collapse-btn, empty-hint, outline none
2026-07-09 16:39:22 -04:00
bruno
a585587e4c
feat: Notion-style block editor v6 + sidebar refactoring
...
FlowDeck CI / test (push) Failing after 6s
FlowDeck CI / docker (push) Has been skipped
Block editor:
- Vanilla JS rendering (renderBlock) — zero Alpine x-for on blocks
- 15 block types with Notion placeholders (Heading 1-4, Toggle list, Empty quote, etc.)
- Event delegation keydown handler on container
- sync() before every render() — content preserved across Enter/Backspace/type changes
- Slash menu with event delegation, single innerHTML set, window.E for applySlash
- Markdown shortcuts use idx (not bid) to avoid stale references after render
- data-bid only on contentEditable (not .block-wrapper) — fixes '+' artifact
- .empty class + outline:none on block-content
Sidebar:
- Notion-style collapsible sections (Recents/Private/Shared/Notion apps)
- Workspace header with chevron, Search tab, Home tab
- Sticky footer with '+ New page' button
- sectionsOpen/toggleSection/toggleWorkspaceMenu/openQuickFind in appState
- CSS: uppercase section headers, 240px width, collapsed 56px mode, border-right
2026-07-09 15:47:43 -04:00
bruno
205f09838f
fix: block editor visibility — flex layout + 400ms init delay
...
FlowDeck CI / test (push) Failing after 3s
FlowDeck CI / docker (push) Has been skipped
- page-editor-wrapper: min-height:0 + display:flex column to prevent collapse
- blocks-container: flex:1 to fill remaining space
- init setTimeout: 200→400ms for reliable Alpine render
- Removed min-height:100% that caused overflow clipping
2026-07-09 11:40:44 -04:00
bruno
d4cd45c6cb
feat: Notion-style block editor v1 + Move to Trash + fixes
...
FlowDeck CI / test (push) Failing after 8s
FlowDeck CI / docker (push) Has been skipped
- Block editor: 13 block types with contentEditable + vanilla JS event delegation
- Slash menu /: 14 commands, 100% vanilla JS (zero Alpine conflicts)
- Keyboard: Enter=new block, Shift+Enter=soft break, arrows navigate blocks
- Drag & drop: SortableJS with 6-dot handles on block-wrapper
- Move to Trash: DELETE /board/api/pages/{id} + instant sidebar cleanup
- Placeholders: 'New page' + 'Type / for commands' in gray (CSS :empty::before)
- Redirect after delete stays in project context via workspaceKey
- Fixes: title auto-save, cursor positioning, x-for keys, Sortable guard
2026-07-09 11:29:36 -04:00
bruno
4c49d43c66
feat: sous-pages — parent_id, sidebar hiérarchique, bouton +New sub-page
...
FlowDeck CI / test (push) Failing after 3s
FlowDeck CI / docker (push) Has been skipped
- DB: parent_id dans table pages (ALTER TABLE migration auto)
- Sidebar: pages parent_id IS NULL affichées, sous-pages indentées en dessous
- API: create_page accepte parent_id (0 = racine)
- JS: newSubPage extrait page ID et passe parent_id
- page_editor: liste les sous-pages + bouton '+ New sub-page'
2026-07-08 16:07:25 -04:00
bruno
b826cfc247
fix: auto-save met à jour le titre du sidebar sans recharger la page
...
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped
- sidebar items: attribut data-page-id ajouté pour ciblage DOM
- save(): après PUT réussi, met à jour .page-name dans le sidebar
- saveTitle(): reload la page (changement de titre = reload ok)
2026-07-08 16:01:24 -04:00
bruno
c00442c693
fix: PUT /board/api/pages exempté CSRF + reload après saveTitle
...
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped
- CSRF middleware: excluded_paths utilise maintenant startswith (pas exact match)
- /board/api/pages/* exempté — les PUT depuis page_editor passent
- saveTitle() reload la page après sauvegarde → sidebar mis à jour
2026-07-08 15:57:25 -04:00
bruno
1d2c2c0919
fix: context menu implémenté + page editor CSRF + workspace context
...
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped
- Context menu: toutes les actions fonctionnelles (favorite, copyLink, duplicate, rename, move, delete, openTab)
- Page editor: CSRF token ajouté dans save() et saveTitle()
- Page editor: workspace context restauré (owner/repo extrait de pages.workspace)
- Route /pages/{id}: utilise board._sidebar_data pour préserver le contexte projet
2026-07-08 15:51:24 -04:00
bruno
bed326ee9b
feat: menu New page (Empty/Database/Kanban) + slash commands / dans l'éditeur
...
FlowDeck CI / test (push) Failing after 5s
FlowDeck CI / docker (push) Has been skipped
- Topbar bouton New ▾ avec dropdown: Empty page, Database, Kanban board
- page_editor: commandes slash / (/h1, /h2, /list, /todo, /code, /table, /quote...)
- Fonctions JS: createEmptyPage, createDatabase, createBoard
- State showNewPageMenu dans Alpine.js
2026-07-08 15:26:36 -04:00
bruno
b10118eddc
feat: sidebar Kanban board + pages Markdown + boutons + et 📚 fonctionnels
...
FlowDeck CI / test (push) Failing after 4s
FlowDeck CI / docker (push) Has been skipped
- Sidebar: 'Kanban board' affiché avant les 4 sous-vues
- DB: nouvelle table 'pages' (workspace, title, content, parent_section)
- API: POST /board/api/pages, GET/PUT /board/api/pages/{id}
- UI: page_editor.html — éditeur Markdown avec preview live
- UI: boutons + créent une page Markdown, bouton 📚 ouvre la page
- Dashboard: sidebar_data utilise BDD pages + workspace
- board.py: _sidebar_data enrichi (Kanban board + pages DB)
2026-07-08 15:02:15 -04:00