Skip to content

ClaudeVille: Enhanced, Improved, Refined#27

Open
TokenBrice wants to merge 542 commits into
honorstudio:mainfrom
TokenBrice:main
Open

ClaudeVille: Enhanced, Improved, Refined#27
TokenBrice wants to merge 542 commits into
honorstudio:mainfrom
TokenBrice:main

Conversation

@TokenBrice
Copy link
Copy Markdown

I forked Claudeville and worked on it quite a bit using Claude and Codex, I figure you could be interested
image

TokenBrice and others added 30 commits April 27, 2026 20:45
…ants

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Lighten zenith from #1e0f08 to #241410 for a warmer, less near-black upper sky. Captures 1920x1080 baseline screenshot of the living-twilight sky.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…construction

Move prefers-reduced-motion change listener from show() to the constructor
so OS-pref toggles update motionScale immediately, regardless of whether
show() has been called. Remove the now-redundant attachment in show().
Add skyRenderer?.dispose?.() at the end of hide() so the SkyRenderer
offscreen canvas cache is released when world mode is hidden.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…er, add dispose

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Streamline CLAUDE.md and AGENTS.md with clearer formatting, remove
redundant sections, and update references to reflect current workflow.
Keep both files in sync per project conventions.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Opus → Valkyrie battle-seraph (pale armor, crimson wings). Sonnet →
true wizard archmage (blue-violet robes, pointed hat, crystal staff).
Haiku → apprentice mage (amber pointed hood, wand, spellbook). Manifest
prompts updated to match; assetVersion bumped. Also adds cloud and moon
atmosphere entries and removes the astrolabe sub-sprite from the
observatory definition.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Switched from domed research observatory to a scholarly stone clock tower
with a large circular clock face, blue slate roof, and copper-blue
accents. Removed the animated astrolabe sub-sprite. Updated buildings.js
entrance/visitTile positions to match new footprint.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…prites

AtmosphereState drives a real-time day/night phase used by SkyRenderer
and the new WeatherRenderer. SkyRenderer gains multi-phase sun glow
modulation (dawn rose-gold → noon white → dusk amber-red), improved
horizon wash layering, and cloud parallax wind-drift decoupling.
WeatherRenderer handles rain, fog, and storm overlays keyed on
AtmosphereState intensity. Adds three cloud sprites (cumulus, wisp,
overcast-bank) and a cool crescent moon sprite generated via Pixellab.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BuildingSprite gains a radial light bloom pass composited at each torch
and brazier emission point, hearth glow intensity wired to visitor
presence, and an improved lighthouse beam with soft rotation geometry.
IsometricRenderer integrates AtmosphereState for ambient color shifts
and wires WeatherRenderer into the clear path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add mobile/narrow viewport breakpoints (≤700px) across all layout
stylesheets: topbar wraps center nav to a scrollable second row, sidebar
narrows, dashboard cards reflow to single column, activity panel and
layout adjust accordingly. No layout changes on desktop widths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… script

world-enhancement-plan.md: 35-item ranked visual rendering backlog from
parallel subagent audit (terrain, buildings, agents, sky, camera).
weather-atmosphere-clock-system.md: implementation plan for the living
sky sprint. generate-pixellab-revamp.mjs: minor prompt update.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
App.js threads devicePixelRatio (capped at 2×) through canvas sizing so
sprites and labels render sharp on Retina/4K. Camera gains fractional
zoom steps [1, 1.5, 2, 2.5, 3] with 150 ms ease-out animation, world-
edge bounds clamping on pan/follow/center, and a reduced-motion gate
that skips the animation. Minimap gains a live viewport frustum overlay.
Implements T0.4 and T0.5 from the world-enhancement-plan.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… reroute

Buildings: taskboard shifted south to y=33, expanded visit-tile sets for
harbor and taskboard to reduce crowding around entrances. Town plan:
production-row route now loops through the taskboard area, two bridges
replaced by one wider central elderwood bridge at x=18 y=25. Scenery:
bridge accent props updated to match the new single-bridge layout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Agent: consolidate target-building resolution into a single
_buildingForToolName() call; git read-commands (status, diff, log, etc.)
now route to harbor instead of archive; archive pattern no longer claims
git commands. Building: containsVisitPoint uses ±0.72 tile float
tolerance instead of strict integer equality, fixing agents that arrive
slightly off-center from not being recognised as present.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pathfinder: fast line-walk path now checks whether the route crosses
bridge tiles; if so, it runs the full lookahead/simplify pass to ensure
agents step onto the bridge walkable rather than jumping over it.
_walkableCandidates returns early on the first walkable hit. SceneryEngine:
_collectBuildingWalkBlocks is now called after the footprint set is ready
so exclusion tiles can extend it correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…er trim

Activate the four breathing-idle frame rows already generated in every
character sprite sheet; AgentSprite now cycles through frames 0–3 at
the existing 500 ms cadence instead of locking to a single cell.
Remove the unused _drawStatusRibbon() method (36 lines with no call
site). ParticleSystem: add reduced-motion guard before allocating
particle resources. Provider trim colors extended to model sub-variants.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
IsometricRenderer: thread devicePixelRatio through all coordinate
transforms (click hit-test, drag, wheel); cache per-light radial
gradients keyed on (x, y, radius, color, phaseBucket) eliminating the
main per-frame allocation hot-spot (T0.1). BuildingSprite: hearth glow
intensity wired to visitor count; lantern-glow overlay fires on all
torch/brazier props regardless of split-pass. SkyRenderer: gradient
stops redistributed for perceptual depth, cloud parallax wind-drift
decoupled from camera parallax, sun glow radius and warmth modulate
with AtmosphereState phase. AtmosphereState: exposes shadowAngleRad
and lightWarmth for downstream consumers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
New Opus valkyrie sprite sheet with corrected silhouette. AssetVersion
bumped to bust browser caches across all sprite consumers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
world-enhancement-plan.md: multi-model review pass (haiku/sonnet/opus)
added Tier 0 architectural prerequisites (T0.1–T0.6), corrected
misdiagnoses (vignette cache was already implemented), re-tiered several
items, and added status tags (NEW/DONE/REVISED/MOVED).
codex-equipment-coherence-design.md: new design document for Codex agent
equipment coherence sprint.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Codex equipment is now driven by model class (spark → multitool,
gpt54 → wrench, gpt55 → swordShield) instead of reasoning effort tier.
Effort tier is carried by floor rings and crown accessories unchanged.
Scrubber tuning is keyed by class to remove baked-in weapon stacking
for each sheet variant.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BuildingSprite gains a typed LIGHT_SOURCE_REGISTRY (beam lights for
watchtower) and EMITTER_LIGHTS table; pushSource deduplicates emitters
at collection time. IsometricRenderer adds StaticPropSprite.drawPart
with clip-based back/front split for correct occlusion ordering.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…d equipment

All six character sheets regenerated (Claude Haiku/Opus/Sonnet, Codex
Spark/GPT-5.4/GPT-5.5) to match the new class-grammar equipment. Manifest
bumps assetVersion. Validator and capture script updated to handle
per-class scrubber parameters.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…l-rituals

New plans cover the chronicle/event log feature, familiars and council
NPCs, foundational feature scaffolding, and tool-ritual ceremonies.
world-enhancement-plan updated to mark #39 (Codex equipment coherence)
as implemented and renumber Sprint D–E items.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Codex equipment research captures (overview + per-model grids), superpowers
session history, and visual debug/reference images from layering, sonnet-loki
design, taskboard hero, and valkyrie sprite work.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Six rendering improvements for the north lagoon:

- A1: river-kind basins now get a deepRatio (0.32 polyline, 0.40 basin),
  unlocking centre-darkening, depth wash, and wave amplitude for the
  lagoon — paths that were silently no-ops because every river was
  treated as uniformly shallow.
- A2: animated expanding ripple ring drawn before the static pool fill
  in _drawTropicalWaterfalls, driven by waterFrame phase.
- A3: SceneryEngine exposes lagoonWaterTiles; renderer routes lagoon
  water to a warm tropical teal shimmer (rgba 120,230,200) versus the
  existing cool blue used for harbor sea.
- A4: two new gull staging waypoints + a fifth flock route that loops
  five birds over the north lagoon airspace.
- A6: fish-school deep-tile guard is now (deep && !lagoon), so the
  lagoon school at (18.2, 10.4) keeps rendering after A1 makes its
  tile deep.
- B1: lagoon-adjacent shore tiles get a soft additive foam radial wash
  in _drawShoreCrest, gated on adjacentLagoon to avoid affecting the
  harbor.
- B7: lagoon water palette lerps toward a desaturated grey-teal under
  rain or overcast weather above intensity 0.4, with shimmer frequency
  scaled up proportionally.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Five new lagoon sprites generated via Pixellab map_object tool. Sizes
match manifest declarations (32, 64, 32, 48, 48 px). assetVersion
bumped to bust browser caches.

- veg.lilypad: floating cluster, three pads with one lotus bud
- prop.lakeShrine: weathered stone shrine for mid-lake landmark (asset
  shipped; placement deferred — see north-lagoon-sprint plan)
- prop.mangroveRoot.twisted: shore root cluster
- prop.mangroveRoot.arch: shore archway root
- prop.driftwood.log: half-submerged bleached log with sprout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TokenBrice and others added 30 commits May 17, 2026 21:16
…llbacks

Four reviewer-flagged fixes consolidated into one renderer pass.

R3 #1 — SkyRenderer.attach() / detach() lifecycle:
SkyRenderer used to install bus subscriptions in the constructor and
clear them on dispose(). The renderer instance survives hide() / show()
mode toggles (only its cache is invalidated), so after the first toggle
the unsubscribers were dropped and aurora / shooting-star events
silently stopped firing. Now subscriptions live in attach() (idempotent,
clears any prior set first) and detach() (clears them). IsometricRenderer
.show() calls attach(); hide() calls detach() + releaseCache().
releaseVolatileCaches() and invalidateViewportCaches() switched from
dispose() to releaseCache() so resizing no longer kills listeners.
dispose() still composes detach + cache release + fallback teardown.

R6 #1 — SeasonalAmbience static fallback now renders:
Previously _seedStaticFallback called particleSystem.spawn, but the
particle system is muted at motionScale === 0, so reduced-motion users
saw nothing. Added per-season staticColor/staticSize, _staticFallbackDots
array, and a public drawStatic(ctx) direct-canvas pass. IsometricRenderer
._drawTerrain calls it after _drawStaticBuildingSmoke, mirroring the
existing Forge/Mine static pattern. setEnabled(false) clears the array.

R6 honorstudio#4 — Open-sea gulls keep at least one bird per route:
_openSeaGullPositions filtered by cyclePhase <= activeSpan, and at
motionScale === 0 used time=0 — birds with cycleOffset > activeSpan
disappeared entirely. Under reduced motion now folds cycleOffset back
into the active window (cycleOffset % activeSpan) and skips the
population gate so every route renders at least one deterministic bird.

R6 medium — Archive doorway static burst under reduced motion:
_drawArchiveEnhancement now calls _drawArchiveStaticDoorBurst when
motionScale === 0 and readIntensity > 0.6, stamping five fixed 2px
dots around the doorway so the reading surge stays visible without
the particle burst.

Sources: R3 #1, R6 #1, R6 honorstudio#4, R6 medium.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
R6 #2 — chatBubbleAnim advanced unconditionally in update(), so the
chat ellipsis dots cycled `.` `..` `...` even under reduced motion.
Scaled the per-frame advancement by this.motionScale so the field
pins at its reset value of 0 when motion is disabled; _drawChatEffect
then renders a stable single dot.

R6 medium — the idle bob math (Phase 1.13) computed
Math.sin(this.frame * 0.25) * 0.4 for IDLE status. Under reduced
motion, this.frame is held elsewhere, so the bob was static in
practice — but the intent was implicit. Added an explicit
&& this.motionScale > 0 guard so the bob is unambiguously zero when
reduced-motion is on, regardless of any future change to the
frame-advance gate.

Status emote thinking-dots animation was already gated correctly
(animated = this.motionScale > 0 at the existing site); no change
required there.

Source: R6 #2, R6 medium.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…d + sidebar

The three new AgentStatus constants from Phase 0.4 only reached the
world-mode sprite layer; the DOM side (Formatters, AgentPresentation,
DashboardRenderer) and the CSS dot/border-left palette silently
downgraded them to "idle/grey". Reviewer R2 flagged this as the most
material architecture gap.

Formatters.statusClass — extended the whitelist so RATE_LIMITED,
ERRORED, WAITING_ON_USER produce snake-case suffixes matching the
existing --working / --idle / --waiting convention.

AgentPresentation.statusPresentation — added a statusOverrideLabel map
for the three new statuses ("Rate-limited", "Errored",
"Waiting for you") and corresponding color entries:
  rate_limited     #f59e0b  amber
  errored          #ef4444  red
  waiting_on_user  #facc15  yellow
Overrides take precedence so a future i18n key addition stays
forward-compatible. sortAgentsByStatus priority is now
errored < waiting_on_user < working < waiting < rate_limited < idle —
the most urgent states surface to the top of the sort.

DashboardRenderer._detailCandidates extends the eager-fetch active
bucket from {working, waiting} to also include errored, rate_limited,
waiting_on_user so urgent off-screen agents still receive detail
fetches.

CSS — added matching rules in sidebar.css (.sidebar__agent-dot--*)
and dashboard.css (.dash-card--*, .dash-card__status--*) using the
same hex values the JS now emits, so the dot, border, and label colors
read distinctly under each new status. Pulse animations tuned per
urgency (errored fastest, waiting_on_user mid, rate_limited slower).

Source: R2 status presentation gap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
R7 reviewer flagged 62 leaked planning-doc comments (`Task 2.12: ...`,
`Phase 4.10 — ...`, `WU-C: ...`) violating the root CLAUDE.md policy
"no task/PR/issue refs in comments". This commit removes them in place
or rewrites the substantive WHY half without the prefix.

Distribution: HarborTraffic (17), IsometricRenderer (22), AgentSprite
(14), BuildingSprite (12), LandmarkActivity (5), plus single-spot
strips in DomainEvent / theme / ChronicleMonuments / RitualConductor /
AgentSimulator / gitEvents / smoke header. Net -39 lines.

Conservative dead-code surgery alongside the comment pass:

- AgentBehaviorState.errorBurst: removed. Never assigned anywhere;
  Phase 0.4 plan referenced it but no consumer wired it. The other
  three instrumentation fields (completedVisits, totalDwellMs,
  reroutes) are KEPT — they're surfaced via window.__agentBehavior
  and the debug snapshot.
- AgentSprite._inferFacingPoint: dropped the dead `behavior.current
  Reservation` and `behavior.intent` fallback branches. VisitTile
  Allocator returns a reservation but it isn't stored on the behavior
  state today; the explicit-arg → building.facingPoint → visitTile.
  facingPoint chain handles the real data sources.
- MonumentRules.enableVerifiedStones gate + _verifiedStone method +
  'test-summary' branch: removed. The constructor option was never
  set true. Both call sites (ChronicleMonuments, MonumentPlanter)
  use `new MonumentRules()` with no args.
- ModelVisualIdentity.js compat re-export of runtimeRoleAccessory:
  deleted. AgentSprite imports directly from RoleAccessory.js; no
  other consumer.

Validation: every modified file passes `node --check`; both smoke
scripts (adapters.mjs 5/5, relationship.mjs 7/7) still PASS; live
API endpoints all 200.

Source: R7 #1, R7 #2, R7 honorstudio#3, R7 honorstudio#4, R7 honorstudio#5.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Seven specialized reviewers audited the 33-commit Phase 0-5 rollout
of the world-enhancement-council plan. R4 (visual in-situ via
Playwright) was aborted because the headless camera was rendering a
broken viewport; the user's real-browser session validated the
visuals independently. R5 returned first; R1/R2/R3/R6/R7 returned
in the second batch.

Verdicts:
- R1 plan audit: approve (55 DELIVERED, 4 explicit DEFERRED, 1
  PARTIAL acceptably narrowed, 0 MISSING).
- R2 architecture: approve-with-fixes — stale event-bus table,
  orphan emits, and a status-presentation gap (already fixed).
- R3 performance: approve-with-fixes — Phase 0/5 cache claims hold,
  SkyRenderer subscription-lifecycle bug (fixed).
- R5 adapter+server: approve-with-fixes — smokes PASS, parser
  handles every edge case, server.js + WebSocketClient changes
  validated.
- R6 reduced-motion: 4 blocking + 3 medium gaps (chat ellipsis,
  SeasonalAmbience static fallback, gull fallback, archive doorway
  static — all fixed).
- R7 code quality: approve-with-fixes — 62 task/phase prefix
  comments + 4 dead-code surgeries (all applied).

Findings reports live under
agents/research/world-enhancement-council-2026-05-17-review/.

The follow-on fixes from this review landed in:
- d10ce0f fix(world): preserve Sky subscriptions across mode toggles
- ddd258f fix(agent): gate chat ellipsis + idle bob behind motionScale
- 383f98c fix(ui): surface new statuses in dashboard + sidebar
- ad48b1d chore(world): strip task/phase prefix comments + dead-code

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Text was rendering at 6px in "Press Start 2P" (a bitmap font designed
for 8px multiples), producing garbled glyph artifacts at zoom < 1.5.
Bumped text to 10px and scaled the box, indicator glyphs (6→8px),
padding, and slot stride to match for legibility.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DeepSeek borrowed Gemini's oracle sprite, colliding with the Claude
mage family. Give it a dedicated rogue/archer class across the tier
ladder:

- reasoner: hooded longbow ranger (apex)
- pro: dual-dagger assassin (also the bare-deepseek fallback)
- flash: light single-dagger scout

Repoint both the frontend (ModelVisualIdentity) and server
(sessionPresentation) resolvers to the per-tier sprites and a new
deepseek palette; bump assetVersion. Also fix generate-character-mcp.mjs
for PixelLab's new states[] export schema (backward compatible with the
legacy flat layout).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant