Prerequisites
macOS 15+
SeeleSeek targets macOS 15 (Sequoia) or later. Both building and running the app require this version.
Xcode 15+ (Swift 6.x)
The project uses Swift 6 concurrency features (
@Observable, @MainActor, actors). Xcode 15 or newer is required.Getting the Code
Open the project
Open Xcode will resolve the Swift Package Manager dependency (GRDB.swift) automatically on first open.
seeleseek.xcodeproj in Xcode:Dependencies
SeeleSeek has a single external dependency managed via Swift Package Manager:| Package | Purpose |
|---|---|
| GRDB.swift | SQLite persistence — download queue, search cache, browse cache, message history, wishlists |
Running Tests
The test suite lives inseeleseekTests/. Run it from Xcode with ⌘U, or from the command line:
Tests run without code signing, which matches the CI environment. If a test requires network access it will be skipped in sandboxed or offline environments.
CI/CD
GitHub Actions workflows are defined in.github/workflows/:
build.yml — Build and test on every push/PR
build.yml — Build and test on every push/PR
Triggered on pushes and pull requests targeting
main. Runs two parallel jobs on macos-26:- Build — compiles the Release configuration with
xcodebuild. - Test — runs the full unit test suite with
xcodebuild test.
release.yml — Signed release on version tags
release.yml — Signed release on version tags
nightly.yml — Branch build artifact
nightly.yml — Branch build artifact
Triggered on pushes to any branch except
main. Archives the app with ad-hoc signing, renames it to SeeleSeek Nightly, and uploads a .zip artifact retained for 5 days. This lets you test unreleased changes without affecting the stable release channel.Contributing
Contributions are welcome.Open an issue first for large changes
Before investing time in a large feature or refactor, open an issue to discuss the approach. This avoids duplicated effort and ensures the change fits the project direction.
Make your changes
Follow the existing code style — Swift 6 strict concurrency,
@Observable state classes, @MainActor for UI updates. See the Architecture page for structural conventions.Reporting Bugs
Open a GitHub issue and include:- macOS version and SeeleSeek version
- Steps to reproduce
- Expected vs actual behavior
- Console logs if relevant (open Console.app and filter by
com.seeleseek)