Skip to content

v1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Sep 12:44
· 2 commits to main since this release
fa3aa3c

GodotMaker v1.0.0

GodotMaker 1.0 establishes the first stable contract for turning a game design
into a tested Godot project through coding-agent Skills. This release centers
the pipeline on first-class 2D Asset Skills, deterministic Godot-native
resources, and evidence-backed handoff between Asset, Build, Verify, Evaluate,
and FixGap stages.

Existing 0.x workspaces cannot be upgraded incrementally. Back up the
project, then run
python tools/publish.py --agent <current-agent> --force <target> to cleanly
re-initialize the framework for v1.0.0. <current-agent> must match the
workspace's existing claude-code, codex, opencode, or pi selection.
This skips old migrations and re-baselines the migration tracker after
re-deploy. It does not convert project documents such as GDD.md, PLAN.md,
or ASSETS.md; review or regenerate incompatible documents before continuing
the pipeline.

Added

  • Added Pi as a supported coding-agent runtime alongside Claude Code, Codex, and OpenCode (#171).

  • Added whole-sheet 8-connected-component recovery and fixed-grid warning fallback for animated asset sheets (#169).

  • Added tools/asset_family_registry.py so every public Asset Skill request resolves to one authoritative output contract.

  • /gm-asset can now plan, dispatch, and register the tileset production unit, so a validated TileSet reaches a worker as a tile library instead of stopping at the Skill.

  • Added deterministic marching-squares-15 and blob-47 TileSet profile templates with fixed atlas guides, strict image validation, and native resource compilation.

  • Added fail-closed standalone L0-L4 execution for the remaining first-class Asset Skills, with published runners and native Godot resource verification.

  • Added a standalone TileSet Asset Skill with an explicit atlas and recipe contract, shared compiler and validation reuse, and an orthogonal-square fixture.

  • Added standalone ui-kit and card-kit Asset Skills with closed request contracts and executable L0-L4 validation for Theme, StyleBoxTexture, and AtlasTexture resources.

  • Added a recipe-only native TileSet atlas compiler with declared tile semantics and L4 source, tile, alternative, layer, and tile-size verification.

  • Added standalone atlas-backed compact-prop-pack and scene-prop-set Skills with deterministic independent AtlasTexture outputs for each declared prop.

  • Added a deterministic SpriteFrames compiler that aggregates explicitly timed normalized action PNGs, rejects missing required actions, and serializes independent frame texture bindings for character bundles and animated FX.

  • Added standalone character-bundle and fx-bundle skills with fail-closed family validation for explicit animation timing, loop, frame order, and native Godot runtime-output contracts.

  • Added fixed 15-cell and 47-cell TileSet profiles with typed requests, deterministic material composition, and optional terrain metadata hand-off.

  • Added a deterministic StyleBoxTexture compiler for reusable UI borders, with explicit texture regions, nine-slice borders, expand margins, and stretch axes verified through headless Godot.

  • Published first-class Asset Skills for Claude Code, Codex, and OpenCode together with their project-local shared compiler, validator, and schema runtime under .godotmaker/asset-runtime/.

  • Added tools/asset_atlas_assemble.py for reproducible fixed-slot physical PNG atlases and region metadata; it rejects implicit packing, trimming, heuristic discovery, invalid bounds, overlap, size mismatches, and missing source PNGs.

  • Direct generated-output path contract: deterministic assets/generated/<asset_type>/<asset_id>/ paths and a reusable assert_within_output_dir write guard.

  • Added a standalone asset-skill invocation and result contract under skills/assets/_shared/ with declarative JSON schemas, valid samples, a dependency-free checker, and fail-closed tests (#98).

  • Added standalone background-map, platform-strip, and screen-reference Asset Skills with typed runtime and reference-only result contracts.

  • Added a shared Godot artifact compiler interface and registry under skills/assets/_shared/ that routes on the frozen source-layout to artifact-type compatibility set, keeps compiler receipts out of the worker-facing artifact, requires each compiler to actually rebuild an artifact distinct from its source image, serves Texture2D through Godot's default import, and fails closed on unregistered or mismatched combinations (#107).

  • Added shared direct-output validation under skills/assets/_shared/ for processed sources, compiled artifacts, a real headless Godot import and ResourceLoader.load type match, and type-specific structure checks (#108).

  • Added a deterministic theme_recipe compiler with a closed JSON schema for Theme colors, font sizes, constants, fonts, icons, StyleBoxes, and type variations; invalid class types, properties, resources, and StyleBox references fail closed before a loadable Theme is written.

  • FixGap can hand evaluator-owned E2E evidence back to Evaluate without claiming a normal repair completion.

  • Added a Phantom Camera supporting skill for optional Godot camera addon guidance.

Changed

  • MAJOR upgrades now fail closed unless --force is present, and an authorized clean re-initialization resets incompatible current-pipeline gates and reports while preserving game content plus evaluation, gap, and asset-provenance history.

  • Generated assets now use ASSETS.md as the single runtime catalog: each
    logical asset row records its final Godot type and loadable path directly.
    Multi-output asset production registers all declared outputs atomically, and
    workers receive a minimal snapshot derived from those rows instead of a
    separate stable-entry or manifest layer.

  • Every public asset route now proves its whole direct-registration chain in ordinary CI, so an advertised route cannot enter main without a validated ASSETS.md output.

  • A Skill that accepts more than one request shape now declares one registration chain per shape, so a variant whose adapter is missing can no longer hide behind a sibling variant that works.

  • Both platform-strip strip kinds now have complete registration contracts that turn validated segment deliveries into worker-consumable ASSETS.md rows.

  • A ui-kit or card-kit now registers every declared runtime output atomically, so its Theme, every StyleBoxTexture, and every AtlasTexture are separately resolvable.

  • Multi-output ui-kit, card-kit, and compact-prop-pack deliveries now declare
    every worker-consumable logical output in their request and register all
    matching ASSETS.md rows atomically.

  • fx-bundle now registers its validated static Texture2D or animated
    SpriteFrames output directly from the request-selected result variant.

  • Workers now own TileMap layout, layers, cell and gameplay object placement, triggers, camera limits, and scene structure, binding a ready TileSet as a tile library and repairing what running the map actually shows.

  • Reworked ui-kit around a flat-first Godot Theme: one fixed eight-patch
    surface atlas expands into reusable button, panel, popup, tooltip, and tab
    StyleBoxTextures, while native StyleBoxFlat/StyleBoxEmpty resources own form,
    progress, slider, scrollbar, focus, and separator treatment. A second sheet
    provides 24 unique icons mapped to 31 stable AtlasTexture runtime names.

  • Normalized UI kit nine-slice patches and Theme-bound semantic icons to
    compact runtime sizes while retaining high-resolution reusable action icons.

  • Added deterministic StyleBoxTexture modulation and L4 verification so shared
    button-state source patches can produce base, Primary, Secondary, and Danger
    Theme resources without duplicate provider art.

  • Added deterministic fixed-slot AtlasTexture compilation from atlas metadata, with exact region and zero-margin validation through headless Godot.

  • Fixed fixed-slot AtlasTexture compilation so multiple stable runtime output
    names can reuse one declared atlas region, and standalone UI validation now
    compiles icon resources before the Theme that binds them.

  • /gm-build and /gm-fixgap now hand workers ASSETS.md runtime snapshots, and workers bind the compiled Godot resource rather than rebuilding it from the source layout.

  • A worker may now edit or replace the bound runtime artifact and the project-local scene or script that binds it to fix a concrete integration failure, as a narrow file-ownership exception that outranks the generic "no files outside Deliverables" restriction.

  • /gm-asset registers each validated request/result output set directly in ASSETS.md.

  • Generated runtime handoff for gm-build, gm-fixgap, and worker dispatch reads the matching ASSETS.md runtime rows.

  • An ASSETS.md runtime row reaches generated only after direct validation and registration, while a finalized screen reference completes at source_ready without becoming a worker runtime artifact.

  • Asset families without a native compiler and L0-L4 validation path stop at source_ready, while a fully validated scene-prop set registers its generated AtlasTexture runtime resources as generated.

  • Direct registration validates final declared runtime output types and loadability before a row can reach a worker.

Fixed

  • Screen references now claim successful Codex images before final validation and use proportional cover cropping to avoid transparent canvas edges (#180) — @RandallLiuXin.

  • Accepting a user-provided asset now fills the row's Runtime Type and res:// Runtime Path in the same edit, so a provided row is always resolvable into a worker runtime snapshot instead of failing with incomplete runtime columns.

  • Ensure /gm-asset records an asset-stage completion event when its resume check finds no current-tag work.

  • A validated background-map registers its single -> Texture2D result directly in ASSETS.md; registration binds to the image bytes its validation run recorded, so regenerating onto the same output path fails closed.

  • An asset production unit now ends the asset stage with one consistent status, so a retried report no longer reads as a failure and a partial result keeps its blockers instead of being recorded as unknown.

  • Replaced legacy magenta edge cleanup with PyMatting using a fixed validated trimap.

  • Compact prop packs now generate one provider-authored source sheet, normalize each curated prop into its declared atlas slot, and publish independently addressable AtlasTexture resources with repaired L0-L4 validation.

  • FX bundle production now separates static autoslice and animated grid paths, preserves provider reference claims, and promotes runtime entries only after L0-L4 validation.

  • Card-kit Asset Skills now compile only the Theme, scalable frames, and fixed AtlasTexture regions requested by each asset request, preserving reusable Godot resources without requiring a fixed card layout.

  • Character-bundle registers its validated SpriteFrames output directly in the
    matching ASSETS.md row; canonical and action sources remain reference
    provenance rather than extra runtime assets.

  • Character-bundle validation binds the resolved request, action reports,
    frames, and compiled artifact so a stale result cannot register a later
    regeneration that reused the same output paths.

  • Character-bundle assets now resolve animation cadence internally, preserve optional canonical references and 256px runtime frames, and regenerate retryable source-image failures before stopping.

  • Character-bundle assembly now binds resolved intent, canvas, frame order, timing, loop state, and scale references through SpriteFrames compilation and GIF previews.

  • Fixed blob-47 TileSet masks, edge signatures, and isolated-terrain semantics to match Godot's eight peering points.

  • Fixed TileSet profile validation to diagnose terrain-corner seam mismatches against the deterministic matching template before compilation.

  • Fixed TileSet seam repairs to deterministically compose profile transitions from provider-authored terrain materials instead of accepting flat color patches.

  • Fixed deterministic TileSet profiles to compile from published standalone runtimes and emit fixed atlas assembly declarations without agent-authored layout scripts.

  • Pre-push checks now isolate temporary Git repositories from the invoking worktree's hook environment.

  • Platform-strip assets now retain controlled provider-source claims and validator-produced readiness evidence.

  • Platform-strip now requires a fixed cap/repeat/cap grid, slices source cells before per-cell finalization, and validates stable AtlasTexture regions against the real source sheet.

  • Background-map now preserves optional reference-image provenance, uses the declared provider without fallback, and deterministically finalizes non-pixel-art Texture2D backgrounds.

  • Theme L4 validation now rejects recipe paths outside the declaring asset's stable output directory.

  • Published asset validation runners now work after installing GodotMaker into Claude Code, Codex, or OpenCode projects.

  • Restored real Godot validation for Theme and TileSet assets, including safe Theme resource paths and imported TileSet atlases.

  • Reference-only rows are source_ready; they never enter a runtime worker snapshot.

  • Compiler staging now preserves Godot resource extensions.

  • Compiler receipts are now issued only after atomic artifact commits.

  • Direct registration requires successful compiler and validation evidence for
    each runtime output before any ASSETS.md row changes.

  • Theme recipes now accept only fully decoded raster textures and FreeType-loadable TTF/OTF fonts, rejecting truncated or unsupported resource content before a Theme is written.

  • Failed native Godot artifact compilation now retains the previous stable artifact and atomically commits a validated replacement only after success.

  • Restored asset_sheet_process.py --snap-mode autoslice to independent Godot-style region extraction without grid bucketing or cross-region unions; fixed-grid extraction continues to require --grid.

  • Point generated-asset runtime handoff (gm-build, gm-fixgap, worker dispatch,
    worker agent) at ASSETS.md and its deterministic --snapshot output (#97).

Removed

  • Removed the last two gm-asset production-unit documents, so every asset family now has exactly one authoritative execution contract in its first-class Asset Skill.
  • Retired the old runtime_artifact generated-asset manifest update, check, and entry-builder tools with no migration, dual-write, or compatibility read.

Known limitations

  • MAJOR clean re-initialization does not migrate project documents from 0.x;
    incompatible GDD, plan, and asset contracts must be reviewed or regenerated.
  • Real-provider image quality and private evaluator evidence are not implied by
    the source-tree L0-L4 validation suite; provider availability, credentials,
    and model behavior remain external dependencies.
  • OpenCode image generation remains subject to the capabilities exposed by the
    selected OpenCode provider and runtime.