prometeu-studio/docs/studio/pull-requests/PR-02-studio-shell-components-wave-1.md
2026-03-24 13:42:39 +00:00

70 lines
2.7 KiB
Markdown

# 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