🧱 claude-village

claude-village - implementation progress

Last updated: 2026-04-21

Status legend

Foundation (serial - must land in order)

# Task Status Owner Commit / Notes
1 Repo scaffold (Electron + Vite + React + TS + Vitest + Playwright + ESLint/Prettier + CI) [x] agent-scaffold 9692804
2 Shared types (AgentEvent, AgentState, SessionState, ZoneId, ...) [x] agent-shared-types fe9dd4e

Main-process parallel block (each depends only on Task 2)

# Task Status Owner Commit / Notes
3 session-watcher.ts + unit tests (JSONL tailing, offset tracking) [x] agent-session-watcher 91249bf
4 hook-server.ts + unit tests (HTTP + socket Claude hook listener) [x] agent-hook-server afab039
5 classifier.ts + unit tests (event -> zone/animation/tooltip) [x] agent-classifier-orchestrator bccba07
6 session-store.ts + unit tests (in-memory + JSON pinned.json snapshot) [x] agent-session-store-orchestrator 21532a0
7 ipc-bridge.ts (wires 3-6 to ipcMain; depends on 3-6) [x] agent-ipc-bridge-orchestrator f0a102e

Renderer parallel block (depends on Task 2; can mock IPC until Task 7)

# Task Status Owner Commit / Notes
8 Tab chrome + sidebar + SessionContext [x] agent-tab-chrome-orchestrator 7b5a97a
9 VillageScene + Zone (9 zones, orbit camera, walkable grid) [x] agent-village-scene-orchestrator a121f89
10 pathfinding.ts + unit tests (A* on the voxel grid) [x] agent-pathfinding-orchestrator 3d749e4
11 Character component (depends on 9 + 10) [x] agent-11-orchestrator 0c76cfd
12 TooltipLayer (depends on 9 + 11) [x] agent-12-orchestrator cd59f9c
13 TimelineStrip with click-to-focus (depends on 8) [x] agent-13-orchestrator b986313
14 Conversation animations + bubble drawer (depends on 11 + 12) [x] agent-14-orchestrator 44717ae
15 SettingsScreen + About modal (depends on 8) [x] agent-15-orchestrator 78bced5

Integration and ship

# Task Status Owner Commit / Notes
16 End-to-end integration test (Playwright over Electron) [x] agent-16-orchestrator 41ffcd3
17 Packaging (electron-builder, .dmg, install doc) [x] agent-17-orchestrator c76818f

Milestones

Tech debt / follow-ups (not blocking, track here)

Post-v1 status

Post-v1 polish pass (not in the original plan, shipped in-session)

Accepted spec deviations from Task 1 (documented for posterity)

Post-v1 upgrade path (not part of the 17-task plan)

See design doc Section 14 (Asset tiers). Shipped on Tier 1 (programmatic cubes); Tier 2 pipeline is now live.

Post-v1 maintenance pass (2026-04-21)

Five parallel worktrees, each orchestrated by an isolated agent, then squash-merged to main in a single cleanup pass to keep the history readable.

All five streams passed pnpm lint && pnpm typecheck && pnpm test && pnpm build on their branches, and again on main after each squash merge. Post-merge test count: 79 unit + 3 e2e.

Follow-up waves (same day)

Three additional parallel waves after the first batch, also merged as clean squash commits:

Final post-merge test count: 101 unit + 3 e2e. Main log is still linear: 9 squash commits + 1 docs commit since b7f9edd.

2026-04-21 wave 4: scene depth, legs, signpost, quit-on-close

Four more parallel worktrees, all merged to main as independent squash commits:

Post-wave-4 totals: 118 unit + 3 e2e, lint / typecheck / build all green. Linear log, 15 squash + docs commits since b7f9edd.

2026-04-21 wave 5: subagent rendering + walk speed

Known follow-up (not shipped in wave 5): Claude Code writes the subagent's own transcript to a SEPARATE JSONL file. The synthetic subagent character currently shows up and expires on the parent's Task pre/post pair but its recentActions stays empty. Wiring the child transcript back into the parent session needs a file correlation layer and was deliberately deferred.

Post-wave-5 totals: 126 unit + 4 e2e. Linear log, 17 squash + docs commits since b7f9edd.

2026-04-21 wave 6: keyboard camera, readable labels, e2e harness

2026-04-21 wave 7: waiting indicator, underwater world, sidebar icons

Three parallel worktrees, each merged as an independent squash commit once all three returned and main verified green end-to-end.

Post-wave-7 totals: 180 unit + 4 e2e, lint / typecheck / build all green. Main log: 25 squash + docs commits since b7f9edd.

2026-04-21 wave 8: underwater atmosphere, visual polish, regression fixes

Six small commits that landed one after another as the user play-tested the scene:

Post-wave-8 totals: 183 unit + 5 e2e, lint / typecheck / build all green. Main log: 31 squash + docs commits since b7f9edd.

2026-04-21 wave 9: ghost retirement timer wired

How to update this file

When an agent starts a task:

| 5 | classifier.ts... | `[~]` | agent-abc (2026-04-20 14:03) | - |

When finishing:

| 5 | classifier.ts... | `[x]` | agent-abc | 1a2b3c4 |

If blocked:

| 5 | classifier.ts... | `[!]` | agent-abc | blocked: waiting on task 2 shared types |