Multi-window and popouts
ScaiWave runs as a single-page app by default, but you can pop individual chats, notes, and calls into separate windows.
1. Pop out a chat#
In any chat header → ⤴ Pop out. The chat opens in a new window (native on desktop via Tauri, browser window in the web app). The window is independent:
- Its own WebSocket connection, its own focus state.
- Notifications, presence, and read markers cross-coordinate so the same room marked-read in one window updates in the other.
- Closing the popout doesn't affect the original tab.
2. Pop out a note#
Same pattern: ⤴ Pop out in the note header. The popout window mounts the editor; the parent tab swaps the editor for a placeholder with a "Bring it back" button.
Why the placeholder? Notes use Yjs CRDT live multi-cursor. Having two editors on the same note in the same client would race; the popout takes the binding while the parent waits.
To return the note: click "Bring it back" in the parent tab (or close the popout). The parent reclaims the editor.
3. Call in Picture-in-Picture#
During a video call, the call panel has a PiP button. Pops the call video into a floating window that stays on top of every other window — keep watching while you work elsewhere.
This uses Chromium's Document Picture-in-Picture API:
- Works: Chrome, Edge, Brave (Chromium 116+).
- Falls back to a normal popout: Safari, Firefox.
The PiP window has its own controls (mute, camera off, end call, back to main).
4. Run multiple ScaiWave windows#
Native (Tauri desktop): the app supports multiple top-level windows. Window → New window (Cmd+Shift+N) opens another. Useful for:
- Watching a long-running sidekick in one window while chatting in another.
- Reviewing two notes side-by-side.
- Splitting focus between two rooms during an incident.
Web: each tab is independent. Same coordination applies.
5. Cross-window coordination#
Three things sync across all your ScaiWave windows in the same browser session (or same Tauri app):
- Notifications: only one window fires the notification — the most-recently-focused. The others stay quiet so you don't get duplicate pings.
- Read markers: mark-read in one window propagates instantly to
the others via
BroadcastChannel. - Todo changes: the cross-workspace todo store stays consistent across windows.
6. Tauri vs. web differences#
- Tauri (desktop) — native window creation, faster transitions, PiP via the system OS where available, file system access.
- Web — uses
window.openfor popouts; standard browser PiP rules; no FS.
The URL shape is the same: #/popout/<kind>/<id>. So you can also
deep-link to a popout from anywhere (paste in browser, get a popout
directly).
Where to go next#
- Tutorial: (none yet for calls — they're click-to-start; reference is in Calls API).