Skip to content

feat(game): renew moonlit beacon for 3.0.0 - #10

Merged
hyochan merged 72 commits into
mainfrom
feat/3-0-0-ui-story
Oct 2, 2026
Merged

hyochan merged 72 commits into
mainfrom
feat/3-0-0-ui-story

Conversation

@hyochan

@hyochan hyochan commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

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

  • Rebuild the title, HUD, shrine, shop, choice cards and results with original art for six heroes, seven regular spirits and twelve guardian forms. Preserve the landscape floating joystick, automatic attacks and dash button.
  • Give every hero a distinct weapon: broad sword, alternating twin blades, lantern shotgun, delayed cannon blast, orbiting scythe or piercing rifle. Improve movement, dash availability and impact cues; prices and visual tiers never change weapon damage.
  • Add six terrains, route forks, cover, place clues, guardian patterns, mutations and nine skills. Keep projectile/node budgets, warning readability, arrival quiet time and survivable barrage gaps.
  • Connect Nari and Lantern Hollow through three acts, an epilogue, hero voices and forty Chronicle entries. Finish the main story after cycle eight; early return, defeat and voluntary Depth have distinct outcomes. Paid heroes and complete memory collection are unnecessary for the ending.
  • Rotate three arena tracks and three faster guardian tracks in separate shuffled bags without adjacent repeats. Preserve phrase boundaries, pause/resume and encounter transitions; bound overlapping weapon, hit, kill and growth sounds.
  • Update five-language store descriptions and marketing images. Preserve all one hundred IAP metadata rows, purchase/restore contracts, saves, prices and product identity.
  • Correct circular melee at antipodal bearings and the 360-degree Wide Arc cap, split-tick cannon effect budgets, capture persistence/copy/framing, and decoded-PNG portability. Keep partial fans, radial bounds, Eclipse's inner hole and strict image/source checks.
  • Correct release tooling for released app-version histories, approved IAP histories, version-scoped locales, explicit review-item linkage and read-only review-state audits. Preserve exact final-payload authorization and binary-only Play updates that preserve listings/images and refuse newer remote builds.

Validation

  • Final real-tree pnpm verify exits 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.
  • All 67 registered App Store tests pass without skips. Independent negative controls fail the approved-history, version-scoped localization, relationship-include and review-ready audit regressions; exact restoration passes each complete suite. Release tooling retains confirmation, source/provenance, build association and exact eleven-item review checks.
  • Weapon regressions pass all 404 assertions, including full-circle/precision controls. Earlier independent negative controls, 225 binary-only Play tests, 24 terrain portability groups, natural-run/guardian bots, audio checks and five-language visual boards are recorded in loop review and release evidence.
  • All 667 reviewed runtime files retain their hashes. Final signed artifacts are Android 3.0.0 (16) and iOS 3.0.0 (11); normal iOS AppIcon/Assets.car signing, remote validation, upload and COMPLETE/VALID processing pass.
  • The director inspects all thirty raw physical-iPad captures and eleven final App Store image boards. All seventy new RGB images pass unchanged deterministic, semantic, source, persistence and provenance checks. iPad evidence uses a physical iPad mini A17 Pro; iPhone evidence explicitly uses the Android Pixel AVD fallback.

Store outcome

  • Google Play 3.0.0 (16) is published, verified by official production readback on 2026-10-02. The final binary update preserves the already renewed five-language listings, ninety screenshots and ten app graphics.
  • App Store 3.0.0 (11) is submitted and WAITING_FOR_REVIEW. Independent readback verifies the exact VALID build, submitted date and eleven distinct review targets (app version plus ten current IAP versions). Release remains manual after approval.
  • Upload all seventy final App Store images: sixty marketing screenshots and ten IAP review images. Verify remote checksums, sizes, ordering and COMPLETE states; retransmit only three eligibility-stalled images with identical bytes. Preserve approved IAP history, prices and availability.
  • The human explicitly authorizes skipping unfinished native purchase verification for this release. It remains NOT_DONE / USER_AUTHORIZED_SKIP, not a passing native E2E claim. Final-APK physical Pixel 10 direction coverage is not established; iPhone marketing source is the documented Pixel AVD fallback.

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 399ebb9 passes 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 main as 815d5b5 after all four checks passed on exact head 399ebb9. 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.

hyochan and others added 30 commits September 30, 2026 16:46
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)
hyochan added 14 commits October 1, 2026 18:52
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.
@hyochan hyochan added 🎨 design 📘 release Released version 🧪 test Issue or pr related to testing 🖼 assets 🎮 game labels Oct 1, 2026
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)
@hyochan
hyochan merged commit 815d5b5 into main Oct 2, 2026
4 checks passed
@hyochan
hyochan deleted the feat/3-0-0-ui-story branch October 2, 2026 10:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🖼 assets 🎨 design 🎮 game 📘 release Released version 🧪 test Issue or pr related to testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant