A document review workspace
Find a file
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
.claude/rules feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
.forgejo/workflows Add Forgejo CI smoke workflow (enablement template) 2026-07-08 12:30:20 +02:00
registry Add registry/NO_CAPABILITIES.md (reuse-surface REUSE-WP-0017-T03) 2026-07-06 18:50:37 +02:00
src/work feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
workplans feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
.custodian-brief.md chore(consistency): sync task status from DB [auto] 2026-07-09 01:44:39 +02:00
.gitignore feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
.repo-classification.yaml Add .repo-classification.yaml (CUST-WP-0050 T11 agent first-pass) 2026-06-22 17:47:35 +02:00
AGENTS.md feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
CLAUDE.md Normalize agent instructions and workplan frontmatter (STATE-WP-0067) 2026-06-22 23:16:24 +02:00
eslint.config.js feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
INTENT.md Add MVP Coordination section: code lives in citation-evidence umbrella during MVP 2026-05-24 16:51:09 +02:00
LICENSE Initial commit 2026-05-24 13:38:06 +00:00
package.json feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
pnpm-lock.yaml feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
README.md feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
SCOPE.md feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
tsconfig.json feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
vite.config.ts feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00
vitest.config.ts feat: extract review-workspace slice into @citation-evidence/work (CWORK-WP-0001) 2026-07-09 01:49:28 +02:00

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