fix(templates): stabilize 3D browser shell - #5
Merged
Conversation
added 2 commits
August 4, 2026 20:31
A real v1.4 game showed repeated Escape events can toggle pause multiple times and end screens can resume gameplay. Ignore keyboard repeats and lock the runtime after completion or failure.
Real-browser review found the core3d shell requests an undeclared favicon. Ship a tiny standalone SVG and reference it relatively, keeping binary data out of editable HTML.
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.
结论
Core3d now has a deterministic browser shell: repeated Escape cannot toggle pause twice, completed/failed games cannot be resumed, and favicon loading uses a real relative file instead of inline data.
Product-code evidence
ember-skyway-relics-3d-v1-4/src/main.ts:37core3d/src/main.tsaccepted every Escapeindex.html:3-7had no iconpublic/favicon.*href="data:,"Change
agent-test/templates/core3d/src/main.tsevent.repeat; lock Escape after completion/failureagent-test/templates/core3d/index.html./favicon.svgagent-test/templates/core3d/public/favicon.svgThe complementary non-Git smoke change adds opt-in
--shell-contract: repeated Escape must preserve pause and the icon must be a non-data path returning 200. Default historical 2D/3D smoke behavior is unchanged.Verification
npm ci && npm run buildsmoke --esc-rounds 2 --shell-contractdata:,icon rejectedRisk and rollback
The changes affect only the 3D shell. Phaser templates and default smoke semantics are untouched. Revert
4e4fdf5for the icon path orab0c546for lifecycle behavior independently.Upstream dependencies: leigest519#47-leigest519#50.