Skip to content

[CTX-1546] docs(ui): amend accepted Plugin API v1 Lua surface contract (statusline removal, overlay focus capture, deferred pointer routing) - #181

Merged
Xuepoo merged 1 commit into
mainfrom
ctx-1546/docs-lua-surface-amend
Oct 26, 2026
Merged

Xuepoo merged 1 commit into
mainfrom
ctx-1546/docs-lua-surface-amend

Conversation

@Xuepoo

@Xuepoo Xuepoo commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

What

Amends the accepted Plugin API v1 Lua Surface contract through the owner amendment process (bitty-terminal/bitty#2676, CarryCtx task CTX-1546, amendment ref OQ-UI-CONTRACT-AMENDMENT). The accepted text is not rewritten silently: every change is recorded as a dated amendment in the RFC Status section, and the decision record lands in bitty-docs ADR-0009 (sibling PR).

Reconciled with what shipped

  • Slot set. bitty.ui.mount closed set is now terminal | top | bottom | left | right | tabline | overlay (seven names). statusline left the set (Core CTX-1140, bitty PR #1962): the bridge slot check refuses the name exactly like any unknown slot with E_UI_COMPONENT_INVALID, and status presentation composes on the bottom edge band. The plugin SDK dropped the retired name (CTX-1570).
  • Overlay. The overlay slot keeps declarative, presentation-only content that never claims focus by itself and never becomes a PanelProvider. Focus and transient input capture live in the separately accepted W-01 Overlay Input Capture Contract (accepted 2026-10-03): Core-owned bitty.ui.overlay.* (acquire / update / release / show / hide / poll) under the v2 capability ui.overlay.focus (deny-by-default, never implied by ui.overlay), plus the presentation-only bitty.ui.overlay.show (bitty PR #2406, gates ui.rich + ui.overlay, one presentation overlay per window, no focus grant).
  • Presentation-vs-overlay scene-node pointer routing stays DEFERRED — recorded as deferred, not planned.
  • Authoritative surfaces. Slots as above; capability gates ui.rich / ui.overlay / ui.overlay.focus; stable codes E_UI_COMPONENT_INVALID, E_UI_UNAVAILABLE, E_UI_CLAIM_REQUIRED, E_UI_ALREADY_CAPTURED, E_UI_NOT_OWNER; bitty.api_version remains "1.0.0" (project line 0.0.x, pre-stability, so no major-version reset) with migration notes (bottom-band status composition; tolerate E_UI_UNAVAILABLE refusals; opt-in ui.overlay.focus grants).

What is NOT promoted (per the issue)

Candidate token namespaces, one-surface-per-edge, terminal-wide budgets, headed evidence, and overlay pointer routing remain candidate/deferred and gain no v1 contract in this amendment.

Files

  • sdk/plugin-api-v1-lua-surface-rfc.md — Status amendment block, slot set, overlay bullet, tabline/availability error wording, LUA-OQ-11 disposition row.
  • specifications/plugin-platform-rfc.md — host-namespace UI bullet slot list synced.
  • sdk/reference/ui.md — "Accepted RFC divergence" section becomes "Accepted contract amendment record"; References synced.
  • extensibility/plugin-ui-slot-inventory-candidate.md — only the status cross-reference sentence (the draft candidate page is otherwise untouched).

Evidence

Read-only implementation evidence at bitty@1ecfa2e9: slot vocabulary and refusal in crates/bitty-lua/src/ui.rs (UiSlot, unknown-slot E_UI_COMPONENT_INVALID), capture surface and codes in crates/bitty-lua/src/host.rs (ui.overlay.focus gating, E_UI_ALREADY_CAPTURED / E_UI_NOT_OWNER), claim gate E_UI_CLAIM_REQUIRED in crates/bitty-runtime/src/plugin_runtime/services.rs.

Precursors already merged: CTX-1419 (bitty PRs #2385/#2392 implementation parity), CTX-1544 factual sync (bitty-plugins-docs #174/#175), CTX-1570 SDK slot drop.

Decision record: sibling PR in bitty-terminal/bitty-docs (ADR-0009 amendment blocks for LUA-OQ-7/LUA-OQ-11 + decision register row).

Docs half of bitty-terminal/bitty#2676.

…ntract

Reconcile the accepted Plugin API v1 Lua Surface RFC (bitty issue #2676, OQ-UI-CONTRACT-AMENDMENT) with what shipped: the closed slot set is the seven names terminal|top|bottom|left|right|tabline|overlay (statusline removed in bitty CTX-1140, PR #1962, refused at the bridge as E_UI_COMPONENT_INVALID, status composes on bottom), the overlay wording separates never-focusing slot content from the Core-owned W-01 capture surface (bitty.ui.overlay.* under ui.overlay.focus; presentation-only bitty.ui.overlay.show under ui.rich+ui.overlay), overlay pointer routing stays deferred, and the authoritative slots, gates, error codes, unchanged 1.0.0 version line, and migration impact are recorded. Candidate token namespaces, one-surface-per-edge, terminal-wide budgets, and headed evidence are not promoted.
@Xuepoo Xuepoo added this to the v0.1.0 milestone Oct 26, 2026
@Xuepoo Xuepoo added docs Documentation P1 Priority: high area:ui Area: UI / layout area:lua Area: Lua runtime labels Oct 26, 2026
@Xuepoo
Xuepoo merged commit d3cf7cc into main Oct 26, 2026
4 checks passed
@Xuepoo
Xuepoo deleted the ctx-1546/docs-lua-surface-amend branch October 26, 2026 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:lua Area: Lua runtime area:ui Area: UI / layout docs Documentation P1 Priority: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant