zwitschi
926d70dc3c
fix: rename R2 object key prefix from live/ to hls/ for consistency
CI / test (push) Successful in 1m37s
CI / docker (push) Successful in 48s
2026-08-11 17:21:53 +02:00
zwitschi
2a718e4652
fix: guard all R2 operations behind nil client checks for local dev support
2026-08-11 14:46:50 +02:00
zwitschi
377dc69859
chore: fix Cloudflare project name to linearvoid-frontend in deploy workflow
CI / test (push) Successful in 1m42s
CI / docker (push) Successful in 51s
2026-08-10 19:50:16 +02:00
zwitschi
55a128dc3a
fix: flat local HLS paths for nginx compat + edge cache validation script
...
CI / test (push) Failing after 11s
CI / docker (push) Skipped
- Revert local HLS to flat /app/hls/seg-{seq}.m4s (nginx serves from this dir)
- runID only used in R2 keys (live/{runID}/seg-{seq}.m4s)
- This fixes 404 on linearvoid.tv/hls/playlist.m3u8 caused by r-{runID} subdir
- Added scripts/validate-edge-cache.sh: MISS→HIT, immutable headers, manifest freshness
- Phase 4 marked complete. Cleaned up LEGACY streaming gaps in TODO.md
2026-08-10 18:01:55 +02:00
zwitschi
9178b7b295
fix: TypeScript errors + workflow pipeline ordering
...
CI / test (push) Successful in 1m28s
CI / docker (push) Successful in 1m0s
- Fix hls! null assertions in error handler (TS18047)
- Fix test mock type errors: remove unused errorCall, use (as any) cast
- Pipeline ordering: CD + Pages deploy now run after CI completes (workflow_run: [CI])
- Add GOFLAGS=-mod=mod to playout Docker build for new fsnotify dep
2026-08-10 17:29:46 +02:00
zwitschi
18459a9811
feat: close STREAMING.md production readiness gaps
...
CI / test (push) Failing after 9s
CI / docker (push) Skipped
Deploy to Cloudflare Pages / deploy (push) Failing after 10s
CD / deploy (push) Successful in 47s
- Added run ID + unique segment naming (r-{ISOTIME}/seg-{seq}.m4s)
- Added fsnotify watcher for real-time R2 segment upload (~7s)
- Added atomic manifest publication (temp key → CopyObject)
- Fixed manifest Cache-Control: public, max-age=1, s-maxage=2, must-revalidate
- Added hls.js error recovery: bounded retries (5x), exponential backoff, reconnecting UI
- Enriched /health endpoint: run_id, active_item, last_segment_seq, last_r2_pub, consecutive_failures, unhealthy detection
- Updated tests: HealthHandler (new fields + unhealthy), player error recovery test
- Updated TODO.md, BACKLOG.md, DONE.md, MEMORY.md
2026-08-10 17:20:54 +02:00
zwitschi
f9aba11b90
feat: add metrics, observability, test fixtures, and scaling playbook artifacts
CD / deploy (push) Successful in 57s
CI / test (push) Failing after 1m29s
CI / docker (push) Skipped
2026-08-10 00:23:50 +02:00
zwitschi
914a518f20
fix: downgrade Go version to 1.25.0 in playout go.mod
CD / deploy (push) Successful in 45s
CI / test (push) Successful in 1m42s
CI / docker (push) Successful in 1m39s
2026-08-07 17:31:58 +02:00
zwitschi
8064e459f2
fix: playout Dockerfile use existing go.mod instead of init
CI / test (push) Successful in 1m43s
CI / docker (push) Failing after 24s
CD / deploy (push) Successful in 1m1s
2026-08-07 16:24:21 +02:00
zwitschi
e8a43b8a79
test(chat,playout): enable test suite, coverage gate, switch to pure-Go SQLite driver
2026-08-07 14:06:30 +02:00
zwitschi
5b5cdc4cd8
chore: release v1.0.7
...
CI / test (push) Successful in 9m11s
CI / docker (push) Failing after 2m39s
CI / release (push) Skipped
Release / release (push) Canceled after 2m11s
Playout: slate fallback, strict ffprobe validation, Prometheus metrics
Chat: history on join, DM offline delivery, env-config rate limits,
Redis auto-reconnect, heartbeat, ban/mute enforcement, DM metrics
Viewer: presence indicators, schedule overlay, public /api/schedule
Admin: playlist drag-reorder, schedule overrides CRUD, user actions,
inline mod buttons, CSV export, config editor, restart buttons,
upload normalization gate, analytics time range
nginx: CORS preflight, JSON health, stub_status
Docs: test-lab vs production distinction across all configs/docs
Infra: Redis maxmemory, CD health IP-agnostic, slate volume mount
2026-08-06 17:41:52 +02:00
zwitschi
ab3fab3e68
fix: minor optimization of build
2026-08-04 19:49:07 +02:00
zwitschi
c6f28ff7af
fix: rearrange steps again
CI / test (push) Successful in 1m35s
CI / docker (push) Failing after 30s
CI / release (push) Skipped
2026-08-04 13:00:23 +02:00
zwitschi
072a91961f
fix: rearrange steps again
CI / test (push) Successful in 6m3s
CI / docker (push) Failing after 28s
CI / release (push) Skipped
2026-08-04 12:51:34 +02:00
zwitschi
7184240dd4
fix: move copy step up
CI / test (push) Successful in 1m34s
CI / docker (push) Failing after 15s
CI / release (push) Skipped
2026-08-04 12:46:47 +02:00
zwitschi
9cd0419c0c
fix: only one media folder
CI / test (push) Successful in 6m5s
CI / docker (push) Failing after 1m52s
CI / release (push) Skipped
2026-08-04 12:37:11 +02:00
zwitschi
d3266f8feb
fix: reorder copy steps
CI / test (push) Successful in 1m36s
CI / docker (push) Failing after 29s
CI / release (push) Skipped
2026-08-04 12:33:05 +02:00
zwitschi
b532507374
fix: adjust copy
CI / test (push) Successful in 1m32s
CI / docker (push) Failing after 15s
CI / release (push) Skipped
2026-08-04 12:27:44 +02:00
zwitschi
5c1a8cbe4f
reorder copy steps
CI / test (push) Successful in 1m40s
CI / docker (push) Failing after 24s
CI / release (push) Skipped
2026-08-04 12:19:17 +02:00
zwitschi
502fefff33
fix: move demodata into playout build context, revert root media changes
CI / test (push) Successful in 1m30s
CI / docker (push) Failing after 30s
CI / release (push) Skipped
2026-08-04 12:10:38 +02:00
zwitschi
1af9e59a56
rename data directory for initial demo data
CI / test (push) Failing after 2m26s
CI / docker (push) Skipped
CI / release (push) Skipped
2026-08-04 11:54:44 +02:00
zwitschi
fc799da000
copy full folder instead of playlist.txt
CI / test (push) Failing after 2m25s
CI / docker (push) Skipped
CI / release (push) Skipped
2026-08-04 11:46:21 +02:00
zwitschi
2b091adce8
move demo-data to its own folder
CI / test (push) Failing after 2m24s
CI / docker (push) Skipped
CI / release (push) Skipped
2026-08-04 11:40:22 +02:00
zwitschi
c54210434e
feat: bundle demo media and playlist in playout image for out-of-the-box HLS
CI / test (push) Failing after 2m30s
CI / docker (push) Skipped
CI / release (push) Skipped
2026-08-04 11:34:20 +02:00
zwitschi
6b494a34fe
feat: add admin login page and authentication API
...
CD / deploy (push) Failing after 27s
CI / test (push) Successful in 1m54s
CI / docker (push) Canceled after 0s
CI / release (push) Canceled after 0s
- Created a new login page for admin access at frontend/admin/login/index.html.
- Implemented form submission with error handling for login credentials.
- Updated frontend/index.html to mute the video player and removed unnecessary Alpine.js data binding.
- Enhanced manifest URL resolution in frontend/src/main.ts to include cache-busting parameters.
- Modified vite.config.ts to include the new admin login page in the build process.
- Updated nginx.conf to handle admin login routing, authentication, and API proxying for admin actions.
2026-08-03 17:19:05 +02:00
zwitschi
1ae0ad121b
update environment configuration for local development, enhance database initialization, and improve Nginx routing for admin access
2026-08-03 14:26:11 +02:00
zwitschi
2e061dff28
update environment configuration, enhance setup guide, and align documentation with new domain structure
2026-08-03 14:09:51 +02:00
zwitschi
15a2aaa1a1
Add complete playout service, chat backend, frontend with HLS player and live chat, Docker integration with health checks, updated CHANGELOG and architecture docs
2026-08-02 16:43:12 +02:00
zwitschi
0785260689
Add Docker setup, .env.example, updated .gitignore/CHANGELOG and ADRs 004-007 + arc42 template
2026-08-02 16:05:18 +02:00