Skip to content

Commit 464182f

Browse files
author
DavidQ
committed
Enforce sample fullscreen rule and fix sample 0713
- removed unauthorized fullscreen behavior from non-0713 samples - preserved fullscreen capability only for sample 0713 - Fullscreen Ability - fixed sample 0713 fullscreen sizing to fill the screen while maintaining aspect ratio - validated fullscreen entry, exit, and resize behavior - corrected recent fullscreen drift without unrelated changes
1 parent aa5e5ae commit 464182f

26 files changed

Lines changed: 622 additions & 104 deletions
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# BUILD_PR_LEVEL_23_7_FULLSCREEN_RULE_ENFORCEMENT_AND_SAMPLE_0713_FIX - Full Screen Usage Audit
2+
3+
## Audit scope
4+
- Path scanned: `samples/**`
5+
- Focus: fullscreen code, flags/config, and UI triggers
6+
- Patterns audited: `engine.fullscreen`, `requestFullscreen`, `webkitRequestFullscreen`, `fullscreenPreferred`, `settings-fullscreen`
7+
8+
## Final in-repo findings (post-fix)
9+
| Sample path | Match summary | Authorized | Action |
10+
| --- | --- | --- | --- |
11+
| `samples/phase-07/0713/main.js` | `engine.fullscreen.request/exit` button handlers | Yes | Kept (required sample) |
12+
| `samples/phase-07/0713/FullscreenAbilityScene.js` | scene-level fullscreen state + canvas button actions | Yes | Kept (required sample) |
13+
14+
## Non-0713 result
15+
No fullscreen usage remains in non-0713 sample code after this PR.
16+
17+
## Notes
18+
- Metadata/catalog references describing sample 0713 remain expected and are not runtime fullscreen behavior.
19+
- No `start_of_day` files were touched.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# BUILD_PR_LEVEL_23_7_FULLSCREEN_RULE_ENFORCEMENT_AND_SAMPLE_0713_FIX - Sample 0713 Fullscreen Fix
2+
3+
## Problem
4+
Sample `0713 - Fullscreen Ability` needed deterministic fullscreen sizing behavior that fills the screen while preserving aspect ratio and cleanly restores on exit.
5+
6+
## Implementation
7+
### Added
8+
- `samples/phase-07/0713/fullscreenViewportFit.js`
9+
- `computeContainSize(...)`: computes contain-mode fullscreen size.
10+
- `attachFullscreenViewportFit(...)`: applies fullscreen viewport fit and restores baseline styles on exit.
11+
12+
### Updated
13+
- `samples/phase-07/0713/main.js`
14+
- Wired `attachFullscreenViewportFit(...)`.
15+
- Apply fit after fullscreen enter.
16+
- Reset styles after fullscreen exit.
17+
18+
## Behavior
19+
- Fullscreen uses contain sizing against viewport dimensions.
20+
- Aspect ratio remains fixed at sample design ratio (`960x540` = `16:9`).
21+
- Exiting fullscreen restores original canvas styles.
22+
- Resize while fullscreen re-applies contain sizing.
23+
24+
## Scope guard
25+
- No engine core fullscreen redesign.
26+
- Fix is sample-local to 0713.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# BUILD_PR_LEVEL_23_7_FULLSCREEN_RULE_ENFORCEMENT_AND_SAMPLE_0713_FIX - Unauthorized Removals
2+
3+
## Removed fullscreen behavior outside sample 0713
4+
5+
### `samples/phase-11/1101/main.js`
6+
- Removed `video.fullscreenPreferred` default config.
7+
- Removed `settings-fullscreen` UI trigger wiring.
8+
9+
### `samples/phase-11/1101/SettingsSystemScene.js`
10+
- Removed `toggleFullscreenPref()` behavior.
11+
- Removed fullscreen-specific render panel elements.
12+
- Removed snapshot line for fullscreen preference.
13+
14+
### `samples/phase-11/1101/index.html`
15+
- Removed fullscreen preference button (`settings-fullscreen`).
16+
- Updated description text to audio/gameplay scope only.
17+
18+
## Working-tree drift corrected during this PR
19+
- Unauthorized fullscreen click handlers that existed in active local working state for:
20+
- `samples/phase-03/0325/main.js`
21+
- `samples/phase-03/0326/main.js`
22+
- `samples/phase-03/0327/main.js`
23+
- `samples/phase-04/0413/main.js`
24+
- Final repo state after this PR: no fullscreen usage in those samples.
25+
26+
## Guard outcome
27+
- Only sample `0713` retains fullscreen behavior.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# BUILD_PR_LEVEL_23_7_FULLSCREEN_RULE_ENFORCEMENT_AND_SAMPLE_0713_FIX - Validation
2+
3+
## Commands run
4+
1. `rg -n --glob "samples/**" "requestFullscreen|webkitRequestFullscreen|engine\.fullscreen|fullscreenPreferred|settings-fullscreen"`
5+
2. Focused loader-backed test run:
6+
- `tests/games/GravityValidation.test.mjs`
7+
- `tests/games/PaddleInterceptValidation.test.mjs`
8+
- `tests/games/MultiBallChaosValidation.test.mjs`
9+
- `tests/games/ThrusterValidation.test.mjs`
10+
- `tests/samples/FullscreenRuleEnforcement.test.mjs`
11+
- `tests/samples/FullscreenAbility0713ViewportFit.test.mjs`
12+
13+
## Results
14+
- Fullscreen grep: only `samples/phase-07/0713/*` matched.
15+
- Focused tests: all six passed.
16+
17+
## Requirement checks
18+
- Only 0713 uses fullscreen: PASS.
19+
- 0713 enters fullscreen correctly: PASS (scene button routing + request path validated).
20+
- 0713 maintains aspect ratio without distortion: PASS (`computeContainSize` + resize behavior validated).
21+
- Fullscreen exit returns to normal state: PASS (style reset validated).
22+
23+
## Caveats
24+
- Browser-native fullscreen UX still depends on host browser fullscreen permissions/policies.
25+
- No unrelated runtime/engine scope was expanded.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
BUILD_PR_LEVEL_10_26 asset ownership strategy validation report
2+
3+
STATUS: PASS
4+
5+
Checks:
6+
- Strategy doc present: docs/reference/architecture-standards/specs/asset_ownership_strategy.md
7+
- Promotion registry present: docs/reference/architecture-standards/specs/shared_asset_promotion_registry.json
8+
- Validated game ownership manifest: games/Asteroids/assets/tools.manifest.json
9+
- Validated template ownership manifest: games/_template/assets/tools.manifest.json
10+
- Validated sample ownership path: samples/phase-15/1505/AssetBrowserScene.js
11+
- Validated tool demo ownership path: tools/shared/samples/project-asset-registry-demo/project.assets.json
12+
13+
Issues:
14+
- none
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
This PR moves the post-tools effort into the sample system by combining validation and repair in one execution pass, so broken sample paths and contract issues are fixed immediately instead of deferred.
1+
This PR corrects unauthorized fullscreen drift across samples and fixes the one authorized fullscreen sample so it behaves correctly.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
BUILD_PR_GAMES_TEMPLATE_CONTRACT_ENFORCEMENT validation report
2+
3+
STATUS: PASS
4+
5+
Targets:
6+
- games/_template
7+
- games/Pacman
8+
9+
Checks:
10+
- _template: structure and shell contract checks passed.
11+
- Pacman: structure and shell contract checks passed.
12+
13+
Issues:
14+
- none

docs/dev/reports/launch_smoke_report.md

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
11
# Launch Smoke Report
22

3-
Generated: 2026-04-18T22:20:21.057Z
3+
Generated: 2026-04-18T23:16:10.723Z
44

5-
Filters: games=false, samples=true, tools=false, sampleRange=all
5+
Filters: games=true, samples=true, tools=true, sampleRange=all
66

77
| Status | Type | Label | Path | Notes | Steps |
88
| --- | --- | --- | --- | --- | --- |
9+
| PASS | game | _template | games\_template\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
10+
| PASS | game | AITargetDummy | games\AITargetDummy\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
11+
| PASS | game | Asteroids | games\Asteroids\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
12+
| PASS | game | Bouncing-ball | games\Bouncing-ball\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
13+
| PASS | game | Breakout | games\Breakout\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
14+
| PASS | game | GravityWell | games\GravityWell\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
15+
| PASS | game | Pacman | games\Pacman\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
16+
| PASS | game | Pong | games\Pong\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
17+
| PASS | game | SolarSystem | games\SolarSystem\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
18+
| PASS | game | SpaceDuel | games\SpaceDuel\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
19+
| PASS | game | SpaceInvaders | games\SpaceInvaders\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
20+
| PASS | game | vector-arcade-sample | games\vector-arcade-sample\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
921
| PASS | sample | 0101 | samples\phase-01\0101\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
1022
| PASS | sample | 0102 | samples\phase-01\0102\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
1123
| PASS | sample | 0103 | samples\phase-01\0103\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
@@ -247,4 +259,21 @@ Filters: games=false, samples=true, tools=false, sampleRange=all
247259
| PASS | sample | 1712 | samples\phase-17\1712\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
248260
| PASS | sample | 1713 | samples\phase-17\1713\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
249261
| PASS | sample | 1801 | samples\phase-18\1801\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
250-
| PASS | sample | 1901 | samples\phase-19\1901\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
262+
| PASS | sample | 1901 | samples\phase-19\1901\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
263+
| PASS | tool | 3D Asset Viewer | tools\3D Asset Viewer\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
264+
| PASS | tool | 3D Camera Path Editor | tools\3D Camera Path Editor\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
265+
| PASS | tool | 3D Map Editor | tools\3D Map Editor\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
266+
| PASS | tool | Asset Browser | tools\Asset Browser\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
267+
| PASS | tool | Asset Pipeline Tool | tools\Asset Pipeline Tool\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
268+
| PASS | tool | Palette Browser | tools\Palette Browser\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
269+
| PASS | tool | Parallax Scene Studio | tools\Parallax Scene Studio\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
270+
| PASS | tool | Performance Profiler | tools\Performance Profiler\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
271+
| PASS | tool | Physics Sandbox | tools\Physics Sandbox\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
272+
| PASS | tool | Replay Visualizer | tools\Replay Visualizer\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
273+
| PASS | tool | Sprite Editor | tools\Sprite Editor\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
274+
| PASS | tool | State Inspector | tools\State Inspector\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
275+
| PASS | tool | Tile Model Converter | tools\Tile Model Converter\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
276+
| PASS | tool | Tilemap Studio | tools\Tilemap Studio\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
277+
| PASS | tool | Tool Host | tools\Tool Host\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
278+
| PASS | tool | Vector Asset Studio | tools\Vector Asset Studio\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
279+
| PASS | tool | Vector Map Editor | tools\Vector Map Editor\index.html | | npm install --prefix ./tmp ws → npm run test:launch-smoke |
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
- [ ] sample inventory completed
2-
- [ ] sample discovery/index validated
3-
- [ ] representative sample launch/boot coverage executed
4-
- [ ] failures documented
5-
- [ ] validated fixes applied
6-
- [ ] revalidation completed after fixes
1+
- [ ] fullscreen usage audit completed across samples
2+
- [ ] unauthorized fullscreen removed from all non-0713 samples
3+
- [ ] sample 0713 fullscreen fills screen correctly
4+
- [ ] sample 0713 maintains aspect ratio
5+
- [ ] fullscreen enter/exit validated for 0713
6+
- [ ] no unauthorized fullscreen behavior remains
77
- [ ] no start_of_day changes
88
- [ ] unrelated working-tree changes preserved
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# BUILD_PR_LEVEL_23_6_SYSTEM_FINAL_VALIDATION_AND_LOCK
2+
3+
## Purpose
4+
Final end-to-end system validation and lock.
5+
6+
## Scope
7+
- tools ↔ samples ↔ runtime ↔ engine validation
8+
- eliminate silent failures
9+
- confirm contracts stable
10+
- produce final report
11+
12+
## Outputs
13+
- docs/dev/reports/SYSTEM_VALIDATION_FINAL.md
14+
- docs/dev/reports/BUILD_PR_LEVEL_23_6_SYSTEM_FINAL_VALIDATION_AND_LOCK_VALIDATION.md
15+
16+
## Acceptance
17+
- no major failures
18+
- no silent errors
19+
- full system verified

0 commit comments

Comments
 (0)