Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Sep 23:48
· 98 commits to main since this release
340b79c

Downloads

Platform File Notes
Windows x64 studio-windows-x64.zip Unzip and run studio.exe. Keep data/ and DLLs next to the exe. Windows may show an unsigned-app warning — click More info → Run anyway.
macOS studio-macos.zip Unzip and move studio.app to Applications. macOS may block the first launch — right-click → Open to bypass Gatekeeper.
Linux x64 studio-linux-x64.tar.gz Extract and run ./studio. Requires libkeybinder-3.0 and libayatana-appindicator3 on the host.

What's Changed

  • feat(library): add safe metadata editor by @Adoxcol in #68
  • feat(library): edit embedded cover art by @Adoxcol in #69
  • 🎨 Palette: Add Semantics to LibraryTextAction for accessibility by @Adoxcol in #71
  • feat(library): add batch metadata workflow by @Adoxcol in #72
  • feat(playlists): add smart playlists and saved filters by @Adoxcol in #73
  • feat(playlists): add playlist management essentials by @Adoxcol in #74
  • ⚡ Bolt: [performance improvement] Convert heavy getters to late final in _LibraryFilterDialogState by @Adoxcol in #70
  • ci: use the self-hosted homelab runner for Linux jobs by @Adoxcol in #75
  • 🛡️ Sentinel: [MEDIUM] Fix insecure temporary file creation in POSIX PcmFifo by @Adoxcol in #76
  • 🎨 Palette: Add Semantics to library tabs by @Adoxcol in #77
  • ⚡ Bolt: Memoize smart playlist evaluation during rebuilds by @Adoxcol in #78
  • 🎨 Palette: Add Semantics to IconRail buttons for accessibility by @Adoxcol in #79
  • 🎨 Palette: Add Semantic traits to custom Tab widgets by @Adoxcol in #80
  • 🛡️ Sentinel: [MEDIUM] Fix insecure temporary file creation in tests by @Adoxcol in #81
  • 🎨 Palette: Add tooltips to immersive transport controls by @Adoxcol in #82
  • 🎨 Palette: Add accessibility semantics to accent swatches by @Adoxcol in #83
  • 🎨 Palette: Add Semantics to clickable widgets in Library Browse View by @Adoxcol in #84
  • ⚡ Bolt: Non-blocking file existence check by @Adoxcol in #85
  • ⚡ Bolt: Change existsSync to async exists in ArtworkStore save method by @Adoxcol in #86
  • ⚡ Bolt: [Performance] Avoid synchronous file I/O on session load by @Adoxcol in #89
  • Implement auto-merge functionality in CI workflow by @Adoxcol in #87
  • 🧹 Remove unreachable NativePlayer check in _configureNative by @Adoxcol in #88
  • ⚡ Bolt: Optimize deleteTracksNotKept to use safe batched queries by @Adoxcol in #92
  • 🧪 Testing Improvement Task: Add test for playlist order dialog error state by @Adoxcol in #91
  • 🛡️ Sentinel: [security improvement] Secure preferences with atomic writes by @Adoxcol in #90
  • ⚡ Make DiscordArtworkResolver.cachedUrl async to prevent UI thread blocking by @Adoxcol in #97
  • 🧹 Preserve exception fallback logic while resolving false positive dead code warning by @Adoxcol in #93
  • ci: build desktop targets only on main by @Adoxcol in #100
  • fix(ci): dispatch builds after automatic merge by @Adoxcol in #101
  • fix(ci): target repository when dispatching builds by @Adoxcol in #102
  • 🎨 Palette: [a11y] Announce window controls as buttons by @Adoxcol in #104
  • Fix auto_merge workflow failure by making gh repository context explicit by @Adoxcol with @Copilot in #103
  • 🛡️ Sentinel: [MEDIUM] Fix insecure temporary file creation in tests by @Adoxcol in #107
  • ⚡ Bolt: Memoize playlist evaluation by ID during rebuilds by @Adoxcol in #108
  • test: stabilize timing-sensitive suites by @Adoxcol in #110
  • ⚡ Bolt: Replace O(N) indexOf in Queue UI with O(1) queueIndex by @Adoxcol in #99
  • test(discord): await retry completion by @Adoxcol in #111
  • 🧹 Fix deprecation in ReorderableListView by @Adoxcol in #94
  • 🧹 Refactor _NamedAction to use enum to resolve dead code warning by @Adoxcol in #95
  • ⚡ Bolt: O(1) Artist/Album view filtering by @Adoxcol in #96
  • ⚡ Bolt: Optimize track table rebuilds and search/sort allocations by @Adoxcol in #98
  • 🛡️ Sentinel: [MEDIUM] Fix insecure file saving in ArtworkStore by @Adoxcol in #105
  • ⚡ Bolt: Optimize smart playlist evaluation during name edit by @Adoxcol in #109
  • 🛡️ Sentinel: [CRITICAL] Fix SQL injection by @Adoxcol in #112
  • 🛡️ Sentinel: [security improvement] by @Adoxcol in #113
  • chore(deps): upgrade dependencies by @Adoxcol in #114
  • fix(windows): raise and center the window on launch by @Adoxcol in #115
  • Release/0.3.0 by @Adoxcol in #116
  • Release/0.3.0 by @Adoxcol in #117

New Contributors

  • @Adoxcol with @Copilot made their first contribution in #103

Full Changelog: v0.2.0...v0.3.0