What's New
Quality Size Preset Management
Apply TRaSH Guides quality size presets (movie, anime, series, streaming) to Sonarr/Radarr instances. Includes preview diff, factory reset, sync strategy tracking, and per-instance mapping persistence.
CodeQL & Semgrep Code Scanning
Automated security analysis on every push and PR via GitHub Actions.
Hunting Reset Confirmation
Reset History button now shows a confirmation dialog to prevent accidental data loss.
Security
- 46 code scanning alerts resolved — Fixed all CodeQL and Semgrep findings including log injection, prototype pollution, ReDoS, filesystem race conditions, and property injection
- ReDoS prevention — Rewrote
normalizeProfileNamewith string methods to eliminate catastrophic backtracking - Prototype pollution prevention — CUID format validation on instance ID route parameters
- Log injection prevention —
sanitizeForLog()strips control characters from structured log messages - Atomic secret writes — Temp file + rename pattern eliminates TOCTOU race conditions
Refactoring & Improvements
- Consolidated error handling with
getErrorMessage()utility (replaces 179instanceof Errorpatterns) - Extracted backup-service into focused modules
- Removed redundant try/catch blocks in favor of global error handler
- Decomposed large frontend components
- Extracted deployment executor into a Fastify plugin with proper lifecycle management
- Improved cache route type safety with typed
ServiceTypealias and static lookup maps
Bug Fixes
- Added runtime Zod validation for
serviceTypequery parameter on cache list endpoints - Non-Sonarr/Radarr instances now return a clear 400 error for quality size operations
- Resolved flaky E2E sidebar navigation tests
Dependencies
- Bumped 27 production dependencies and 6 remaining outdated packages
- Bumped GitHub Actions group (7 updates) and dev dependencies group (4 updates)
Full Changelog: v2.8.0...v2.8.1