All checks were successful
Build and Push Docker Image / build (push) Successful in 1m30s
worked through AUDIT.md. triage: - finding 2 (subtitle rescan wipes decisions): confirmed. /:id/rescan now snapshots custom_titles and calls reanalyze() after the stream delete/ insert, mirroring the review rescan flow. exported reanalyze + titleKey from review.ts so both routes share the logic. - finding 3 (scan limit accepts NaN/negatives): confirmed. extracted parseScanLimit into a pure helper, added unit tests covering NaN, negatives, floats, infinity, numeric strings. invalid input 400s and releases the scan_running lock. - finding 4 (parseId lenient): confirmed. tightened the regex to /^\d+$/ so "42abc", "abc42", "+42", "42.0" all return null. rewrote the test that codified the old lossy behaviour. - finding 5 (setup_complete set before jellyfin test passes): confirmed. the /jellyfin endpoint still persists url+key unconditionally, but now only flips setup_complete=1 on a successful connection test. - finding 6 (swallowed errors): partial. the mqtt restart and version- fetch swallows are intentional best-effort with downstream surfaces (getMqttStatus, UI fallback). only the scan.ts db-update swallow was a real visibility gap — logs via logError now. - finding 1 (auth): left as-is. redacting secrets on GET without auth on POST is security theater; real fix is an auth layer, which is a design decision not a bugfix. audit removed from the tree. - lint fail on ffmpeg.test.ts: formatted. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
43 lines
1.1 KiB
JSON
43 lines
1.1 KiB
JSON
{
|
|
"name": "netfelix-audio-fix",
|
|
"version": "2026.04.14.17",
|
|
"scripts": {
|
|
"dev:server": "NODE_ENV=development bun --hot server/index.tsx",
|
|
"dev:client": "vite",
|
|
"dev": "concurrently \"bun run dev:server\" \"bun run dev:client\"",
|
|
"build": "vite build",
|
|
"start": "bun server/index.tsx",
|
|
"lint": "biome check .",
|
|
"format": "biome format . --write",
|
|
"test": "bun test"
|
|
},
|
|
"dependencies": {
|
|
"@internationalized/date": "^3.12.0",
|
|
"@tanstack/react-form": "^1.28.3",
|
|
"@tanstack/react-router": "^1.163.3",
|
|
"clsx": "^2.1.1",
|
|
"hono": "^4",
|
|
"mqtt": "^5.15.1",
|
|
"react": "19",
|
|
"react-aria-components": "^1.16.0",
|
|
"react-dom": "19",
|
|
"ssh2": "^1",
|
|
"tailwind-merge": "^3.5.0",
|
|
"zod": "^4.3.6",
|
|
"zustand": "^5.0.11"
|
|
},
|
|
"devDependencies": {
|
|
"@biomejs/biome": "^2.4.4",
|
|
"@tailwindcss/vite": "^4.2.1",
|
|
"@tanstack/router-plugin": "^1.163.3",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@types/ssh2": "^1",
|
|
"@vitejs/plugin-react-swc": "^4.2.3",
|
|
"bun-types": "latest",
|
|
"concurrently": "^9.2.1",
|
|
"tailwindcss": "^4.2.1",
|
|
"vite": "^7.3.1"
|
|
}
|
|
}
|