·
2 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
What's Changed
This release is more than a simple version update; it marks a significant architectural milestone. It finalizes the long-awaited migration to Native AOT, representing years of foundational work and extensive refactoring of the entire codebase. Other key new features include customizable frame-capture save folders and enhanced accessibility. The update also addresses issues related to navigation, selection, and cache management.
New Features
- major: Native AOT projects and solution by @huynhsontung in #767
- feat: rework SelectionViewModel to operate on ranges by @huynhsontung in #1007
- feat: allow users to set a custom save location for frame captures by @United600 in #1013
- feat: enable playback rate hold functionality via gamepad input by @United600 in #1014
Bug Fixes
- feat: ChapterPickerControl handles empty chapter name by @huynhsontung in #1002
- fix: glitches when moving selected item up/down in play queue by @huynhsontung in #1010
- fix: improve playlists page gamepad navigation by @United600 in #1012
- fix: clear stale media records from cache on library scan by @huynhsontung with @Copilot in #1018
- fix: unnecessary selection when using keyboard navigation on some ListViewBase controls by @huynhsontung in #1019
- fix: group headers item screen reader name by @United600 in #1031
- fix: selection bar shortcuts not working by @huynhsontung in #1043
Localization
- l10n: New Crowdin updates by @github-actions[bot] in #1003
- l10n: New Crowdin updates by @github-actions[bot] in #1025
User Experience
- style: add new SplitButtonEx templated control by @United600 in #1024
Other Improvements
- chore: normalize some Community Toolkit XAML namespace mappings by @United600 in #995
- refactor: notification view and view model by @United600 in #1005
- refactor: templated controls into standalone project by @United600 in #1008
- refactor: PlayerPageViewModel KeyDown handlers to void return pattern by @United600 in #1016
- refactor: register message handlers explicity in ObservableRecipients by @huynhsontung in #1020
- chore: bump nuget packages and reformat project files by @huynhsontung in #1028
- chore: update test project to use xunit v3 with MTP v2 and AOT by @huynhsontung in #1029
- chore: manually reference CsWinRT 2.3.1 by @huynhsontung in #1032
- chrore: remove redundant nullable directives by @United600 in #1034
- chore: move Core.Tests project from xUnit preview to TUnit by @huynhsontung in #1035
- refactor: remove TagLibSharp by @huynhsontung in #1039
- chore: run code cleanup on the entire solution by @huynhsontung in #1040
- ci: bundle msixupload files on release by @huynhsontung in #1042
- refactor: remove redundant using aliases by @United600 in #1045
- l10n: New Crowdin updates by @github-actions[bot] in #1044
- docs: refine Copilot instructions for persistence boundaries and validation commands by @huynhsontung with @Copilot in #1047
Full Changelog: v0.20.1...v0.21.0