Commit Graph

6 Commits

Author SHA1 Message Date
jules
c3dc237aa4 feat(kb-ui): lift search + collection load-more into the lib
Both consumers (embedded + the coming standalone) need the same search UI and
paginated lists; keep them from diverging by owning both here.

- KnowledgeSearch (components-search.tsx): the search input + paginated results
  panel, over an injected onSearch. Owns query/results/loading/error/clear and a
  "Load more" for search results; renders the caller's `browse` content when
  there is no active search. Replaces each app hand-rolling hit rendering.
- CollectionList: onLoadMore/hasMore/loadingMore (mirrors ObjectList), so a
  paginated corpus list gets a load-more affordance.

Stacked on fix/kb-ui-p0 (ObjectList already gained load-more there). tsc clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 12:05:07 +10:00
jules
66221afedc fix(kb-ui): P0 correctness — TextReader race/errors, outline nav, claims drop, object load-more
- TextReader: monotonic request guard (stale slice can't clobber current) +
  catch with a retry surface instead of a blank panel / unhandled rejection;
  Read-more guarded and shows loading.
- OutlineNav: an explicit section selection now wins over the initial citation
  highlight, so clicking sections works on ?start=&end= views (was inert).
- ObjectViewer: reset section + image on object switch (no bleed across
  citation navigation); catch the blob resolve.
- ObjectList: optional onLoadMore/hasMore/loadingMore (paginated corpuses).
- ClaimsReviewQueue: catch-all "Awaiting review" bucket so a claim the queue
  returned is never silently dropped (e.g. an open-conflict singleton whose
  counterpart is not in the payload).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 21:03:36 +10:00
jules
efbf4b2e61 W6: export panel
components-export: ExportPanel (scope picker + request) + ExportJobRow (status,
download on ready, error verbatim; timer lives in the app per the polling
contract). Demo Export tab polls getExport app-side. Lib confirmed
self-contained (react + lucide only); README/tsconfig updated. Typechecks clean.

Co-Authored-By: Claude Fable 5 (build) <noreply@anthropic.com>
2026-07-07 10:05:46 +10:00
jules
40d2f94795 W5: claims review queue
components-claims: ClaimsReviewQueue (proposed → conflicts → unreviewed per
claims-spec §2.3), ClaimCard (confirm/reject/reopen tombstone), ConflictPair
(both sides raw, three resolutions: keep-with-supersede, dismiss-both,
reject-newcomer; human_confirmed can't be rejected). Tiers raw, no scores.
Demo Review tab wired. Typechecks clean.

Co-Authored-By: Claude Fable 5 (build) <noreply@anthropic.com>
2026-07-07 10:03:54 +10:00
jules
9dd162d815 W4: object viewer
components-object: ObjectList, ObjectViewer (CatalogCard + ProvenancePanel +
SupersessionBanner + OutlineNav + TextReader with citation highlight/scroll +
load-more, image render, vault notice, action bar), CitationLink + parseCite.
Demo browses collections → objects → viewer. Typechecks clean.

Co-Authored-By: Claude Fable 5 (build) <noreply@anthropic.com>
2026-07-07 10:01:33 +10:00
jules
d2829d6348 W3: lib-knowledge-ui scaffold + collections
@crema/knowledge-ui: headless KB management components over an injected
KnowledgeTransport. This commit: package + types (full API surface) +
transport interface + MockKnowledgeTransport (fixtures for every surface) +
_internal (cn, badges, formatters) + components-collections (CollectionList
grouped by owner, CollectionCard, CollectionForm with org/read-only states) +
demo + README + tsconfig.check.json. Typechecks clean.

Co-Authored-By: Claude Fable 5 (build) <noreply@anthropic.com>
2026-07-07 09:57:46 +10:00