92 lines
5.2 KiB
Markdown
92 lines
5.2 KiB
Markdown
---
|
|
id: PLN-0062
|
|
ticket: studio-editor-workspace-cleanup
|
|
title: Shell Session and State Cleanup After Editor Removal
|
|
status: done
|
|
created: 2026-05-05
|
|
completed: 2026-05-05
|
|
tags: [studio, editor, cleanup, shell, session, state]
|
|
---
|
|
|
|
## Objective
|
|
|
|
Remove the `Code Editor` workspace from the Studio shell and reconfigure project session and persisted state so the application remains coherent without any editor-owned concepts.
|
|
|
|
## Background
|
|
|
|
`DEC-0031` locks the complete removal of the embedded editor stack. The shell, project session, workspace registry, and `.studio/state.json` currently still assume the existence of `WorkspaceId.EDITOR`, `EditorWorkspace`, editor restoration state, and editor-specific layout state.
|
|
|
|
## Scope
|
|
|
|
### Included
|
|
- Remove `WorkspaceId.EDITOR` from the Studio shell.
|
|
- Remove `EditorWorkspace` registration and shell integration.
|
|
- Remove editor-specific state persistence and restoration paths.
|
|
- Remove `LSP`/`VFS` legacy ownership from `StudioProjectSession` and `StudioProjectSessionFactory`.
|
|
- Keep `Assets`, `Shipper`, `Debug`, launcher, and shell flows functional.
|
|
|
|
### Excluded
|
|
- Removal of the `prometeu-lsp` and `prometeu-vfs` module source trees themselves.
|
|
- Documentation and lesson cleanup.
|
|
- New code backend or replacement LSP architecture.
|
|
|
|
## Execution Steps
|
|
|
|
### Step 1 - Remove editor workspace registration from the shell
|
|
|
|
**What:** Remove all shell-level references to the `Code Editor` workspace.
|
|
**How:** Update the main window composition to stop creating `EditorWorkspace`, remove the editor rail item, stop selecting or restoring `WorkspaceId.EDITOR`, and ensure shell fallback remains stable when old persisted state still references the editor.
|
|
**File(s):** `prometeu-studio/src/main/java/p/studio/window/MainView.java`, `prometeu-studio/src/main/java/p/studio/workspaces/WorkspaceId.java`, any directly related shell controls or selectors.
|
|
|
|
### Step 2 - Remove editor-owned state and restoration from project-local state
|
|
|
|
**What:** Remove editor layout and restoration data from persisted project-local Studio state.
|
|
**How:** Simplify `ProjectLocalStudioState` to remove `editorRestoration` and `shellLayout.editorLayout`, update normalization/defaults, and make loading old `.studio/state.json` degrade safely without crashes or stale editor assumptions.
|
|
**File(s):** `prometeu-studio/src/main/java/p/studio/projectstate/ProjectLocalStudioState.java`, `prometeu-studio/src/main/java/p/studio/projectstate/ProjectLocalStudioStateService.java`, any callers that write or restore editor state.
|
|
|
|
### Step 3 - Reconfigure project session to stop owning editor legacy dependencies
|
|
|
|
**What:** Remove legacy editor-driven `LSP` and `VFS` ownership from project session composition.
|
|
**How:** Refactor `StudioProjectSession` and `StudioProjectSessionFactory` so opening a project no longer constructs `VfsProjectDocument` or `LspService`, and so close semantics remain valid without those resources.
|
|
**File(s):** `prometeu-studio/src/main/java/p/studio/projectsessions/StudioProjectSession.java`, `prometeu-studio/src/main/java/p/studio/projectsessions/StudioProjectSessionFactory.java`, dependent tests.
|
|
|
|
### Step 4 - Remove bootstrap/container dependencies that only existed for the editor stack
|
|
|
|
**What:** Remove application bootstrap and container seams that exist only to inject legacy editor stack services.
|
|
**How:** Delete `LspServiceFactory` and `ProjectDocumentVfsFactory` accessors from the container surfaces once shell/session no longer depend on them, and update `AppContainer` accordingly.
|
|
**File(s):** `prometeu-studio/src/main/java/p/studio/Container.java`, `prometeu-app/src/main/java/p/studio/AppContainer.java`, directly affected tests.
|
|
|
|
## Test Requirements
|
|
|
|
### Unit Tests
|
|
- Update session and state tests to reflect the absence of editor state.
|
|
- Add coverage for loading old persisted project-local state without editor restoration fields being required.
|
|
|
|
### Integration Tests
|
|
- Verify the main Studio shell opens a project and activates a surviving workspace without editor registration.
|
|
- Verify session close still saves valid project-local state and shuts down surviving services cleanly.
|
|
|
|
### Manual Verification
|
|
- Open the Studio shell and confirm only surviving workspaces appear.
|
|
- Reopen a project with stale `.studio/state.json` containing editor data and confirm safe fallback.
|
|
- Confirm project switching and shell startup remain stable.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [x] `WorkspaceId.EDITOR` no longer exists in production code.
|
|
- [x] `MainView` no longer instantiates or restores `EditorWorkspace`.
|
|
- [x] Project-local state no longer persists editor restoration or editor layout fields.
|
|
- [x] `StudioProjectSession` no longer owns legacy editor `LSP`/`VFS` resources.
|
|
- [x] The Studio shell remains functional with surviving workspaces.
|
|
|
|
## Dependencies
|
|
|
|
- `DEC-0031` accepted and normatively locked.
|
|
- Knowledge of all shell/session/state call sites that currently assume the editor exists.
|
|
|
|
## Risks
|
|
|
|
- Shell restoration may break if old persisted state is not normalized defensively.
|
|
- Session teardown may regress if hidden resource ownership remains after field removal.
|
|
- Removing editor assumptions too early may temporarily orphan callers still using editor-specific state APIs.
|