Thank you for your interest in improving Spotiglass. This project is a personal macOS Spotify client; contributions are welcome within the scope below.
By contributing, you agree that your contributions will be licensed under the same terms as the repository. See LICENSE for use restrictions (personal / non-commercial vs commercial licensing).
- Read docs/getting-started.md for Spotify setup.
- Read docs/architecture.md for module layout.
- Check open work in the issue tracker.
From the repository root:
make build # Debug build
make test # unit tests (unsigned: make test UNSIGNED=1)
make coverage # tests + coverage reportSee docs/building-and-testing.md for Xcode, Release bundles, and coverage gates.
Run formatting locally when you touch Swift files:
make format # requires swift-format (see docs/building-and-testing.md)Avoid drive-by reformatting of unrelated files in the same change.
The Xcode project uses explicit file references. After adding
SpotiglassTests/YourTests.swift:
python3 scripts/register-test-files.py YourTests.swiftThen run make test to confirm the file is in the test target.
If other agents or branches are active, avoid editing these areas unless you own that slice:
Spotiglass/CommandPalette/Spotiglass/Views/Spotiglass/Playback/Session/Spotiglass/Playback/QueueViewModel.swiftSpotiglass/Auth/Spotiglass/Browsing/Spotiglass/Services/SpotiglassTests/(when a test rework is in flight)
Coordinate before editing Spotiglass.xcodeproj/project.pbxproj.
- Keep changes focused; one concern per PR when possible.
- Update the narrowest doc in
docs/if behavior or setup changes (start from docs/README.md, the doc index). - Do not commit secrets,
.envfiles, or Keychain exports. - Confirm
make build(andmake testwhen you change testable logic).
See SECURITY.md for vulnerability reporting.