prometeu-studio/discussion/workflow/plans/PLN-0050-scene-workspace-shell-and-project-state-foundations.md
2026-04-15 07:21:59 +01:00

4.8 KiB

id ticket title status created completed tags
PLN-0050 studio-scene-workspace Build Scene Workspace shell and project-state foundations abandoned 2026-04-14
studio
workspace
shell
project-state
scene

Objective

Establish the shell, workspace registration, and project-state foundations required to mount Scene Workspace as a first-class Studio workspace.

Background

DEC-0026 requires Scene Workspace to exist as its own shell workspace and to own scene-authoring detail locally. The current shell and project-state code already support Assets, Code Editor, Debug, and Shipper, but no scene workspace entry exists yet.

Scope

Included

  • Add a Scene Workspace entry to the Studio shell workspace model.
  • Mount a first implementation composition root for Scene Workspace.
  • Extend project-local layout/state only where needed for accepted shell behavior.
  • Keep workspace-local operational state out of shell-global ownership.

Excluded

  • Full tilemap editor interactions.
  • Asset creation workflows.
  • Scene serialization and save internals.

Execution Steps

Step 1 - Extend workspace identifiers and shell selection

What: Add Scene Workspace to the workspace identity model and shell-selection flow.

How: Update the workspace enum/identifier, shell selection logic, and main window wiring so the shell can mount and switch to Scene Workspace like other first-class workspaces.

File(s):

  • prometeu-studio/src/main/java/p/studio/workspaces/WorkspaceId.java
  • prometeu-studio/src/main/java/p/studio/window/MainView.java
  • prometeu-studio/src/main/java/p/studio/workspaces/WorkspaceHost.java

Step 2 - Add a Scene Workspace composition root

What: Create the initial workspace class and composition surface for Scene Workspace.

How: Introduce a new workspace package with a composition root that follows the Studio event-driven workspace framework and can initially host the wave-1 layout regions.

File(s):

  • prometeu-studio/src/main/java/p/studio/workspaces/scene/SceneWorkspace.java
  • supporting classes under prometeu-studio/src/main/java/p/studio/workspaces/scene/

Step 3 - Wire workspace lifecycle and activity integration

What: Ensure the new workspace participates correctly in the shared workspace lifecycle model.

How: Use existing workspace lifecycle helpers and add any minimal shell-activity mapping needed for workspace open or scene-open events, without leaking scene-local detail into the shell.

File(s):

  • prometeu-studio/src/main/java/p/studio/workspaces/StudioWorkspaceLifecycleSupport.java
  • prometeu-studio/src/main/java/p/studio/controls/shell/StudioActivityEventMapper.java if needed

Step 4 - Extend project-local shell state only as required

What: Support accepted shell/layout restoration for Scene Workspace if the implementation needs persisted split/divider state in wave 1.

How: Introduce the smallest project-local state additions necessary for shell restoration and workspace layout proportions. Do not persist scene-editor document state here unless a separate accepted rule exists.

File(s):

  • prometeu-studio/src/main/java/p/studio/projectstate/ProjectLocalStudioState.java
  • prometeu-studio/src/main/java/p/studio/projectstate/ProjectLocalStudioStateService.java
  • related tests under prometeu-studio/src/test/java/p/studio/projectstate/

Test Requirements

Unit Tests

  • Workspace id / shell restoration tests for the new workspace entry.
  • Project-local state normalization tests if new layout state is added.

Integration Tests

  • Main-view or shell-focused tests that verify Scene Workspace can mount and become the active workspace.

Manual Verification

  • Open a project and confirm Scene Workspace appears as a shell workspace.
  • Switch between Assets, Scene Workspace, and Code Editor without losing shell stability.
  • Reopen the project and confirm accepted shell layout restoration still behaves safely.

Acceptance Criteria

  • Scene Workspace is a selectable shell workspace.
  • The workspace mounts through the standard workspace host path.
  • No scene-local editing detail is pushed into shell-global state.
  • Any new project-local state is limited to accepted shell/workspace restoration concerns.

Dependencies

  • DEC-0026-studio-scene-workspace.md
  • PLN-0049-scene-workspace-spec-and-boundary-propagation.md

Risks

  • Overloading shell state with scene-editor detail would violate the workspace boundary.
  • Introducing restoration for unaccepted categories would outrun the decision.
  • Wiring shortcuts through MainView without a clean package boundary would make later tilemap work harder.

Abandonment

Abandoned on 2026-04-15 because the parent decision DEC-0026 was explicitly abandoned by the user.