2.5 KiB
Repository Guidelines
Project Structure & Module Organization
HarmonyWinUI/ contains the unpackaged WinUI 3 application targeting .NET 8. Application startup and the main shell live in App.xaml* and MainWindow.xaml*. Put navigable views and their code-behind in HarmonyWinUI/Pages/, domain and service classes in HarmonyWinUI/Models/, and packaged images in HarmonyWinUI/Assets/. Publish settings are under HarmonyWinUI/Properties/PublishProfiles/. The root vendor/ directory holds external tools such as yt-dlp and FFmpeg; treat downloaded media and temporary files there as local artifacts. Generated bin/, obj/, and .vs/ content must not be edited or committed.
Build, Test, and Development Commands
Run commands from the repository root:
dotnet restore HarmonyWinUI/HarmonyWinUI.slnx
dotnet build HarmonyWinUI/HarmonyWinUI.csproj -c Debug -p:Platform=x64
dotnet run --project HarmonyWinUI/HarmonyWinUI.csproj -c Debug -r win-x64
dotnet publish HarmonyWinUI/HarmonyWinUI.csproj -c Release -r win-x64
Restore downloads NuGet dependencies; build compiles C# and XAML; run launches the unpackaged x64 app; publish creates the self-contained release output. ARM64 is also supported by replacing x64/win-x64 with ARM64/win-arm64.
Coding Style & Naming Conventions
Follow HarmonyWinUI/.editorconfig: tabs with width 4, LF endings, braces for blocks, nullable reference types, and using directives outside namespaces. Use PascalCase for types, properties, events, and methods; prefix interfaces with I. Keep UI concerns in Pages or XAML and network/process logic in Models. Never edit generated *.g.cs or *.g.i.cs files.
Testing Guidelines
No automated test project currently exists. Every change must at least pass the x64 Debug build. Manually verify affected navigation, MusicBrainz search and Retry/Cancel behavior, playlist resizing, and vendor executable discovery as applicable. Add future tests in a separate HarmonyWinUI.Tests project and name cases Method_Scenario_ExpectedResult.
Commit & Pull Request Guidelines
History favors short, single-purpose messages such as added play list into right column and implemented search artists in MusicBrainz. Keep commits focused and use a concise imperative summary. Pull requests should explain behavior changes, list build/manual-test results, link relevant issues, and include before/after screenshots for UI changes. Do not include .user files, downloaded media, FFmpeg archives, credentials, or machine-specific publish settings.