Multi-Window Viewer & Toolbar Improvements
New Features
- Multi-window deep links — every
breeze://deep link opens its own independent session window - Native clipboard — added Tauri clipboard plugin, bypasses macOS "Allow Paste" prompt for Paste Text
- Monitor picker — replaced dropdown with numbered icon buttons (one-click switch)
- Window titles — session windows show "hostname — Breeze Viewer" set from Rust
Improvements
- Hidden main window serves as process anchor only (no visible launcher)
- Exchange API returns device hostname for all transport types
- Session windows run their own update check (blocks if outdated)
- Removed Disconnect button from toolbar (close window to disconnect)
Bug Fixes
- macOS deadlock fix —
on_open_urlspawns thread beforerun_on_main_threadto guarantee async dispatch - Cross-window event bleed — scoped event listeners prevent deep links from affecting wrong window
- macOS TCC fix — Screen Recording detection updated for macOS 26 Tahoe
- Security hardening — HTTPS-first OpenH264 download, bzip2 decompression bomb guard, UID 0 rejection
- Hostname DB query wrapped in try-catch (non-critical, won't block connections)
- Exchange cache type updated to include hostname field
Connect Desktop UX
- Web console polls session status after launching viewer
- Inline error display when connection fails
- Agent heartbeat routes skip global rate limiter
What's Changed
- feat: multi-window viewer with per-session deep links by @ToddHebebrand in #289
Full Changelog: v0.13.14...v0.14.0