-
sofarr v1.1.1
Stablereleased this
2026-05-17 17:44:18 +01:00 | 68 commits to main since this releasesofarr v1.1.1
Docker
docker pull docker.i3omb.com/sofarr:1.1.1Changes
- merge: develop into main for v1.1.1 release
- chore: bump version to 1.1.1
- fix: healthcheck respects TLS_ENABLED at runtime
- merge: develop into main for v1.1.0 release
- chore: bump version to 1.1.0
- fix: use --surface for episode tooltip background (--card-bg was undefined)
- fix: read episodeNumber from nested episode object in Sonarr records
- feat: show episode info on download and history cards
- Merge pull request 'feat: Recently Completed downloads history, tab UI, and light theme refresh' (#7) from develop into main
- merge: resolve ARCHITECTURE.md conflict, keep develop version (Mermaid + history docs)
- ci: remove v2-develop branch from build pipeline
- design(light-theme): replace purple scheme with logo-aligned teal palette, WCAG AA compliant
- feat(ui): split downloads and history into tabs
- fix(history): add tagBadges to history items in showAll mode
- fix(history): reload history when showAll toggle changes
- ci: add v2-develop branch to build pipeline (tags as sofarr:v2-develop)
- chore: remove legacy .env.example (superseded by .env.sample)
- docs: update ARCHITECTURE.md and README for history feature (v2)
- test(history): add unit and integration tests for historyFetcher and /api/history/recent
- feat(history): add Recently Completed section to frontend dashboard
- feat(history): add /api/history/recent endpoint with Sonarr/Radarr history fetching, tag filtering, and 5-min cache
- docs: merge Mermaid diagram migration from develop
- docs: replace ASCII art diagrams with Mermaid (renders natively in Gitea)
- feat: native HTTPS support with bundled snakeoil default cert
- Diagrams etc. (#5)
- docs: migrate all diagrams from PlantUML to Mermaid
- ci: render PlantUML diagrams [skip ci]
- fix(diagrams): replace par/and/end with group in seq-polling
- docs(diagrams): review + fix all .puml files; touch all to trigger render
- Merge pull request 'release/1.0.0' (#4) from release/1.0.0 into main
- merge: fix BOT_TOKEN secret name
- merge: fix BOT_TOKEN secret name
- ci: rename secret GITEA_TOKEN → BOT_TOKEN (GITEA_ prefix is reserved)
- merge: add render-diagrams workflow
- merge: add render-diagrams workflow
- ci: add render-diagrams workflow (.puml → .png committed back to repo)
- merge: develop into release/1.0.0 (doc + UI fixes)
- merge: develop into main (1.0.x doc + UI fixes)
- docs: update ARCHITECTURE.md and README for 1.0.x fixes
- fix: progress bar width collapsed by pill display:inline-flex
- fix: progress bar not rendering — replace float:left with position:absolute
- ui: compact pill layout for detail items; red availability warning
- merge: cookie secure fix from release/1.0.0
- merge: cookie secure fix from release/1.0.0
- fix: gate cookie secure flag on TRUST_PROXY not NODE_ENV
- merge: release/1.0.0 fixes into main
- merge: release/1.0.0 fixes into develop
- fix: correct upgradeInsecureRequests in index.js (the actual production config)
- fix: only emit upgrade-insecure-requests when TRUST_PROXY is set
- fix: remove nonce from tags — breaks CSS on mobile/caching proxies
- release: 1.0.0
- docs: final 1.0.0 documentation pass
- ci: downgrade upload-artifact to v3 (v4+ not supported on Gitea GHES)
- ci: lower coverage thresholds to match CI numbers after SSE addition
- fix(ui): status panel empty on login / requires double-click to open
- fix: set timing bar widths via JS DOM assignment after innerHTML
- fix: use CSS custom property for timing bar width to bypass CSP blocking
- fix: allow inline style= attributes via CSP style-src-attr
- debug: log task timing data in status panel to diagnose full bars
- fix: correct status panel cache stats and static asset caching
- fix(ui): normalise status panel timing bars against slowest task not totalMs
- feat: replace client polling with Server-Sent Events (SSE)
- chore: merge develop into main for v0.2.0 release
- chore: bump version to 0.2.0
- fix(ci): remove per-file coverage thresholds — V8 counts vary across Node versions
- docs: audit and update all documentation to reflect current codebase
- fix(ci): lower requireAuth.js coverage threshold to match CI Node V8 counting
- test: add comprehensive test suite (115 tests, Vitest + supertest + nock)
- fix: proxy cover art through server to satisfy CSP img-src 'self'
- fix: logger.js hardcoded server.log path breaks non-root container user
- fix: restore missing dotenv dependency
- fix(docker): replace better-sqlite3 with pure-JS JSON token store
- fix(docker): switch alpine to node:22-slim for pre-built better-sqlite3
- fix(docker): compile better-sqlite3 native addon in build stage
- fix: rebuild package-lock for Node 22; upgrade dev environment
- feat(security): production hardening for external deployment
- Merge develop into main for v0.1.5
- chore: bump version to 0.1.5
- fix: splash screen hangs after login, never dismisses
- feat: add 'Keep me logged in' checkbox to login form
- fix(ci): upgrade nodemon to ^3 to resolve semver ReDoS vulnerability
- chore: add COOKIE_SECRET to .env, .env.example, .env.sample
- fix(security #17): add npm audit to CI pipeline and package scripts
- fix(security #15): read API keys from process.env at request time
- fix(security #13,#14): revoke Emby token on logout; stable DeviceId prevents unbounded sessions
- fix(security #12): add helmet security response headers
- fix(security #11): remove unused node-cron dependency
- fix(security #10): sanitize error details to prevent API key leakage
- fix(security #7,#8,#9): signed cookies, isAdmin tamper-proof, schema validation
- fix(security #6): add rate limiting to POST /api/auth/login
- fix(security #5): remove plaintext logging of Emby auth response and user object
- docs: update architecture docs and diagrams for recent changes
- feat: add favicon from sofarr-logoonly.png
- fix: proper multi-user tag badges using full Emby user list
- fix: extractUserTag now correctly finds the tag matching the current user
- fix: always show matched user tag badge, not just in showAll mode
- feat: multi-tag badges for showAll — amber for unmatched, accent for matched
- security: ensure log files excluded recursively from git and Docker builds (issue #16)
- security: fix issues #1-4 from security audit
- Merge develop into main for v0.1.4
- chore: bump version to 0.1.4
- fix: improve mobile layout and prevent text overflow on small screens
- Merge main back into develop (v0.1.3)
- chore: bump version to 0.1.3
- docs: comprehensive architecture documentation with PlantUML diagrams
- Revert "perf: split into fast poll + slow-cached library fetches"
- perf: split into fast poll + slow-cached library fetches
- perf: drop includeSeries/includeMovie from history fetches
- perf: reduce history page sizes and drop includeEpisode
- fix: crash from stale references to removed sonarrSeries/radarrMovies
- perf: eliminate full Sonarr Series + Radarr Movies library fetches
- feat: status page shows effective refresh mode across all active clients
- feat: live-updating status panel with per-task poll timings
- feat: add admin-only status page with cache stats
- docs: add POLL_INTERVAL to README, .env.sample, and .env.example
- feat: make background polling disablable with on-demand fallback
- perf: background poller for near-instant dashboard responses
- perf: reduce history page size from 100 to 20
- perf: persist qBittorrent clients between requests
- perf: cache slow-changing data (series, movies, tags) with 60s TTL
- feat: show import-pending red lozenge when Sonarr/Radarr has issues
- feat: revise login screen with logo and smooth transition to splash
- feat: add splash screen with logo on app load and after login
- fix: handle Ombi-mangled tags for email-style usernames
- feat: link series/movie titles to Sonarr/Radarr for admin users
- fix: show full download path (content_path) for qBittorrent
- ci: remove arm builds, amd64 only for now
- ci: build develop tag on every push to develop branch
- feat: show download/target paths for admin users
- docs: comprehensive architecture documentation with PlantUML diagrams
- Revert "perf: split into fast poll + slow-cached library fetches"
- perf: split into fast poll + slow-cached library fetches
- perf: drop includeSeries/includeMovie from history fetches
- perf: reduce history page sizes and drop includeEpisode
- fix: crash from stale references to removed sonarrSeries/radarrMovies
- perf: eliminate full Sonarr Series + Radarr Movies library fetches
- feat: status page shows effective refresh mode across all active clients
- feat: live-updating status panel with per-task poll timings
- feat: add admin-only status page with cache stats
- docs: add POLL_INTERVAL to README, .env.sample, and .env.example
- feat: make background polling disablable with on-demand fallback
- perf: background poller for near-instant dashboard responses
- perf: reduce history page size from 100 to 20
- perf: persist qBittorrent clients between requests
- perf: cache slow-changing data (series, movies, tags) with 60s TTL
- feat: show import-pending red lozenge when Sonarr/Radarr has issues
- feat: revise login screen with logo and smooth transition to splash
- feat: add splash screen with logo on app load and after login
- fix: handle Ombi-mangled tags for email-style usernames
- feat: link series/movie titles to Sonarr/Radarr for admin users
- fix: show full download path (content_path) for qBittorrent
- ci: remove arm builds, amd64 only for now
- ci: build develop tag on every push to develop branch
- feat: show download/target paths for admin users
- Merge pull request 'ci: build multi-arch images (amd64, arm64, arm/v7)' (#2) from develop into main
- ci: build multi-arch images (amd64, arm64, arm/v7)
- chore: bump version to 0.1.2
- feat: admin users can view all downloads with user badges
- docs: add docker-compose.yaml with sample configuration
- chore: bump version to 0.1.1
- Merge pull request 'develop' (#1) from develop into main
- feat: compact UI with theme switcher (light/dark/mono)
- ci: add automated release creation on tag push
- docs: add Docker deployment instructions and OCI labels
- ci: remove registry login step (Distribution registry has no auth by default)
- ci: use distribution registry at reg.i3omb.com
- ci: add Dockerfile and Gitea Actions workflow for automated image builds
- chore: set version to 0.1.0
- feat: fix download-to-user matching, add cover art to downloads
- Initial commit: Media Download Dashboard with SABnzbd, Sonarr, Radarr, and Emby integration
Downloads
- Source (tar.gz): sofarr-v1.1.1.tar.gz
- Source (zip): sofarr-v1.1.1.zip
- Docker image:
docker.i3omb.com/sofarr:1.1.1
Downloads