3.4 KiB
BearWave for macOS
Native macOS port of BearWave, focused on fast internet radio playback.
BearWave for macOS is a SwiftUI + AVFoundation desktop app built around the same product idea as the Linux version: quick station discovery, lightweight playback, favorites, recents, and native desktop integration without turning the app into a general-purpose audio suite.
Current release target: v0.1.0-alpha.1
Screenshots
Features
- Native macOS 26 app built with SwiftUI
- Radio Browser integration
- Top, Germany, Netherlands, World, and Search Results pages
- Favorites, recents, and manual stations
- Station folders for organizing saved stations
- Menu bar controls
- Mini Player with
Cmd+M - Explicit playback states:
- connecting
- buffering
- playing
- paused
- stopped
- failed
- Stream metadata support through
AVPlayerItemMetadataOutput - Station artwork/favicon caching
- Resume last station on launch
- English and German localization
Product Direction
This macOS version is intentionally radio-first.
That means:
- internet radio is the core product
- native macOS behavior is preferred over KDE/Qt parity
- podcast features are intentionally out of scope
License
This project follows the upstream BearWave licensing direction and is licensed under GPL-3.0-or-later.
See LICENSE.
Build
swift build --disable-index-store
Run the app bundle through the local staging script:
./script/build_and_run.sh
Useful script modes:
./script/build_and_run.sh --verify
./script/build_and_run.sh --debug
./script/build_and_run.sh --logs
./script/build_and_run.sh --telemetry
Run the lightweight checks:
CLANG_MODULE_CACHE_PATH=/private/tmp/bearwave-clang-cache swift run --disable-index-store BearWaveChecks
Project Layout
Package.swiftSwiftPM package definitionSources/BearWaveAppapp entrypoint and scene wiringSources/BearWaveCoreshared app logic, models, stores, services, views, and resourcesTests/BearWaveCheckslightweight verification executablescript/build_and_run.shlocal build, bundle, and launch scriptscreens/README screenshots
Persistence
BearWave stores data under native macOS locations:
Application Support/BearWave/favorites.jsonmanual-stations.jsongroups.jsonstate.json
Caches/BearWave/api_cache/- artwork cache files
On first run it can also import older Linux-style BearWave files when present:
~/.config/bearwave/favorites.json~/.config/bearwave/state.json
Current Status
Implemented and working:
- radio browsing and global search
- station playback
- playback status reporting
- metadata display
- favorites, recents, manual stations
- station folders
- menu bar controls
- mini player
Still pragmatic rather than release-ready:
- SwiftPM-staged
.appbundle - debug-oriented signing and packaging
- custom app-bundle staging script
This repository is currently in an early alpha state.
Roadmap
- improve release packaging, signing, and notarization
- expand playback diagnostics
- strengthen tests around playback state and search ranking
- refine cache management
- keep station folders lightweight and clearly radio-focused


