Releases: lantean-code/qbtmud
Releases · lantean-code/qbtmud
Release 2.6.0
Packages Update
Framework
- Updated Blazor.HashRouting
- Updated bUnit and related test framework dependencies.
Improvements and Fixes
- Improved messaging around insecure context for browser notifications (Fixes #62)
- Fixed an issue with flickering on the PWA prompt
Release 2.5.0
MudBlazor 9, Theme Repository, Routing, and PWA Update
Important
Breaking change: qbtmud now defaults to hash-based routing. If you want to keep the previous path-based URL behavior, set Routing:Mode to Path in your app settings:
{
"Routing": {
"Mode": "Path"
}
}Framework
- Updated MudBlazor from
8.15.0to9.2.0. - Updated ASP.NET WebAssembly packages from
10.0.3to10.0.5. - Updated bUnit and related test framework dependencies.
New Features
- Added a configurable remote Theme Repository index with repository theme loading.
- Added theme source precedence:
Local > Repository > Bundled. - Added end-to-end PWA install prompt support, including UI components, JS interop, service layer, and App Settings controls.
- Added qBittorrent
clientData-backed app settings persistence with storage routing between browser storage and qBittorrent client data. This requires qBittorrent 5.2.0 or above. - Refactored
/app-settingsinto dedicated tab components for visual, updates, notifications, storage, and PWA settings. - Added dark/light/system theme-mode controls, including Welcome Wizard integration.
- Added configurable
Api:BaseUrlsupport so qbtmud can target a qBittorrent API hosted on a different origin or path. - Added hash-based routing support with routing-aware internal URL generation and legacy hash migration for download links.
- Refactored magnet-link handling into a dedicated service, including browser magnet-handler registration and download-link validation.
- Added qBittorrent-style global upload/download rate-limit dialogs directly from the status bar indicators.
Improvements and Fixes
- Fixed issue #55 and aligned delete dialog behavior with WebUI expectations.
- Improved localization handling for HTML entities.
- Improved small-screen and iOS/iPadOS UX, including context menus, status bar positioning, and full-height loading screen behavior.
- Updated loading screen behavior and styling.
- Added consistent borders for
MudDialogandMudPopover. - Updated Preferences handling so a full reload is no longer required after changes.
- Added versioned asset cache-busting in publish output (
index.htmlandboot.settings.js). - Added theme source indicators and read-only handling for non-local themes.
Testing
- Significantly expanded automated test coverage across App Settings, storage routing, PWA flows, theme repository flows, routing/API URL resolution, magnet-link handling, status bar dialogs, dialog workflow, logged-in layout behavior, and API client behavior.
Included PRs
Release 2.4.1
App Settings, Notifications & UX Improvements - Hotfix
- Fixed an issue with the default language being 'C'.
Release 2.4.0
App Settings, Notifications & UX Improvements
The 'en' version is removed for this release due to an issue.
Framework
- Updated test coverage tooling (
coverlet.collector6.0.4 -> 8.0.0).
New Features
- Added a new App Settings page (
/app-settings) with:- update checks (startup and manual “Check now”),
- current build and latest stable release visibility,
- browser notification settings (download completed, torrent added),
- local-storage diagnostics/cleanup for qbtmud keys.
- Added qbtmud build/update infrastructure (
AppBuildInfoService,AppUpdateService, related models/services). - Added browser notification workflow for torrent-completion events.
- Reworked the Welcome Wizard with dedicated plan/state/catalog services and improved step flow.
- Added workflow-driven Set Location dialog using
PathAutocomplete. - Status bar now supports horizontal scrolling on smaller screens and defaults to the speed side.
- About page now includes qbtmud build/update status and release link information.
Improvements and Fixes
- Refactored localization architecture (
Language*services) and initialization flow. - Fixed tooltip behavior on iOS and introduced capability-aware tooltip handling.
- Fixed menu scroll behavior on small screens.
- Fixed Options language dropdown issue.
- Aligned speed/size formatting across UI areas.
- Fixed Search Plugins dialog close button variant/styling.
- Fixed dialog action button color consistency.
- Additional Welcome Wizard navigation/flow fixes and simplifications.
Testing
- Added a new
Blazor.BrowserCapabilities.Testproject. - Expanded tests across app settings, welcome wizard, localization, notifications, dialogs, status bar, and helper services.
- Current passing suite:
Blazor.BrowserCapabilities.Test: 10 passedLantean.QBitTorrentClient.Test: 325 passedLantean.QBTMud.Test: 1934 passed
Included PRs
- #38 Refactor localisation
- #39 Bump coverlet.collector from 6.0.4 to 8.0.0
- #40 Fix tooltip and add additional capabilities service
- #41 Fix #34 menu scroll issue
- #42 Fix #35 dropdown issue
- #43 Fixed #36 align speed/size formats
- #44 Fix #37 search plugin dialog close button variant
- #45 App Settings / Updates and Browser Notifications
- #47 Add scroll to StatusBar
Hotfix 2.3.1
Theme Manager and Internationalisation Update - Hotfix
Fixed an issue with Tags and Categories management pages using incorrect refresh pattern.
Release 2.3.0
Theme Manager and Internationalisation Update
Framework
- Updated to .NET 10.0.3.
- Migrated test projects to xUnit v3.
New Features
- Added a full Theme Manager workflow:
- Theme listing page and detail page
- Theme preview dialog
- Bundled + local theme support
- Apply, duplicate, rename, delete, import/export actions
- Added a first-run Welcome Wizard for initial setup and onboarding.
- Introduced expanded WebUI localization infrastructure:
- WebUI translation ingestion/conversion pipeline
- Language catalogue and localization service
- Alias + override support
- Refactored browser storage services and key handling, including migration path updates.
- Added app warmup improvements to reduce startup UX issues (including font loading/flashing behaviour).
Improvements and Fixes
- Updated login screen
- Realigned the Cookies manager to match other manager pages:
- Dynamic table + add/edit dialogs
- Immediate persistence on changes
- Consistent row actions
- Added refresh actions to Tags and Categories manager pages.
- Standardized multiple button group/action visuals to outlined style where applicable.
- Improved dialog action buttons
- Refactored status bar into dedicated component
- Moved disconnect message to dialog
- Fixed TickSwitch flicker on load
- Fixed Tooltip not disappearing on iOS
- Fixed several reliability/code-quality issues:
- Serialization fixes
Path.Combineargument handling fixContainsKeyinefficiency fix
Testing
- Significantly expanded test coverage across pages/components/services/theming.
- Standardized component tests toward
data-test-idselection for stability. - Current passing suite:
Lantean.QBTMud.Test: 1299 passedLantean.QBitTorrentClient.Test: 294 passed- Coverage:
- Line coverage: 79.96% (25,163 / 31,469)
- Branch coverage: 70.54% (5,907 / 8,374)
Notes
- qBittorrent translation/source integration now relies on repo submodule/external source paths used by the translation generation workflow.
- MudBlazor ThemeManager dependency was replaced by an internal theme management approach.
Release 2.2.0
Torrent Creator & Path Tools Update
Framework
- No framework/library version changes.
New Features
- Added a dedicated Torrent Creator page with task list management and downloads. Fixes #26.
- Added a Create Torrent dialog with full task options (piece size, privacy, trackers, web seeds, comments, source, etc.).
- Added PathAutocomplete and a server-side Path Browser dialog for selecting local paths.
- Wired path picking into category save paths and torrent save/incomplete paths.
- Added Timer Management UI to control loop timers
- Restart timer option to the managed timer.
Fixes
- Only show the pointer cursor for table rows that are actually clickable/selectable.
- Avoid unnecessary piece-progress rendering work when heatmap/canvas/SVG views are not active.
- Removed duplicate timers from UI
- Fixed stop button from showing on Torrent Actions when torrent was already stopped.
- Fixed an issue with keyboard shortcuts not activating the delete dialog when multiple torrents were selected.
Testing
- Added extensive component tests for new dialogs and UI components.
- Added comprehensive page tests for the Torrent Creator task list and actions.
- Expanded test coverage for dialog workflows, tables, and path selection behaviours.
Release 2.1.0
Quality Of Life Improvements
Framework
- Update to .NET 10.0.2
New Features
- Improved table selection with context menu
- Added ability to affect multiple torrents with the same tag/category
- Added alt speed limit values to the up/down speed indicators (#23)
- Mirrored alt speed icon (#24)
Fixes
- Fixed an issue where the status bar interactivity was blocked by main body (#23)
Testing
- Added more component tests
Release 2.0.0
Major Update - qBittorrent v5 (2.0.0)
This update brings qbtmud in line with qBittorrent v5 and with this release v4 is no longer supported.
Framework/Libraries
- Update to .net 10
- Update MudBlazor to 8.14.0
New Features
- New Tabbed Search UI (Fixes #6)
- Cookies Manager
- Magnet Link Handler
- Alt-Speed Toggle
- Start/Stop All Torrents
- Various Context Menus
- Updated pieces display
- Speed chart page
- Country Flags for Peers
- New loading screen
- Improved dark theme
- Added keyboard shortcuts
Improvements
- Filters & States Mirror v5 Web UI
- Regex Torrent Search
- New columns added to Torrent List
- Reworked RSS feed
Architecture
- Reorganised code locations
- Updated repo with AGENTS.md files to give instructions to Codex Agents
- Updated GitHub Actions to support creating pre-releases
- General refactor to help with forward code maintenance
Testing
- Added unit tests to the Client project in preparation for a separate NuGet package
- Partially added unit tests to the Blazor app (incomplete)
Release v1.2.1
Bugfix Release
- Fixed an issue with tags not displaying correctly after MainData updates from qBittorrent's API
- Fixed an issue with the status sidebar not updating correctly when a torrent was removed.