--- id: PLN-0028 ticket: studio-frontend-owned-semantic-editor-presentation title: Consume frontend-owned semantic presentation in Studio and retire generic FE theme usage status: review created: 2026-04-02 completed: tags: - studio - editor - semantic-highlighting - frontend - presentation --- ## Objective Make Studio consume the frontend-owned semantic presentation descriptor from LSP, apply FE-owned resources, and degrade cleanly to no highlight when semantic presentation data is unavailable. ## Background `DEC-0012` and `PLN-0027` move semantic presentation ownership out of Studio. After the descriptor and frontend resources exist, Studio must stop relying on generic frontend presentation styling and instead consume FE-owned semantic presentation data. ## Scope ### Included - Studio-side consumption of the LSP semantic presentation descriptor. - Mechanical semantic key to CSS class projection. - Loading FE-owned highlight resources through normal Java resource resolution. - Graceful no-highlight behavior when descriptor/resources are unavailable. - Removal of generic FE-specific highlight ownership assumptions from Studio runtime flow. ### Excluded - Frontend contract creation. - LSP descriptor creation. - Spec writing. ## Execution Steps ### Step 1 - Add descriptor-aware Studio highlight consumption **What:** Teach Studio editor highlighting flow to consume the frontend semantic presentation descriptor. **How:** Extend the Studio-side LSP consumption path so semantic highlight application depends on descriptor data and no longer assumes a single generic frontend presentation. **File(s):** - `prometeu-studio/src/main/java/p/studio/workspaces/editor/EditorWorkspace.java` - `prometeu-studio/src/main/java/p/studio/workspaces/editor/EditorDocumentPresentationRegistry.java` - `prometeu-studio/src/main/java/p/studio/workspaces/editor/syntaxhighlight/EditorDocumentSemanticHighlighting.java` ### Step 2 - Replace generic FE styling assumption with mechanical class projection **What:** Project frontend semantic keys directly into CSS classes. **How:** Implement a stable Studio-side projection rule such as `semanticKey -> editor-semantic-` and apply those classes to semantic spans without any semantic translation layer. **File(s):** - `prometeu-studio/src/main/java/p/studio/workspaces/editor/syntaxhighlight/EditorDocumentSemanticHighlighting.java` - any adjacent presentation/style support files ### Step 3 - Load FE-owned resources and remove generic FE ownership path **What:** Load FE-owned stylesheet resources rather than Studio-owned generic FE semantic CSS. **How:** Use descriptor resources surfaced through LSP, attach the referenced stylesheet(s) to the editor presentation/runtime flow, and stop depending on generic `fe.css` as the semantic owner for FE documents. **File(s):** - `prometeu-studio/src/main/java/p/studio/workspaces/editor/EditorDocumentPresentationRegistry.java` - `prometeu-studio/src/main/resources/themes/editor/presentations/fe.css` if retired or narrowed ### Step 4 - Implement graceful no-highlight degradation **What:** Ensure Studio continues to work without semantic highlight when descriptor/resources are absent. **How:** When the descriptor is absent or resources cannot be consumed, skip semantic styling for that frontend document, preserve editor usability, and avoid user-facing Studio errors. **File(s):** - `prometeu-studio/src/main/java/p/studio/workspaces/editor/EditorWorkspace.java` - semantic highlight routing/presentation files in the editor workspace ### Step 5 - Add Studio tests for FE-owned semantic presentation consumption **What:** Cover descriptor consumption, class projection, and no-highlight degradation. **How:** Add editor-side tests that assert Studio consumes descriptor data, applies projected classes, and keeps operating when descriptor/resources are missing. **File(s):** - `prometeu-studio/src/test/java/p/studio/workspaces/editor/...` ## Test Requirements ### Unit Tests - Editor highlight routing tests for semantic key projection. - Presentation registry tests for descriptor-driven resource loading. - No-highlight degradation tests when descriptor/resources are absent. ### Integration Tests - End-to-end Studio/LSP test using a frontend document with FE-owned semantic keys and FE-owned stylesheet resources. ### Manual Verification - Open a PBS document and verify semantic colors come from FE-owned presentation resources, not generic Studio FE theme assumptions. - Temporarily remove or break the descriptor/resource and verify the editor remains usable with no semantic highlight. ## Acceptance Criteria - [ ] Studio consumes frontend-owned semantic presentation descriptor data from LSP. - [ ] Studio projects semantic keys mechanically to CSS classes. - [ ] Generic Studio-owned frontend semantic presentation is no longer the runtime owner for FE highlight. - [ ] Missing descriptor/resources degrade to no highlight without Studio UI errors. - [ ] Studio tests cover the new descriptor consumption path. ## Dependencies - Depends on `DEC-0012`. - Depends on `PLN-0027` for descriptor and resource publication. - Can run after or in parallel with `PLN-0026`, but should not merge before the contract surface in `PLN-0027` exists. ## Risks - Existing Studio presentation registry may assume static local stylesheets and need a broader refactor. - Descriptor-driven resource loading can accidentally leak stylesheet accumulation if lifecycle cleanup is not handled carefully. - Partial migration may leave residual `fe.css` assumptions in tests or runtime paths.