close the D-88 anchored-popover sweep (T-286, T-288)

Record the closing amendment on D-88: base blockers fixed, every anchored
surface migrated except quick-open (deliberately left bespoke — a persistent
centred widget that shares neither ClideMenu nor anchoring). Mark T-286 and
T-288 done.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-09 08:19:52 +02:00
co-authored by Claude Opus 4.8
parent 9f249f6dcc
commit 48974d2a29
3 changed files with 81 additions and 0 deletions
+1
View File
@@ -17,3 +17,4 @@ widget primitives.
- **Quick-open / command palette** — bespoke content (centred filter + fuzzy + two-column rows); uses only the `ClideAnchoredOverlay` base.
- **Theme picker** — toggle + live-apply list; its own small content (or `ClideMenu` if it ever fits cleanly), on the base.
Revised goal: *everything anchored shares `ClideAnchoredOverlay`; content components match the surface.* The blockers to clear first (focus capture racing content autofocus; follower content untappable in the `canSizeOverlay` test harness) live in the base, not in any content component. Tracked by T-288. Raised by the user: "should those then not just be a different shared component from the others?"
- **Amendment (2026-06-08) — sweep complete:** The base blockers were fixed (auto-flip reads the real `View` size, not the zeroable `MediaQuery`; the follower drops its `Align` wrapper so non-top-left anchors hit-test; tests use a sized `anchoredHarness`). Migrated: menu bar, permission picker (T-275), theme picker (onto `ClideMenu` — the HC toggle is a `keepOpenOnSelect` item; it fit cleanly), the @-mention and slash typeaheads (onto `ClideTypeahead`, which bridges its live suggestions through a `ValueNotifier` so the popover narrows as you type — the `OverlayEntry` is a separate subtree that would otherwise show the list it opened with). **Quick-open is deliberately NOT migrated:** it is a *persistent* widget that conditionally renders a centred `Positioned` (no `OverlayEntry` lifecycle, no barrier, no anchor) with bespoke two-column rows and intricate keymap-scope/focus/file-load logic — it shares neither `ClideMenu` nor any real anchoring, so wrapping it in `ClideAnchoredOverlay(centered)` would add insert/remove churn to a delicate widget for ~6 lines of trivial centring and no code reuse. The base primitive stands ready if quick-open's shape ever converges. T-286 / T-288 close here.