CMAPI / Maintainers
Release checklist Required proof before publishing a CMAPI release.
View source ↗
CMAPI 1.1.4 Standalone runtime Windows x64 Tested with Planet Crafter 2.008
CMAPI official-release checklist
This checklist defines the SourceNine Labs publication gate for CMAPI. Release status is granted only when the exact candidate archive passes every applicable automated and manual check on a clean full-game installation.
Required technical gates
Sync-GameReferences.ps1 copies references from the current full game.
Clean Release solution build completes with no errors.
Build-Release.ps1 produces a self-contained win-x64 archive.
Verify-Release.ps1 passes against the final archive and SHA-256 file.
CMAPI-package.json exactly covers every package file and Setup rejects modified, missing, duplicate, traversal, and unlisted entries.
Release negative gates prove recomputed outer checksums cannot hide a changed listed file or an extra file.
The installer transaction gate passes install, update, repair, forced rollback, uninstall, receipt verification, and preserved-user-data cases.
Setup wizard installs the archive into a clean, unmodified game copy.
Launcher auto-detects the standard Steam path.
Launcher accepts an explicit additional-library path.
Steam launch option starts CMAPI, forwards %command%, and preserves Steam/overlay behavior.
Normal game exit closes CMAPI after a post-exit snapshot.
Ctrl+C requests a graceful game close; direct console-window close ends the game through the lifetime job.
gameinfo reports the tested full-game MVID and compatible player, content, environment, and inventory-extension APIs.
health_check reports no compatibility problems.
version reports CMAPI 1.1.4, public API 1.1.4, and features reports standalone, mod storage, scheduling, game-loop, and inventory-extension capabilities.
Per-mod config/data writes are path-contained and atomic; invalid JSON is preserved with an attributed warning and safe defaults.
Scheduler callbacks run once on the main thread, cancel safely, isolate failures, and leave no work after failed mod startup or runtime shutdown.
Update and one-second events advance monotonically, isolate subscribers, avoid catch-up bursts, and remove failed-mod ownership.
commands groups every canonical command once; category, text, provider, and alias searches return the expected entries.
help <alias> resolves to the canonical command and shows its aliases, category, provider, description, and usage.
Complete single-player lifecycle/state test passes twice across re-entry.
World entry/exit, completed saves, completed planet travel, and observed weather start/end events are ordered, balanced, owner-scoped, and isolated from subscriber failures.
Recipe output, collapsed quantities, ingredient search, and crafting station IDs match the in-game catalog.
Unlock progression/blueprint/global/planet state matches the game before and after progression, save, and travel changes.
Backpack/equipment slot counts and native add/remove callbacks match the local player with no duplicate bindings across re-entry.
With no provider mod installed, CMAPI leaves native inventory capacity, display, transfers, logistics, disintegrators, networking, and saves unchanged.
Expanded Stacks installs as a separate mod, registers the sole provider, groups only eligible items, displays quantities, and transfers individual native world objects without adding mod-owned save records.
Logical fullness and item-aware capacity agree across manual transfers, item grants, logistics, and disintegrator output.
inventory_safety and the public safety report identify every loaded inventory above native capacity without moving or deleting an item.
Unsafe Expanded Stacks disable/capacity reductions are rejected; a safe reduction and removal return every loaded inventory to native behavior.
Matching-provider multiplayer host/client transfers and mismatched or missing-provider warnings are recorded on disposable sessions.
Host and joining-client multiplayer lifecycle test passes.
Command parsing, collision, ownership, rollback, and exception tests pass.
items, give_item, give_money, and give_tokens pass bounds, ambiguity, capacity, host-authority, and multiplayer propagation tests.
teleport passes parsing, finite bounds, host authority, same-planet placement, environment/fall-state refresh, and teleport back tests.
weather_events lists distinct current-planet natural events with IDs, types, durations, rain/wetness, and stage bounds.
weather_status tracks native start, progress, end, and title-screen unavailability without stale state.
weather_start passes exact/readable/unique-partial lookup, host authority, stage requirements, native synchronization, and active-event overlap refusal.
Natural weather, rain, meteor/asteroid, normal end cleanup, world exit, planet travel, and joining-client weather cases pass on disposable saves.
world_state matches in-game terraformation totals, rates, and stages.
environment, underwater queries, day_reset, and planets match the game and remain safe across lifecycle transitions.
IWeatherManager, IWorldStateManager, IEnvironmentManager, and IPlanetManager match their console equivalents and documented statuses.
Command colors are readable and redirected command output contains no ANSI/control markup.
version, cmapi_menu, and the overlay show CMAPI 1.1.4 separately from CMAPI Mod Menu 0.2.2 experimental beta, using the constants from CMAPI.Shared.
cmapi_inject is idempotent, creates no overlay before request, and keeps one menu alive safely across intended scene changes.
cmapi_uninject, the in-menu button, and confirmed controller uninject immediately destroy only the menu and restore cursor state.
Player/inventory/world/teleport/mod/console workspaces match their console/API data at title, world load, active weather, planet travel, and world exit.
Compact layout, scrolling, header drag, live safe-area clamping, and center control remain readable and reachable across windowed, borderless, and fullscreen mode plus supported resolutions.
Clicking/focusing every menu control never changes the full window to the game's bright focused GUI skin.
Configurable Insert leaves the game's F8 feedback/help and F9 Steam/store bindings intact; F8/F9 configs migrate and live keyboard collisions select and report a safe fallback.
While visible, the menu suppresses Planet Crafter's enabled player action maps and EventSystem UI module while CMAPI's mouse remains usable; hide, uninject, component disable, world transition, and shutdown restore exactly the prior input/cursor state. Capture failure stays hidden.
Controller drill-down pages, D-pad action selection, A activation, LB/RB scroll, automatic selection visibility, X, B, held L3+R3, and confirmed Y pass without materially interfering with gameplay UI. View+Menu is never used by CMAPI and cannot summon Steam through a CMAPI shortcut.
God Mode and individual oxygen/water/health/toxicity locks pass normal drain/damage tests without unbounded RPC traffic.
Fly, movement multiplier, and fall-damage state restore after disabling, player replacement, host loss, uninject, world exit, and shutdown.
Infinite Power produces no repeating on/off HUD or audio feedback, powers requesters only at runtime, fails closed when hooks are unavailable, and restarts the real checker without save mutations.
Joining clients cannot activate any trainer command or menu mutation.
IModHelper.Items and TerraTokens match live command/game values and behave safely before world load.
IModHelper.PlayerPlacement validates coordinates, uses host-only native same-planet placement, reports every structured outcome, keeps return points owner-scoped, and clears stale player/planet/owner state.
Public gameplay mutations return every documented structured status, remain host-only regardless of console configuration, and time out safely.
General, item, and Terra Token notifications use the native HUD, enforce bounds, expire without a HUD, and clean up failed-mod queue entries.
Pre-launch, post-exit, and OnSaved manual snapshots pass retention and archive-content checks.
Offline restore passes pre-restore safety, path, traversal, duplicate, size, game-running, unrelated-save, and restored-world tests.
Manifest validation rejects every malformed fixture with useful text.
Offline, timeout, cached, up-to-date, available, missing-key, and unsupported-provider mod update states are tested.
The CMAPI feed passes stable/beta, malformed JSON, untrusted origin, wrong filename/hash/size, downgrade, minimum-updater, unsupported game MVID, traversal, duplicate-entry, symlink, and expanded-size tests.
CMAPI.exe --update verifies and stages the official archive, opens Setup with the correct game path, and leaves the live install untouched until the user approves Update.
Closing the game and console produces no pipe/thread exceptions.
A forced mid-update failure restores every prior runtime file and the previous receipt; a forced rollback failure preserves a recovery journal.
Distribution gates
Compatibility policy for 1.x
Preserve CMAPI.API 1.x contracts; breaking changes require the next major public API version.
Put game types behind adapters and CMAPI-owned value models.
Treat unknown game MVIDs as untested even when capability checks pass.
Add mutation APIs only after host/client authority rules are understood.
Never let update, diagnostic, or optional-service failure stop the game.