ca01516d42Stuck-recording triage, a diag landing page, and the fixes behind Tuesday's symptomsBrandyn / Techy2026-11-04 21:25:43 -06:00
a9de09fa18Alarm mentions, targeted --set, and a logout that actually logs outBrandyn / Techy2026-11-03 21:07:17 -06:00
b38d40ab0cElastic security, our own metrics, and an alert pipeline that can actually reach DiscordBrandyn / Techy2026-11-03 19:58:06 -06:00
ef357c6d82Docs follow the Elastic swap, and apply removes orphaned containersBrandyn / Techy2026-11-03 16:58:08 -06:00
6f7fb29ae0metricbeat sets the same correlation fields as filebeat, so one dashboard spans logs and metricsBrandyn / Techy2026-11-03 16:55:39 -06:00
88bb28989cRip out the Victoria stack for Elastic: four containers, Kibana as the single paneBrandyn / Techy2026-11-03 16:53:19 -06:00
6f77764fecPropagate this build's lessons into the scripts and every runbookBrandyn / Techy2026-11-03 16:32:09 -06:00
18d443579dvector: the ingestion endpoint is under /logs tooBrandyn / Techy2026-11-03 16:26:21 -06:00
f8f2233a55--hosts accepts DIAG, and says why --apply cannot introduce a new hostBrandyn / Techy2026-11-03 16:25:51 -06:00
07d6c7e924vector: current_boot_only must be true on systemd 257, and drop the redundant object! castsBrandyn / Techy2026-11-03 16:24:46 -06:00
a77051c496apply creates the observability data dirs; Caddyfile.example regenerated with the diag blockBrandyn / Techy2026-11-03 16:18:13 -06:00
da9a1f4fa6diag host: real path prefixes for every UI, and an index page served as a fileBrandyn / Techy2026-11-03 16:17:47 -06:00
d3ff452546Generate alertmanager.yml so no-webhook is a valid state, not a broken oneBrandyn / Techy2026-11-03 16:01:49 -06:00
cea02d2ee8Phase 13 integration: install.sh, configure.py, and a deadman that degrades cleanlyBrandyn / Techy2026-11-03 15:56:49 -06:00
8ae43905dcPhase 13 build: logs, metrics, alerting and a deadman on a diag. hostBrandyn / Techy2026-11-03 15:45:58 -06:00
09882833a0Phase 14: say plainly that VictoriaLogs does not alert, and put a timer script ahead of the vmalert stackBrandyn / Techy2026-11-03 15:35:39 -06:00
3662eb3465Phase 14: diag. host with VictoriaLogs at /logs, ops controls laterBrandyn / Techy2026-11-03 15:33:47 -06:00
12760a94c3dumpd /me reports the decoded discord_id; the gateway page shows it on hoverBrandyn / Techy2026-11-03 15:13:27 -06:00
ba110747b7Identify the bot's web callers by Discord id, and isolate the bot's networkBrandyn / Techy2026-11-03 00:13:14 -06:00
31bec6e770STATUS: the bot's SQLite history is merged into MariaDBBrandyn / Techy2026-11-03 00:03:22 -06:00
5c91fa7e99Add vgbot-merge-sqlite.py: merge the bot's old SQLite history into the live MariaDBBrandyn / Techy2026-11-03 00:01:19 -06:00
be12a34f8cRoles policy: log the whole decision, and let one Discord role grant several groupsBrandyn / Techy2026-11-02 23:34:29 -06:00
f7c96dd8e2bot docs: CI no longer runs the test suites; they run locally before a pushBrandyn / Techy2026-11-02 22:44:09 -06:00
ad919cada6deployBotBundle.sh: fail when the installed release does not serveBrandyn / Techy2026-11-02 22:29:51 -06:00
25e9078d9bDrop the last references to the bot's code living in this repoBrandyn / Techy2026-11-02 21:58:34 -06:00
1ee8befdeeinstall.sh, deploy.sh and the runbooks cover the bot bundle pathBrandyn / Techy2026-11-02 21:57:52 -06:00
ca10a9895fbot docs: pytest gates the release, the website's node tests are advisoryBrandyn / Techy2026-11-02 21:55:41 -06:00
f8136025ceact_runner: add a python312 label (CPython 3.12 + node) for the bot's CI; note that labels are fixed at registrationBrandyn / Techy2026-11-02 21:51:57 -06:00
1e4c0e88dcThe bot's secrets live in Gitea: signed settings travel with the release bundleBrandyn / Techy2026-11-02 21:37:35 -06:00
b05f129bedBot releases install themselves: signed bundle upload to dumpd, no Docker socket in CIBrandyn / Techy2026-11-02 21:32:34 -06:00
22dcf893d5deployBotBundle.sh: accept the artifact as Gitea serves it (a zip holding the tar.gz)Brandyn / Techy2026-11-02 21:20:04 -06:00
223458550aBot hosting: releases are self-contained CI bundles, and the bot serves its own web UIBrandyn / Techy2026-11-02 21:18:15 -06:00
855651c5a4Metrics taps: node_exporter + cAdvisor containers, MediaMTX and Caddy metrics on loopback (Prometheus format, store-agnostic)Brandyn / Techy2026-11-01 19:55:42 -06:00
88bfda4c9dSweep/vgdeband: cap x264 at ENCODE_THREADS (2) so conversions stop starving Jellyfin and the live portalBrandyn / Techy2026-11-01 19:30:29 -06:00
f32730ba94Clips folders: create an empty .stlocal with the folder (Syncthing refuses to scan while the #include target is missing)Brandyn / Techy2026-11-01 19:08:58 -06:00
2078a53419UPCOMING.md: gap list, techy's take, agreed direction (MariaDB metadata, markers, future watch app)Brandyn / Techy2026-11-01 18:21:38 -06:00
645f447015Live portal: custom layouts are left alone — new streams chime and wait in a draggable tray; Arrange re-grids and returns to autoBrandyn / Techy2026-11-01 14:36:01 -06:00
b2e7e9a4bbGateway page: live-page instructions (layout, audio, rename, group names, maximise); portal: maximise button per tab barBrandyn / Techy2026-11-01 14:17:30 -06:00
d5b2ba502bLive portal: rename streams (tab double-click, persisted per browser) and name tab groups (header slot, session)Brandyn / Techy2026-11-01 14:12:21 -06:00
9bdf9f1947WebRTC audio mirror: AAC cannot cross WebRTC, so transcode audio to Opus into <path>.webrtcBrandyn / Techy2026-11-01 13:58:15 -06:00
f060277167Streamer guidance: B-frames 0 (MediaMTX refuses WebRTC playback of H.264 with B-frames)Brandyn / Techy2026-11-01 13:29:34 -06:00
3432be691fLive portal: auto-arrange panels as an even grid on join/leave, Arrange buttonBrandyn / Techy2026-11-01 13:25:05 -06:00
68bb0e66d5Live portal: clip the timecode band with a measured game-aspect frameBrandyn / Techy2026-11-01 13:14:25 -06:00
eb36ce771dLast ovh1/about leftovers: check.sh covers the new host roles, procedure A verifies at /, bot README db hostBrandyn / Techy2026-11-01 13:11:30 -06:00
6128a4ef3aREADME: nested groups need a second scope mapping (managed profile mapping is direct-only and sticky on proxy providers)Brandyn / Techy2026-11-01 01:26:14 -06:00
e885f4c979deploy.sh: pending mode works without a git checkout (timer no longer fails before the clone switch)Brandyn / Techy2026-11-01 01:43:22 -05:00
ca37a3913aconfigure.py: skip vanguard-deploy install when the pipeline files are not on the boxBrandyn / Techy2026-11-01 01:41:18 -05:00
18f4e07de8Split hosts: media (gateway at /), files, clips, sync; live gains /dock, /dock/clock, /dump, /me, /timeBrandyn / Techy2026-11-01 01:38:35 -05:00
c1a46d66dcHOSTNAME-CHANGE.md: hostname inventory, subdomain rename and base-domain move procedures; linked from READMEBrandyn / Techy2026-11-01 01:23:33 -05:00
3c407c0733FRESH-INSTALL: appendix runbook with every action and command, A–LBrandyn / Techy2026-11-01 01:21:34 -05:00
861a88fc7eFRESH-INSTALL.md: ordered walkthrough from empty box to working pipeline, manual steps included; linked from READMEBrandyn / Techy2026-11-01 01:19:06 -05:00
49d33e8210README: rollout block matches the current one (compose included, visible apply output)Brandyn / Techy2026-11-01 01:16:42 -05:00
abb7186bd0Rebuild 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 remainderBrandyn / Techy2026-11-01 01:14:46 -05:00
66f05cf9a7Push-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 zipBrandyn / Techy2026-11-01 01:08:43 -05:00
52c065b753roles policy: only revoke memberships it granted itself (manual adds survive); track in user attributesBrandyn / Techy2026-10-31 17:34:43 -05:00
2ab0a4e837Docs: git-admins claim with Authentik group nestingBrandyn / Techy2026-10-31 17:27:51 -05:00
7e935c31d1Gitea access gated by Authentik group git-users; roles table exampleBrandyn / Techy2026-10-31 17:10:09 -05:00
473247e710Sweep: opt-in gap filling for streams (FILL_GAPS_MS) — CFR re-encode with duplicated frames, raw kept in .src/, timecode carried; default offBrandyn / Techy2026-10-31 16:19:25 -05:00
f36487d4b5Timecode: nominal fps + proper drop-frame detection, shell-safe plan output; streams never VFR-re-encoded; gap list in the sidecar; docsBrandyn / Techy2026-10-31 16:17:26 -05:00
3fcb8fbe99Phase 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 bandBrandyn / Techy2026-10-31 16:07:56 -05:00
89841c3d2aPlan: phase 12 — permanent overscan band with a machine-readable server clock; drift-aware decodeBrandyn / Techy2026-10-31 16:00:03 -05:00
f1bd28f8d1Plan: phase 12 redesigned as a 10 s machine-readable sync burst decoded by the sweep into the timecode track; nothing visible in finalsBrandyn / Techy2026-10-31 15:58:20 -05:00
4419cc9d67Plan: dock manages the OBS clock overlay through obs-websocketBrandyn / Techy2026-10-31 15:56:33 -05:00
57be5bba52Plan: burned-in server clock on the Go Live (WebRTC) path via canvas compositingBrandyn / Techy2026-10-31 15:56:00 -05:00
b782621368Plan: phase 12 uses the server clock as the only time referenceBrandyn / Techy2026-10-31 15:53:40 -05:00
a7ad3dc224STATUS/plan: phases 5-7 and 11 live and verified; refreshed unfinished listBrandyn / Techy2026-10-31 15:48:33 -05:00
5085f8ab55Docs/apply note: MediaMTX does not hot-reload auth settings; restart between streams after auth changesBrandyn / Techy2026-10-31 15:46:25 -05:00
2988e7a804Caddy main host: route /me/* to dumpd (the dock's token request was falling through to copyparty -> 403)Brandyn / Techy2026-10-31 15:44:09 -05:00
10cfc6e505check.sh: syntax checks for shell, python, yaml, dock JS, generators, portal buildBrandyn / Techy2026-10-31 15:40:26 -05:00
733f6c54d5dock: fix JS syntax error (?? mixed with ||) that disabled every buttonBrandyn / Techy2026-10-31 15:39:58 -05:00
65aa8b0894Docs: provider invalidation flow so every logout forces a full Discord re-loginBrandyn / Techy2026-10-31 15:38:01 -05:00
07a05788addock: sign out ends the Authentik login too, then returns to the dockBrandyn / Techy2026-10-31 15:37:00 -05:00
d44546ef29dock: sign out in the background and return to the dock instead of landing on copypartyBrandyn / Techy2026-10-31 15:35:31 -05:00
49ea1cd5d0dock: sign out link (Authentik session) for re-login after group changesBrandyn / Techy2026-10-31 15:33:54 -05:00