Repository navigation
Features Privacy and Engineering
Chris Funderburg edited this page Oct 1, 2026
·
3 revisions
Privacy, diagnostics, distribution, how the app is built, and what is not shipped yet. This page is part of the Feature List and describes shipped functionality only.
- No analytics, no network telemetry, no usage stats. The app's privacy manifest declares no tracking and an empty tracking-domains list. Telemetry means Instruments signposts on your own machine, nothing more.
- Crash reporting is consent-gated and off by default. MetricKit diagnostic payloads are written to a local folder, never logged (they contain stack frames and paths), and shared only if you choose to attach one to an issue.
-
In-app Log Console (⌘⇧L): every log line since launch with live tailing, level and category filters, free-text search, pause and resume, copy, and export to a
.logfile. Diagnose a problem without leaving the app. Log capture itself can be switched off. - Log redaction keeps file paths and identifiers out of the system log.
- Rebuild Full-Text Search Index and Export Diagnostics are available in Settings, Advanced.
How to use them: Troubleshooting.
-
Signed and notarized DMG from bocan.app/download or GitHub Releases, and a Homebrew tap (
brew tap bocan/bocan && brew install bocan). - Sparkle in-app updates with EdDSA-signed appcasts: checks automatically, never installs silently.
- Signed with a Developer ID and notarised by Apple. The release app is not sandboxed.
How to install and update: Installation.
For the technically curious, the foundations under all of the above:
-
Swift 6 strict concurrency:
@MainActorisolation,Sendablewhere it matters, zero data races by design. - Twelve clean SPM modules (Observability, Persistence, AudioEngine, Metadata, Acoustics, Subsonic, Library, Playback, Scrobble, Podcasts, SyncServer, UI) with no upward imports and their own test suites.
- An 80% line-coverage gate in CI; the build fails if coverage drops.
- GRDB 7 with typed repositories, FTS5 full-text search, reactive observation, and 53 numbered schema migrations.
- A serious end-to-end XCUITest suite: menu crawls, shortcut-parity tests, settings and window crawls, visualizer liveness checks, accessibility audits, and hermetic loopback servers standing in for radio stations and podcast feeds.
- XcodeGen project generation, SwiftLint, SwiftFormat, gitleaks, Snyk, and Dependabot on every pull request, and a weekly automated dependency-freshness check.
- Localization-ready with a full String Catalog (about 2,200 keys), though English is currently the only shipping language.
Listed so this page never oversells:
- No AppleScript, Shortcuts, or URL-scheme automation yet. Automation today means media keys, Control Center, and Siri through the system remote-command centre.
- Translations: the infrastructure is in place, but only English ships today.
bocan.app · Source · Report an issue · Releases · Apache 2.0
Features
- Overview
- Playback and Sound
- Formats
- Library
- Browsing and Playlists
- Interface
- Sources and Sync
- Privacy and Engineering
User Guide
In-App Help
- Getting Started
- Podcasts
- Internet Radio
- Subsonic Servers
- Keyboard Shortcuts
- Mouse Buttons
- Supported Formats
Developer Documentation
Design Notes
Links