5.4 KiB
| id | ticket | title | status | created | completed | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0036 | studio-editor-inline-type-hints-for-let-bindings | Studio inline hint rendering and rollout | done | 2026-04-03 | 2026-04-03 |
|
Objective
Implement the Studio host rendering path for transported inline hints, including any explicit transitional stage and convergence to real inline rendering.
Background
DEC-0015 requires the final user-visible capability to be real inline rendering in the editor flow. A transitional approximate stage is allowed only if explicitly treated as a rollout stage and not as the final architecture. Hints must remain decorative and must survive partial valid spans under degraded analysis.
The current editor uses CodeArea with StyleSpans, gutter graphics, and semantic overlays, which is sufficient for color and gutter behavior but not obviously sufficient for true inline non-text decorations without substrate work.
Scope
Included
- Add a Studio host rendering path for transported inline hints.
- Preserve decorative-only behavior.
- Preserve valid hints under partial degradation.
- If needed, implement an explicit transitional rendering wave and a follow-up convergence step to real inline rendering.
- Add editor tests for rendering behavior and document-model isolation.
Excluded
- Frontend hint eligibility policy.
- LSP transport contract design.
- Non-editor consumers of hint payloads.
Execution Steps
Step 1 - Evaluate and choose the editor substrate for real inline rendering
What: Determine the exact editor primitive needed to support true inline hint rendering.
How: Evaluate the current CodeArea-based surface and decide whether real inline hints can be supported by extension or require a migration to a richer editor substrate.
This step must explicitly document:
- why the chosen substrate can satisfy the decision;
- whether a transitional approximation is required;
- what migration path exists if the current substrate is insufficient.
File(s):
prometeu-studio/src/main/java/p/studio/workspaces/editor/- any editor utility or custom rendering surfaces introduced by the chosen approach
Step 2 - Implement decorative host rendering for transported hints
What: Render LSP-transported hints in the editor without mutating document text.
How: Add a host rendering layer that:
- consumes inline hint payloads from analyze results;
- renders them at deterministic anchors;
- keeps them out of the persisted text model;
- keeps caret, selection, copy/paste, and editing semantics text-only.
If a transitional approximation is required, it must be explicitly isolated and labeled as wave 1 rather than as final architecture.
File(s):
prometeu-studio/src/main/java/p/studio/workspaces/editor/prometeu-studio/src/main/resources/themes/if hint-specific host styling is needed
Step 3 - Converge to real inline rendering if wave 1 is approximate
What: Ensure the implementation reaches the decision-mandated final state.
How: If step 2 introduces an approximate rendering wave, add the explicit follow-up work needed to move to true inline rendering and retire the approximation.
This convergence work must not be left implicit.
File(s):
- the same editor rendering surfaces chosen in steps 1 and 2
Step 4 - Add Studio rendering and interaction tests
What: Lock decorative behavior and partial-degradation rendering in Studio tests.
How: Add tests that verify:
- hints render when transported;
- hints do not modify the text buffer;
- hints do not become part of copy/paste semantics;
- valid hints remain visible even when only some hint spans are available;
- the final path uses real inline rendering once the convergence step is complete.
File(s):
prometeu-studio/src/test/java/p/studio/workspaces/editor/
Test Requirements
Unit Tests
- Rendering-layer tests for anchor mapping and decorative-only behavior.
- Tests ensuring text buffer content remains unchanged.
Integration Tests
- Editor tests consuming analyze results with inline hints.
- Partial-degradation tests preserving valid hint spans.
- Convergence tests for the final inline-real path if a transitional wave exists.
Manual Verification
- Open a PBS file with inferred
letbindings and confirm hints render next to the binding without entering the file text. - Confirm cursor movement and copy/paste ignore hint text.
- Confirm partially valid hints remain visible when some bindings fail analysis.
Acceptance Criteria
- Studio can render transported inline hints without mutating document text.
- Decorative-only interaction rules are enforced.
- Partial valid hints remain visible under degraded analysis.
- If a transitional approximation exists, the path to real inline rendering is explicitly implemented and not left as implied follow-up.
Dependencies
- Accepted decision
DEC-0015-studio-editor-inline-type-hints-contract-and-rendering-model.md PLN-0033-inline-hint-spec-and-contract-propagation.mdPLN-0034-lsp-inline-hint-transport-contract.mdPLN-0035-pbs-inline-type-hint-payload-production.md
Risks
- The current editor substrate may not support inline-real rendering cleanly without deeper refactoring.
- A temporary approximation may linger unless the convergence step is explicitly tracked and executed.
- Decorative behavior may be accidentally violated if the rendering layer leaks into text model operations.