61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
# Studio Shell Mental Model
|
|
|
|
The Studio shell exists to frame workspaces, not to absorb every piece of UI.
|
|
|
|
That distinction matters because a lot of early JavaFX applications slowly become a single giant layout where every new concern gets added to the same frame. The shell model chosen here avoids that.
|
|
|
|
## What belongs to the shell?
|
|
|
|
The shell owns:
|
|
|
|
- project entry through a launcher or home surface;
|
|
- global menus;
|
|
- fixed workspace navigation;
|
|
- the workspace host;
|
|
- the right-side utility surface;
|
|
- the always-visible run surface.
|
|
|
|
The shell does not own the full operating detail of every domain workflow.
|
|
|
|
## What belongs to a workspace?
|
|
|
|
A workspace owns its main body and its domain-specific detail.
|
|
|
|
That includes things like:
|
|
|
|
- editor-specific structure;
|
|
- asset-management views;
|
|
- debugger and profiler views;
|
|
- workspace-local logs and detailed operational output.
|
|
|
|
This is why the Studio does not define a mandatory single global console as the primary logging model.
|
|
|
|
## Why avoid a fully docked shell right now?
|
|
|
|
Because the Studio is still proving its topology.
|
|
|
|
If docking is introduced too early, the codebase starts solving these problems before the product actually needs them:
|
|
|
|
- panel restore rules;
|
|
- drag-and-drop docking behavior;
|
|
- focus and lifecycle complexity;
|
|
- layout persistence;
|
|
- too many shell-level extension points.
|
|
|
|
The structured shell keeps the frame stable without pretending the full IDE model is already known.
|
|
|
|
## Why is `Run` always visible?
|
|
|
|
Because run is a primary action, not a secondary panel.
|
|
|
|
If running the project requires opening a tab first, the shell is hiding one of the most important actions behind navigation friction. The Studio therefore treats `Run` as a persistent shell control.
|
|
|
|
## Practical reading rule
|
|
|
|
When deciding whether something belongs in the shell or in a workspace, ask:
|
|
|
|
> “Is this a Studio-wide framing concern, or is it operational detail of one workspace?”
|
|
|
|
If it is framing, it belongs in the shell.
|
|
If it is operational detail, it probably belongs in the workspace.
|