Commit graph

3505 commits

Author SHA1 Message Date
Natalie
333cf52226 docs(@projects/@magic-civilization): 📝 objectives p2-85 POI sprites+tooltips, p2-86 MCP rendered-driver
- p2-85: lair (+resource) sprites via the standin pipeline + hover tooltips. The
  lair overlay renderer is already sprite-capable (7df76174c); this covers
  generating sprites/lairs/* art and extending tile_info_panel for POI tooltips.
- p2-86: claude-player-mcp rendered-driver mode — magic_civ_screenshot /
  magic_civ_open_screen so Claude can drive the UI and capture rendered screens,
  complementing the headless state-only API (p2-67).
- Regenerate objectives dashboard (README.md + objectives.json), 326 objectives.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 19:49:23 -05:00
Natalie
7df76174cb feat(@projects/@magic-civilization): lair overlay sprite-capable + larger legible fallback
- lair_overlay_renderer now loads sprites/lairs/<type_id>.png (via
  DrawHelpers.scaled_sprite_size, POI fraction 0.45) and draws it in place of
  the diamond marker when the asset is present.
- Enlarge + keep-labeled the diamond fallback (radius 18→26) so a lair is at
  least legible until the art lands.
- Sprite path is a no-op until the standin pipeline emits sprites/lairs/*
  (tracked as a follow-up objective).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 19:47:38 -05:00
Natalie
5d5fda4127 feat(@projects/@magic-civilization): 🎨 token aliasing + tier the tech tokens (B cluster-1)
Make the design-token system genuinely layered instead of flat single-tier.

- build-ui-theme.py: add W3C-style alias resolution. A token $value may now be
  a reference `{color.x.y}` resolved (with cycle + dangling-target detection) to
  the target's literal hex at build time. Literal hexes pass through unchanged,
  so the resolver is transparent for existing tokens (--check stayed in sync).
- design-tokens.json: introduce a primitive `palette.*` tier (white,
  neutralMuted, neutralBorder) and convert the 8 component `tech.*` tokens from
  bespoke hex into ALIASES: researched→semantic.positive, available→accent.gold,
  available border→accent.goldBright, current→accent.science, locked→palette
  neutrals, selected→palette.white. tech.* now carries zero literal hex — a
  colour lives in exactly one place, killing drift.

Rationale: the prior `tech.researchedBg = #33b333e6` was a component token with
its own hex, independent of `semantic.positive` — the duplication the token
system exists to prevent. Now component → semantic → primitive.

Verified on plum (headed render against warm import cache — SAFE, the kernel
panic is mass-import only): build --check resolves aliases into the baked meta
blob (tech.researchedBg→66e666 etc.); tech_tree_proof renders the canonical
colours, exit 0, no reimport, no panic. Screenshot reviewed in conversation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 19:47:21 -05:00
Natalie
fd24254a7a feat(@projects/@magic-civilization): prologue wanderers visible + tile-dominant unit/city sprites
- Reveal the prologue spawn box in recalculate_vision: the player owns no units
  during the turn -1/0/1 cold-open, so unit-derived fog left the whole map black
  and the wanderers invisible. Reveal the local player's box (LOS from centroid +
  each wanderer hex) whenever a prologue is active.
- Prologue overlay: draw the real dwarf_wanderer / dwarf_tribe sprites, centered
  on the hex (+ hex_center, was drawing at the corner), scaled to match in-game
  units. Marker glyph kept only as a missing-asset fallback.
- Scale all unit sprites to 0.6 of hex width and city sprites to 0.75 via
  DrawHelpers.scaled_sprite_size — Civ-like tile dominance instead of the tiny
  native 64px blit that read as unreadable tokens.
- Add toggleable leveled Log autoload (dev/info/warn/error via MC_LOG_LEVEL,
  default info); route prologue diagnostics through it with durable tags
  (prologue / prologue-overlay), not objective ids.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 19:41:19 -05:00
Natalie
74c0868059 chore(@projects/@magic-civilization): 🏷️ p2-74 status stub→partial (convertibles done)
The de-hardcode convertible work is complete (clusters 1–5 landed; all
remaining inline Color() in live scenes are sanctioned carve-outs —
computed/fallback/transparent/game-content). Only the per-screen apricot
visual proofs remain, so the honest status is `partial`, not `stub`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:55:43 -05:00
Natalie
1b67eba7b4 refactor(@projects/@magic-civilization): 🎨 tokenize ui menu colours (p2-74 cluster 5)
Route scenes/ui/ingame_menu.gd (4) and scenes/ui/lens_switcher.gd (4)
off inline Color() literals onto existing design tokens (no token
additions, no theme rebuild needed).

- ingame_menu save status: green/red → semantic.positive / semantic.negative.
- lens_switcher active-lens font → semantic.positive; panel bg →
  background.deepest (alpha 0.82 preserved) + border → border.panel.
- Wrap two _show_status calls to satisfy max-line-length.

Both files gdlint-clean; all token refs resolve. 0 inline Color() remain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 22:17:49 -05:00
Natalie
fd5d6f1e88 refactor(@projects/@magic-civilization): 🎨 tokenize throne_room colours (p2-74 cluster 4)
Route scenes/menus/throne_room.gd off its 12 inline Color() literals
(the _layer_to_color placeholder palette) onto design tokens.

- Add color.throne.* (12 decoration-category placeholder colours) to
  design-tokens.json using exact-hex equivalents — zero visual change.
- Regenerate ui_theme.tres via tools/build-ui-theme.py (--check clean).
- Refactor _layer_to_color from a 13-return if-chain to a const
  LAYER_COLOR_TOKENS dict + 2 returns (DRY; clears a pre-existing
  max-returns gdlint warning too).

Verified on plum: JSON valid, theme --check clean, all 13 token refs
resolve, 0 Color() remain, gdlint fully clean on the file. Apricot visual
proof pending (placeholders render only on missing decoration sprites).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 21:57:49 -05:00
Natalie
021d57336f refactor(@projects/@magic-civilization): 🎨 tokenize knowledge_tree colours (p2-74 cluster 3)
Route the knowledge-tree (tech/culture) screen off 26 inline Color()
literals onto the design-token system.

- Add color.tech.* (8 node-state bg/border) + color.unlockAccent.* (7
  badge accents + dim) to design-tokens.json using exact-hex equivalents
  of the prior literals — zero visual change for cards/badges by
  construction.
- Regenerate ui_theme.tres via tools/build-ui-theme.py (--check clean).
- Remap detail-panel/text literals to existing background.panel /
  border.panel / border.divider / text.* / accent.* tokens.
- const→var refactor seeded in _resolve_theme_colors() (ThemeAssets.color
  isn't const-eval safe), called before _build_layout().
- Compact the indicator-badge spec block to a data-driven loop (identical
  tooltip output, fixes max-line-length).

Verified on plum: JSON valid, theme --check clean, all 26 token refs
resolve, no stale const refs (incl. subclasses), gdlint clean except the
pre-existing max-file-lines (file predates this pass; engine/scenes/ is
not gdlint-gated). Apricot visual proof pending (no godot import on plum).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 20:14:02 -05:00
Natalie
2c145ce5a3 fix(@projects/@magic-civilization): 🐛 verify hydrology mutations survive round-trip save-load
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 04:37:47 -07:00
Natalie
20de41a246 feat(@projects): add compute profiling layer for dev debugging
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 04:26:34 -07:00
Natalie
31f88a2e95 feat(@projects): document parallel simulation design
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 04:20:43 -07:00
Natalie
3ebe54f387 feat(@projects/@magic-civilization): mark sprite pipeline as complete
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 04:09:08 -07:00
Natalie
e20a576d90 feat(@projects/@magic-civilization): update objective statuses and priorities
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 04:02:08 -07:00
Natalie
242e717fb6 feat(@projects/@magic-civilization): add bunker test improvements
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 03:54:56 -07:00
Natalie
c88e136469 fix(@projects): 🐛 update deployment and guide workflows
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 03:38:03 -07:00
Natalie
6588c0cc76 feat(@projects/@magic-civilization): add river gap blocking for bunkers
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 02:27:17 -07:00
Natalie
161213a795 test(@projects/@magic-civilization): 📸 add bunker proof test scene
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 23:18:24 -07:00
Natalie
da5f138c23 fix(@projects/@magic-civilization): 🐛 update bunker status and acceptance criteria
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 23:11:43 -07:00
Natalie
d8288b2a9d feat(@projects/@magic-civilization): add suppressed tile yield suppression logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 23:05:17 -07:00
Natalie
257d16eee5 feat(@projects/@magic-civilization): add bunker river gap blocking logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 22:58:46 -07:00
Natalie
a94c0f18e5 feat(@projects/@magic-civilization): add flora transition chronicle events
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 22:55:29 -07:00
Natalie
77f2550fd7 feat(@projects): complete flora lifecycle chronicle events
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 22:48:59 -07:00
Natalie
c8491ead8d feat(engine): add flora succession test suite
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 22:42:21 -07:00
Natalie
147095355c fix(@projects/@magic-civilization): 🐛 adjust carrying_capacity for stable succession test
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 22:35:51 -07:00
Natalie
12141f4c15 feat(@projects/@magic-civilization): add flora succession bridge test
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 21:11:01 -07:00
Natalie
5d234523b6 feat(@projects/@magic-civilization): expose flora succession transitions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 21:04:33 -07:00
Natalie
6931b934ec feat(@projects/@magic-civilization): expose flora succession transitions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 20:58:07 -07:00
Natalie
97fde477c2 feat(@projects/@magic-civilization): integrate flora lifecycle into played turns
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 20:51:34 -07:00
Natalie
ef25e2cf8b feat(api): add round-trip serialization tests for city data
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 20:44:17 -07:00
Natalie
0d2520a700 feat(@projects/@magic-civilization): add terraforming cascade design and fauna updates
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 19:51:48 -07:00
Natalie
5074152af6 feat(@projects/magic-civilization): update worldsim accumulator save/load logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 03:07:50 -07:00
Natalie
b5286c48f8 fix(@projects/@magic-civilization): 🐛 resolve climate-input save divergence via p2-82
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 01:26:23 -07:00
Natalie
0763db8e2d feat(game): persist wind_direction for climate fidelity
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 01:17:04 -07:00
Natalie
00e98329fa feat(@projects/@magic-civilization): update objectives dashboard and climate integration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 01:07:07 -07:00
Natalie
18bd83bff8 fix(@projects/@magic-civilization): 🐛 update objective status to partial
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 20:42:14 -07:00
Natalie
fdcf67801c fix(@projects/@magic-civilization): 🐛 adjust science yield calculation
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 20:29:12 -07:00
Natalie
9c10a90075 feat(@projects/@magic-civilization): add player economy field mapping
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 20:09:35 -07:00
Natalie
94d9a8b483 feat(ai): add accurate per-city yields to learned obs
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 19:37:33 -07:00
Natalie
c94faa3a11 feat(ai): improve move vs combat parity tracking
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 18:52:56 -07:00
Natalie
88bb753876 feat(ai): add parity sampling for move validation
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 18:39:56 -07:00
Natalie
6a15d0a418 feat(@projects/@magic-civilization): add learned slot turn execution logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 18:19:24 -07:00
Natalie
a5de8ad517 feat(@projects/@magic-civilization): add recording variant for learned slot actions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 18:05:47 -07:00
Natalie
a804ceb430 fix(@projects/@magic-civilization): 🐛 fix axial-to-offset conversion for grid visibility
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 17:51:48 -07:00
Natalie
d83ded529e feat(@projects/@magic-civilization): add learned-controller probe integration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 12:22:03 -07:00
Natalie
7d37fdc2dd feat(@ai): add controller slot mapping cache
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 12:15:39 -07:00
Natalie
aec8f348e9 fix(@projects/@magic-civilization): 🐛 resolve autoplay architecture mismatch for learned controller integration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 12:08:45 -07:00
Natalie
7734b7532a feat(@projects/@magic-civilization): add optional sprite load warning flag
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 11:46:03 -07:00
Natalie
c1f44e0a83 feat(@projects/@magic-civilization): complete city script view conversion
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 11:32:55 -07:00
Natalie
efd65a4a86 chore(@projects): 🔧 add claude worktree symlink
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 07:52:52 -07:00
Natalie
1bca207c79 fix(@projects/@magic-civilization): 🐛 remove npc_buildings array and rebuild logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 07:37:54 -07:00