This repo is organized so the app can keep improving without mixing UI, input, audio, and pack tooling together.
Use a normal .NET 8 SDK if it is installed:
dotnet build .\SoundType.sln
dotnet test .\SoundType.slnIn this workspace, a local SDK is available at .tools/dotnet:
.\.tools\dotnet\dotnet.exe build .\SoundType.sln
.\.tools\dotnet\dotnet.exe test .\SoundType.slnThe .tools folder is intentionally ignored and should stay out of commits.
.\.tools\dotnet\dotnet.exe run --project .\src\SoundType.App\SoundType.App.csprojSoundType stores user settings at %AppData%\SoundType\settings.json.
| Project | Owns |
|---|---|
SoundType.App |
WPF screens, tray menu, user interaction, import/export dialogs |
SoundType.Audio |
Playback queue, NAudio integration, decoding, pitch, EQ, limiter |
SoundType.Core |
Pack contracts, settings contracts, app-rule decisions, validation |
SoundType.Input |
Keyboard hook, global hotkey, active foreground app detection |
SoundType.Tests |
Regressions around packs, rules, settings, audio primitives, import tooling |
Prefer adding logic to the lowest project that owns the behavior. UI code should orchestrate services, not duplicate validation or audio rules.
For quick repo orientation, use REPO_GUIDE.md. The WPF shell is intentionally split by ownership where it is low-risk:
| Path | Owns |
|---|---|
src/SoundType.App/MainWindow.xaml |
Current WPF layout |
src/SoundType.App/MainWindow.xaml.cs |
Window orchestration and event handlers |
src/SoundType.App/ViewModels |
Display-only list items and small UI binding models |
src/SoundType.App/Controls |
Reusable WPF controls |
The repository is currently cleaned back to main only. If future feature branches are needed, delete merged branches after the PR lands so Codex and humans both start from an obvious base.
Before pushing app changes, run:
.\.tools\dotnet\dotnet.exe build .\SoundType.sln
.\.tools\dotnet\dotnet.exe test .\SoundType.slnFor changes touching tray, startup, or audio, also run the manual checklist in QA_CHECKLIST.md.
| Folder | Why ignored |
|---|---|
.tools |
Local SDK/runtime helpers |
.external |
Temporary reference repos or audio research |
.worktrees |
Temporary git worktrees for parallel implementation |
artifacts |
Build and packaging outputs |
Keep committed source, docs, assets, tests, and scripts in the visible repo tree.
Use artifacts\publish\SoundType\SoundType.exe for direct no-extraction local launch checks after packaging. Keep release screenshots under artifacts\screenshots and temporary UI QA captures under artifacts\ui-qa so the artifact root remains readable.