dorfteich/apps/api/src
Claude Opus 4.8 e2f942c0ff
All checks were successful
CD / Build and push images (push) Successful in 3m43s
CI / Lint, typecheck, test (push) Successful in 2m56s
CI / Auth e2e pack (push) Successful in 3m53s
CI / Build container images (push) Has been skipped
CD / Deploy to Test (push) Successful in 10s
CD / Smoke tests against Test (push) Successful in 1m20s
CD / Promote to Int (push) Successful in 11s
Add document import UI in the sidebar (#64)
An "Import document" action in the pond sidebar: pick a .docx/.odt/.md file
(or several), upload with per-file progress, and open the new page. A
.docx/.odt polls the conversion job (queued → converting → done); a .md
imports directly and comes back already succeeded. Failures stay listed with
the localized error and a retry; concurrent imports all complete and appear.

- web apps/web/src/import/: useImport hook (upload via apiUploadFile → poll
  GET /jobs/:id → resolve the page slug → navigate; first success of a batch
  navigates, every success refreshes the sidebar) and ImportControl (hidden
  file input, accept from shared IMPORT_EXTENSIONS, per-file status list).
  Wired into Sidebar next to "new page"; `import` i18n namespace (de+en).
- api: ImportService accepts .md/.markdown and imports in-process (no job),
  returning a succeeded ConversionJobView with the created resultPageId
  ("Markdown imports directly"); the media+parse+create tail is now shared
  between the job path and the sync path (createPageFromMarkdown), and a
  conversion error on the sync path maps to an HTTP status. shared
  IMPORT_EXTENSIONS gains md/markdown.
- e2e apps/web/e2e/import.spec.ts + CI step: .docx corpus fixture opens the
  converted page (self-skips without a reachable pandoc sidecar — CI's e2e
  stack has none, same as #63; verified locally + on stage), .md opens
  directly, an unsupported .txt shows the localized error with no page
  created, and two concurrent .md imports both complete.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
2026-07-10 09:38:31 +02:00
..
admin Add Site-Admin user management (#59) 2026-07-10 00:31:41 +02:00
auth Add Site-Admin user management (#59) 2026-07-10 00:31:41 +02:00
common Add page trash: soft delete, restore, and purge job (#31) 2026-07-08 12:48:17 +02:00
compaction Fix compaction test Bytes typing for strict typecheck (#40) 2026-07-09 08:23:55 +02:00
config Add NestJS API skeleton with config, logging, and /healthz 2026-07-04 19:10:07 +02:00
files Import .docx and .odt documents as new pages (#63) 2026-07-10 07:34:43 +02:00
grants Add effective-permissions inspector (#57) 2026-07-10 00:00:27 +02:00
health Add conversion job queue and pandoc sidecar integration (#62) 2026-07-10 04:06:27 +02:00
i18n Add mail outbox with SMTP delivery worker and templates 2026-07-05 00:46:12 +02:00
import-export Add document import UI in the sidebar (#64) 2026-07-10 09:38:31 +02:00
inspector Add effective-permissions inspector (#57) 2026-07-10 00:00:27 +02:00
labels Wire real permissions into collab tokens and revocation (#53) 2026-07-09 18:48:42 +02:00
links Enforce permissions in API guards and retire interim access (#52) 2026-07-09 16:31:41 +02:00
mail Add mail outbox with SMTP delivery worker and templates 2026-07-05 00:46:12 +02:00
members Add pond member management UI (#54) 2026-07-09 20:22:52 +02:00
pages Import .docx and .odt documents as new pages (#63) 2026-07-10 07:34:43 +02:00
permissions Wire real permissions into collab tokens and revocation (#53) 2026-07-09 18:48:42 +02:00
ponds Enforce permissions in API guards and retire interim access (#52) 2026-07-09 16:31:41 +02:00
prisma Add Prisma with PostgreSQL, automatic migrations, and /readyz 2026-07-04 19:16:44 +02:00
public Add public read access and server-rendered page HTML (#56) 2026-07-09 23:46:25 +02:00
quotas Quota foundation: overrides, resolution, race-safe consumption (#22) 2026-07-05 20:55:59 +02:00
rate-limit Add DB-backed rate limiting with guard and decorator 2026-07-05 00:43:54 +02:00
scheduler Add page trash: soft delete, restore, and purge job (#31) 2026-07-08 12:48:17 +02:00
search Enforce permissions in API guards and retire interim access (#52) 2026-07-09 16:31:41 +02:00
settings Add non-image attachments with allowlist, SVG policy, and file managers (#61) 2026-07-10 02:52:40 +02:00
testing Add conversion job queue and pandoc sidecar integration (#62) 2026-07-10 04:06:27 +02:00
trash Enforce permissions in API guards and retire interim access (#52) 2026-07-09 16:31:41 +02:00
users Enforce permissions in API guards and retire interim access (#52) 2026-07-09 16:31:41 +02:00
versions Enforce permissions in API guards and retire interim access (#52) 2026-07-09 16:31:41 +02:00
app.module.ts Add conversion job queue and pandoc sidecar integration (#62) 2026-07-10 04:06:27 +02:00
main.ts Add page CRUD and Yjs state persistence (#23) 2026-07-05 22:25:41 +02:00