Commit graph

5 commits

Author SHA1 Message Date
fe75ea5c45 fix(database-view): send tableId to bridge and correct SSE path
useViewData omitted the tableId query param required by the bridge
GET /views/:id/data route -> 400 'tableId query param required' and a
blank 'Could not load view'. The SSE consumer hit /api/v1/events/sse
but the bridge mounts the stream at /api/events -> 404 reconnect loop.
Thread tableId through ViewDataParams and all five callers; point the
SSE URL at /api/events.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 09:20:38 +00:00
843986d5c2 feat(database-view): admin UI and create-database slash command
Adds two new entry points around the bridge-backed database view:
- /database admin modal to manage fields (field-admin-modal)
- slash command to create a database from the editor
  (create-database-modal + create-database-slash)
Wires the new components into the editor slash menu and the
database-view module index.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 09:54:06 +00:00
ba8d8678a0 test(e2e): add data-testid attributes for Playwright e2e (Patch 008 R3.1.e)
Minimal testid additions to 4 renderer files so Playwright can target
stable selectors: table-renderer, cell-{rowId}-{fieldName}, kanban-board,
kanban-column-{label}, kanban-card-{rowId}, calendar-renderer,
inline-editor-input, inline-editor-readonly.

Also adds Dockerfile.e2e for the client build used in docker-compose.e2e.yml.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 00:37:39 +02:00
f3fae2ac78 feat(client): add kanban + calendar renderers + inline edit for R3.1.d
- KanbanRenderer: @dnd-kit drag-drop, group by single_select field,
  optimistic update + rollback, empty column placeholder, read-only mode
- CalendarRenderer: @fullcalendar month/week/day toggle, eventDrop ->
  PATCH date field, event click -> RowDetailModal, stub deps noted
- InlineEditor: polymorphic (text/number/date/select/multi-select),
  save on blur/Enter, cancel on Escape, permission denied read-only
- RowDetailModal: simple field detail view opened from calendar events
- useUpdateRow: generic PATCH with React Query v5 optimistic+rollback
- usePermissions: reads acadenice_permissions from window global or cookie
- patchRow helper added to bridge-client.ts
- DatabaseViewComponent: dispatches kanban/calendar to real renderers
- TableRenderer: integrates InlineEditor on double-click cells
- i18n: +12 keys (kanban.*, calendar.*, edit.*, row_detail.*) in en-US + fr-FR
- 5 new test suites: kanban, calendar, inline-editor, use-update-row, use-permissions
- Updated database-view-component.test.tsx for R3.1.d dispatch

Deps to install: @dnd-kit/core@^6 @dnd-kit/sortable@^8 @dnd-kit/utilities@^3
  @fullcalendar/react@^6 @fullcalendar/daygrid@^6
  @fullcalendar/timegrid@^6 @fullcalendar/interaction@^6

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 00:24:12 +02:00
71c2abad8a feat(client): add database-view Tiptap extension for R3.1.c
- Tiptap Node extension (database-view) with attrs tableId/viewId/viewType/bridgeUrl
- NodeViewWrapper dispatches on viewType: grid/table -> TableRenderer, other -> PlaceholderRenderer
- TableRenderer (HTML table, TanStack Table v8 migration-ready - dep not yet installed)
- InsertDatabaseModal (Mantine, 2-step: table -> view selection)
- useDatabaseRealtimeUpdates SSE hook (EventSource + exponential backoff + React Query invalidation)
- bridge-client.ts (axios wrapper, per-origin singleton, cookie Bearer passthrough)
- Slash command /database registered in menu-items CommandGroups
- DatabaseViewExtension wired in mainExtensions array
- i18n: 22 keys added in en-US and fr-FR
- 41 Vitest tests across 5 suites (extension schema, component dispatch, renderer states, modal steps, SSE hook)

Upstream patches: extensions.ts (+2 lines), menu-items.ts (+4 lines), 2 translation files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 00:07:33 +02:00