99 lines
6.1 KiB
Markdown
99 lines
6.1 KiB
Markdown
# Change Log for linearvoid
|
|
|
|
<!-- markdownlint-disable MD024 -->
|
|
|
|
## [1.0.6] - 2026-08-05
|
|
|
|
### Added
|
|
|
|
- `GET /api/admin/chat-log` endpoint with `?room=`, `?limit=`, `?before=`, `?username=`, `?text=` filter/pagination support.
|
|
- `GET /api/admin/chat-log/:id` endpoint returning a single chat log entry as JSON.
|
|
- `DELETE /api/admin/chat-log/:id` endpoint returning 204 No Content on success.
|
|
- `DELETE /api/admin/chat-log/bulk` endpoint accepting `{"ids": [...]}` for bulk deletion (max 500).
|
|
- Chat Log admin tab with table, individual delete with confirmation dialog, pagination (prev/next), search/filter by room/username/text, select-all checkbox, and bulk delete button.
|
|
- Added `"lint": "tsc --noEmit"` script to `frontend/package.json`.
|
|
- `/api/admin/media/{id}` GET/PUT/DELETE handlers for media metadata retrieval, updates, and file+record deletion.
|
|
- Resumable chunked admin media upload flow with upload-session endpoints and client progress indicators.
|
|
- Prometheus-format `/metrics` endpoint for chat runtime and admin-session monitoring.
|
|
- Dedicated operational documentation: `API.md`, `DEPLOYMENT.md`, `MONITORING.md`, `SECURITY.md`.
|
|
|
|
### Changed
|
|
|
|
- Split `frontend/admin/index.html` into a template shell plus 9 per-tab page HTML files loaded dynamically via `loadPageContent` / `switchTab` / `bindPageEvents`.
|
|
- Rebuilt viewer, admin, and admin-login pages around custom semantic class structures with accessibility-focused landmarks, tab semantics, and keyboard-focus behavior.
|
|
- Replaced legacy and Tailwind-based stylesheet rules with a custom design-token CSS system covering responsive layouts, forms, tables, and reduced-motion behavior.
|
|
- Switched frontend theme to dark-mode-first token defaults with light-scheme override.
|
|
- Applied new color palette (`#32292f` dark, `#b4c4ae` light, `#587792` brand, `#2ebfa5` focus, `#04650d` ok) across all 22 CSS custom properties in dark and light themes.
|
|
- Replaced hardcoded admin sidebar and tab-trigger colors with CSS custom properties.
|
|
- Optimized CI pipeline: removed duplicate `docker compose build --no-cache` from test job, removed broken playlist validation step, fixed Go module cache path, added Docker Buildx registry cache to docker/release jobs.
|
|
- Bumped chat healthcheck `start_period` from 10s to 30s in `docker-compose.prod.yml`.
|
|
- CD workflow now verifies nginx (port 8080) + chat (3000) + playout (8081); dumps container logs for all failing services.
|
|
- Updated Prometheus scrape targets and Grafana dashboard queries to use live chat metrics.
|
|
|
|
### Fixed
|
|
|
|
- Go module cache in CI now correctly references only `backend/chat/go.sum` (playout go.sum did not exist); added `go mod download` step to seed cache.
|
|
- Removed broken playlist validation step (`go run src/playlist.go` without go.mod) from CI test job.
|
|
- Converted nginx CI build from custom shell `docker buildx` to `docker/build-push-action@v5` for cache consistency.
|
|
- Enforced 2GB upload ceiling plus server-side media file type/size validation for admin uploads.
|
|
- Increased nginx `client_max_body_size` to allow resumable admin upload chunks without 413 errors.
|
|
- Removed unused `data-admin-*` Vite env var attributes from admin HTML template.
|
|
- Removed Tailwind and Alpine runtime/build dependencies; eliminated Tailwind directives/warnings during production build.
|
|
|
|
## [1.0.3] - 2026-08-03
|
|
|
|
### Added
|
|
|
|
- Added Prometheus-format `/metrics` endpoint for chat runtime and admin-session monitoring.
|
|
|
|
### Changed
|
|
|
|
- Updated Prometheus scrape targets and Grafana dashboard queries to use live chat metrics.
|
|
|
|
### Fixed
|
|
|
|
- Fixed nginx routing so `/metrics` is reachable through localhost and `linearvoid.tv`.
|
|
|
|
## [1.0.2] - 2026-08-03
|
|
|
|
### Changed
|
|
|
|
- Updated local environment documentation and examples to prefer real-domain local routing through `linearvoid.tv` and compose-safe internal service hostnames.
|
|
|
|
### Fixed
|
|
|
|
- Fixed admin production build output and nginx routing so `/admin/` serves its own entrypoint.
|
|
- Fixed static asset serving so hashed JS/CSS files return correct MIME types and stale asset URLs return `404` instead of SPA HTML.
|
|
- Fixed chat database configuration so `DATABASE_URL` is honored for compose-safe Postgres or SQLite local development.
|
|
|
|
## [1.0.1] - 2026-08-03
|
|
|
|
### Changed
|
|
|
|
- Expanded the setup guide with current `.env.example` variables, development prerequisites, Cloudflare R2 setup, Gitea registry setup, and a production deployment guide.
|
|
- Aligned frontend, nginx, and deployment docs with the `linearvoid.tv` app domain and `media.linearvoid.tv` HLS domain model.
|
|
|
|
## [1.0.0] - 2026-08-02
|
|
|
|
### Added
|
|
|
|
Full backend and frontend implementation complete.
|
|
|
|
- **Playout Service** (`backend/playout/`): Go-based playlist management, ffprobe normalization validation, continuous HLS with immutable segment naming, automatic R2 sync, health check endpoint, and Docker integration (ADR-001, ADR-003).
|
|
- **Chat Backend** (`backend/chat/`): Go + Gorilla WebSocket, Redis for presence/rate limiting/pub/sub, SQLite persistence for message history and ModerationLog (ADR-006/ADR-007), public rooms, private DM routing, moderation commands with immutable audit logging, health check endpoint, and docker-compose integration.
|
|
- **Frontend** (`frontend/`): Vite + TypeScript + Tailwind + Alpine.js, HLS player with hls.js, chat sidebar with room switching and private messaging, "Now Playing" overlay, and modern UI (ADR-002, ADR-003).
|
|
- Complete `docker-compose.yml` for local development with all services, volumes, and healthchecks.
|
|
- All ADRs (001-007) created and linked in documentation.
|
|
- `TODO.md`, `DONE.md`, and `CHANGELOG.md` updated with full traceability.
|
|
- Git repository initialized with comprehensive initial commit.
|
|
|
|
The project is a fully functional, self-hosted 24/7 linear video channel with synchronized playback, custom chat, R2 delivery, moderation, and admin-ready structure. It matches the architecture defined in the arc42 template and all ADRs.
|
|
|
|
**Next Steps (Future ADRs)**:
|
|
|
|
- ADR-008: Admin Interface Implementation (ADR-004/ADR-005).
|
|
- ADR-009: CI/CD, monitoring (Prometheus/Grafana), and production deployment.
|
|
- Tests, admin UI, and final polish.
|
|
|
|
See `docs/architecture/README.md` and the ADR files for complete documentation. The system is ready for use and further extension.
|