--- id: PLN-0025 ticket: studio-editor-write-wave-supported-non-frontend-files title: Implement FE semantic highlight and editor consumption for the read-only LSP phase status: review created: 2026-03-31 completed: tags: [studio, lsp, highlight, frontend, editor] --- ## Objective Implement frontend highlight delivery through `prometeu-lsp` semantics while leaving non-frontend highlighting Studio-local as DEC-0011 requires. ## Background DEC-0011 explicitly separates highlight ownership: - non-frontend highlight may remain local to the Studio editor, - frontend highlight must come from the integrated LSP semantic layer and frontend-owned color semantics. This deserves its own plan because it crosses API, runtime, and editor presentation boundaries. ## Scope ### Included - FE semantic highlight contracts in LSP - FE semantic highlight production in runtime - editor consumption path for FE highlight - frontend-owned color semantics integration ### Excluded - non-frontend highlight rewrite - completion - frontend editing ## Execution Steps ### Step 1 - Define FE Highlight Contracts **What:** Add LSP-facing contracts for semantic highlight delivery. **How:** Define DTOs/messages that carry FE semantic highlight spans and any required theme/color semantics without forcing Studio-local token rules onto FE documents. **File(s):** - `prometeu-lsp/prometeu-lsp-api/src/main/java/**` ### Step 2 - Implement Runtime Highlight Production **What:** Produce FE highlight data from the integrated LSP runtime. **How:** Implement the runtime path that derives semantic highlight facts for FE docs from the same read-only analysis substrate used by diagnostics and symbols. **File(s):** - `prometeu-lsp/prometeu-lsp-v1/src/main/java/**` ### Step 3 - Consume FE Highlight in the Editor **What:** Make the editor choose FE highlight from LSP while leaving other document types on the existing local path. **How:** Update editor presentation routing so: - FE docs use LSP semantic highlight results and frontend-owned color semantics, - non-FE docs continue using Studio-local highlighting. **File(s):** - `prometeu-studio/src/main/java/p/studio/workspaces/editor/EditorDocumentPresentationRegistry.java` - `prometeu-studio/src/main/java/p/studio/workspaces/editor/EditorWorkspace.java` - `prometeu-studio/src/main/java/p/studio/workspaces/editor/syntaxhighlight/**` - `prometeu-studio/src/main/resources/themes/editor/**` ## Test Requirements ### Unit Tests - FE highlight DTO/runtime mapping - editor routing between FE LSP highlight and non-FE local highlight ### Integration Tests - FE document read-only semantic highlight test through Studio + VFS + LSP path ### Manual Verification - open FE docs and confirm semantic highlight comes from LSP-driven data - open non-FE docs and confirm existing local highlighting still works ## Acceptance Criteria - [ ] FE highlight is produced by the integrated LSP runtime - [ ] FE highlight uses frontend-owned color semantics rather than Studio-local fallback token rules - [ ] non-FE highlighting remains on the existing local Studio path - [ ] editor presentation routing clearly separates FE and non-FE highlight ownership ## Dependencies - DEC-0011 accepted - PLN-0023 review completed or otherwise stable enough for LSP contracts/runtime - PLN-0024 review completed or otherwise stable enough to provide shared FE semantic facts ## Risks - FE highlight could accidentally duplicate or conflict with local Studio token rules - color-semantics contracts may become too UI-coupled if not modeled carefully - editor routing may become fragile if FE and non-FE ownership boundaries are not explicit