NS5 slice: Add viewport-aware LSP hover, signature help, and parameter navigation #42

Closed
opened 2026-06-20 23:33:28 +00:00 by tmk241 · 1 comment
Owner

OBJECTIVE: Add mobile-friendly LSP hover/signature help and parameter navigation inside function calls, presented through the shared protocol/panel model without overwhelming narrow terminals.

AUTHORITY: Parent #5 NS5: Syntax and LSP coding intelligence; PRODUCT.md; REQUIREMENTS.md (req: coding/003, req: coding/004, req: coding/005, req: ui/002, req: testing/001-004).

AGENT AUTHORITY:

  • Delivery authority: local-commit
  • Tracker authority: this issue may be commented and closed when acceptance passes.
  • Handoff state: committed clean, tracker commented/closed.

PARENT: #5 via explicit issue link and parent checklist.

SCOPE: LSP hover/signature requests, narrow-viewport presentation, active parameter display, next/previous parameter commands when syntax/LSP data supports them, and tests/fakes needed to prove the behavior.

BOUNDARIES: No desktop popup clone that assumes wide screens; no runtime config; no language-server installer; no separate UI model outside the shared panel/command grammar; no snippets engine.

ACCEPTANCE: A fake or fixture LSP server can return hover and signature help; mim displays it legibly on an iPhone-width terminal, identifies the active parameter when available, allows thumb-friendly next/previous parameter movement inside a call, and degrades clearly when the server lacks support or the cursor is outside a call.

VERIFICATION: Run the cheapest command that proves acceptance. Include regular tests for hover/signature display and parameter movement, plus adversarial tests for long docs, tiny viewport, missing LSP capability, malformed/empty signature response, cursor outside call, and UTF-8 parameter text. Prefer protocol/headless/replay/fixture tests over brittle UI snapshots unless rendering behavior is the claim.

BLOCKERS: none

GOAL: Implement this vertical slice to the ACCEPTANCE above, keep the repo clean, cite relevant req: anchors in code/tests where applicable, and close only after verification passes.

OBJECTIVE: Add mobile-friendly LSP hover/signature help and parameter navigation inside function calls, presented through the shared protocol/panel model without overwhelming narrow terminals. AUTHORITY: Parent #5 `NS5: Syntax and LSP coding intelligence`; PRODUCT.md; REQUIREMENTS.md (req: coding/003, req: coding/004, req: coding/005, req: ui/002, req: testing/001-004). AGENT AUTHORITY: - Delivery authority: local-commit - Tracker authority: this issue may be commented and closed when acceptance passes. - Handoff state: committed clean, tracker commented/closed. PARENT: #5 via explicit issue link and parent checklist. SCOPE: LSP hover/signature requests, narrow-viewport presentation, active parameter display, next/previous parameter commands when syntax/LSP data supports them, and tests/fakes needed to prove the behavior. BOUNDARIES: No desktop popup clone that assumes wide screens; no runtime config; no language-server installer; no separate UI model outside the shared panel/command grammar; no snippets engine. ACCEPTANCE: A fake or fixture LSP server can return hover and signature help; `mim` displays it legibly on an iPhone-width terminal, identifies the active parameter when available, allows thumb-friendly next/previous parameter movement inside a call, and degrades clearly when the server lacks support or the cursor is outside a call. VERIFICATION: Run the cheapest command that proves acceptance. Include regular tests for hover/signature display and parameter movement, plus adversarial tests for long docs, tiny viewport, missing LSP capability, malformed/empty signature response, cursor outside call, and UTF-8 parameter text. Prefer protocol/headless/replay/fixture tests over brittle UI snapshots unless rendering behavior is the claim. BLOCKERS: none GOAL: Implement this vertical slice to the ACCEPTANCE above, keep the repo clean, cite relevant `req:` anchors in code/tests where applicable, and close only after verification passes.
tmk241 added this to the v1 milestone 2026-06-20 23:33:28 +00:00
tmk241 added the sliceready-for-agentgoal labels 2026-06-20 23:33:28 +00:00
Author
Owner

Implemented in commit d1141c89a2 (Add LSP hover and signature panels).

Verification:

  • zig fmt src/lsp.zig src/tui.zig: pass
  • zig build test: pass
  • zig build: pass
  • zig build run -- --help: pass
  • redgate lint / health: pass

Regular tests: hover payloads render viewport-bounded shared-panel rows; signatureHelp payloads render active signature/parameter rows; lsp_param_next and lsp_param_previous move the cursor between parameters in the current call and report the active parameter in a panel row. Narrow viewport test asserts rendered lines fit.
Adversarial tests: malformed hover/signature payloads are rejected, non-call parameter movement reports lsp:param:outside_call, and the current editor buffer remains intact.

Boundary: hover, signature help, and current-call parameter movement only. No full LSP stream parser, background server manager, semantic tokens, code actions, or cross-file navigation added.

Implemented in commit d1141c89a2b4 (Add LSP hover and signature panels). Verification: - zig fmt src/lsp.zig src/tui.zig: pass - zig build test: pass - zig build: pass - zig build run -- --help: pass - redgate lint / health: pass Regular tests: hover payloads render viewport-bounded shared-panel rows; signatureHelp payloads render active signature/parameter rows; `lsp_param_next` and `lsp_param_previous` move the cursor between parameters in the current call and report the active parameter in a panel row. Narrow viewport test asserts rendered lines fit. Adversarial tests: malformed hover/signature payloads are rejected, non-call parameter movement reports `lsp:param:outside_call`, and the current editor buffer remains intact. Boundary: hover, signature help, and current-call parameter movement only. No full LSP stream parser, background server manager, semantic tokens, code actions, or cross-file navigation added.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tmk241/mim#42