# PR-02 - Studio Shell Components Wave 1 ## Briefing The Studio has already decided that used visual controls should come through `prometeu-studio-components`. Before implementing the new shell entry flow, the codebase needs the first component wave for the shell itself. ## Objective Establish the first set of Studio shell controls in `prometeu-studio-components` so the launcher and shell work do not grow on top of raw JavaFX controls. ## Dependencies - [`../specs/1. Studio Shell and Workspace Layout Specification.md`](../specs/1.%20Studio%20Shell%20and%20Workspace%20Layout%20Specification.md) - [`../specs/3. Studio Components Module Specification.md`](../specs/3.%20Studio%20Components%20Module%20Specification.md) - `PR-01 - StudioEventBus Foundation` ## Scope - create the first shell-facing controls in `prometeu-studio-components` - establish theme and i18n-safe control patterns - wire the Studio shell to consume those controls Initial candidate controls: - shell menu surface - workspace rail or workspace selector control - right utility panel shell - run surface control - simple shell panel/header primitives as needed ## Non-Goals - implementing the full Assets workspace - introducing every future Studio control family - building a generic docking framework - solving project launcher behavior in full ## Execution Method 1. Define the first Studio shell controls in `prometeu-studio-components`. 2. Keep each control API small and Studio-facing. 3. Keep styling themeable through CSS. 4. Keep user-facing text bindable and locale-safe. 5. Establish explicit `subscribe()` and `unsubscribe()` lifecycle hooks in the control layer so event-driven controls can override them when needed. 6. Establish `onAttached()` and `onDetached()` hooks that call `subscribe()` and `unsubscribe()` respectively. 7. Refactor the shell layer in `prometeu-studio` to consume these controls instead of raw JavaFX where the controls are now available. 8. Avoid adding speculative controls with no immediate shell use. ## Acceptance Criteria - the first shell-facing controls exist in `prometeu-studio-components` - those controls are used by the Studio shell code - no new shell control work lands directly on raw JavaFX when a Studio control is now available - event-driven controls have explicit subscribe and unsubscribe lifecycle hooks - attach and detach lifecycle hooks drive subscription setup and teardown - theme and i18n compatibility are preserved ## Validation - compile validation of `prometeu-studio` and `prometeu-studio-components` - smoke validation that the Studio still launches and renders the shell ## Affected Artifacts - `prometeu-studio-components` - `prometeu-studio` shell code - shell styling and theme resources