v1.0.0
Changelog
New Features
- feat(auth): migrate to SCS database-backed session storage (#122) (@s0up4200)
- feat(backend): go-qbittorrent sync. (#161) (@KyleSanderson)
- feat(cache): ttlcache over ristretto (#199) (@KyleSanderson)
- feat(cmd): add self-updater (#127) (@s0up4200)
- feat(config): add metricsEnabled configuration option (#124) (@s0up4200)
- feat(dashboard): add confirmation dialog for speed limit toggle (#195) (@s0up4200)
- feat(domain): add secret redaction helper functions (#123) (@s0up4200)
- feat(filtering): use maps for lookups (#193) (@KyleSanderson)
- feat(http): implement dynamic compression (#128) (@KyleSanderson)
- feat(logger): write logs to both stdout and file (#208) (@nuxencs)
- feat(proxy): add reverse proxy system for external client integration (#115) (@s0up4200)
- feat(qbit): Implement filtering from go-qbittorrent (#126) (@KyleSanderson)
- feat(qbit): O(1) filtering and sorting (#152) (@KyleSanderson)
- feat(sync): use go-qbittorrent syncmanager (#125) (@KyleSanderson)
- feat(theme): implement dynamic background color to prevent FOUC (#190) (@s0up4200)
- feat(torrents): add peer lists (#178) (@s0up4200)
- feat(torrents): add scroll-to-top button and keyboard navigation (#158) (@s0up4200)
- feat(torrents): add seeds and peers columns with connected/total counts (#180) (@s0up4200)
- feat(torrents): add set location action (#192) (@s0up4200)
- feat(torrents): add shift-click row selection (#201) (@s0up4200)
- feat(torrents): add tracker URL editing (#204) (@s0up4200)
- feat(ui): improve torrent table loading experience (@s0up4200)
- feat(update): add background release polling service (#220) (@s0up4200)
- feat(web): add NotFound page (#174) (@s0up4200)
- feat(web): add TorrentManagementBar with unified torrent actions (#154) (@s0up4200)
- feat(web): add dynamic autobrr logo (#135) (@s0up4200)
- feat(web): add fancy border to login screen (#168) (@s0up4200)
- feat(web): add free swizzin theme (#145) (@s0up4200)
- feat(web): add instance hover cards for quick switching (#172) (@s0up4200)
- feat(web): add speed unit toggle (#176) (@s0up4200)
- feat(web): better category edit dialog (#142) (@nuxencs)
- feat(web): implement progressive loading for mobile torrent cards (#151) (@s0up4200)
- feat(web): use alert-dialog in InstanceCard component (#182) (@s0up4200)
- feat: improve theme validation and license sync (#169) (@s0up4200)
- feat: unify filter handling for qBittorrent compatibility (#197) (@s0up4200)
Bug Fixes
- fix(auth): correctly use
withBasePathfor login/setup check and redirect (#185) (@cmd430) - fix(auth): improve login form UX and add session warming (#194) (@s0up4200)
- fix(columns): use hyphens instead of spaces (@s0up4200)
- fix(filters): show scrollbar for smaller lists (#212) (@s0up4200)
- fix(filters): untagged & uncategorized not working (#205) (@nuxencs)
- fix(incognito): make the blur bleed (@s0up4200)
- fix(mobile): replace HoverCard with DropdownMenu for instance switcher (#188) (@s0up4200)
- fix(qbittorrent): sort queued torrents (#163) (@s0up4200)
- fix(torrent): table column persistence and display improvements (#191) (@s0up4200)
- fix(torrents): align torrent bulk action counts with selection state (#217) (@s0up4200)
- fix(torrents): bring back the addTorrent button (@s0up4200)
- fix(torrents): match native torrent statuses (#157) (@s0up4200)
- fix(trackers): pass MainData for tracker counts (#175) (@s0up4200)
- fix(ui): prevent unintended text selection in torrent components (#184) (@s0up4200)
- fix(web): add hashes to TorrentDetailsPanel (#187) (@s0up4200)
- fix(web): adjust header responsive breakpoints for better tablet support (@s0up4200)
- fix(web): adjust margin in TorrentManagementBar component (@s0up4200)
- fix(web): always set categories and tags to indicate data reception (@s0up4200)
- fix(web): clear stale torrents on empty state (#218) (@s0up4200)
- fix(web): don't expand sidebar on dropdown click (#131) (@nuxencs)
- fix(web): handle undefined error messages in formatErrorMessage (#119) (@s0up4200)
- fix(web): immediate connection status update after instance creation/update (#183) (@s0up4200)
- fix(web): keep row click from toggling selection (#211) (@s0up4200)
- fix(web): raise mobile scroll button (#219) (@s0up4200)
- fix(web): resolve hydration error from nested buttons (#179) (@s0up4200)
- fix(web): resolve scroll position reset issues (#114) (@s0up4200)
- fix(web): select all checkbox state and selected torrents footer (#144) (@nuxencs)
- fix(web): spacing in tags and category dialog (#132) (@nuxencs)
- fix(web): truncate long instance names (#155) (@s0up4200)
- fix: hash for bulkactions (@s0up4200)
- fix: resolve Swizzin logo loading issue with custom base URLs (#186) (@s0up4200)
- fix: restore .gitkeep after build (@s0up4200)
Other Changes
- Revert "refactor(web): extract context menu and remove redundant TorrentActions (#134)" (@s0up4200)
- build(deps): bump Go to 1.25 (#171) (@s0up4200)
- chore(ci): update setup-go action to v6 in workflows (#150) (@s0up4200)
- chore(deps): bump actions/checkout from 4 to 5 in the github group (#111) (@dependabot[bot])
- chore(deps): bump actions/setup-node from 4 to 5 in the github group (#153) (@dependabot[bot])
- chore(deps): bump the golang group across 1 directory with 5 updates (#225) (@dependabot[bot])
- chore(lint): no trailing spaces (#108) (@martylukyy)
- chore: add README (#224) (@s0up4200)
- chore: add missing license headers (#165) (@github-actions[bot])
- chore: add missing license headers (#203) (@github-actions[bot])
- chore: remove old files (@s0up4200)
- chore: remove subagent (@s0up4200)
- chore: remove unused agents (@s0up4200)
- chore: update .gitignore (@s0up4200)
- chore: update claude.md (@s0up4200)
- docs: update README.md (@zze0s)
- perf(torrents): smooth sidebar during pagination (#213) (@s0up4200)
- refactor(db): remove instance health checks and add error tracking system (#139) (@s0up4200)
- refactor(license): activate and validate (#202) (@zze0s)
- refactor(metrics): restructure implementation to match autobrr pattern (#147) (@s0up4200)
- refactor(sidebar): simplify footer (@s0up4200)
- refactor(themes): relocate premium themes to private repo (#110) (@s0up4200)
- refactor(torrents): simplify sorting (#162) (@s0up4200)
- refactor(web): extract context menu and remove redundant TorrentActions (#134) (@s0up4200)
- refactor(web): reuse InstanceFormData (#107) (@nuxencs)
- refactor(web): simplify theme licensing UX and hook names (#140) (@s0up4200)
- refactor: bring back pagination (#129) (@s0up4200)
- refactor: dashboard calls (#143) (@s0up4200)
Full Changelog: https://github.com/autobrr/qui/compare/v0.3.0...v1.0.0