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

127 lines
4.8 KiB
Markdown

---
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.