Skip to content

sparkles:wsi — Open issues ​

Only unresolved design or evidence questions live here. Accepted decisions belong in SPEC.md; delivery order belongs in PLAN.md.

Last reviewed: September 17, 2026

IDQuestionWhy it remains openDecision point
WSI-O2Should X11 use one Xlib-created display shared with XCB for XIM, or a pure XCB connection plus a separately integrated XIM strategy?The lifecycle/loop slice now owns one XCB connection and one OpPollAdd; XIM remains the practical desktop baseline, and adding a second independently pumped Xlib queue would violate that proven seam.M4 X11 input slice
WSI-O4Which Wayland CSD renderer owns the bootstrap frame before Skia Graphite exists?WSI must not draw, yet GNOME requires CSD before M7. A minimal protocol/hit-region harness can prove semantics without pretending to be the final renderer.M3 Wayland first-pixel slice
WSI-O5Which native frame signals are sufficiently reliable to drive continuous animation on Win32 and AppKit?DWM timing and display-link APIs report different lifecycle/occlusion semantics. The common event is decided; source selection needs measurement.M2/M3 pacing spikes
WSI-O6How much of clipboard/DnD transfer belongs in WSI versus an Event Horizon stream helper?Platform negotiation is WSI-owned, but large transfer backpressure should reuse the loop without turning WindowEvent into an I/O handle grab bag.M5 design review
WSI-O7Does full in ui-app link all GUI backends simultaneously or expose mutually exclusive child configurations?Simultaneous native/SDL/raylib symbols and platform closures may be too large for production while useful in Gallery and parity tests.M8 configuration spike
WSI-O8Which native Windows host can certify per-monitor DPI, DWM, raw input, accessibility and IME behavior?The hosted windows-latest test leg now runs the Win32 driver on a real User32/IOCP (the shared suite passes at the Wine counts), but that runner is a 96-DPI desktop with no IME on its layout, so the IMM32 preedit-phase evidence stays with Wine (the result-string commit is native now) and the rest still has no native certifier.before marking Win32 F01–F17 verified

Closed decisions ​

DecisionResolution
Package namesparkles:wsi
Desktop backendsnative Wayland, X11, Win32 and AppKit
Cross-platform WSI dependencynone in the native core
Loop ownershipone integrated Event Horizon loop
OS-owned loop attachmentrunHostedOnce/tickHosted; User32 waits on an IOCP mirror event, while AppKit wraps the native kqueue descriptor in CFFileDescriptor
Win32 first IMEIMM32; TSF is deferred behind native Graphite and ui-app integration
Wayland decorationsrequest SSD; renderer-drawn CSD fallback; no libdecor hard dependency
Native renderer APItyped closed native-handle sum
SDLexplicit compatibility package/configuration only
Event text storage (WSI-O3)copy-on-write buffer, 16 bytes inline, 64 KiB bound, thread-confined: SPEC.md §4.5 ED8
Delivery under load (WSI-O9)bounded queue, motion merged in place with a sample ring beside it, overflow counted and never fatal: SPEC.md §4.5 ED1–ED10, reasoning in event-delivery.md