While you're in a call and Lotus isn't the focused window, a small always-on-top, click-through window lists everyone in the call, lights up whoever is speaking, and shows your own mute / deafen / PTT state. - A separate window, nothing injected into the game: no anti-cheat surface. Never takes focus (focusable(false), WS_EX_NOACTIVATE, SW_SHOWNOACTIVATE) and ignores the mouse. - Its page is three static files served by the binary over the `lotusoverlay` custom protocol, with a strict CSP (no network) and no IPC (no capability names the window). Rust pushes state in as a JSON literal; the page renders with textContent only. - New `set_overlay_state` command (main window only) takes the call snapshot from cinny's `useTauriOverlay`. Sanitised: bounded list and names, known corner. Placed in the chosen corner of the foreground window's monitor, DPI-scaled. - Windows only; a no-op elsewhere (Linux has no in-app calls yet, #21). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
19 lines
617 B
HTML
19 lines
617 B
HTML
<!doctype html>
|
|
<!-- Lotus Chat in-game voice overlay (cinny-desktop #25). Served by the desktop
|
|
binary over the `lotusoverlay` custom protocol; no IPC, no network. State
|
|
arrives via window.lotusOverlay(...) called from Rust (native/overlay.rs). -->
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>Lotus Chat overlay</title>
|
|
<link rel="stylesheet" href="/overlay.css" />
|
|
</head>
|
|
<body>
|
|
<div id="panel" class="panel" hidden>
|
|
<div id="self" class="self"></div>
|
|
<ul id="people" class="people"></ul>
|
|
</div>
|
|
<script src="/overlay.js"></script>
|
|
</body>
|
|
</html>
|