--- id: PLN-0052 ticket: studio-scene-workspace title: Implement Scene Workspace wave-1 tilemap editor status: abandoned created: 2026-04-14 completed: tags: - studio - scene - workspace - tilemap - ui --- ## Objective Implement the wave-1 `Tilemap` experience for `Scene Workspace` according to `DEC-0026`. ## Background The accepted decision limits wave 1 to one visible tab, `Tilemap`, with four layers, independent layer dimensions, explicit tile presence semantics, scene-first navigation, and basic editing tools only. ## Scope ### Included - Left scene navigator. - Top tab strip with only `Tilemap` visible. - Central tilemap editing canvas. - Right-side tilemap details and tile palette regions. - Four-layer editing model with visibility and focus. - Basic painting, erasing, and tile selection. ### Excluded - Camera boundaries. - Lights. - AABB authoring. - Placeholder tabs for unsupported aspects. - Advanced editing tools such as bucket fill, marquee, flood fill, or lock semantics. ## Execution Steps ### Step 1 - Build the workspace projection model **What:** Create projection/view-state types for the scene navigator, active scene, active layer, tile palette, and tilemap details. **How:** Follow the event-driven workspace framework already used by other Studio workspaces. Keep projection boundaries local so navigator, details, and palette can update without whole-workspace redraw. **File(s):** - new projection and message classes under `prometeu-studio/src/main/java/p/studio/workspaces/scene/` ### Step 2 - Build the left navigator and scene selection flow **What:** Render a scene-first navigator that lists authoring scenes, not assets. **How:** Introduce a custom navigator control inspired by `Assets` patterns but scoped to scene identity, with linked asset context rendered only as secondary status. **File(s):** - new controls under `prometeu-studio/src/main/java/p/studio/workspaces/scene/list/` - `prometeu-studio/src/main/java/p/studio/workspaces/scene/SceneWorkspace.java` ### Step 3 - Build the wave-1 Tilemap layout **What:** Implement the single visible tab and its three-region body. **How:** Compose: - central tilemap canvas; - right upper details panel; - right lower tile palette; - layer controls for visibility and focus. Do not expose unsupported tabs. **File(s):** - `prometeu-studio/src/main/java/p/studio/workspaces/scene/SceneWorkspace.java` - new controls under `prometeu-studio/src/main/java/p/studio/workspaces/scene/tilemap/` ### Step 4 - Implement tile selection and painting **What:** Support the basic editing interactions required by the decision. **How:** Implement tile selection from the palette, paint on the active layer, erase by clearing explicit tile presence, and preserve valid `glyph_id = 0` semantics. **File(s):** - tilemap interaction classes under `prometeu-studio/src/main/java/p/studio/workspaces/scene/tilemap/` - scene model classes under `prometeu-studio/src/main/java/p/studio/workspaces/scene/model/` ### Step 5 - Implement tileset resolution and layer detail rendering **What:** Resolve glyph-bank-backed tileset data for the active scene/layer and show dimensions/details in the side panel. **How:** Consume the scene-owned tileset choice, render available tiles and palette choices, and expose active layer dimensions and relevant properties without handing ownership to `Assets`. **File(s):** - scene workspace service/projection classes - tile palette and detail controls under `prometeu-studio/src/main/java/p/studio/workspaces/scene/tilemap/` ## Test Requirements ### Unit Tests - Projection-state tests for active scene, layer visibility, and focus. - Tile painting tests that preserve explicit presence semantics. - Palette-selection tests that keep `glyph_id = 0` valid. ### Integration Tests - UI-oriented tests for scene selection, tile selection, paint, erase, and save-triggered refresh. ### Manual Verification - Open `Scene Workspace`, create/open a scene, and confirm the navigator is scene-first. - Paint and erase on different layers with independent dimensions. - Verify layer visibility/focus changes do not corrupt scene data. - Verify only the `Tilemap` tab is visible in wave 1. ## Acceptance Criteria - [ ] `Scene Workspace` renders a scene-first navigator. - [ ] Wave 1 exposes only the `Tilemap` tab. - [ ] The editor supports four layers with independent dimensions. - [ ] Painting and erasing respect explicit tile presence semantics. - [ ] Layer visibility and focus work in the tilemap editor. - [ ] Tile palette and details panels reflect the active scene/layer context. ## Dependencies - `DEC-0026-studio-scene-workspace.md` - `PLN-0049-scene-workspace-spec-and-boundary-propagation.md` - `PLN-0050-scene-workspace-shell-and-project-state-foundations.md` - `PLN-0051-scene-artifact-and-assets-handoff-contract.md` ## Risks - Overbuilding the first UI pass could quietly introduce unsupported aspect tabs or tools. - Canvas interaction code can become monolithic if projection boundaries are not enforced early. - Tileset rendering may drift toward asset-first ownership if scene-owned selection is not kept explicit. ## Abandonment Abandoned on 2026-04-15 because the parent decision `DEC-0026` was explicitly abandoned by the user.