What's Changed
This release is all about playlists and polish. We've introduced powerful new playlist management features, improved privacy controls, and refined the user experience with smoother animations, and under-the-hood optimizations. Plus, we've squashed bugs and streamlined the codebase for future updates.
Warning
This release includes a known regression in the search functionality that may cause crashes in certain scenarios. We're actively working on a fix and appreciate your patience.
New Features
- feat: playlist management support by @huynhsontung in #514
- feat: add settings privacy section by @United600 in #700
- feat: add Open With context menu for media files by @Copilot in #754
- feat: hide redundant caption for videos when it only adds file extension by @Copilot in #782
- feat: add success notifications for playlist create, rename, and delete by @Copilot in #798
- feat: add current play queue to a new or existing playlist by @huynhsontung in #803
- feat: handle Open with command on cached library item by @huynhsontung in #810
Bug Fixes
- fix: Delay playlist parsing until LibVLC is initialized by @Copilot in #745
- fix: subtitle auto-loading regression from PR #676 by @Copilot in #746
- fix: combobox popup position by @United600 in #752
- fix: RTL repeat glyph directionality by @United600 in #769
- fix: forward frame stepping position sync by @United600 in #795
- fix: media returned without media info when restoring from cache by @huynhsontung in #805
Localization
- l10n: Crowdin updates by @huynhsontung in #726
- l10n: Crowdin updates by @huynhsontung in #811
- fix(l10n): minor grammar fix for some privacy-related strings by @huynhsontung in #812
User Experience
- style: add titlebar control by @United600 in #784
- style: adjust player page animation offsets and transitions by @United600 in #796
- style: minor playlist dialogs tweaks by @United600 in #800
- style: improve playlist button design in the play queue selection bar by @United600 in #804
- style: fix playlist page header text overlap by @United600 in #809
Other Improvements
- chore: migrates Newtonsoft.Json to System.Text.Json by @United600 in #669
- chore: minor clean up to NavigationView by @United600 in #723
- chore: update keyboard accelerator helper constants documentation by @United600 in #737
- chore: add lottie generation script by @United600 in #776
- chore: add powershell script to generate custom icons fonts by @United600 in #779
- chore: bump C# language version and copyright year by @United600 in #785
- chore: replace command bar extension with control by @United600 in #797
- refactor: player controls playback and subtitle keyboard accelerator events by @United600 in #724
- refactor: move all behaviors to a new Behaviors namespace and folder by @United600 in #731
- refactor: player page keyboard accelerator events by @United600 in #733
- refactor: LibVlcService into stateless IPlayerService with PlayerContext by @Copilot in #755
- refactor: decouple casting from VLC via stateless CastService and CastContext by @Copilot in #760
- refactor: make LibraryService stateless via LibraryContext and LibraryController by @Copilot in #761
- refactor: ResourceNameToResourceString converter by @United600 in #762
- refactor: add playback rate message by @United600 in #775
- refactor: NavigationViewEx property change logic and simplify control by @United600 in #780
- refactor: ThicknessFilterKinds location and improves converter XML documentation by @United600 in #781
- refactor: replace view-layer error forwarding with typed failure messages from ViewModels by @Copilot in #794
- refactor: language model and remove layout direction converter by @United600 in #801
- refactor: control visibility logic for open popups by @United600 in #802
- ci: Add automated Winget package submission workflow by @Copilot in #747
- ci: Change release type from 'published' to 'released' by @drshtmstry in #750
- ci(copilot): Update Copilot setup to use Windows host by @huynhsontung in #789
New Contributors
- @drshtmstry made their first contribution in #750
Full Changelog: v0.17.0...v0.18.0