--- id: PLN-0050 ticket: studio-scene-workspace title: Build Scene Workspace shell and project-state foundations status: abandoned created: 2026-04-14 completed: tags: - 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.