Skip to content

feat: v0.0.1 - Core audio player with library, playlists and theming#1

Merged
devohmycode merged 4 commits intomainfrom
0.0.1
Mar 11, 2026
Merged

feat: v0.0.1 - Core audio player with library, playlists and theming#1
devohmycode merged 4 commits intomainfrom
0.0.1

Conversation

@devohmycode
Copy link
Owner

Summary

  • Audio playback with dual engine (MediaPlayer + NAudio/WASAPI), supporting MP3, FLAC, WAV, OGG, AAC, WMA, M4A, OPUS, APE, AIFF
  • Music library with folder scanning, metadata extraction, SQLite storage, search, sort, and favorites
  • Playlists & queue management with drag-drop, reorder, context menus (Raycast-style action panels), and queue persistence
  • Theme support (System/Light/Dark) with backdrop options (Acrylic, Mica, Mica Alt)
  • System integration: tray icon, SMTC media controls, global hotkeys, compact mode
  • Comprehensive README documenting all features

Test plan

  • Launch the app and verify playback works for various audio formats
  • Add folders to library and confirm scanning/metadata extraction
  • Create, rename, delete playlists and manage tracks within them
  • Test queue operations (add next, reorder, clear, persistence across restart)
  • Toggle themes (System/Light/Dark) and backdrops (Acrylic/Mica/None)
  • Verify system tray, SMTC controls, and global hotkeys
  • Test compact mode toggle and window position persistence
  • Drag & drop audio files from Explorer

🤖 Generated with Claude Code

devohmycode and others added 4 commits March 10, 2026 15:30
… .gitignore

- Add playlist track reordering with Up/Down buttons (MoveTrackInPlaylist in LibraryManager)
- Add Queue tab with reorder support and Play Next / Add to Queue actions
- Replace MenuFlyout context menus with Raycast-style ActionPanel flyouts
- Add drag-and-drop audio files from Explorer into the player
- Add Reset Library option in Settings
- Add .gitignore and remove bin/obj from tracking

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 11, 2026

Important

Review skipped

Too many files!

This PR contains 198 files, which is 48 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 20a4e7c7-3493-48b2-9f4f-4f01e31205f2

📥 Commits

Reviewing files that changed from the base of the PR and between 2012de5 and 0cea9a6.

⛔ Files ignored due to path filters (102)
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.exe is excluded by !**/*.exe
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/CoreMessagingXP.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/DWriteCore.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/DirectML.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/DwmSceneI.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/MRM.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Data.Sqlite.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.DirectManipulation.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Display.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Imaging.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Imaging.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.InputStateManager.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.InteractiveExperiences.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Internal.FrameworkUdk.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.ML.OnnxRuntime.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Security.Authentication.OAuth.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Composition.OSSupport.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Designer.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Input.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Windowing.Core.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Windowing.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.Controls.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.Internal.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.Phone.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml/Assets/NoiseAsset_256x256_PNG.png is excluded by !**/*.png
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Web.WebView2.Core.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Web.WebView2.Core.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WinUI.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentSafety.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentSafety.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Foundation.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Imaging.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Imaging.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.MachineLearning.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.MachineLearning.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Text.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Text.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppLifecycle.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.Builder.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Resources.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Resources.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.BadgeNotifications.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Foundation.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Management.Deployment.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Media.Capture.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.PushNotifications.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.SDK.NET.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Security.AccessControl.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.Pickers.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.Power.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Widgets.Projection.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Widgets.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Workloads.Resources.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Workloads.Resources_ec.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Workloads.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WindowsAppRuntime.Bootstrap.Net.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WindowsAppRuntime.Bootstrap.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WindowsAppRuntime.Insights.Resource.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WindowsAppRuntime.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.ui.xaml.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.ui.xaml.resources.19h1.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.ui.xaml.resources.common.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NAudio.Asio.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NAudio.Core.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NAudio.Midi.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NAudio.Wasapi.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NAudio.WinForms.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NAudio.WinMM.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NAudio.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/NpuDetect/NPUDetect.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/PushNotificationsLongRunningTask.ProxyStub.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/RestartAgent.exe is excluded by !**/*.exe
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/SQLitePCLRaw.batteries_v2.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/SQLitePCLRaw.core.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/SQLitePCLRaw.provider.e_sqlite3.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/SessionHandleIPCProxyStub.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/System.Numerics.Tensors.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/TagLibSharp.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/WebView2Loader.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/WinRT.Runtime.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/WinUIEdit.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/WindowsAppRuntime.DeploymentExtensions.OneCore.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/WindowsAppRuntime.png is excluded by !**/*.png
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/WindowsAppSdk.AppxDeploymentExtensions.Desktop-EventLog-Instrumentation.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/app.ico is excluded by !**/*.ico
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/dcompi.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/dwmcorei.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/e_sqlite3.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/marshal.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/onnxruntime.dll is excluded by !**/*.dll
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/onnxruntime_providers_shared.dll is excluded by !**/*.dll
📒 Files selected for processing (198)
  • .gitignore
  • Audiomatic/ActionPanel.cs
  • Audiomatic/MainWindow.xaml
  • Audiomatic/MainWindow.xaml.cs
  • Audiomatic/Services/LibraryManager.cs
  • Audiomatic/Services/QueueManager.cs
  • Audiomatic/SettingsManager.cs
  • Audiomatic/SettingsWindow.xaml
  • Audiomatic/SettingsWindow.xaml.cs
  • Audiomatic/ThemeHelper.cs
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/App.xbf
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.deps.json
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.pdb
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.pri
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.runtimeconfig.json
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/MainWindow.xbf
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Foundation.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Imaging.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.ImagingInternal.ImageObjectRemover.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.ImagingInternal.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Internal.Imaging.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Security.Authentication.OAuth.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Text.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.Controls.pri
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml/Assets/map.html
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.pri
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentModerationInternal.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentSafety.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Foundation.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.FoundationInternal.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.GenerativeInternal.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Imaging.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.MachineLearning.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Text.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppLifecycle.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.Builder.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.DynamicDependency.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Resources.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.BadgeNotifications.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Foundation.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Globalization.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Internal.Vision.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Management.Deployment.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Media.Capture.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Private.Workloads.SessionManager.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.PrivateCommon.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.PushNotifications.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Security.AccessControl.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.SemanticSearch.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.Pickers.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.Power.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Vision.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.VisionInternal.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Widgets.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Workloads.winmd
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WindowsAppRuntime.pri
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/SettingsWindow.xbf
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/af-ZA/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/af-ZA/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/am-ET/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/am-ET/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ar-SA/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ar-SA/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/as-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/as-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/az-Latn-AZ/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/az-Latn-AZ/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bg-BG/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bg-BG/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bn-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bn-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bs-Latn-BA/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bs-Latn-BA/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-ES/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-ES/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-Es-VALENCIA/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-Es-VALENCIA/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cs-CZ/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cs-CZ/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cy-GB/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cy-GB/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/da-DK/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/da-DK/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/de-DE/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/de-DE/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/el-GR/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/el-GR/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-GB/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-GB/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-us/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-us/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-ES/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-ES/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-MX/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-MX/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/et-EE/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/et-EE/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/eu-ES/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/eu-ES/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fa-IR/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fa-IR/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fi-FI/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fi-FI/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fil-PH/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fil-PH/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fr-CA/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fr-CA/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fr-FR/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fr-FR/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ga-IE/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ga-IE/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/gd-gb/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/gd-gb/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/gl-ES/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/gl-ES/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/gu-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/gu-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/he-IL/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/he-IL/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hi-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hi-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hr-HR/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hr-HR/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hu-HU/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hu-HU/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hy-AM/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/hy-AM/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/id-ID/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/id-ID/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/is-IS/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/is-IS/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/it-IT/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/it-IT/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ja-JP/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ja-JP/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ka-GE/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ka-GE/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/kk-KZ/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/kk-KZ/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/km-KH/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/km-KH/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/kn-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/kn-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ko-KR/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ko-KR/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/kok-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/kok-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lb-LU/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lb-LU/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lo-LA/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lo-LA/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lt-LT/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lt-LT/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lv-LV/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/lv-LV/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mi-NZ/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mi-NZ/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mk-MK/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mk-MK/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ml-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ml-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mr-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mr-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ms-MY/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ms-MY/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mt-MT/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/mt-MT/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/nb-NO/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/nb-NO/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ne-NP/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ne-NP/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/nl-NL/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/nl-NL/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/nn-NO/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/nn-NO/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/or-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/or-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pa-IN/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pa-IN/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pl-PL/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pl-PL/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pt-BR/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pt-BR/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pt-PT/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/pt-PT/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/quz-PE/Microsoft.UI.Xaml.Phone.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/quz-PE/Microsoft.ui.xaml.dll.mui
  • Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ro-RO/Microsoft.UI.Xaml.Phone.dll.mui

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 0.0.1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@qodo-code-review
Copy link

Review Summary by Qodo

Add playlists, queue management, theme selection, and Raycast-style menus

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Add playlist management with create, rename, delete, and track reordering
• Implement queue view with reorder controls and drag-drop from Explorer
• Add theme selection (System/Light/Dark) with persistent storage
• Replace context menus with Raycast-style ActionPanel flyouts
• Add navigation tabs for Library, Playlists, and Queue views
• Implement ThemeHelper for theme-aware brush resolution in code-behind
Diagram
flowchart LR
  A["User Actions"] -->|Create/Rename/Delete| B["Playlist Management"]
  A -->|Add/Reorder| C["Queue Management"]
  A -->|Select Theme| D["Theme System"]
  A -->|Right-click| E["ActionPanel Menus"]
  A -->|Drag Files| F["Drop Handler"]
  B --> G["LibraryManager"]
  C --> H["QueueManager"]
  D --> I["ThemeHelper"]
  E --> J["Context Menus"]
  F --> K["Track Metadata"]
  G --> L["SQLite DB"]
  H --> M["queue.json"]
  I --> N["ElementTheme"]
Loading

Grey Divider

File Changes

1. Audiomatic/MainWindow.xaml.cs ✨ Enhancement +849/-45

Add playlists, queue, theme, and navigation views

Audiomatic/MainWindow.xaml.cs


2. Audiomatic/MainWindow.xaml ✨ Enhancement +63/-8

Add navigation tabs and drag-drop support

Audiomatic/MainWindow.xaml


3. Audiomatic/Services/LibraryManager.cs ✨ Enhancement +86/-1

Add playlist operations and reset functionality

Audiomatic/Services/LibraryManager.cs


View more (108)
4. Audiomatic/Services/QueueManager.cs ✨ Enhancement +34/-0

Add queue reordering and navigation methods

Audiomatic/Services/QueueManager.cs


5. Audiomatic/ThemeHelper.cs ✨ Enhancement +49/-0

New theme-aware brush resolution utility

Audiomatic/ThemeHelper.cs


6. Audiomatic/SettingsManager.cs ✨ Enhancement +9/-0

Add theme persistence to settings

Audiomatic/SettingsManager.cs


7. Audiomatic/SettingsWindow.xaml.cs ✨ Enhancement +44/-3

Add theme selection UI and application

Audiomatic/SettingsWindow.xaml.cs


8. Audiomatic/SettingsWindow.xaml ✨ Enhancement +14/-0

Add theme radio buttons to appearance settings

Audiomatic/SettingsWindow.xaml


9. Audiomatic/ActionPanel.cs ✨ Enhancement +8/-8

Update to use ThemeHelper for brush resolution

Audiomatic/ActionPanel.cs


10. README.md 📝 Documentation +114/-0

Add comprehensive feature documentation

README.md


11. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/App.xbf Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/App.xbf


12. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.deps.json Additional files +0/-557

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.deps.json


13. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.pdb Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.pdb


14. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.pri Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.pri


15. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.runtimeconfig.json Additional files +0/-19

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Audiomatic.runtimeconfig.json


16. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/MainWindow.xbf Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/MainWindow.xbf


17. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Foundation.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Foundation.winmd


18. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Imaging.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Imaging.winmd


19. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.ImagingInternal.ImageObjectRemover.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.ImagingInternal.ImageObjectRemover.winmd


20. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.ImagingInternal.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.ImagingInternal.winmd


21. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Internal.Imaging.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.Internal.Imaging.winmd


22. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Graphics.winmd


23. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Security.Authentication.OAuth.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Security.Authentication.OAuth.winmd


24. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Text.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Text.winmd


25. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.Controls.pri Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.Controls.pri


26. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml.winmd


27. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml/Assets/map.html Additional files +0/-844

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.Xaml/Assets/map.html


28. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.pri Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.pri


29. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.UI.winmd


30. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentModerationInternal.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentModerationInternal.winmd


31. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentSafety.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.ContentSafety.winmd


32. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Foundation.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Foundation.winmd


33. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.FoundationInternal.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.FoundationInternal.winmd


34. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.GenerativeInternal.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.GenerativeInternal.winmd


35. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Imaging.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Imaging.winmd


36. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.MachineLearning.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.MachineLearning.winmd


37. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Text.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.Text.winmd


38. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AI.winmd


39. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppLifecycle.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppLifecycle.winmd


40. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.Builder.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.Builder.winmd


41. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.AppNotifications.winmd


42. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.winmd


43. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Background.winmd


44. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.DynamicDependency.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.DynamicDependency.winmd


45. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Resources.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.Resources.winmd


46. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.ApplicationModel.WindowsAppRuntime.winmd


47. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.BadgeNotifications.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.BadgeNotifications.winmd


48. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Foundation.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Foundation.winmd


49. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Globalization.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Globalization.winmd


50. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Internal.Vision.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Internal.Vision.winmd


51. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Management.Deployment.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Management.Deployment.winmd


52. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Media.Capture.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Media.Capture.winmd


53. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Private.Workloads.SessionManager.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Private.Workloads.SessionManager.winmd


54. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.PrivateCommon.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.PrivateCommon.winmd


55. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.PushNotifications.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.PushNotifications.winmd


56. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Security.AccessControl.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Security.AccessControl.winmd


57. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.SemanticSearch.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.SemanticSearch.winmd


58. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.Pickers.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.Pickers.winmd


59. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Storage.winmd


60. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.Power.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.Power.winmd


61. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.System.winmd


62. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Vision.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Vision.winmd


63. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.VisionInternal.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.VisionInternal.winmd


64. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Widgets.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Widgets.winmd


65. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Workloads.winmd Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.Windows.Workloads.winmd


66. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WindowsAppRuntime.pri Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/Microsoft.WindowsAppRuntime.pri


67. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/SettingsWindow.xbf Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/SettingsWindow.xbf


68. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/af-ZA/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/af-ZA/Microsoft.UI.Xaml.Phone.dll.mui


69. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/af-ZA/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/af-ZA/Microsoft.ui.xaml.dll.mui


70. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/am-ET/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/am-ET/Microsoft.UI.Xaml.Phone.dll.mui


71. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/am-ET/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/am-ET/Microsoft.ui.xaml.dll.mui


72. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ar-SA/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ar-SA/Microsoft.UI.Xaml.Phone.dll.mui


73. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ar-SA/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ar-SA/Microsoft.ui.xaml.dll.mui


74. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/as-IN/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/as-IN/Microsoft.UI.Xaml.Phone.dll.mui


75. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/as-IN/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/as-IN/Microsoft.ui.xaml.dll.mui


76. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/az-Latn-AZ/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/az-Latn-AZ/Microsoft.UI.Xaml.Phone.dll.mui


77. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/az-Latn-AZ/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/az-Latn-AZ/Microsoft.ui.xaml.dll.mui


78. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bg-BG/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bg-BG/Microsoft.UI.Xaml.Phone.dll.mui


79. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bg-BG/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bg-BG/Microsoft.ui.xaml.dll.mui


80. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bn-IN/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bn-IN/Microsoft.UI.Xaml.Phone.dll.mui


81. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bn-IN/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bn-IN/Microsoft.ui.xaml.dll.mui


82. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bs-Latn-BA/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bs-Latn-BA/Microsoft.UI.Xaml.Phone.dll.mui


83. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bs-Latn-BA/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/bs-Latn-BA/Microsoft.ui.xaml.dll.mui


84. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-ES/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-ES/Microsoft.UI.Xaml.Phone.dll.mui


85. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-ES/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-ES/Microsoft.ui.xaml.dll.mui


86. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-Es-VALENCIA/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-Es-VALENCIA/Microsoft.UI.Xaml.Phone.dll.mui


87. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-Es-VALENCIA/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/ca-Es-VALENCIA/Microsoft.ui.xaml.dll.mui


88. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cs-CZ/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cs-CZ/Microsoft.UI.Xaml.Phone.dll.mui


89. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cs-CZ/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cs-CZ/Microsoft.ui.xaml.dll.mui


90. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cy-GB/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cy-GB/Microsoft.UI.Xaml.Phone.dll.mui


91. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cy-GB/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/cy-GB/Microsoft.ui.xaml.dll.mui


92. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/da-DK/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/da-DK/Microsoft.UI.Xaml.Phone.dll.mui


93. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/da-DK/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/da-DK/Microsoft.ui.xaml.dll.mui


94. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/de-DE/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/de-DE/Microsoft.UI.Xaml.Phone.dll.mui


95. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/de-DE/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/de-DE/Microsoft.ui.xaml.dll.mui


96. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/el-GR/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/el-GR/Microsoft.UI.Xaml.Phone.dll.mui


97. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/el-GR/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/el-GR/Microsoft.ui.xaml.dll.mui


98. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-GB/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-GB/Microsoft.UI.Xaml.Phone.dll.mui


99. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-GB/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-GB/Microsoft.ui.xaml.dll.mui


100. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-us/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-us/Microsoft.UI.Xaml.Phone.dll.mui


101. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-us/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/en-us/Microsoft.ui.xaml.dll.mui


102. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-ES/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-ES/Microsoft.UI.Xaml.Phone.dll.mui


103. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-ES/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-ES/Microsoft.ui.xaml.dll.mui


104. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-MX/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-MX/Microsoft.UI.Xaml.Phone.dll.mui


105. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-MX/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/es-MX/Microsoft.ui.xaml.dll.mui


106. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/et-EE/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/et-EE/Microsoft.UI.Xaml.Phone.dll.mui


107. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/et-EE/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/et-EE/Microsoft.ui.xaml.dll.mui


108. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/eu-ES/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/eu-ES/Microsoft.UI.Xaml.Phone.dll.mui


109. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/eu-ES/Microsoft.ui.xaml.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/eu-ES/Microsoft.ui.xaml.dll.mui


110. Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fa-IR/Microsoft.UI.Xaml.Phone.dll.mui Additional files +0/-0

...

Audiomatic/bin/Debug/net8.0-windows10.0.19041.0/win-x64/fa-IR/Microsoft.UI.Xaml.Phone.dll.mui


111. Additional files not shown Additional files +0/-0

...

Additional files not shown


Grey Divider

Qodo Logo

@qodo-code-review
Copy link

qodo-code-review bot commented Mar 11, 2026

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Duplicate drag-drop track IDs 🐞 Bug ✓ Correctness
Description
MainWindow.ReadTrackMetadata assigns Id = -1 to every dragged-in TrackInfo, but QueueManager uses
TrackInfo.Id to locate the current track during shuffle and when recalculating the current index
after reorders. With multiple dragged files, Id-based matching will hit the wrong item (first -1),
causing the wrong track to be treated as current after shuffle/reorder.
Code

Audiomatic/MainWindow.xaml.cs[R1328-1346]

+    private static TrackInfo? ReadTrackMetadata(string filePath)
+    {
+        try
+        {
+            using var tagFile = TagLib.File.Create(filePath);
+            return new TrackInfo
+            {
+                Id = -1,
+                Path = filePath,
+                Title = string.IsNullOrWhiteSpace(tagFile.Tag.Title)
+                    ? Path.GetFileNameWithoutExtension(filePath)
+                    : tagFile.Tag.Title.Trim(),
+                Artist = tagFile.Tag.FirstPerformer?.Trim() ?? "",
+                Album = tagFile.Tag.Album?.Trim() ?? "",
+                DurationMs = (int)tagFile.Properties.Duration.TotalMilliseconds,
+                TrackNumber = (int)tagFile.Tag.Track,
+                Year = (int)tagFile.Tag.Year,
+                Genre = tagFile.Tag.FirstGenre ?? ""
+            };
Evidence
Dragged-in tracks all share Id=-1, while queue operations use FindIndex(t => t.Id == current.Id) to
relocate the current track, which becomes ambiguous when multiple tracks share the same Id.

Audiomatic/MainWindow.xaml.cs[1328-1346]
Audiomatic/Services/QueueManager.cs[124-135]
Audiomatic/Services/QueueManager.cs[207-240]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Dragged-in tracks are created with `Id = -1` for all items. Queue operations (shuffle/reorder/restore) rely on `Id` equality to relocate the current track, so multiple `-1` tracks make current-track matching ambiguous.

## Issue Context
Library tracks have stable positive IDs from SQLite; drag-drop tracks are not in the DB so their IDs need a different identity strategy.

## Fix Focus Areas
- Audiomatic/MainWindow.xaml.cs[1328-1346]
- Audiomatic/Services/QueueManager.cs[124-135]
- Audiomatic/Services/QueueManager.cs[207-242]

## Suggested fix
- Option A (recommended): Update QueueManager to match tracks by `Path` (case-insensitive) instead of `Id`, or to fall back to `Path` when `Id &lt;= 0`.
- Option B: Assign unique temporary IDs for dragged-in tracks (e.g., a monotonically-decreasing negative counter or a hash of normalized path) and ensure all queue identity comparisons use that stable value.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Queue state drops drag files 🐞 Bug ⛯ Reliability
Description
QueueManager.SaveState persists queue entries as file paths, but LoadState only rehydrates paths
that exist in the library-derived allTracks list. Drag-dropped tracks that were never added to the
library will be silently omitted on restart, so the queue persistence feature loses those items.
Code

Audiomatic/MainWindow.xaml.cs[R1283-1322]

+    private async void RootGrid_Drop(object sender, DragEventArgs e)
+    {
+        if (!e.DataView.Contains(StandardDataFormats.StorageItems)) return;
+
+        var items = await e.DataView.GetStorageItemsAsync();
+        var audioFiles = new List<string>();
+
+        foreach (var item in items)
+        {
+            if (item is StorageFile file)
+            {
+                var ext = Path.GetExtension(file.Path).ToLowerInvariant();
+                if (LibraryManager.AudioExtensions.Contains(ext))
+                    audioFiles.Add(file.Path);
+            }
+        }
+
+        if (audioFiles.Count == 0) return;
+
+        bool queueWasEmpty = _queue.Queue.Count == 0;
+
+        foreach (var filePath in audioFiles)
+        {
+            var track = ReadTrackMetadata(filePath);
+            if (track == null) continue;
+
+            if (queueWasEmpty && filePath == audioFiles[0])
+            {
+                // Empty queue — play directly
+                _queue.SetQueue([track], 0);
+                try { await _player.PlayTrackAsync(track); }
+                catch (Exception ex) { TrackArtist.Text = $"Error: {ex.Message}"; }
+                UpdateNowPlaying(track);
+                queueWasEmpty = false;
+            }
+            else
+            {
+                _queue.AddToQueue(track);
+            }
+        }
Evidence
The new drag-drop flow adds TrackInfo objects directly into the queue without inserting them into
the library database, while queue load only resolves paths via the in-library track list map;
therefore drag-dropped items cannot be restored from queue.json.

Audiomatic/MainWindow.xaml.cs[1283-1322]
Audiomatic/Services/QueueManager.cs[246-260]
Audiomatic/Services/QueueManager.cs[264-279]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Queue persistence currently only restores items that can be found in `allTracks` (library DB). Drag-dropped tracks are queued but not in the DB, so they vanish after restart.

## Issue Context
`SaveState()` persists only `TrackPaths`. `LoadState(allTracks)` reconstructs the queue by mapping those paths against the library track list.

## Fix Focus Areas
- Audiomatic/Services/QueueManager.cs[246-295]
- Audiomatic/MainWindow.xaml.cs[1283-1322]

## Suggested fix
- Add a fallback in `LoadState` for unknown paths:
 - if `File.Exists(path)`, create a TrackInfo from disk (either via a new shared metadata reader helper) and include it.
- Alternatively, expand the saved queue state to persist minimal metadata (title/artist/duration) for non-library tracks, so it can be restored even if metadata parsing is deferred.
- Consider injecting a path-&gt;TrackInfo resolver into `LoadState` to avoid making QueueManager depend on TagLib/UI.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Drop metadata blocks UI 🐞 Bug ➹ Performance
Description
RootGrid_Drop calls ReadTrackMetadata synchronously for each dropped file, and ReadTrackMetadata
performs TagLib.File.Create and tag reads synchronously. Dropping many files (or slow locations)
will block the UI thread and freeze the window during metadata parsing.
Code

Audiomatic/MainWindow.xaml.cs[R1304-1347]

+        foreach (var filePath in audioFiles)
+        {
+            var track = ReadTrackMetadata(filePath);
+            if (track == null) continue;
+
+            if (queueWasEmpty && filePath == audioFiles[0])
+            {
+                // Empty queue — play directly
+                _queue.SetQueue([track], 0);
+                try { await _player.PlayTrackAsync(track); }
+                catch (Exception ex) { TrackArtist.Text = $"Error: {ex.Message}"; }
+                UpdateNowPlaying(track);
+                queueWasEmpty = false;
+            }
+            else
+            {
+                _queue.AddToQueue(track);
+            }
+        }
+
+        if (_viewMode == ViewMode.Queue)
+            BuildQueueView();
+    }
+
+    private static TrackInfo? ReadTrackMetadata(string filePath)
+    {
+        try
+        {
+            using var tagFile = TagLib.File.Create(filePath);
+            return new TrackInfo
+            {
+                Id = -1,
+                Path = filePath,
+                Title = string.IsNullOrWhiteSpace(tagFile.Tag.Title)
+                    ? Path.GetFileNameWithoutExtension(filePath)
+                    : tagFile.Tag.Title.Trim(),
+                Artist = tagFile.Tag.FirstPerformer?.Trim() ?? "",
+                Album = tagFile.Tag.Album?.Trim() ?? "",
+                DurationMs = (int)tagFile.Properties.Duration.TotalMilliseconds,
+                TrackNumber = (int)tagFile.Tag.Track,
+                Year = (int)tagFile.Tag.Year,
+                Genre = tagFile.Tag.FirstGenre ?? ""
+            };
        }
Evidence
The drop handler is a UI event and it performs synchronous metadata extraction in a loop; TagLib
parsing is I/O + CPU work and is not awaited/offloaded, so it runs on the UI thread.

Audiomatic/MainWindow.xaml.cs[1304-1322]
Audiomatic/MainWindow.xaml.cs[1328-1346]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Drag-drop currently performs synchronous TagLib metadata extraction on the UI thread, which can freeze the app during drops.

## Issue Context
`RootGrid_Drop` is a UI event handler and calls `ReadTrackMetadata` inline for each file.

## Fix Focus Areas
- Audiomatic/MainWindow.xaml.cs[1283-1349]

## Suggested fix
- Offload metadata parsing:
 - e.g., `var tracks = await Task.WhenAll(audioFiles.Select(fp =&gt; Task.Run(() =&gt; ReadTrackMetadata(fp))));`
 - then enqueue UI updates (adding to queue, updating now-playing) after parsing.
- Optionally limit concurrency to avoid CPU spikes when dropping many files.
- Consider showing a temporary UI indicator while processing drops.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@devohmycode devohmycode merged commit 95951ca into main Mar 11, 2026
1 check passed
Comment on lines +1328 to +1346
private static TrackInfo? ReadTrackMetadata(string filePath)
{
try
{
using var tagFile = TagLib.File.Create(filePath);
return new TrackInfo
{
Id = -1,
Path = filePath,
Title = string.IsNullOrWhiteSpace(tagFile.Tag.Title)
? Path.GetFileNameWithoutExtension(filePath)
: tagFile.Tag.Title.Trim(),
Artist = tagFile.Tag.FirstPerformer?.Trim() ?? "",
Album = tagFile.Tag.Album?.Trim() ?? "",
DurationMs = (int)tagFile.Properties.Duration.TotalMilliseconds,
TrackNumber = (int)tagFile.Tag.Track,
Year = (int)tagFile.Tag.Year,
Genre = tagFile.Tag.FirstGenre ?? ""
};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Duplicate drag-drop track ids 🐞 Bug ✓ Correctness

MainWindow.ReadTrackMetadata assigns Id = -1 to every dragged-in TrackInfo, but QueueManager uses
TrackInfo.Id to locate the current track during shuffle and when recalculating the current index
after reorders. With multiple dragged files, Id-based matching will hit the wrong item (first -1),
causing the wrong track to be treated as current after shuffle/reorder.
Agent Prompt
## Issue description
Dragged-in tracks are created with `Id = -1` for all items. Queue operations (shuffle/reorder/restore) rely on `Id` equality to relocate the current track, so multiple `-1` tracks make current-track matching ambiguous.

## Issue Context
Library tracks have stable positive IDs from SQLite; drag-drop tracks are not in the DB so their IDs need a different identity strategy.

## Fix Focus Areas
- Audiomatic/MainWindow.xaml.cs[1328-1346]
- Audiomatic/Services/QueueManager.cs[124-135]
- Audiomatic/Services/QueueManager.cs[207-242]

## Suggested fix
- Option A (recommended): Update QueueManager to match tracks by `Path` (case-insensitive) instead of `Id`, or to fall back to `Path` when `Id <= 0`.
- Option B: Assign unique temporary IDs for dragged-in tracks (e.g., a monotonically-decreasing negative counter or a hash of normalized path) and ensure all queue identity comparisons use that stable value.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant