Commit graph

3423 commits

Author SHA1 Message Date
Natalie
4bf1d054a9 feat(@projects/@magic-civilization): improve fauna seeding logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 20:54:35 -07:00
Natalie
3f866545aa feat(@projects/@magic-civilization): add live fauna emergence test suite
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 20:42:56 -07:00
Natalie
fba776c936 fix(@projects/@magic-civilization): 🐛 update render hook fauna overlay timing
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 20:33:18 -07:00
Natalie
207dbec853 feat(@projects/@magic-civilization): add fauna population overlay rendering
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 20:19:46 -07:00
Natalie
21257ea4bc test(engine): add fauna overlay integration test suite
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 20:06:09 -07:00
Natalie
27ade4cd43 feat(@projects/@magic-civilization): add per-tile fauna density updates
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 19:58:36 -07:00
Natalie
d0a74e5122 fix(@projects/@magic-civilization): 🐛 update world simulation docs and objectives
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 19:34:57 -07:00
Natalie
c2668c8789 feat(@projects/@magic-civilization): add lithology and terrain evolution integration docs
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 19:07:45 -07:00
autocommit
e8d151f950 refactor(management): ♻️ Replace city garrison healing calculation with internal helper to decouple from BuildingScript dependency
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-07 00:12:46 -07:00
autocommit
5e3624eb29 fix(climate): 🐛 Prevent crashes in ecological event spawning by adding null/absent checks for resource configurations
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 23:56:40 -07:00
autocommit
0c734578e0 refactor(api-gdext): ♻️ Move item JSON parsing logic to a shared module in lib.rs and city_slot.rs for DRY compliance
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 23:40:27 -07:00
autocommit
ed76612ad2 feat(simulator): Implement parallel city state tracking for Path 2 in the simulator API
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 22:35:31 -07:00
autocommit
8a7c26ff12 chore(tooling-specific): 🔧 Update bridge-cse_01UCbE4p6FXAuiDrQ5WSWyTh submodule state for toolchain integration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 22:19:32 -07:00
autocommit
b56ae0612c feat(api-gdext): Add new simulation endpoints and Rust bindings for Godot Engine integration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 17:46:38 -07:00
autocommit
8977f8f138 chore(game): 🔧 Update export templates, default scene, and engine compatibility settings in project.godot
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 17:46:38 -07:00
autocommit
a29572bfdf feat(save-manager): Add incremental save/load support with versioned state handling for world simulation
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 17:46:38 -07:00
autocommit
e9b76ecdd6 feat(engine): Implement TurnManager and WorldSimState for core turn-based simulation and world state management
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 17:46:38 -07:00
autocommit
5a6f9ffb67 perf(game-engine): Optimize world simulation parameters for better ecology visualization and stability
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 17:46:38 -07:00
autocommit
529bad2b1f test(engine): Add integration test for playable world simulation path in game engine
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 17:24:49 -07:00
autocommit
f5cf076f15 feat(scenes): Add ecological simulation test scene with GDScript logic, unique identifier, and TSCN structure
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 17:24:49 -07:00
autocommit
b0069856f8 fix(simulator): 🐛 Replace HashMap with BTreeMap in EcologyEngine’s continuation state to ensure deterministic serialization order for species registry
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:42:17 -07:00
Natalie
2de6051c5f chore(objectives): fix Game-1 owner integrity + flesh out underground (g2-12) cluster
Game-1 dashboard fix: reassign 5 objectives off specialist-agent names
onto valid team-leads so objectives-report.py regenerates (it aborts on
any owner lacking a .project/team-leads/<owner>.md identity):
  p1-61 game-data->terraformer, p1-57 game-systems->envoy,
  p2-73/p2-60/p2-74 godot-engine|godot-ui->wireguard.

Underground (Game 2, stays OOS): decompose g2-12 umbrella into 8 ordered
phase objectives g2-12a..h (data model+save, worldgen, excavation, cross-
layer movement+pathfinding, per-layer fog, collapse, layer UI, AI
awareness); g2-11 blocked_by tightened to [g2-12a, g2-12c].

Dashboard regenerated: 319 objectives, README.md + objectives.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:24:32 -07:00
autocommit
3aef7775a7 test(engine): Add unit tests for award computation and theme color validation in the game engine
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:21:16 -07:00
autocommit
0cec651fd3 test(game-engine): Add integration tests for end-game footer actions and worldsim playable path interactions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:21:16 -07:00
autocommit
be7c824275 refactor(ecology): ♻️ Improve ecology state serialization to enable full continuation state persistence for save functionality
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:21:16 -07:00
autocommit
061b6f0f7b feat(api-gdext): Introduce worldsim dynamics traits, structs, and functions for Godot engine extension API
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
8bc770d8a0 feat(worldsim): Add core event dispatch and simulation loop for Minecraft-like world simulator
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
1d9e77be52 feat(chronicle): Add support for recording and processing turn-based world simulation steps in the Chronicle system
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
e8e4d5c7f7 feat(simulator): Introduce dynamic world simulation tracking in GameState with state transitions and interaction methods
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
4008e56643 feat(simulator): Introduce EventDispatcher infrastructure for dynamic world state updates with event types in event_dispatch.rs
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
36893f5e45 feat(mc-save): Add worldsim dynamics serialization and round-trip validation for new save format
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
77316f105d feat(simulator): Implement carrying capacity migration logic for ecology simulation engine
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
a8aa0847ad feat(mc-core): Introduce deterministic ecology simulation logic with a new Seed domain and seed generation system
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
autocommit
715c73243e deps-upgrade(simulator): ⬆️ Update simulator dependencies to latest stable versions in Cargo.toml and regenerate Cargo.lock
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 16:03:19 -07:00
Natalie
30bcde26d5 feat(fog): dwarven cartographer's-fog for unexplored tiles
Replace flat-black unexplored fog with an antique-cartography treatment
(Civ-VI style), themed as dwarven 'unmapped vellum/slate' — reveals no
real terrain, only a stylized stone surface.

- fog_renderer.gd: unexplored tiles painted with a procedurally generated
  opaque vellum texture (FastNoiseLite domain-warped FBM → warm dark
  slate→parchment gradient), generated synchronously at init so there is
  no reveal-before-ready leak. No binary art asset required. Visible/seen
  paths unchanged; frontier stays a clean opaque edge.
- design-tokens.json -> ui_theme.tres: fog.unexplored 000000ff -> 1a160fff
  (warm 'unmapped vellum' tone) so the minimap unexplored cover matches.

Render-verified on apricot (iter_7q proof, fog enabled): undiscovered
renders as warm stone/vellum on map + minimap, no terrain bleed, clean
frontier, lit tiles unaffected. gdlint clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 06:35:04 -07:00
Natalie
c22b497a27 fix(fog): fully hide undiscovered tiles on map + minimap
Undiscovered (never-seen) terrain was leaking through fog on both the
main map and minimap; only the lit(visible) vs unlit(seen) distinction
worked. Root cause: unexplored overlay was sub-opaque + undersized.

- fog_renderer.gd: UNEXPLORED_COLOR alpha 0.85 -> 1.0 (opaque); edge-fade
  softening now gated to the FOGGED state only — unexplored tiles stay
  fully opaque even at vertices bordering a visible tile (was revealing
  undiscovered terrain along the exploration frontier).
- design-tokens.json -> regenerated ui_theme.tres: fog.unexplored
  alpha 0.90 -> 1.0 (fixed at token source, not hand-edited).
- minimap.gd: unexplored now drawn as a full tile-pitch opaque cover
  instead of a 3x3px dot (the dot left ~5px gaps at minimap scale,
  leaking terrain). fog.explored (seen dimming) left unchanged.

Verified on apricot via iter_7q_worldmap_visual_proof with fog ENABLED:
undiscovered renders solid black on map + minimap, clean hard frontier,
lit tiles unaffected. (GUT cannot prove this — render-verified.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 03:30:58 -07:00
Natalie
26bf44f077 feat(designs): sprite showcase /sprites route + standalone scoped gallery
Lands remaining bridge-cse worktree WIP onto main:
- SpriteShowcase.tsx React page + wired /sprites route (App.tsx) + Index nav link
- standalone scoped sprite-gallery.html (160 units / 165 buildings, 0 missing)
- p2-74 cluster-3 HUD/minimap proof screenshot

SpriteShowcase typechecks clean (@game-assets glob + theme, no WASM dep).
Excluded tsconfig.tsbuildinfo (build cache); tile_info_panel.gd kept main's
global-theme version. User-authorized override of autocommit (daemon idle).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 02:11:21 -07:00
Natalie
5953f4f465 merge(magic): integrate bridge-cse branch into main — p2-74 design tokens + p2-65 mc-state crate + sprites/gallery
Full integration of worktree-bridge-cse_01Nnt (54 commits) into main.
Conflicts (17) resolved: adopt branch's p2-65 GameState->mc-state crate move
across mc-ai/mc-core/mc-player-api/mc-turn; keep main's design-token theme
system (build-ui-theme.py, tile_info_panel.gd) and main's newer p0-26b evidence.

Workspace: 2624 tests pass; 5 pre-existing/environmental failures inherited from
main (constructor_smoke capping test, five_players_overflow, 3x gpu_rollout_parity)
— zero regressions introduced by the merge. api-gdext (GDExtension) compiles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 01:04:16 -07:00
Natalie
413f6ea828 docs(@projects): 📝 update research port objective status details
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-06 00:07:32 -07:00
autocommit
1336dc73d0 deps-upgrade(bridge-cse): ⬆️ Update bridge-cse submodule to latest commit for improved tooling stability
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 22:02:06 -07:00
autocommit
ca8cb6c6cb ux(world-map-hud): 🚸 Improve world map HUD layout and interactions for better usability and visual clarity
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 21:45:41 -07:00
autocommit
f12c2f3b4e ui(world-map): 💄 Add distinct terrain colors and overlay styles (arena, courier routes, tile info) to world map and minimap scenes
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 21:45:40 -07:00
autocommit
3c07f0680c refactor(ui): tokenize world-map HUD + minimap colors (p2-74 cluster 3b)
Route inline Color() in the world-map HUD banners and minimap onto ThemeAssets
design tokens. Visual-only (Rail 3), no logic change:

- world_map_hud: patrol banner box -> background.panel/accent.science + label
  accent.science; rally picker box -> background.panel/accent.sage + title
  accent.science; notification toast box -> background.panel/accent.gold +
  label text.primary
- minimap: const FOG_COLOR/UNEXPLORED_COLOR/PING_RING_COLOR -> _ready()-populated
  vars from fog.explored/fog.unexplored/accent.ping; border stylebox border ->
  border.panel; backdrop fill -> background.deepest

Minimap TERRAIN_COLORS biome palette stays hardcoded with an explicit comment:
it is game-content color (no UI token applies) and a deliberately distinct muted
minimap rendering, not a terrain.json mirror (the arrays diverge). Re-sourcing it
is a Rail-2 data follow-up, out of scope for this visual-only token pass.

DataLoader RGB conversion, env-var viewport color, transparent structural fills,
and the neutral gray default left as-is.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 21:36:41 -07:00
autocommit
d721d58d04 refactor(ui): tokenize world_map scene colors (p2-74 cluster 3a)
Route inline Color() in world_map/** scene scripts onto ThemeAssets design
tokens. Visual-only (Rail 3), no logic change:

- arena_overlay: const P0/P1_COLOR -> build()-populated vars from player.blue/
  player.orange; title -> accent.gold; turn label -> accent.science
- courier_route_overlay: const COLOR_IN_TRANSIT/DELIVERED -> _ready()-populated
  vars from accent.sage (alpha preserved per state)
- tile_info_panel: panel stylebox bg/border -> background.overlay/border.panel;
  invalid-yield modulate -> semantic.negative; pop count -> accent.sage
- world_map: placement-area highlight -> accent.science (alpha preserved)
- world_map_units: patrol line + flag labels -> accent.science

Computed player-color overlays (arena_playback combat flash) and neutral
white fallbacks/resets left as-is — genuinely dynamic, no token applies.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 21:34:07 -07:00
autocommit
eb25722298 style(hud): 🎨 Refactor HUD components to enforce theme color consistency by replacing hardcoded styles
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 21:29:15 -07:00
autocommit
1d2334f24c remove(game): 🔥 Remove unused parsecheck scene file
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-04 21:29:15 -07:00
autocommit
ef3c494002 chore(index): regen (3 missing units authored, p0-26b re-scored, de-hardcode clusters 1-2)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 21:25:02 -07:00
autocommit
9a5cd16fd4 fix(ui): end_turn_button brightens on hover, deepens on press
Follow-up to 268b85c92. The first tokenization mapped the per-state button
styleboxes such that the warm-token luma ordering inverted the interaction: the
button darkened on hover instead of brightening. Reorder by luma so hover is the
lightest warm token (button.bgPressed #472f0f), pressed the darkest
(button.bgHover #331a0d), and normal in between (background.listSelected
#3f2d0d) — restoring the original gold-emphasis brighten-on-hover feel. Token
names read awkwardly because the button.* set targets the indigo-idle inherited
button, not a gold emphasis button; the comment documents the luma intent.
Visual-only; compiles with autoloads (GATE_OK).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 21:24:33 -07:00
autocommit
d1b7ff8efc docs(p0-26b): record post-port tier_peak batch; bullet 5 stays open (no baseline)
Ran the 10-seed T300 autoplay smoke batch on apricot against the committed
build (origin/main @ f5c4ee9c3, the live pick_research_via_bridge dispatch).
Recorded the per-seed tier_peak table as cited evidence: all 5 clans present,
all games resolved to victory with both sides active (seed5's 37-turn win is a
legitimate tinkersmith domination rush), tier_peak spans T1-T6 with no
collapse — a healthy, clan-diverse post-port distribution.

Bullet 5 remains [ ] / status partial: the acceptance is comparative
("unchanged-or-better vs the pre-port baseline") and no recorded pre-port
baseline exists. The nearest pre-port SHA is confounded by ~3 weeks of
unrelated changes; the only confound-free before/after (port commits reverted)
isn't reachable by the apricot launcher (forge-fetch only, revert branch is
ACS-unpushed). Decision-correctness is already pinned by the bullet-4 parity
test (8/8). tier_peak extracted directly from player_stats[].tier_peak because
autoplay-report.py aborted on a pre-existing autoplay-validate.py bug
(unhashable type: list) — left unfixed (out of fence).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 21:23:20 -07:00
autocommit
4b0b661907 docs(p2-74): record cluster-2 (HUD panels + notifications) progress
Log the 17 tokenized HUD/notification scripts, the three landing commits, the
const-Color-trap conversions, GUT baseline parity (16 pre-existing failures,
zero new), proof paths, and the held-for-world_map remainder (world_map_hud,
weather_visualizer, minimap, encyclopedia). Status stays stub — clusters for
world_map / encyclopedia / minimap remain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 21:20:52 -07:00