# TODO

This file tracks the next practical work items for BearWave on macOS.

## High Priority

- Harden packaging and distribution
  - move beyond the current SwiftPM-staged debug-style app bundle
  - clarify signing, entitlements, and notarization path

- Expand playback diagnostics
  - expose clearer failure reasons per stream
  - improve visibility into buffering, retry, offline, and codec issues

- Add more verification around playback behavior
  - playback state transitions
  - metadata updates
  - retry behavior

## Medium Priority

- Improve cache management
  - add eviction for API cache
  - add eviction for artwork cache
  - review memory growth during long sessions

- Refine artwork behavior
  - make fallback ordering more explicit
  - verify radio artwork behavior across edge cases

- Tighten documentation drift
  - keep `README.md`, `AGENTS.md`, and `ARCHITECTURE.md` aligned with code changes

## Lower Priority

- More advanced favorites/folder workflows
- Additional menu bar workflows
- More targeted UI polish for empty/loading/error states

## Technical Debt

- `AppModel` should stay under control as the app grows; watch for coordinator bloat
- `script/build_and_run.sh` is central to local development and currently carries packaging assumptions that should eventually move into a cleaner release pipeline
- The share-folder copy of the repo should not be treated as the current source of truth

## Things Not To Regress

- Global search must stay independent from the current browse page
- Search ranking must stay stricter than raw API substring results
- Explicit playback states must remain visible in the model and UI
