Repository navigation
mecatui: track remaining surface migrations #2237
Description
Goal
Track remaining mecatui overlays that should move to the shared surface contract. This complements #1742, which tracks convergence on the bounded scrolling and selection controls.
Desired boundary
A migrated surface owns its open-lifetime interaction state, rendering, geometry-derived view caches, and validation of asynchronous results. The root Model owns modal lifetime, placement, frame-scoped pointer mapping, and effects that change root-owned state. A surface requests a root-owned effect through a narrow intent rather than requiring generic parent routing to inspect its concrete type.
The current contributor rules live in docs/tui.md. Keep enduring conventions there rather than adding migration plans or completed-work records to docs/drafts/.
Scope
- Inventory overlays that still keep open-lifetime state or interaction routing on
Model. - Create focused migration issues only where moving to
surfaceimproves ownership and simplifies generic routing. - Preserve behavior while migrating: one active modal, parent-owned placement and pointer mapping, surface-owned input and asynchronous result handling, and safe zero-offer behavior.
- Keep
boundedadoption decisions in mecatui: track remaining bounded browsing adoption #1742; coordinate when a surface migration also needs a bounded control.
Tracked migrations (2026-10-16)
-
/effort— mecatui: bound /effort picker at constrained terminal heights #2170 closed; bounded picker on the shared surface contract. -
/worktrees— mecatui: bound /worktrees picker #2172 closed by PR feat(mecatui): bound worktree picker and move it to a modal surface #2279; state, geometry, result ownership, and navigation moved onto the shared surface contract. -
/schedule— mecatui: bound /schedule inventory and fire-history browsing #2173 is the next coordinated bounded + surface slice. Own inventory, inspect, create, and confirmation interaction within one open surface; preserve form/action semantics and use narrow intents for root effects. Compare placement and navigation with/sessions; the plan will settle presentation before implementation. - Finish the inventory of other legacy overlays and link focused migration issues or explicit retain decisions. This is not an exhaustive inventory yet; bounded-only children in mecatui: track remaining bounded browsing adoption #1742 do not automatically imply a surface migration.
Shared consistency guidance belongs in docs/tui.md, not in migration status records. #555 tracks the original abstraction; its stack proposal is superseded by the implemented one-active-modal contract.
Out of scope
- A surface stack, compositor migration, or a generic live dependency-refresh framework.
- Moving root-owned session, startup, persistence, or cross-view state into a surface.
- Rewriting overlays that already have a clear and sufficient ownership boundary.
Completion
Close this issue when the remaining overlays have been evaluated and each has either a focused migration issue or a documented reason to remain outside the surface contract.
Activity