Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
541 commits
Select commit Hold shift + click to select a range
5364741
feat(sky): cloud parallax drift and crescent moon overlay
TokenBrice Apr 27, 2026
1af9d48
refactor(sky): drop defensive width fallbacks per AssetManager invari…
TokenBrice Apr 27, 2026
005f50e
chore(sky): tune palette and capture baseline screenshot
TokenBrice Apr 27, 2026
028bc2e
chore(sky): drop orphaned THEME import
TokenBrice Apr 27, 2026
ea8e49d
fix(sky): release sky cache on hide and bind motion-pref listener at …
TokenBrice Apr 27, 2026
20292d2
fix(sky): guard placeholder leak, tune cloud layers, anchor moon cent…
TokenBrice Apr 27, 2026
aae5534
Use runtime weapons for GPT-5.5 efforts
TokenBrice Apr 27, 2026
899f074
Validate required sprite equipment
TokenBrice Apr 27, 2026
ffb396d
docs: consolidate and simplify agent harness documentation
TokenBrice Apr 27, 2026
92be3e9
feat: redesign Opus/Sonnet/Haiku character sprites and update manifest
TokenBrice Apr 27, 2026
0a6950b
feat: redesign observatory as clock tower landmark
TokenBrice Apr 27, 2026
a1bb8b5
feat: living sky — AtmosphereState, WeatherRenderer, and cloud/moon s…
TokenBrice Apr 27, 2026
c11e766
feat: building light bloom, atmosphere-driven rendering improvements
TokenBrice Apr 27, 2026
b116b98
feat: responsive CSS polish for topbar, sidebar, dashboard, and panels
TokenBrice Apr 27, 2026
219275e
chore: remove stale superpowers plan and spec artifacts
TokenBrice Apr 27, 2026
09c82ba
docs: add world enhancement plan, weather/atmosphere plan, update gen…
TokenBrice Apr 27, 2026
8e343a3
feat: HiDPI canvas, fractional zoom, camera bounds, minimap viewport
TokenBrice Apr 27, 2026
2bb16b6
feat: world layout — expanded visit tiles, bridge consolidation, road…
TokenBrice Apr 27, 2026
1286a4b
fix: agent tool routing and building visit-tile tolerance
TokenBrice Apr 27, 2026
87abec7
fix: pathfinder bridge fast-path and walk-block collection
TokenBrice Apr 27, 2026
608c69c
feat: agent sprite — breathing-idle frames, dead code removal, provid…
TokenBrice Apr 27, 2026
7aecb4f
feat: rendering — DPR threading, per-light gradient cache, sky polish
TokenBrice Apr 27, 2026
5db52df
feat: regenerate Opus sprite and bump assetVersion
TokenBrice Apr 27, 2026
c96eed3
docs: revise world-enhancement-plan and add codex equipment design
TokenBrice Apr 27, 2026
f7e985c
feat: codex equipment — model-class grammar replaces effort-tier weapons
TokenBrice Apr 27, 2026
dc54ba9
feat: world rendering — light source registry and prop occlusion split
TokenBrice Apr 27, 2026
df7f79f
feat: regenerate all sprite sheets and update manifest for class-base…
TokenBrice Apr 27, 2026
01b422b
docs: add agent plans — chronicle, familiars, feature-foundation, too…
TokenBrice Apr 27, 2026
e55fcdd
chore: add research captures and visual debug artifacts
TokenBrice Apr 27, 2026
042d4d6
feat(lagoon): deep water, ripple, shimmer, gulls, foam, weather palette
TokenBrice Apr 27, 2026
9f32bb9
feat(sprites): lily pad, lake shrine, mangrove roots, driftwood log
TokenBrice Apr 27, 2026
fec54a3
feat(lagoon): scenery placements — fishing props, lilypads, mangroves…
TokenBrice Apr 27, 2026
01c9f6f
docs(lagoon): add north-lagoon swarm execution plan
TokenBrice Apr 27, 2026
f446cb4
Merge branch 'feature/north-lagoon-sprint'
TokenBrice Apr 27, 2026
b8575f9
feat: team membership — read from TEAMS_DIR inboxes, not project path
TokenBrice Apr 27, 2026
4032302
feat: app foundation — Settings, ChronicleStore, privacy-redaction to…
TokenBrice Apr 27, 2026
3809aa1
feat: world systems — AgentEventStream, RelationshipState, RitualCond…
TokenBrice Apr 27, 2026
166a1c8
feat: light source normalization — LightSourceRegistry, AtmosphereSta…
TokenBrice Apr 27, 2026
413f462
feat: regenerate Claude sprite sheets; add motion-budget doc and upda…
TokenBrice Apr 27, 2026
b1a7ac1
Improve GPT-5.5 equipment tiers
TokenBrice Apr 27, 2026
7b25f7c
feat: add tool ritual building responses
TokenBrice Apr 27, 2026
948b46a
feat: add familiars and council relationship cues
TokenBrice Apr 27, 2026
6b885c6
feat: add chronicle persistence and world memory
TokenBrice Apr 27, 2026
d1e5b83
feat: wire world feature integrations
TokenBrice Apr 28, 2026
4957c90
fix: complete ritual and familiar integrations
TokenBrice Apr 28, 2026
81d78f2
fix: position task board
TokenBrice Apr 28, 2026
2146eb1
docs: trim agent harness map and locale policy from root CLAUDE/AGENTS
TokenBrice Apr 28, 2026
a73ac59
sprites: update village gate v3 and wall assets with revised prompts …
TokenBrice Apr 28, 2026
48e7c33
renderer: harden village gate and wall placement
TokenBrice Apr 28, 2026
903eaf6
atmosphere: vary weather per 3-hour block instead of per day
TokenBrice Apr 28, 2026
9d3e640
sky: enhance sun rendering with rays, bloom, and radial gradient body
TokenBrice Apr 28, 2026
aa9daf7
baselines: refresh pixel-art visual baseline screenshots
TokenBrice Apr 28, 2026
ec6f05f
feat: add Harbor section to sidebar showing pending commits per repo
TokenBrice Apr 28, 2026
f5b81e8
refactor(atmosphere): weather timeline knots, storm type, and exporte…
TokenBrice Apr 28, 2026
4c320e1
feat(weather): consume precipitation/fog/cloudCover fields; storm and…
TokenBrice Apr 28, 2026
349876e
feat(scenery): track water tile metadata (region, kind, depth, surfac…
TokenBrice Apr 28, 2026
c762300
feat(renderer): wire harbor event, water meta, clock sync, storm, gat…
TokenBrice Apr 28, 2026
9934714
docs: add agent plans for building interactions and atmosphere enhanc…
TokenBrice Apr 28, 2026
fa75e40
chore: remove HarborHud canvas overlay superseded by sidebar Harbor s…
TokenBrice Apr 28, 2026
1e3c422
chore: enforce desktop-only target, remove mobile @media queries
TokenBrice Apr 28, 2026
a03638b
refactor(config): annotate water bodies with region/surface/weatherPr…
TokenBrice Apr 28, 2026
ce698d5
feat(atmosphere): moon phase, sun/moon horizon occlusion, building re…
TokenBrice Apr 28, 2026
d8d54a3
feat(sky): add constellations and improve cloud layer distribution
TokenBrice Apr 28, 2026
59e7b93
fix(weather): guard fog bands from label zone; cap overcast wash when…
TokenBrice Apr 28, 2026
c10c1db
feat(buildings): atmosphere reactions — window warmth and roof glint
TokenBrice Apr 28, 2026
a1997f1
feat(renderer): region-aware water tokens, gate wood palette, harbor …
TokenBrice Apr 28, 2026
3d8c7c4
feat(scenery): finalize water metadata with openness, flow vectors, a…
TokenBrice Apr 28, 2026
62f798f
fix(scenery): rebuild deep/lagoon tile sets from finalized metadata
TokenBrice Apr 28, 2026
435e094
refactor(buildings): extract _clipToSplitPass() and apply to manifest…
TokenBrice Apr 28, 2026
31bb9da
feat: add VisitIntentManager — tool-to-building intent classification
TokenBrice Apr 28, 2026
f7d720b
feat: add VisitTileAllocator — tile reservation and walkability scoring
TokenBrice Apr 28, 2026
ba94abb
sprites: add atmosphere phase-8 assets (moon phases, water fx, storm …
TokenBrice Apr 28, 2026
b97cd89
feat(domain): agent routing fixes, building capacity, observatory rename
TokenBrice Apr 28, 2026
f4b911f
fix(visit-system): memory cap, isFresh logic, capacity intent routing…
TokenBrice Apr 28, 2026
b75d531
feat(agent-sprite): wire visit intent system and behavior state tracking
TokenBrice Apr 28, 2026
d91e57d
feat(renderer): instantiate visit system and wire to agent sprites; w…
TokenBrice Apr 28, 2026
da25af1
feat(sky): moon phase asset selection; add storm-shelf to storm cloud…
TokenBrice Apr 28, 2026
3aa5739
feat(debug): visit reservation markers and intent/occupancy screen panel
TokenBrice Apr 28, 2026
f4d2079
sprites: gate v4 (open archway), palisade wall, sea tower; validator …
TokenBrice Apr 28, 2026
af9b434
feat: extract AgentBehaviorState — behavior lifecycle and visit history
TokenBrice Apr 28, 2026
b209cdf
feat(visit-intents): handoff tier, global intents, long-running agent…
TokenBrice Apr 28, 2026
0aed003
feat(allocator): add metrics counters for allocations, renewals, reje…
TokenBrice Apr 28, 2026
09741bf
refactor(agent-sprite): adopt AgentBehaviorState, add ambient destina…
TokenBrice Apr 28, 2026
44fafb0
feat(renderer): ambient destination provider, sea tower, behavior met…
TokenBrice Apr 28, 2026
9735170
feat(event-stream): enrich tool events with classifyTool; skip non-wo…
TokenBrice Apr 28, 2026
d119aef
feat(debug): add behavior metrics rows to screen panel
TokenBrice Apr 28, 2026
923d29b
docs(plans): correct building names and TR0.1 in tool-rituals plan
TokenBrice Apr 28, 2026
142b526
chore(renderer): remove unused VILLAGE_GATE_SPRITE_ID/WALL_SPRITE_ID/…
TokenBrice Apr 28, 2026
0d07e30
fix(harbor): reconcile commit ships during push
TokenBrice Apr 28, 2026
2284e20
Fix village wall gate alignment
TokenBrice Apr 28, 2026
3b3fdab
Add canvas performance guardrails
TokenBrice Apr 28, 2026
6cae3f0
Reduce server polling and adapter parsing
TokenBrice Apr 28, 2026
1ea6b3e
Optimize dashboard detail rendering
TokenBrice Apr 28, 2026
bb0ad4e
Add widget health checks and perf diagnostics
TokenBrice Apr 28, 2026
ac05895
Address performance review follow-ups
TokenBrice Apr 28, 2026
7aeabd6
Fix Codex shield-like agent overlays
TokenBrice Apr 28, 2026
a562dba
Fix trail cache sizing at large viewports
TokenBrice Apr 28, 2026
109ae7d
Tighten performance review fixes
TokenBrice Apr 28, 2026
afa5b82
Close final performance review gaps
TokenBrice Apr 28, 2026
e55ebbe
Stabilize final world-mode event guards
TokenBrice Apr 28, 2026
d01f400
docs: audit and refresh project documentation
TokenBrice Apr 28, 2026
085a63a
runtime: harden session and update handling
TokenBrice Apr 28, 2026
e003fa2
ui: centralize presentation state and safety
TokenBrice Apr 28, 2026
fc75c83
world: extract projection and event helpers
TokenBrice Apr 28, 2026
c1453f3
cleanup: remove dead code and stale CSS
TokenBrice Apr 28, 2026
de40e48
tooling: harden sprite and widget workflows
TokenBrice Apr 28, 2026
4d40c9e
artifacts: record remediation planning handover
TokenBrice Apr 28, 2026
13b8d45
world: anchor sun to map projection
TokenBrice Apr 28, 2026
b9308f0
plans: define post-remediation follow-up work
TokenBrice Apr 28, 2026
9b820fe
runtime: complete follow-up hardening
TokenBrice Apr 28, 2026
8560e85
tooling: complete follow-up validation workflows
TokenBrice Apr 28, 2026
7b59b9e
world: finish renderer follow-up cleanup
TokenBrice Apr 28, 2026
88c4faa
tooling: add deterministic sprite baselines
TokenBrice Apr 28, 2026
4a61bce
world: extract frame render orchestration
TokenBrice Apr 28, 2026
a2676d3
Keep dusk sun visible while panning
TokenBrice Apr 28, 2026
d30faf8
widget: add KDE Plasma plasmoid
TokenBrice Apr 28, 2026
0e8d899
widget: verify KDE plasmoid install
TokenBrice Apr 28, 2026
93b217c
fix harbor branch repo coloring
TokenBrice Apr 28, 2026
6a83abe
widget: fix KDE tooltip bindings
TokenBrice Apr 28, 2026
0e2cb62
widget: drop unsupported KDE representation binding
TokenBrice Apr 28, 2026
12d1ae5
widget: show working agent sprites in KDE panel
TokenBrice Apr 28, 2026
e711f27
widget: package KDE panel avatar sprites
TokenBrice Apr 28, 2026
8b8c082
sprites: codex epic weapons (runeblade, greatsword, polearm, wrench)
TokenBrice Apr 28, 2026
643c3f3
harbor: squad anchorages and reframed initial camera
TokenBrice Apr 28, 2026
75f1758
widget: migrate KDE plasmoid from PlasmaCore.Units to Kirigami.Units
TokenBrice Apr 28, 2026
6c7d9dc
sprites: codex effort-tier baked gear and overlay re-render
TokenBrice Apr 28, 2026
348e96a
watchtower: replace lighthouse beam with lantern flame
TokenBrice Apr 28, 2026
84c3254
sprites: regenerate base character sheets
TokenBrice Apr 28, 2026
8a23872
sprites: refine codex weapon poses
TokenBrice Apr 28, 2026
ef4a5e5
scripts: accept extracted character assets
TokenBrice Apr 28, 2026
8075ee6
plans: village gate redesign — design spec
TokenBrice Apr 28, 2026
fded0c9
plans: village gate redesign — implementation plan
TokenBrice Apr 28, 2026
4d6ba13
sprites: add harbor ship tiers
TokenBrice Apr 28, 2026
7c65d55
tune harbor ship tier thresholds
TokenBrice Apr 28, 2026
3cd0986
plans: apply spec/plan review fixes from opus + sonnet reviewers
TokenBrice Apr 28, 2026
40d80ee
townPlan: add gate-avenue connecting civic spine to south gate
TokenBrice Apr 28, 2026
2c0b40d
gate: add VILLAGE_STONE_PALETTE for hybrid gatehouse
TokenBrice Apr 28, 2026
703b377
gate: rewrite tower as stone-on-wood hybrid with teal roof
TokenBrice Apr 28, 2026
375a67b
gate: rewrite arch as carved timber lintel + plaque + iron lantern
TokenBrice Apr 28, 2026
5c73d0b
gate: drop floating threshold patch — road now threads through
TokenBrice Apr 28, 2026
576a3db
gate: stone-footing transition where walls meet the gate
TokenBrice Apr 29, 2026
4337928
gate: binary closed/open doors driven by gateTransits + proximity
TokenBrice Apr 29, 2026
edee1e8
gate: register lantern with LightSourceRegistry for night ambience
TokenBrice Apr 29, 2026
aa44400
gate: align lantern light source with lantern body position
TokenBrice Apr 29, 2026
0b7b796
Improve commit squad harbor layout
TokenBrice Apr 29, 2026
e9c0e79
Keep commit ships inside harbor water
TokenBrice Apr 29, 2026
8ef4727
Refine village gate rendering
TokenBrice Apr 29, 2026
02eadcc
Document visual design handoff framework
TokenBrice Apr 29, 2026
2f8f09d
Refresh sprite and widget runbooks
TokenBrice Apr 29, 2026
46d3daa
feat: animate commit lagoon handoff for busy harbor
TokenBrice Apr 29, 2026
34237bf
feat: distribute ship departures along map edge lanes
TokenBrice Apr 29, 2026
d039465
docs: add agent workflow runbooks
TokenBrice Apr 29, 2026
dbbb520
tools: add quick validation checks
TokenBrice Apr 29, 2026
fe92c1d
server: normalize adapter registry contracts
TokenBrice Apr 29, 2026
eb18480
frontend: centralize status and cleanup hooks
TokenBrice Apr 29, 2026
7f1e4f4
world: clarify drawable rendering contracts
TokenBrice Apr 29, 2026
cc50225
frontend: share agent selection presentation helpers
TokenBrice Apr 29, 2026
2dd2643
fix: keep pending ships in commit lagoon
TokenBrice Apr 29, 2026
95bece5
Improve harbor git repo traffic
TokenBrice Apr 30, 2026
010d838
Fix harbor ship overcount
TokenBrice Apr 30, 2026
a9d304f
Polish harbor labels and recap sign
TokenBrice Apr 30, 2026
b300b9c
Add portal familiar rituals
TokenBrice Apr 30, 2026
bf1cd88
Improve repo label color contrast
TokenBrice May 1, 2026
f684d6c
Polish sign and label readability
TokenBrice May 1, 2026
7a0b65b
Fix GPT-5.3 Codex sprite identity mapping
TokenBrice May 1, 2026
94632a5
Add center-island-design plan
TokenBrice May 1, 2026
160640f
Add center-island implementation plan
TokenBrice May 1, 2026
ba4f200
Add fishSchoolKoi sprite for central island pool
TokenBrice May 1, 2026
a5d691f
Convert central plaza to lush tropical island interior
TokenBrice May 1, 2026
ff44a57
Reroute central roads around new island pool
TokenBrice May 1, 2026
ef267e8
feat(server): add Kimi adapter and provider metadata
TokenBrice May 1, 2026
8d9757e
feat(ui): add Kimi model identity to world and dashboard views
TokenBrice May 1, 2026
7484913
feat(sprites): register Kimi character sheet and generation updates
TokenBrice May 1, 2026
1bdb2a5
feat(widget): add Kimi provider display and cost mapping
TokenBrice May 1, 2026
acfa7de
chore: add Kimi integration export transcript
TokenBrice May 1, 2026
edff0da
Regenerate Kimi agent sprite
TokenBrice May 1, 2026
7bcf2f2
docs: add sprite placeholder troubleshooting
TokenBrice May 1, 2026
b9cd0db
chore: ignore superpowers docs
TokenBrice May 1, 2026
5f19598
fix(world): spread visit tiles around busy buildings
TokenBrice May 3, 2026
d39218f
docs(agents): add broader agent movement review
TokenBrice May 3, 2026
95f8c3b
feat(world): face buildings on arrival and add idle fidget
TokenBrice May 3, 2026
4449865
feat(world): cluster related agents at the same building
TokenBrice May 3, 2026
7fc2538
feat(world): route ambient strolls along authored roads
TokenBrice May 3, 2026
22b76c5
Improve agent action bubbles with history and longer status text
TokenBrice May 5, 2026
ac45a36
Expire previous agent actions
TokenBrice May 5, 2026
1a66ec4
fix(claude): detect subagents under long-running parent sessions
TokenBrice May 13, 2026
e919f84
fix(claude): warn once per team-membership collision
TokenBrice May 15, 2026
1f8baa0
docs(plan): world enhancement council consolidated plan
TokenBrice May 17, 2026
bc14bca
fix(assets): keep boot alive when composed cells are missing
TokenBrice May 17, 2026
e69b1cf
feat(adapter): pull/fetch types, force flag, push stderr, subagent pa…
TokenBrice May 17, 2026
4373d20
feat(domain): add RATE_LIMITED, ERRORED, WAITING_ON_USER statuses
TokenBrice May 17, 2026
0d9942a
feat(tool-id): plan-mode + Playwright routing + path-aware truncate
TokenBrice May 17, 2026
749786b
feat(landmark): per-building presence pulse + O(1) trim + event contr…
TokenBrice May 17, 2026
ea13c44
agents doc update
TokenBrice May 17, 2026
a3112b3
feat(world): chat resolver + Task->Portal ritual + building:selected …
TokenBrice May 17, 2026
323c25b
perf(world): RelationshipState membership cache + Harbor debug gating
TokenBrice May 17, 2026
985a1eb
feat(agent): identity + state surfaces — role hats, glyphs, emotes, s…
TokenBrice May 17, 2026
051657a
feat(buildings): presence-driven windows, lights, emitters, label acc…
TokenBrice May 17, 2026
ccbf450
feat(scenery): 10 props placed in workshop, civic, gate, arcane distr…
TokenBrice May 17, 2026
f476bf0
feat(world): phase-coupled water palette + Forge/Mine smoke plumes
TokenBrice May 17, 2026
57d867f
feat(sky): crepuscular rays (godrays) at dawn and dusk
TokenBrice May 17, 2026
94762c9
feat(portal): subagents spawn at the obelisks, dispatch + return thro…
TokenBrice May 17, 2026
b11eb04
feat(world): family tether + family plaza + team gather choreography
TokenBrice May 17, 2026
55223e3
feat(agent): facing, plan mode, retry glyph, idle stroll + stop-and-look
TokenBrice May 17, 2026
f317f13
feat(intents): cash-out walks, quota throttle, team-gather, slot bonus
TokenBrice May 17, 2026
21144bd
feat(buildings): facingPoint per visit tile for content-axis facing
TokenBrice May 17, 2026
79bc35e
feat(harbor): force/pull/fetch/rejected/lifecycle + edge cases + push…
TokenBrice May 17, 2026
16c6cf8
feat(lighthouse): beam couples to HarborTraffic.getActivePushSignal()
TokenBrice May 17, 2026
3bedfab
feat(sky): aurora on push, shooting star on subagent completion
TokenBrice May 17, 2026
9064c5c
feat(chronicle): release fireworks, milestone banners, weight-tier st…
TokenBrice May 17, 2026
e83d595
feat(weather): sprite rain impacts + new SeasonalAmbience module
TokenBrice May 17, 2026
d50c49b
feat(world): Archive reads, Portal preview/active, Observatory clock …
TokenBrice May 17, 2026
5e46272
feat(panel): building-detail view via building:selected event
TokenBrice May 17, 2026
a580c10
feat(world): foliage sway, watchtower gull, fog beam, archive fade defer
TokenBrice May 17, 2026
1a6d986
feat(world): team sash + archive fade visuals + repo heraldry shields
TokenBrice May 17, 2026
76d3874
perf(server): scoped watch-fallback, WS reconnect jitter, cache-stamp…
TokenBrice May 17, 2026
8d369cb
perf+feat(harbor): memoise dock layout + cancelled push distinct from…
TokenBrice May 17, 2026
fa286bf
docs(claudeville): document polling and cache cadence triad
TokenBrice May 17, 2026
67f99eb
test(smoke): add deterministic adapter + RelationshipState smoke scripts
TokenBrice May 17, 2026
81f202f
feat(sim): behavior simulation fixture gated on ?sim=1
TokenBrice May 17, 2026
7b5a452
docs(domain): annotate Appearance for future cleanup, defer field rem…
TokenBrice May 17, 2026
d10ce0f
fix(world): preserve Sky subscriptions across mode toggles, static fa…
TokenBrice May 17, 2026
ddd258f
fix(agent): gate chat ellipsis + idle bob behind motionScale
TokenBrice May 17, 2026
383f98c
fix(ui): surface RATE_LIMITED / ERRORED / WAITING_ON_USER in dashboar…
TokenBrice May 17, 2026
ad48b1d
chore(world): strip task/phase prefix comments + dead-code surgery
TokenBrice May 17, 2026
13576f5
docs(review): 6-reviewer audit of the Phase 0-5 implementation
TokenBrice May 17, 2026
9faa58b
fix(world): enlarge unzoomed agent nameplate + indicator glyphs
TokenBrice May 17, 2026
94a037a
Add OpenCode DeepSeek agent support
TokenBrice May 17, 2026
89100ac
Fix runtime head accessory overlap
TokenBrice May 18, 2026
b7649f6
Refresh harbor on git state changes
TokenBrice May 18, 2026
f5eeb97
Ease mine crowding and add light plan
TokenBrice May 18, 2026
bc510c9
Emit push events from git state transitions
TokenBrice May 18, 2026
61f10ef
Agent docs cleanup
TokenBrice May 18, 2026
850560d
Add world enhancement swarm plan
TokenBrice May 18, 2026
99698a6
Add deterministic world scenario fixtures
TokenBrice May 18, 2026
0fdb7b0
Expand git harbor event semantics
TokenBrice May 18, 2026
f8d3b2d
Improve agent movement and journey details
TokenBrice May 18, 2026
abdbe2f
Add world visual validation and render polish
TokenBrice May 18, 2026
9ce5196
Remove unused settings panel
TokenBrice May 18, 2026
c0a3cc2
docs: refresh onboarding and provider guidance
TokenBrice May 18, 2026
e686873
docs: update frontend renderer contracts
TokenBrice May 18, 2026
92b5da1
Fetch Codex session rename metadata
TokenBrice May 19, 2026
4b59f94
docs: record code health implementation plan
TokenBrice May 22, 2026
09da545
refactor: consolidate server routing
TokenBrice May 22, 2026
6422b86
refactor: share adapter session utilities
TokenBrice May 22, 2026
67738c1
refactor: simplify domain helpers
TokenBrice May 22, 2026
b0f3b94
refactor: extract world renderer data helpers
TokenBrice May 22, 2026
7770334
refactor: pass frontend dependencies explicitly
TokenBrice May 22, 2026
eefbd0a
refactor: move widget display pricing to api
TokenBrice May 22, 2026
e3fb278
chore: share smoke and sprite utilities
TokenBrice May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
48 changes: 24 additions & 24 deletions .claude/skills/troubleshooting/references/integration.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
# Integration Troubleshooting

### macOS 메뉴바 위젯 WKWebView WebSocket 연결 불가 [#1]
### macOS Menu Bar Widget WKWebView WebSocket Connection Failure [#1]

- **Symptom**: NSPopover 안의 WKWebView에서 widget.html 로드 후 `ws://localhost:4000` WebSocket 연결 시도하면 연결 안 됨. 같은 앱의 NSWindow WKWebView에서 `http://localhost:4000` 로드는 정상 동작. 메뉴바 뱃지가 `● 3` → `● 0`으로 깜빡임.
- **Symptom**: Loading `widget.html` in the NSPopover `WKWebView` and then connecting to `ws://localhost:4000` fails. Loading `http://localhost:4000` in the same app's NSWindow `WKWebView` works. The menu bar badge flickers from `* 3` to `* 0`.
- **Cause**:
1. WKWebView는 out-of-process 렌더링이라 `com.apple.security.network.client` entitlement 필요
2. `swiftc` 단일 파일 빌드는 Xcode entitlement 시스템 사용 불가
3. `loadFileURL` `file://`에서 `ws://` 보안 차단, `loadHTMLString(baseURL: localhost)` → 여전히 차단
4. Info.plist `NSAllowsLocalNetworking` / `NSAllowsArbitraryLoadsInWebContent` 추가해도 효과 없음
5. JS→Swift bridge(`webkit.messageHandlers.badge`)가 WebSocket 실패 시 badge를 0으로 덮어써서 Swift 폴링 결과와 충돌
- **Fix**: WKWebView를 순수 렌더링용으로만 사용, WebSocket 완전 제거:
1. Swift `Timer`로 3초마다 `/api/sessions` REST API 직접 호출 (`URLSession`)
2. 응답 JSON으로 Swift에서 HTML 문자열 동적 생성 (`buildHTML()`)
3. `webView.loadHTMLString(html, baseURL: nil)` → 네트워크 연결 불필요
4. 뱃지 업데이트는 Swift에서만 처리 (JS→Swift badge 통신 완전 제거)
5. `Open Dashboard` 버튼만 `webkit.messageHandlers.openDashboard`로 처리
1. Out-of-process `WKWebView` rendering requires a `com.apple.security.network.client` entitlement.
2. The single-file `swiftc` build does not use Xcode's entitlement system.
3. `loadFileURL` from `file://` blocks `ws://`; `loadHTMLString(baseURL: localhost)` still blocks it.
4. Adding `NSAllowsLocalNetworking` / `NSAllowsArbitraryLoadsInWebContent` to `Info.plist` did not fix the popover case.
5. The JS-to-Swift badge bridge (`webkit.messageHandlers.badge`) overwrote Swift polling results with `0` after WebSocket failure.
- **Fix**: Use `WKWebView` as a render surface only and remove WebSocket use from the native popover:
1. Call `/api/sessions` and `/api/usage` directly from Swift with `URLSession` on a timer.
2. Build the HTML string in Swift from the response JSON (`buildHTML()`).
3. Use `webView.loadHTMLString(html, baseURL: nil)`, with no network from the popover web content.
4. Update the badge only from Swift.
5. Keep `webkit.messageHandlers.openDashboard` only for the Open Dashboard button.
- **Files**: `widget/Sources/main.swift`, `widget/Info.plist`
- **Date**: 2026-02-23
- **Tags**: macOS, WKWebView, NSPopover, NSStatusItem, WebSocket, swiftc, entitlement, menubar, widget
- **Tags**: macOS, WKWebView, NSPopover, NSStatusItem, WebSocket, swiftc, entitlement, menu bar, widget

---

### fnm 임시 경로로 인한 서버 자동 시작 실패 [#2]
### Server Autostart Failure From Temporary fnm Node Path [#2]

- **Symptom**: 메뉴바 위젯에서 서버 자동 시작 기능이 동작 안 함. 빌드 시점에 기록된 node 경로가 앱 재실행 시 존재하지 않음.
- **Cause**: `which node`fnm 임시 multishell 경로 반환 (`~/.local/state/fnm_multishells/{PID}_{TIMESTAMP}/bin/node`). 이 경로는 쉘 세션마다 바뀌므로 앱 번들에 기록해도 다음 실행 시 파일이 없음.
- **Fix**: `build.sh`에서 `readlink -f "$(which node)"`로 심볼릭 링크를 해제한 실제 영구 경로를 기록. 영구 경로 예시: `~/.local/share/fnm/node-versions/v20.20.0/installation/bin/node`. Swift 코드에서도 fallback으로 fnm 영구 경로 직접 탐색: `~/.local/share/fnm/node-versions/*/installation/bin/node`.
- **Symptom**: The menu bar widget cannot autostart the server. The Node path recorded at build time no longer exists when the app is relaunched.
- **Cause**: `which node` returned an fnm temporary multishell path (`~/.local/state/fnm_multishells/{PID}_{TIMESTAMP}/bin/node`). That path changes per shell session, so recording it in the app bundle makes the next launch stale.
- **Fix**: `build.sh` records the resolved stable path with `readlink -f "$(which node)"`. Example stable path: `~/.local/share/fnm/node-versions/v20.20.0/installation/bin/node`. Swift also falls back to scanning `~/.local/share/fnm/node-versions/*/installation/bin/node`.
- **Files**: `widget/build.sh`, `widget/Sources/main.swift`
- **Date**: 2026-02-23
- **Tags**: fnm, node, readlink, symlink, macOS, 자동시작, build.sh
- **Tags**: fnm, node, readlink, symlink, macOS, autostart, build.sh

---

### macOS 앱 내 Process()lsof 실행 시 무한 대기 [#3]
### `Process()` Running `lsof` Hangs Inside macOS App [#3]

- **Symptom**: 위젯 앱 `applicationDidFinishLaunching`에서 `Process()`로 `/usr/bin/lsof -ti :4000` 실행 후 `waitUntilExit()` 호출하면 영원히 반환 안 됨. 로그에 "서버 시작 체크..." 한 줄만 찍히고 이후 진행 없음.
- **Cause**: LSUIElement 메뉴바 앱 환경에서 `lsof` 프로세스가 행(hang). Finder/Spotlight에서 실행된 앱은 터미널과 다른 보안 컨텍스트에서 동작하며, `lsof`가 네트워크 소켓 정보 접근 시 권한 문제로 무한 대기할 수 있음.
- **Fix**: 포트 체크 로직 자체를 제거. 서버 중복 실행 시 `server.js``EADDRINUSE` 에러를 내므로, 그냥 항상 서버 시작을 시도하고 실패하면 무시. `try? proc.run()` 패턴 사용.
- **Symptom**: In `applicationDidFinishLaunching`, running `/usr/bin/lsof -ti :4000` through `Process()` and then calling `waitUntilExit()` never returns.
- **Cause**: `lsof` can hang in the security context of an LSUIElement menu bar app launched from Finder or Spotlight.
- **Fix**: Remove the `lsof` port-check path. Let `server.js` report `EADDRINUSE` when a duplicate server start is attempted, and ignore the failed start attempt with the existing `try? proc.run()` pattern.
- **Files**: `widget/Sources/main.swift`
- **Date**: 2026-02-23
- **Tags**: macOS, Process, lsof, waitUntilExit, hang, LSUIElement, 메뉴바앱
- **Tags**: macOS, Process, lsof, waitUntilExit, hang, LSUIElement
11 changes: 6 additions & 5 deletions .claude/skills/verify-architecture/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,15 @@ src/

### 2. No Framework Dependencies

Verify the project uses pure HTML/CSS/JS with no npm dependencies:
Verify the project uses pure HTML/CSS/JS at runtime with no runtime npm dependencies:

- `package.json` should only have `scripts`, no `dependencies` or `devDependencies`
- No `node_modules/` directory
- `package.json` should not have runtime `dependencies`
- `devDependencies` are allowed for sprite validation, visual diffs, and Playwright capture scripts
- All imports use relative paths or ES modules

- **PASS**: No external dependencies
- **FAIL**: npm dependencies found
- **PASS**: No runtime dependencies
- **WARN**: Dev dependencies changed; confirm they are still development-only
- **FAIL**: Runtime dependencies added without updating README and design decisions

### 3. Adapter Pattern Compliance

Expand Down
22 changes: 9 additions & 13 deletions .claude/skills/verify-server/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,31 @@ Verify the ClaudeVille Node.js server operates correctly with all endpoints and

## Prerequisites

- Server must NOT be running before test (port 4000 free)
- Server may already be running on port 4000 in the operator's environment. Do not stop or replace an existing listener unless ownership is clear and the operator approves process cleanup.
- Node.js available

## Check Items

### 1. Server Startup

Start the server and verify it binds to port 4000:
Start the server only when port 4000 is free, then verify it binds to port 4000:

```bash
node claudeville/server.js &
npm run dev
sleep 2
lsof -ti :4000
```

- **PASS**: Server starts, port 4000 in use, ASCII logo printed
- **PASS**: Server starts, port 4000 in use, startup summary printed
- **FAIL**: Server crashes, port conflict, or startup error

### 2. Provider Detection

Check server log output for active providers:

- **PASS**: At least Claude Code provider detected (`~/.claude/` exists)
- **PASS**: At least one provider detected (`~/.claude/`, `~/.codex/`, or `~/.gemini/` exists)
- **WARN**: Only 1 provider detected
- **FAIL**: No providers detected
- **WARN**: No providers detected on a machine with no supported CLI session data

### 3. REST API - Sessions Endpoint

Expand All @@ -59,8 +59,8 @@ curl -s http://localhost:4000/api/teams
curl -s http://localhost:4000/api/providers
```

- **PASS**: Returns JSON with `{ providers: [...], count: N }`, count >= 1
- **FAIL**: Non-200 status or empty providers
- **PASS**: Returns JSON with `{ providers: [...], count: N }`
- **FAIL**: Non-200 status or invalid JSON

### 6. Static File Serving

Expand All @@ -84,8 +84,4 @@ curl -s -I http://localhost:4000/api/sessions

## Cleanup

After all checks, kill the server process:

```bash
kill $(lsof -ti :4000) 2>/dev/null
```
If you started the server in a dedicated terminal, stop only that process with Ctrl-C in that terminal. Do not kill arbitrary port-4000 listeners in a shared checkout.
2 changes: 1 addition & 1 deletion .claude/skills/verify-widget-build/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Run the widget build script and verify it compiles without errors:
cd widget && bash build.sh
```

- **PASS**: Exit code 0, "빌드 완료" message printed
- **PASS**: Exit code 0, "Build complete: ClaudeVilleWidget.app" message printed
- **FAIL**: Compilation errors or non-zero exit code

### 2. App Bundle Structure
Expand Down
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,20 @@ node_modules/
.DS_Store
*.log
docs/plans/
docs/superpowers/
output/
smoke-*.png
/*.png
widget/ClaudeVilleWidget
widget/ClaudeVilleWidget.app/
scripts/sprites/baselines/*-diff.png
scripts/sprites/baselines/*-fresh.png
!scripts/sprites/baselines/.gitkeep
.playwright-cli/
.playwright-mcp/
.worktrees/
.superpowers/
.env
.env.*
.dev.var
.dev.vars
85 changes: 85 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
## Scope

- Work from `/home/ahirice/Documents/git/claude-ville`.
- ClaudeVille is a local, zero-build dashboard for watching AI coding CLI sessions as a browser "village" plus optional macOS and KDE widgets.
- Desktop-only target: assume browser viewports ≥1280px wide. Do not add `@media` queries, mobile/narrow-viewport testing, or responsive shrinking.
- Touch only files needed for the task. Shared checkout: start with `git status --short`, preserve unrelated edits, prefer `rg`/`rg --files` for discovery.
- No install step, bundler, transpiler, lint, formatter, app test runner, or CI.

Local dev-server (maintained): http://localhost:4000

## Commands

- Start: `npm run dev` → `http://localhost:4000`
- Widget: `npm run widget:build`, then `npm run widget` (macOS only); KDE checks use `npm run widget:kde:check`
- Run `npm install` only for dev scripts (sprite validation, visual diffs, Playwright capture).

## Project Map

| Area | Path | Onboarding doc |
| --- | --- | --- |
| Server / APIs / WebSocket | `claudeville/server.js` | [`claudeville/CLAUDE.md`](claudeville/CLAUDE.md) |
| Provider adapters | `claudeville/adapters/` | [`adapters/README.md`](claudeville/adapters/README.md) |
| Usage, quota, account | `claudeville/services/` | [`docs/design-decisions.md`](docs/design-decisions.md), [`docs/troubleshooting.md`](docs/troubleshooting.md) |
| Frontend boot | `claudeville/src/presentation/App.js` | [`claudeville/CLAUDE.md`](claudeville/CLAUDE.md) |
| World mode (canvas) | `claudeville/src/presentation/character-mode/` | [`character-mode/README.md`](claudeville/src/presentation/character-mode/README.md) |
| Dashboard mode (DOM) | `claudeville/src/presentation/dashboard-mode/` | [`dashboard-mode/README.md`](claudeville/src/presentation/dashboard-mode/README.md) |
| Shared UI | `claudeville/src/presentation/shared/` | [`shared/README.md`](claudeville/src/presentation/shared/README.md) |
| Domain / application / config / infra | `claudeville/src/{domain,application,config,infrastructure}/` | [`claudeville/CLAUDE.md`](claudeville/CLAUDE.md) |
| Sprite assets | `claudeville/assets/sprites/` | [`scripts/sprites/generate.md`](scripts/sprites/generate.md), [`docs/pixellab-reference.md`](docs/pixellab-reference.md) |
| macOS widget | `widget/` | `README.md` § macOS Menu Bar Widget |
| KDE Plasma widget | `widget/kde/` | [`widget/kde/README.md`](widget/kde/README.md), `README.md` § KDE Plasma Widget |

## Agent Artifacts

Committed agent outputs go under `/agents/`:

- `/agents/plans/<slug>.md` — implementation plans
- `/agents/research/<slug>/` — research notes, proofs, image dumps
- `/agents/handover/<slug>.md` — handover memos

Before using an old artifact as implementation input, check [`agents/README.md`](agents/README.md) for status, supersession notes, and reusable templates.

## Workflow

- Multi-part work or explicit swarm requests → follow [`docs/swarm-orchestration-procedure.md`](docs/swarm-orchestration-procedure.md) (quick modes, ownership, baselines, destructive-command and commit/push gates).
- Single-file / single-owner tasks → direct execution unless swarm is requested.

## Browser Verification

The operator runs a server on http://localhost:4000/ that can be used to verify output.

## Copy And Locale Policy

Use English for all new/edited UI copy, docs, comments, and agent-facing text. Do not add non-English strings unless the task explicitly requests localization.

## Validation

Match validation to what you changed:

| Change | Smoke check |
| --- | --- |
| `server.js`, `adapters/*.js`, `services/*.js` | `node --check <file>`; multiple: `find claudeville/adapters claudeville/services -name '*.js' -print0 \| xargs -0 -n1 node --check` |
| Broad non-runtime regression pass | `npm run validate:quick` |
| Adapter discovery or relationship state | `node scripts/smoke/adapters.mjs`; `NODE_NO_WARNINGS=1 node scripts/smoke/relationship.mjs` |
| Runtime / API behavior | `npm run dev`; then `curl http://localhost:4000/api/{providers,sessions}` and confirm browser console |
| Anything under `src/` | Open `http://localhost:4000`, test World + Dashboard, resize, agent select/deselect |
| Sprite assets or `manifest.yaml` | `npm run sprites:audit-refresh`; for visuals, `sprites:capture-fresh` then `sprites:visual-diff` |
| World building or terrain config | `npm run world:validate-buildings`; `npm run world:validate-terrain` |
| `widget/` | macOS: `npm run widget:build`, then `npm run widget:check` or `npm run widget:verify-bundle`, then `npm run widget`; KDE: `npm run widget:kde:check`, then `npm run widget:kde:install` when KDE is available |
| Root agent docs | parity must hold: `diff <(tail -n +3 CLAUDE.md) <(tail -n +3 AGENTS.md)` empty |
| Docs-only | diff review + `git status --short` |

First-hour failure modes: [`docs/troubleshooting.md`](docs/troubleshooting.md). Load-bearing constraints (port 4000, hand-written WebSocket, static pricing, polling cadence): [`docs/design-decisions.md`](docs/design-decisions.md).

## GitHub And Remotes

- `origin` → `https://github.com/TokenBrice/claude-ville.git` (fetch + push, working fork).
- `upstream` → `https://github.com/honorstudio/claude-ville.git` (fetch only).
- Do not change remotes, branches, or fork workflow unless explicitly asked.

## Git Hygiene

- Re-run `git status --short` before editing, before committing, and before final response.
- Preserve unrelated local modifications and untracked files. Do not revert, stage, commit, delete, or format files outside the task scope.
- Do not run destructive commands (`git reset --hard`, `git checkout --`, `git restore`, `git clean`, `rm -rf`, `git stash drop/clear`, bulk formatters, `kill`/`pkill`/`killall`, port-killing pipelines) without explicit approval.
Loading