88bfda4c9d
Sweep/vgdeband: cap x264 at ENCODE_THREADS (2) so conversions stop starving Jellyfin and the live portal
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 19:30:29 -06:00
f32730ba94
Clips folders: create an empty .stlocal with the folder (Syncthing refuses to scan while the #include target is missing)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 19:08:58 -06:00
2078a53419
UPCOMING.md: gap list, techy's take, agreed direction (MariaDB metadata, markers, future watch app)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 18:21:38 -06:00
645f447015
Live portal: custom layouts are left alone — new streams chime and wait in a draggable tray; Arrange re-grids and returns to auto
...
layout store (auto/custom + pending), marked custom on manual move (onDidMovePanel outside arrange), sash drag,
stream/group rename. Tray chips: HTML5 drag accepted via onUnhandledDragOver/onDidDrop (position -> direction),
click = new column. WebAudio two-note chime. Gateway page instructions updated. Verified headless (custom vs auto).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 14:36:01 -06:00
b2e7e9a4bb
Gateway page: live-page instructions (layout, audio, rename, group names, maximise); portal: maximise button per tab bar
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 14:17:30 -06:00
d5b2ba502b
Live portal: rename streams (tab double-click, persisted per browser) and name tab groups (header slot, session)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 14:12:21 -06:00
9bdf9f1947
WebRTC audio mirror: AAC cannot cross WebRTC, so transcode audio to Opus into <path>.webrtc
...
bin/mtx-on-ready.sh (runOnReady inside the mediamtx container) posts the is-live notice and, for sources whose
audio is not Opus, runs ffmpeg: video copy, audio -> Opus, published over MediaMTX's loopback RTSP to
<user>/<Title>.webrtc (record: no). dumpd accepts .webrtc publishes only from 127.0.0.1. The portal hides
mirror paths, plays the mirror over WHEP (HLS stays on the source), holds an AAC source for 15 s while its
mirror comes up, and corrects the viewer count. Verified headless with a mocked path list.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 13:58:15 -06:00
f060277167
Streamer guidance: B-frames 0 (MediaMTX refuses WebRTC playback of H.264 with B-frames)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 13:29:34 -06:00
3432be691f
Live portal: auto-arrange panels as an even grid on join/leave, Arrange button
...
Moves existing panels (video keeps playing) into cols=ceil(sqrt(n)) row-major and equalizes group sizes.
Verified headless for 3-6 streams.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 13:25:05 -06:00
68bb0e66d5
Live portal: clip the timecode band with a measured game-aspect frame
...
CSS aspect-ratio on a flex:1 child was ignored, so object-fit:cover cropped arbitrarily. Player now
measures the panel (ResizeObserver: fires on every dockview resize/move), fits a frame of the game aspect,
lays the video across its width and hides the overflow at the bottom.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 13:14:25 -06:00
eb36ce771d
Last ovh1/about leftovers: check.sh covers the new host roles, procedure A verifies at /, bot README db host
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 13:11:30 -06:00
0d537ccb65
STATUS: hostname restructure deployed, band removal live
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 13:09:36 -06:00
2cd936beaf
Sweep: crop the timecode band off published streams (re-encode after decode); vgdeband.sh catch-up
...
The published recording is the game picture + audio + tmcd track, nothing else. Streams without the
band are still remuxed losslessly. vgstrip plan exports TC_BAND and marks the sidecar band_removed.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 13:05:35 -06:00
bb09565388
Fix README section cross-reference (5e)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:29:33 -06:00
9d67a240d9
Runbook F5b + STATUS: nested-groups scope mapping, verified
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:29:14 -06:00
6128a4ef3a
README: nested groups need a second scope mapping (managed profile mapping is direct-only and sticky on proxy providers)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:26:14 -06:00
e885f4c979
deploy.sh: pending mode works without a git checkout (timer no longer fails before the clone switch)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:43:22 -05:00
ca37a3913a
configure.py: skip vanguard-deploy install when the pipeline files are not on the box
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:41:18 -05:00
18f4e07de8
Split hosts: media (gateway at /), files, clips, sync; live gains /dock, /dock/clock, /dump, /me, /time
...
configure.py: three new host roles (files/sync/clips) in --full, --hosts, .env, Caddy generator;
main host serves about/ at the root (/about* redirects); /time only where it is fetched same-origin.
about/index.html links across hosts; addCommunityMediaServer.sh asks for the new names; Caddyfile.example
regenerated; README/FRESH-INSTALL/HOSTNAME-CHANGE (procedure C)/STATUS updated.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:38:35 -05:00
c1a46d66dc
HOSTNAME-CHANGE.md: hostname inventory, subdomain rename and base-domain move procedures; linked from README
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:23:33 -05:00
3c407c0733
FRESH-INSTALL: appendix runbook with every action and command, A–L
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:21:34 -05:00
861a88fc7e
FRESH-INSTALL.md: ordered walkthrough from empty box to working pipeline, manual steps included; linked from README
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:19:06 -05:00
49d33e8210
README: rollout block matches the current one (compose included, visible apply output)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:16:42 -05:00
abb7186bd0
Rebuild gaps closed: Authentik bootstrap creds, Gitea install lock + admin user from .env, Syncthing GUI-auth-off fixup, plugin ensured on apply, portal built by install.sh; README rebuild section with the honest manual remainder
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:14:46 -05:00
33482bfff3
README: push-to-deploy rollout commands, clone switch, webhook test, enabling steps
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:09:42 -05:00
66f05cf9a7
Push-to-deploy (OFF by default): vanguard-deploy applies only changed parts with a live-stream guard for MediaMTX, rollback, pending timer; dumpd /deploy webhook gated by DEPLOY_AUTO; configure --apply; switchToClone.sh; draft CI workflow; committed plugin zip
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-11-01 01:08:43 -05:00
07ffae0746
Soft per-user clip quotas: dumpd pauses/resumes Syncthing folders by folder size (CLIPS_QUOTA_GB, per-user overrides file); clips page shows usage
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:30:22 -05:00
c56a2997ba
about: clips section grouped with contributing, after Stream
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:26:17 -05:00
272791ea7d
about: dedicated 'Send your game clips' section for everyone
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:25:56 -05:00
2d8e6bb68c
about: show only sections the account's groups actually permit
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:24:33 -05:00
4b2f3175ad
about: section leads state actual membership; admin view warns where a gate will still refuse
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:21:00 -05:00
ef3a0a3fcd
Caddy: /me route matches the bare path too (gateway identity call fell through to copyparty)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:03:23 -05:00
63ba628fad
STATUS: /about and /clips live
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:02:48 -05:00
48409b5dbf
Self-service clip intake (/clips + dumpd /me/clips via Syncthing REST) and role-aware gateway page (/about + dumpd /me)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 18:00:01 -05:00
367d41fe18
addClipUser.sh + README: onboarding a gamer's clips via Syncthing
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:54:49 -05:00
7213460c10
Caddy: /logout on every gated host redirects to Authentik sign-out
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:53:02 -05:00
68c2866a28
Syncthing: GUI auth disabled behind the Authentik gate; docs
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:49:17 -05:00
446fd32c81
STATUS: MediaMTX restarted (microsecond names live); roles policy to be proven by natural logins
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:45:31 -05:00
97d1ba97a9
STATUS/plan: phase 10 Gitea via Authentik verified
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:37:28 -05:00
52c065b753
roles policy: only revoke memberships it granted itself (manual adds survive); track in user attributes
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:34:43 -05:00
2ab0a4e837
Docs: git-admins claim with Authentik group nesting
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:27:51 -05:00
7e935c31d1
Gitea access gated by Authentik group git-users; roles table example
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:10:09 -05:00
b661ee795b
Phase 10: Gitea OIDC login prerequisites in compose (external-only registration, auto-register, account linking); README steps
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 17:09:33 -05:00
6db786e00e
Phase 12 verified live; MediaMTX config changes documented as restart-only on this setup
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 16:54:08 -05:00
f1d19ba32d
Plan: off-site gap filling option (home NVENC / Spot GPU) and SYS-3 availability note
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 16:26:44 -05:00
9dc81ae5aa
README/STATUS: gap filling availability and the on/off commands
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 16:25:08 -05:00
4101498ad7
Sweep: fix gap-total parsing so FILL_GAPS_MS actually triggers
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 16:19:58 -05:00
473247e710
Sweep: opt-in gap filling for streams (FILL_GAPS_MS) — CFR re-encode with duplicated frames, raw kept in .src/, timecode carried; default off
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 16:19:25 -05:00
f36487d4b5
Timecode: nominal fps + proper drop-frame detection, shell-safe plan output; streams never VFR-re-encoded; gap list in the sidecar; docs
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 16:17:26 -05:00
3fcb8fbe99
Phase 12: frame-accurate timecode via an overscan band — vgstrip encoder/decoder, sweep writes tmcd + creation_time + sidecar, dumpd /time, Caddy /time routes, MediaMTX microsecond names, /dock/clock/ page, dock band setup via obs-websocket, Go Live band composite + toggle, portal crops the band
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-31 16:07:56 -05:00