Repository navigation
feat(game): renew moonlit beacon for 3.0.0 - #10
Merged
Merged
Conversation
Every hero, spirit and guardian is redrawn as a rounded chibi with a bright limited palette. Each sheet keeps the size and layout it had, so facings, frame counts and cell sizes are unchanged and nothing turns or clips differently. Guardians keep their windup and recover sheets. New for 3.0.0: the UI kit (panels, buttons, cards, bars), the ground tiles, the terrain tilesets and structures for the three new places, the skill icons and the missile core, with the scripts that build and pack them and the source sheets they are cut from. - pack_*.py read the new source sheets; the old webp and jpg sources are deleted - build_ui_kit.py replaces build_custom_ui_panels.py - custom_asset_contracts.json pins the new files Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A new UI and a structured story on top of the 2.1.0 game, plus an endless stretch that changes as it goes. The version is 3.0.0 (Android versionCode 15, iOS build 10). UI and look - One UI kit across every screen (panels, buttons, cards, bars) with five-language layouts checked - The night lit as one scene: colour grade, vignette, mist, cast shadows, floor life and lantern pools, plus a rim/outline actor shader Story - Four acts with act cards, a chronicle of what the night has shown, a per-hero voice, an opening debt and a closing epitaph Expedition - Six places (frost, marsh and ruins join forest, field and camp), each with its own floor, structures, light, raid formation and guardian - From cycle 2 every gate is a fork that names its place and its omen - Past the map's end: Depth, omens, moonless trials, guardian mutations (echo, spiral, summoner, frenzy, aegis, meteors) - Nine new skills that unlock as cycles pass - Three new guardian grammars (owl dive, toad leap, sentinel glyphs) Reading a fight - Guardian attack markers are soft coral and mint decals drawn from the same angle lists the bolts are fired from, with a way through, a floor on every warning and a range on every bolt Bullets (first pass, still being tuned) - BulletField holds up to 150 slow enemy bullets in one node; emitters and per-guardian auras and streams; casters, weavers and wisps throw fans and rings. test_bullet_field.gd is not registered yet Tools and tests - A play bot that plays the real arena, a soak run, screenshot and count harnesses, and regression tests for forks, omens, mutations, skills, telegraph floors, volley fairness and the new screens Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The reference page describes the 3.0.0 game: the forks, the endless stretch (Depth), guardian mutations, the guardians of the later places, how to read a guardian's attack, and the UI and story structure. The asset manifest lists every file the redraw and the UI kit added or replaced. Lesson prose is untouched on purpose: the course keeps teaching the 2.1.0 screens. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
pnpm store:graphics rebuilt hero-bundle, dancer, eclipse, keeper, knight and sage from the new hero portraits; pnpm check:store-graphics passes. The icon, feature graphic, supporter and lantern-colors images do not depend on the hero art and are unchanged. Nothing is uploaded. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The build log records what 3.0.0 changed, how it was measured and what bit us; the expedition plan is the design of the six places, forks, omens, mutations and skills; the story bible gains the debt arc notes. Author-only, not published on the docs site. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The event allow-lists gain frost, marsh and ruins as terrains, the six guardians of the later places, and the nine new skill ids. The rules are changed in the repository only; deploying them to Firebase is a separate step that has not been done, and collection stays off in the submission build until the ingest path is deployed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…dians per terrain The store capture snapshots the app's persistent save files; the new chronicle.json (and its .tmp) joins that inventory on Android and iOS. The release-mode guard test now follows the arena's per-terrain guardian picker instead of the old single world step. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A PreToolUse hook (.claude/settings.json) runs scripts/guard-pull-request.mjs before every shell command and GitHub MCP call and refuses the ones that would open a pull request: gh pr create in any wrapper, the gh api and curl routes to the same endpoint, and the MCP tools. The user allows exactly one by creating .claude/allow-pr themselves; the guard spends the file on the next PR. scripts/lib/pr-guard.test.mjs covers what it catches and what it lets through. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The agent that talks to the user is now the director: it briefs, judges and reports, and does not write the game. A second agent, the implementer, writes every deliverable. Which model that is lives in one file, scripts/muse.config.json; check-hygiene fails when any other file names a model id, so switching models is one edit. - pnpm muse runs the implementer in a copy of the repo with no secrets and no git remote, with approvals on, no network and no web tools; the result is a diff that is judged (pnpm muse judge), then accepted onto the real tree, which refuses protected paths (this guide, .claude/, the pull-request guard, the version lock, secrets) - pnpm godot:isolated is one Godot run with a throwaway HOME, so a one-off run cannot write to the developer's real save - AGENTS.md, the /muse command, the muse-director skill and the other commands and skills describe the split; notes/workflow/muse holds the standing orders, the brief template, the briefs and the 3.0.0 plan - the model catalog, sandbox flags, patch round trip and end-to-end run are covered by 38 tests (pnpm test:muse, part of pnpm verify) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Describe six terrains, forked routes, skills and the renewed art. Keep the placeholder rejection fixture aligned with the new opening. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Distinguish local PR validation from later store release operations. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Keep score arithmetic while naming the optional depth, unify wave labels, and let localized product descriptions wrap without clipping. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Slow and space enemy bullets, cap guardian pressure, and cover the\nshooting rules and one-fight measurement mode with regressions. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Verify both cold and cached worker loads and consume the arena scene. Keep completion checks strict while allowing bounded worker progress. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Verify indexed missile work against a deterministic spread fixture. Keep the live density, damage, node and per-tick budgets intact. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Keep first sightings across unlock cycles instead of requiring random reappearance of previously discovered skills. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Retry only the recognized stale-session complaint. Assert launch counts and refusal rejection with a fake CLI. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Correct core recovery, early growth and map structure counts. Keep released tutorial screens separate from the 3.0.0 tree. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Record the confirmed split-tick node excess, unchanged performance gates, measured correction, and current release authorization. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Pin all five renewed descriptions and compare live CSV proofs so self-consistent stale fixtures cannot hide a capture mismatch. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Record the stale copy guard and separate runtime freshness from capture input attestations without claiming publication. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Separate unchanged runtime bytes from stale capture input proofs. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Match the Android and iOS consumer file contract to the producer's Chronicle persistence coverage. Verify both ordered contracts and reject missing or incorrectly restored Chronicle proof in the boundary suite. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Record the confirmed consumer drift, independent producer coverage, negative controls and separate phone/tablet capture freshness. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Keep dialogue and the complete dash control in clean combat captures. Verify the real compositor rejects the obsolete bottom crop. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Record full combat viewports and each native Android tablet source. Keep title framing and capture provenance rules unchanged. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Record measured clipping, the compositor regression and separate phone and tablet evidence freshness. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Replace the six changed screens in five locales and three Android display sets after native capture and strict deterministic validation. These are reviewed local candidates; no store upload has occurred. Keep unchanged app icons and feature graphics byte-identical. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Record four full reviews, the reviewed Play image candidates and local upload checks. Separate the partial App Store previews from missing native iPad, signing, purchase and publication evidence.
Cover full moon, orbit rings and the Wide Arc cap without widening partial fans or changing radial bounds. Add portable precision regressions and genuine card-path coverage. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Handle distinct released-version history and bind apply authorization to the freshly verified payload. Preserve identity, integrity, source and separate review-token boundaries. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Validate complete rgba artwork and png integrity across encoders. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
use android build 16 and ios build 11 for the final correction Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Bind internal updates to the final signed binary and retained gallery. Refuse newer remote artifacts before mutation and retain durable commit receipts. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Bind final App Store images and review targets to the verified build. Preserve approved IAP history and read-only review-state checks. Record both public store outcomes and the native purchase waiver. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
Match the submitted build identifiers and current screenshot state. Keep the tutorial history separate from the 3.0.0 store renewal. Remove the unsupported final-release device-purchase claim. Implemented-by: Muse (muse-spark-1.3-contributor, max effort)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The 3.0.0 renewal gives each run a purpose: restore the lantern road so Nari can return to Lantern Hollow. Distinct weapons, six terrains, guardian encounters and six rotating music tracks carry the story through an expedition and its ending.
Changes
Validation
pnpm verifyexits 0: 500 Node tests across sixteen groups, all 52 game steps, 122 script compilations, five-language locale/store metadata, assets, skills, repository hygiene, docs build and internal anchors.Store outcome
The final documentation now matches Android 16 / iOS 11, renewed screenshots and the dated store state while preserving the 2.1.0 course history. Latest head
399ebb9passes local documentation checks and all four GitHub checks: CI (game, docs, repository rules), and Android APK/AAB. GitHub reports MERGEABLE / CLEAN; runtime and final store image bytes remain unchanged. Store-operation evidence and capture restoration are recorded in submission record and director evidence.Merge and documentation publication
Merged into
mainas815d5b5after all four checks passed on exact head399ebb9. Pages deployment succeeds for the merge commit. The public game reference is independently fetched and confirms 3.0.0 / iOS 11 / Android 16, renewed screenshots and the Nari story, with the unsupported native-validation claim removed. The merged tree exactly matches the reviewed head.