Phase 304 — Update-screen card + stream-cap fix
Update / system overlay screen (responsive + readable)
The update, restore, migrate and factory-reset overlays now render inside a compact, theme-aware card instead of a full-height layout that spread the buttons to the screen edges.
- Responsive: on low-resolution laptops the buttons no longer fly to the bottom — the card is vertically centered and scrolls internally so everything stays on-screen.
- Readable: the title/message sit on a solid card (white in light theme, near-black in dark) instead of directly on the blurred wallpaper.
- Themed card + logo:
var(--bg)surface (siyah/beyaz per theme); the Livinity logo adapts (donut hole matches the card).
"Stream cap exceeded (limit 5)" — fixed
Closing a streamed display window now deterministically frees its concurrent-stream slot. Previously, closing the host display view left its x11vnc capture process running forever (and destructively SIGTERM'd host apps), so after ~5 closes new streams were refused with "stream cap exceeded (limit 5)".
displays.closenow stops the display's capture stream directly (deterministic), scoped to the calling user so it never tears down another member's stream.- The shared host displays (
:0/:1) are guarded: closing their view stops the stream but never destroys the display.
Gates: UI build 0 · livinityd tsc 385 (zero net-new) · stream-manager tests 27/27 · adversarial review (2 fix-now applied, 4 false-positives rejected).
Residual (deferred): streams orphaned by a browser tab crash / force-close still aren't auto-reaped — a safe reaper needs a reconnect grace period. The normal window-close path is fully fixed.
🤖 Generated with Claude Code
Full Changelog: v44.91...v44.92