Go Live: recording warning before start and a REC badge while live

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 01:48:25 -05:00
parent f737fc6289
commit d28c2335d0
2 changed files with 10 additions and 0 deletions

View File

@@ -70,6 +70,12 @@ export default function GoLive({ onExit }) {
capture audio from a browser tab, so the window comes through without sound — use OBS with the dock there. capture audio from a browser tab, so the window comes through without sound — use OBS with the dock there.
Capped at {MAX_KBPS / 1000} Mbps, up to 1440p60, H.264. Capped at {MAX_KBPS / 1000} Mbps, up to 1440p60, H.264.
</div> </div>
<div className="warn-box">
<b>⚠ This stream is recorded.</b> Everything the window shows and every sound it makes is saved to the
server, visible to editors and members in Jellyfin, and kept until it is dumped or archived. Close
anything private in that window before you start. Use <b>Dump tonight</b> in the OBS dock if a session
should be thrown away (3-day undo).
</div>
{err && <div className="err">{err}</div>} {err && <div className="err">{err}</div>}
<button className="primary" disabled={!key || phase === 'capturing'} onClick={start}>{phase === 'capturing' ? 'Waiting for the window picker…' : 'Start'}</button> <button className="primary" disabled={!key || phase === 'capturing'} onClick={start}>{phase === 'capturing' ? 'Waiting for the window picker…' : 'Start'}</button>
</div> </div>
@@ -77,6 +83,7 @@ export default function GoLive({ onExit }) {
{phase === 'live' && ( {phase === 'live' && (
<div className="golive-stats"> <div className="golive-stats">
<span className="pill live">LIVE</span> <span className="pill live">LIVE</span>
<span className="rec" title="this stream is being recorded to the server">● REC</span>
<span>{mmss(elapsed)}</span> <span>{mmss(elapsed)}</span>
<span>{key.user}/{cleanTitle(title)}</span> <span>{key.user}/{cleanTitle(title)}</span>
<span>{conn}</span> <span>{conn}</span>

View File

@@ -53,3 +53,6 @@ html, body, #root { height:100%; margin:0; background:var(--bg); color:var(--fg)
.golive-stats .pill.live { background:var(--live); color:#fff; font-weight:700; font-size:11px; padding:2px 6px; border-radius:4px; } .golive-stats .pill.live { background:var(--live); color:#fff; font-weight:700; font-size:11px; padding:2px 6px; border-radius:4px; }
.golive-stats .warn { color:#f1c40f; } .golive-stats .warn { color:#f1c40f; }
.topbar button.golive-btn { background:var(--live); border-color:var(--live); color:#fff; font-weight:700; } .topbar button.golive-btn { background:var(--live); border-color:var(--live); color:#fff; font-weight:700; }
.golive-form .warn-box { background:#3a2a10; border:1px solid #f1c40f; color:#ffe9a8; border-radius:8px; padding:10px 12px; font-size:13px; line-height:1.5; }
.golive-form .warn-box b { color:#fff; }
.golive-stats .rec { background:#f1c40f; color:#000; font-weight:700; font-size:11px; padding:2px 6px; border-radius:4px; }