prometeu-studio/docs/studio/learn/mental-model-studio-shell.md
2026-03-24 13:42:39 +00:00

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.