2 Commits
Author SHA1 Message Date
zwitschi f73928103a fix: linting and go test
CD / deploy (push) Successful in 55s
CI / test (push) Successful in 1m32s
CI / docker (push) Successful in 2m51s
Release / release (push) Successful in 37s
2026-08-10 09:30:29 +02:00
zwitschi b427353672 test: remove unused playSpy variable in player startup test
CD / deploy (push) Successful in 53s
CI / test (push) Failing after 57s
CI / docker (push) Skipped
2026-08-10 00:29:41 +02:00
5 changed files with 17 additions and 4 deletions

No files matched your search

+13
View File
@@ -2,6 +2,19 @@
<!-- markdownlint-disable MD024 --> <!-- markdownlint-disable MD024 -->
## [1.0.11] - 2026-08-10
### Added
- **Phase 1 test fixtures**: Media and playlist test fixtures in `backend/playout/testdata/` with ffmpeg generation commands documented in test headers.
- **Phase 4 R2 integration**: `SyncToR2` now sets `CacheControl` + `ContentType` based on file extension (immutable segments, short-lived manifests). Three integration tests added.
- **Phase 2 viewer tests**: Presence updates (join/leave/sorted), private DM flow, message rendering (system/self/other) in `main.test.ts` (27 total tests).
- **Phase 3 admin tests**: Playlist management (save via PUT, error handling, sortable rendering) in `admin.test.ts` (31 total tests passing).
### Changed
- Exported `savePlaylist` and `renderPlaylistSortable` from `admin.ts` for testing.
## [1.0.10] - 2026-08-09 ## [1.0.10] - 2026-08-09
### Added ### Added
+1 -1
View File
@@ -7,7 +7,7 @@
[![Build Status](https://git.allucanget.biz/zwitschi/linearvoid/actions/workflows/ci.yml/badge.svg)](https://git.allucanget.biz/zwitschi/linearvoid/actions) [![Build Status](https://git.allucanget.biz/zwitschi/linearvoid/actions/workflows/ci.yml/badge.svg)](https://git.allucanget.biz/zwitschi/linearvoid/actions)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Gitea](https://img.shields.io/badge/Gitea-1.27.1-blue)](https://git.allucanget.biz) [![Gitea](https://img.shields.io/badge/Gitea-1.27.1-blue)](https://git.allucanget.biz)
[![Version](https://img.shields.io/badge/version-1.0.10-blue)](https://git.allucanget.biz/zwitschi/linearvoid/releases) [![Version](https://img.shields.io/badge/version-1.0.11-blue)](https://git.allucanget.biz/zwitschi/linearvoid/releases)
[![Release Notes](https://img.shields.io/badge/release-notes-green)](CHANGELOG.md) [![Release Notes](https://img.shields.io/badge/release-notes-green)](CHANGELOG.md)
## Architecture ## Architecture
+1 -1
View File
@@ -68,7 +68,7 @@ func ObserveRequestDuration(duration time.Duration) {
func WrapRequestTiming(next http.HandlerFunc) http.HandlerFunc { func WrapRequestTiming(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
startedAt := time.Now() startedAt := time.Now()
defer ObserveRequestDuration(time.Since(startedAt)) defer func() { ObserveRequestDuration(time.Since(startedAt)) }()
next(w, r) next(w, r)
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "frontend", "name": "frontend",
"private": true, "private": true,
"version": "1.0.10", "version": "1.0.11",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
+1 -1
View File
@@ -126,7 +126,7 @@ describe("player startup", () => {
value: vi.fn(() => ""), value: vi.fn(() => ""),
configurable: true, configurable: true,
}); });
const playSpy = vi.spyOn(video, "play").mockResolvedValue(undefined as any); vi.spyOn(video, "play").mockResolvedValue(undefined as any);
await import("../src/main").then((mod) => mod.initPlayerAndChat(async () => ({ default: HlsMock }) as any)); await import("../src/main").then((mod) => mod.initPlayerAndChat(async () => ({ default: HlsMock }) as any));