Skip to content

feat(core)!: simplify Scene model — remove scene stack (#11)#139

Merged
Exoridus merged 1 commit into
mainfrom
feat/scene-stack-simplify
Jun 20, 2026
Merged

feat(core)!: simplify Scene model — remove scene stack (#11)#139
Exoridus merged 1 commit into
mainfrom
feat/scene-stack-simplify

Conversation

@Exoridus

Copy link
Copy Markdown
Owner

v0.14 Phase 4A — Scene-stack simplification, PR 2 of 2 (BREAKING). Completes the #11 work that UI-Core (PR1 #138) unblocked.

Breaking changes

  • Scene stack removed: SceneManager.pushScene / popScene / scenes + PushSceneOptions / PopSceneOptions are gone. There is now one active scene; switch with app.scene.setScene(scene, { transition }) (the fade transition is preserved).
  • Scene participation removed: SceneStackMode, scene.stackMode, SceneParticipationPolicy, scene.setParticipationPolicy.
  • New: scene.paused — skips the scene's update() + systems each frame while it keeps drawing. This is the replacement for "freeze the game behind a menu" (the former mode: 'modal'). Overlays, HUDs and menus live on scene.ui (added in PR1).

Migration

Before After
pushScene(hud, { mode: 'overlay' }) widgets on scene.ui
pushScene(pause) + popScene() scene.paused = true + a scene.ui overlay
pushScene(next, { mode: 'opaque' }) app.scene.setScene(next, { transition })

Migrated: scene-manager.test.ts, examples pause-blur / hud-overlay-scene / pause-and-resume, and 5 guides (scenes-and-lifecycle, keyboard-and-actions, recipes/hud-overlay, recipes/cinematics, recipes/pause-menu). New "UI & widgets" guide added.

All CI-only gates green locally (pnpm test 3263, typecheck, lint:all, format:check, typecheck:examples/guides, docs:api:check, root-index, guide-structure).

v0.14 Phase 4A, PR2 of 2 (BREAKING). Completes the Scene-stack simplification
that the UI-Core (PR1) unblocked.

BREAKING CHANGES:
- Removed the scene stack: SceneManager.pushScene/popScene/scenes +
  PushSceneOptions/PopSceneOptions are gone. One active scene; switch with
  app.scene.setScene(scene, { transition }) (fade preserved).
- Removed Scene participation: SceneStackMode, scene.stackMode,
  SceneParticipationPolicy, scene.setParticipationPolicy.
- New: scene.paused — skips the scene update() + systems while it keeps
  drawing (the freeze / former "modal" replacement). Overlays/HUDs/menus live
  on scene.ui (PR1).

Migration: overlay/HUD scenes -> widgets on scene.ui; pause (push+pop) ->
scene.paused + a scene.ui overlay. Examples (pause-blur, hud-overlay-scene,
pause-and-resume) and 5 guides migrated; new "UI & widgets" guide added.
@Exoridus Exoridus enabled auto-merge (squash) June 20, 2026 04:13
@Exoridus Exoridus merged commit 0ff7eaa into main Jun 20, 2026
12 checks passed
@Exoridus Exoridus deleted the feat/scene-stack-simplify branch June 20, 2026 04:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant