Skip to content

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.

Privacy, Logging and Diagnostics

  • 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 .log file. 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.

Updates and Distribution

  • 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.

Engineering and Quality

For the technically curious, the foundations under all of the above:

  • Swift 6 strict concurrency: @MainActor isolation, Sendable where 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.

Planned and Not Yet Shipped

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.

Clone this wiki locally