citation-work/README.md
tegwick 0cd2ca5d04
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s
feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001)
Establishes citation-work as the standalone home of the review workspace,
migrated out of the citation-evidence umbrella app.

- Package/tooling scaffold: package.json, tsconfig, vite/vitest/eslint configs
  with eslint-plugin-boundaries enforcing engine/anchor/source-only imports
- Providers/hooks: EngineProvider, SessionProvider + use* hooks (T02)
- Panes: CollectionList, ViewerShell, EvidenceSidebar (T03/T04/T05)
- Capture/edit: InlineCaptureForm, EvidenceFormBody; UploadDropzone owned here
- ReviewShell: repo-owned three-pane layout with an upload slot seam
- Tests: CollectionList, InlineCaptureForm capture flow, EvidenceSidebar
  export/edit/activation (11 tests, all green)
- Anchor consumed as @citation-evidence/evidence-anchor package; @source kept
  on the umbrella facade for its local viewer-url policy
- Docs (README/SCOPE) refreshed; deferred gaps recorded

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 01:49:28 +02:00

2.9 KiB

citation-work

A document review workspace — the React surfaces for the review workflow: collection list, viewer shell, evidence sidebar, annotation create flow, and review-oriented upload/navigation shell.

Published as the @citation-evidence/work package and consumed by the citation-evidence umbrella app's review mode.

Current state

This repo is now the code of record for the review workspace. The slice was extracted from the umbrella app under CWORK-WP-0001; citation-evidence no longer carries a local src/work/ implementation and instead depends on this package (its @work alias resolves here).

Package surface (src/work/index.ts):

  • Shell: ReviewShell — the three-pane review layout (collection · viewer · sidebar)
  • Panes: CollectionList, ViewerShell, EvidenceSidebar
  • Capture/edit: InlineCaptureForm, EvidenceFormBody
  • Upload: UploadDropzone (also the default ReviewShell upload slot)
  • Providers/hooks: EngineProvider, SessionProvider, and the associated use* hooks; useExportEvidence; useDebugFlag

Upload seam decision (T03)

UploadDropzone is owned by this package — it depends only on @source and the local engine/session hooks, so the shell renders a complete review surface with no umbrella-local imports. ReviewShell still exposes an upload slot so a consumer can substitute its own affordance; when omitted, the package default is used.

Boundary

citation-work depends on:

It may not import from binder-owned or umbrella-app-owned review-to-form code. The dependency edges are enforced by eslint-plugin-boundaries in eslint.config.js.

Alias / extraction notes

citation-engine and evidence-anchor are extracted sibling packages and are consumed by their package names. @source/* still resolves into the umbrella's src/source façade because that façade owns the local viewer-url policy that is not part of the extracted evidence-source package. This is the one remaining transitional edge; see the deferred list below.

Deferred after this extraction

The following were intentionally not part of CWORK-WP-0001 and remain for a subsequent workplan slice (see the workplan's "Deferred After This Workplan" section for the authoritative list):

  • collection search / filter UX,
  • document review-status interactions,
  • evidence-item status / tagging / filtering UX,
  • binder-integrated review-to-form workflows,
  • new viewer/document-format features beyond the current PDF slice,
  • retiring the @source façade edge once a viewer-url home is decided (either a small local module here or an evidence-source addition).

Verification

pnpm install
pnpm typecheck
pnpm lint
pnpm test

Workplan