Changelog¶
Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This file is maintained automatically by release-please from Conventional Commits.
0.3.2 (2026-05-17)¶
Documentation¶
- Sync CLAUDE.md + project URLs to post-v0.3.1 state (d3d6ac8)
0.3.1 (2026-05-17)¶
Dependencies¶
0.3.0 (2026-05-17)¶
Features¶
- mod+server+examples: Objectives, scoreboard, scenario presets, e2e smoke (Phase 6) (9d70fa8)
- mod+server: In-memory MessageBus + send/recv tools (Phase 5) (29ce923)
- mod+server: Turn-based opt-in + TurnAdvanceCommand (Phase 4) (dd3350a)
- mod: Agents.json loader + whoami / session_info commands (Phase 2 C# side) (6bd9296)
- mod: Introduce Session/Agent identity plumbing (Phase 1 of multi-agent v0.3) (c6a83ae)
- mod: Split AdvanceTime permission so FactionPlayers can fast-forward (3077e8b)
- mod: Wire permissions + faction binding + fog-of-war (Phase 3) (88083ff)
- server: Switch to Authorization: Bearer + add whoami / session_info tools (Phase 2 Python) (c1546fd)
Bug Fixes¶
- ci: Auto-enable GitHub Pages on first docs deploy (3a8060d)
- ci: Exclude github issue forms from check-yaml + drop csharpier from pre-commit + simplify MCP self-check (8546502)
- ci: Pass ruff/mypy/pre-commit on server + tolerate mod-build limitation (dba154b)
- ci: Unstick csharpier lint + mkdocs strict build (both pre-existing breakage) (6bf983a)
Dependencies¶
- Bump FluentAssertions from 6.12.1 to 6.12.2 (#13) (7fbf32e)
- Bump HarmonyX from 2.10.2 to 2.16.1 (#7) (506bc65)
- Bump Newtonsoft.Json from 13.0.3 to 13.0.4 (#9) (5cf0bdd)
- Bump xunit from 2.9.2 to 2.9.3 (#10) (562aea8)
Documentation¶
- Add CLAUDE.md (auto-loaded context for Claude Code sessions) + cross-ref from CONTRIBUTING (acfcdb1)
- multi-agent: Walkthrough + protocol + command-reference updates (Phase 7) (194a419)
- Refresh all .md to v0.3 — 26 tools, multi-agent, both auth headers (b73dabb)
0.2.0 (2026-05-16)¶
Features¶
- mod,server: Add generate_world / save_world / load_world (2694bc0)
- mod,server: Batch Phase 2/3 — spawn + paint_tile + 6 read commands (cae7882)
- mod,server: Control commands — pause, resume, set_speed (aa276fc)
- mod,server: Implement discovery primitives (list_tiles/actors/powers) (a098056)
- mod,server: Invoke_power primitive (universal action via GodPower delegate) (a47f8e3)
- mod: Scaffold BepInEx C# plugin (ffb0278)
- server: Scaffold Python MCP server with auth-aware bridge client (76d0c2f)
Bug Fixes¶
- ci: Bump astral-sh/setup-uv from v4 (nonexistent) to v6 (46fd1f2)
- ci: Replace email-obfuscation artifact in pre-commit/action ref (3544683)
- mod: Inject dispatcher into PlayerLoop instead of MonoBehaviour.Update (435583f)
- mod: List_kingdoms/list_cities + kingdoms_alive/cities_alive counters now report live entries (98a8a1c)
- mod: Switch to TcpListener + IPAddress.Loopback, decouple from MonoBehaviour lifecycle (c75d3b8)
Documentation¶
- Claude Code wiring recipe + dense god-mode prompt for live agent test (b08a6ae)
- readme: Rewrite as proper public landing page (5ee1ca0)
- scenario: Fix docstring path after move to examples/scenarios/ (0bc6f0c)
[0.1.1] — 2026-05-16¶
Fixed¶
worldbox_list_kingdomsandworldbox_list_citiesnow return live entries instead of always an empty list. Root cause: the reflection helper looked forgetSimpleList()on the manager, which only exists onSimSystemManager<,>(the actor side) — never onMetaSystemManager<,>(the kingdom / city side). Both manager hierarchies share a commonCoreSystemManager<,>base that implementsIEnumerable<T>, so the fix iterates via the C# interface instead of a specific method name.worldbox_get_world_state.kingdoms_alive/cities_alivenow report the real counts (same root cause, same fix — replaced the manual list count with theCountproperty inherited fromCoreSystemManager).
Changed¶
docs/game-api-notes.mdupdated with verified reflection paths for every command (spawn, paint_tile, invoke_power, pause/resume/set_speed, generate/save/load world, screenshot), theWorldTimeScaleAssetids actually accepted (including the undocumentedx10,x15,x20), and theCoreSystemManageriteration contract.docs/command-reference.mdrewritten as a real reference (was a Phase-3 stub). Covers the 20 tools, their args, and the full error envelope.docs/index.mdandREADME.mdreconciled: tool count is 20 in both places (was inconsistently 19 and 20).docs/install/claude-code.md: simplified —uvx worldbox-mcpis now the primary path (v0.1.0 is published on PyPI as of this release cycle); local-clone path kept as a fallback for testing unreleased commits.docs/compatibility.mdupgraded with a real entry: WorldBox 0.51.2 × mod 0.1.1 is marked ✅ validated end-to-end.
[0.1.0] — 2026-05-16¶
Added¶
- First public release. 19 mod commands surfaced as 20 MCP tools (+
worldbox_capabilitiesmeta tool): - Meta:
health,capabilities - Discovery:
list_tiles,list_actors,list_powers - Action:
invoke_power,spawn,paint_tile - Read:
get_world_state,get_tile,list_kingdoms,list_cities,query_actors,screenshot - Control:
pause,resume,set_speed,generate_world,save_world,load_world - BepInEx 5.x C# plugin (
WorldBoxBridge) with HTTP API on127.0.0.1:8723and per-install auth token. - Python MCP server published on PyPI as
worldbox-mcp—uvx worldbox-mcpfor instant use from any MCP client. - Universal reflection-based discovery:
AssetCatalogenumerates any of the ~150 typed asset libraries onAssetManagervia the uniformAssetLibrary<T>contract. MainThreadDispatcherinjected into Unity'sPlayerLoopUpdate phase (rather than aMonoBehaviour.Update()— that gets destroyed shortly after Awake on this game).- Levenshtein-based
did_you_meansuggestions on everyUNKNOWN_ASSETerror. - End-to-end ecology demo at
examples/scenarios/ecology_smoke.py. - Per-client wiring recipes for Claude Code / OpenCode / Codex / Cursor / Continue.
Known issues¶
list_kingdoms/list_cities/get_world_state.{kingdoms,cities}_alivealways return 0 even when kingdoms exist — fixed in 0.1.1.