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: August 21, 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-O3Which bounded storage policy holds arbitrarily long IME pre-edit and clipboard MIME metadata while keeping WindowEvent Regular?Existing inline key text is intentionally small; composition can be much larger. A ref-counted/arena-backed value needs explicit lifetime and allocation behavior.M1 input changes
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-O8What native Windows CI provider and IME automation can certify behavior Wine cannot?Wine is intentionally the local compatibility lane and supports IMM32 well, but it is not native evidence for DWM, raw input, accessibility or all IMEs.before marking Win32 F01F17 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