diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 7ccb46c..dc8425a 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -49,24 +49,7 @@ services: command: > /bin/sh -c " echo 'Running database migrations' && - diesel migration run && - echo 'Ensuring tenant admin exists' && - if papercrate-admin list-tenants | grep -q '^admin '; then - echo 'tenant admin already exists'; - else - papercrate-admin create-tenant admin; - fi && - ADMIN_TENANT_ID=$(papercrate-admin list-tenants | awk '/^admin / {print $2; exit}') && - if [ -z "$ADMIN_TENANT_ID" ]; then - echo 'failed to resolve admin tenant id' >&2; - exit 1; - fi && - echo 'Ensuring demo user credentials' && - (papercrate-admin create-user admin adminadmin || papercrate-admin set-password admin adminadmin) && - echo 'Ensuring demo membership' && - papercrate-admin add-user-to-tenant admin "$ADMIN_TENANT_ID" && - echo 'Ensuring Quickwit index for admin tenant' && - papercrate-admin quickwit-create-index "$ADMIN_TENANT_ID" + diesel migration run " user: root restart: "no" diff --git a/docker-compose.yml b/docker-composer.dev.yml similarity index 72% rename from docker-compose.yml rename to docker-composer.dev.yml index 5bb19cf..9990d19 100644 --- a/docker-compose.yml +++ b/docker-composer.dev.yml @@ -84,24 +84,7 @@ services: command: > /bin/sh -c " echo 'Running database migrations' && - diesel migration run && - echo 'Ensuring tenant admin exists' && - if papercrate-admin list-tenants | grep -q '^admin '; then - echo 'tenant admin already exists'; - else - papercrate-admin create-tenant admin; - fi && - ADMIN_TENANT_ID=$(papercrate-admin list-tenants | awk '/^admin / {print $2; exit}') && - if [ -z "$ADMIN_TENANT_ID" ]; then - echo 'failed to resolve admin tenant id' >&2; - exit 1; - fi && - echo 'Ensuring demo user credentials' && - (papercrate-admin create-user admin adminadmin || papercrate-admin set-password admin adminadmin) && - echo 'Ensuring demo membership' && - papercrate-admin add-user-to-tenant admin "$ADMIN_TENANT_ID" && - echo 'Ensuring Quickwit index for admin tenant' && - papercrate-admin quickwit-create-index "$ADMIN_TENANT_ID" + diesel migration run " user: root restart: "no" diff --git a/frontend/README.md b/frontend/README.md index 9979461..95da726 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -39,7 +39,7 @@ npm run build - Drag-and-drop moves (documents between folders) and file uploads (window-wide or onto a folder) - Search box plus tag chips filter documents across the selected folder and all descendants - Tag management (create/assign/remove) from the detail panel -- Login via the seeded admin account (`admin` / `adminadmin`) with stored JWT session +- Login with a WebAuthn passkey created through the signup flow (no baked-in demo account) - Inline status banner for quick feedback on API interactions ## Assets diff --git a/frontend/src/DesktopWorkspace.jsx b/frontend/src/DesktopWorkspace.jsx index 9732f46..ef9ed5b 100644 --- a/frontend/src/DesktopWorkspace.jsx +++ b/frontend/src/DesktopWorkspace.jsx @@ -23,9 +23,6 @@ const DEFAULT_CANVAS_WIDTH = 1024; const DEFAULT_CANVAS_HEIGHT = 680; const TAG_MIME_TYPES = ['application/x-papercrate-tag', 'text/papercrate-tag']; -const resolveSizeKey = (doc) => - doc?.id || doc?.document_id || doc?.uuid || doc?.original_name || doc?.title || 'doc'; - const CARD_MIN = 240; const CARD_MAX = 340; const TAG_REMOVE_DISTANCE = 160; @@ -1170,7 +1167,7 @@ const syncLayoutSnapshot = useCallback(() => { id: doc.id, width: docWidth, height: docHeight, - seedKey: resolveSizeKey(doc), + seedKey: doc.id, }); }); diff --git a/frontend/src/detail/DetailPanel.jsx b/frontend/src/detail/DetailPanel.jsx index 4d1c2ad..ac86ccf 100644 --- a/frontend/src/detail/DetailPanel.jsx +++ b/frontend/src/detail/DetailPanel.jsx @@ -125,7 +125,7 @@ const TagSection = ({ {datalistId ? ( ) : null} @@ -456,7 +456,7 @@ const DetailPanel = ({ id: doc.id, url, orientation, - alt: doc.title || doc.original_name || 'Document preview', + alt: doc.title, }; }, [ensureAssetUrl, getDocumentAsset], @@ -500,7 +500,7 @@ const DetailPanel = ({ id: singleDoc.id, url, orientation, - alt: singleDoc.title || singleDoc.original_name || 'Document preview', + alt: singleDoc.title, }, ]; }, [singleDoc, singlePreviewNavigator.currentUrl, singlePreviewNavigator.currentMetadata]); @@ -522,7 +522,7 @@ const DetailPanel = ({ id: doc.id, url, orientation, - alt: doc.title || doc.original_name || 'Document preview', + alt: doc.title, }; } return makePreviewItem(doc, 1); @@ -724,7 +724,7 @@ const DetailPanel = ({ ) { return { url: singlePreviewNavigator.currentUrl, - alt: singleDoc.title || singleDoc.original_name || 'Document preview', + alt: singleDoc.title, canGoPrev: singleEffectiveCardinality > 1 && Boolean(singlePreviewNavigator.canGoPrev), canGoNext: @@ -743,7 +743,7 @@ const DetailPanel = ({ ) { return { url: stackPreviewNavigator.currentUrl, - alt: stackTopDocument.title || stackTopDocument.original_name || 'Document preview', + alt: stackTopDocument.title, canGoPrev: topEffectiveCardinality > 1 && Boolean(stackPreviewNavigator.canGoPrev), canGoNext: diff --git a/frontend/src/documents/DocumentsTable.jsx b/frontend/src/documents/DocumentsTable.jsx index 7b5ec8d..98eda97 100644 --- a/frontend/src/documents/DocumentsTable.jsx +++ b/frontend/src/documents/DocumentsTable.jsx @@ -34,8 +34,8 @@ const resolveCorrespondents = (doc) => { doc.correspondents.forEach((entry, index) => { if (!entry) return; - const id = entry.id ?? entry.correspondent_id ?? null; - const name = (entry.name || entry.label || entry.slug || '').trim(); + const id = entry.id; + const name = entry.name.trim(); if (!name) return; if (id && seen.has(id)) { @@ -951,7 +951,7 @@ const DocumentsTable = ({