feat(entity): Chunk #4 data layer + entity UI (characters & world-building)
Data layer: - Fuzzy scorer (packages/core/src/fuzzy.ts) with index recovery + unit tests - Backlink computation (packages/core/src/backlinks.ts) incl. entity-level backlinks - Consistency checker (packages/core/src/consistency.ts) incl. reciprocity/scope + unit tests - StorageAdapter contract extended with listEntities/searchEntities/saveEntity/deleteEntity; implemented in Local (Dexie) and Server adapters; contract tests cover entity CRUD + ?q= search - WorldItem.fields now supports list values (keyPeople, rivals); expanded RelationshipKind - @mention autocomplete extension + picker in the editor package Entity UI (apps/web/src/features/entities/): - Generic field renderer (EntityFields) driven by ENTITY_FIELDS/FieldDef - Tabbed directory with fuzzy search + entity cards (EntitiesView) - Create/edit/delete drawer (EntityEditor) reusing shared fields - Relationship editor + force-directed SVG relationship map - Entity engine stylesheet; wired into nav Store: project-store entity methods (load/create/update/delete) over the StorageAdapter contract. CI-green: typecheck, lint, 65 tests, and web build all pass.
This commit is contained in:
+17
-7
@@ -4,6 +4,8 @@
|
||||
|
||||
**Purpose:** Make the story's moving parts first-class: character sheets with typed relationships, flexible world items, fast fuzzy search, backlinks, and `@mention` links from prose to entities. After this chunk, the "tools to facilitate and integrate characters, world building" requirement is fully delivered.
|
||||
|
||||
**Status (updated 2026-10-25):** 🟡 In progress. Data layer and entity UI layer complete and CI-green (`pnpm typecheck`, `pnpm test`, `pnpm lint`, `pnpm build` all pass; 65 tests green across the workspace). See "Remaining" below.
|
||||
|
||||
---
|
||||
|
||||
## Steps
|
||||
@@ -40,14 +42,22 @@
|
||||
---
|
||||
|
||||
## Acceptance criteria (all must pass)
|
||||
- [ ] Create a character with all field types (incl. list + link) via the generic renderer — no custom code added.
|
||||
- [ ] Fuzzy search over 500 seeded entities returns in < 50 ms (measured in test).
|
||||
- [ ] `@` autocomplete → chip → popover → open sheet, all working; works while typing fast (no stale menus).
|
||||
- [ ] Backlinks correct and live-updating (save doc → "Appears in" updates within one event round-trip).
|
||||
- [ ] Consistency check flags the seeded dead-character-after-death case.
|
||||
- [ ] Relationship map renders and navigates.
|
||||
- [~] Create a character with all field types (incl. list + link) via the generic renderer — no custom code added. Generic renderer done for `text`/`textarea`/`checkbox`/`tags` (list); `link` field type pending.
|
||||
- [x] Fuzzy search over 500 seeded entities returns in < 50 ms (measured in test).
|
||||
- [~] `@` autocomplete → chip → popover → open sheet, all working; works while typing fast (no stale menus). Autocomplete + chip + open sheet done; hover popover pending.
|
||||
- [x] Backlinks correct and live-updating (save doc → "Appears in" updates within one event round-trip).
|
||||
- [ ] Consistency check flags the seeded dead-character-after-death case. Logic in `packages/core/src/consistency.ts` done; UI wiring + seeded case pending.
|
||||
- [x] Relationship map renders and navigates.
|
||||
- [ ] Global palette finds a chapter, a character, and a note from one box.
|
||||
- [ ] Contract suite still green on both adapters.
|
||||
- [x] Contract suite still green on both adapters.
|
||||
|
||||
## Remaining work
|
||||
- Wire `findInconsistencies()` into the Characters tab as a warnings list (Chunk 3.2).
|
||||
- Index entities in the global `Ctrl/Cmd+K` palette (Chunk 3.1).
|
||||
- Context rail (right side of WritingView): this chapter's mentioned characters, pinned entities, related notes (Chunk 3.2).
|
||||
- Extend `server/src/seed.ts`: full character sheets (bio, voice, 2 relationships each) + 5 world items (Chunk 4.1).
|
||||
- `docs/DATA_MODEL.md`: the entity registry table (kind → fields) as the human reference (Chunk 4.2).
|
||||
- E2E: create character → `@mention` it in a chapter → backlinks tab lists the chapter → open sheet from the chip (Chunk 5.3).
|
||||
|
||||
## Definition of done
|
||||
The author's canon — who, what, where — is structured, searchable, linked to the prose, and checkable. This is the data the AI roles will reason from in Chunk 9.
|
||||
|
||||
Reference in New Issue
Block a user