127 lines
4.8 KiB
Markdown
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.
|