Skip to content

v0.3.0 — Downloads, Chromecast output, Now-Playing UX, Debian packaging - #1

Merged
immineal merged 1 commit into
mainfrom
feat/v0.3.0-downloads-chromecast
Jul 4, 2026
Merged

v0.3.0 — Downloads, Chromecast output, Now-Playing UX, Debian packaging#1
immineal merged 1 commit into
mainfrom
feat/v0.3.0-downloads-chromecast

Conversation

@immineal

@immineal immineal commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Summary

Ships v0.3.0 with the top community-requested features (from Reddit feedback) plus fixes and Linux distribution improvements.

Downloads

  • Per-track download to FLAC / MP3 / WAV via a native file picker, with metadata tags + embedded cover art (verified with ffprobe).

Chromecast output (Linux)

  • Native CASTV2 casting — no external helper. Avahi mDNS discovery, QSslSocket + hand-rolled protobuf control, and a built-in QTcpServer that streams the current track to the device.
  • Covers every quality tier: serves AAC directly, remuxes FLAC (downsampling hi-res >96 kHz to fit the default receiver).
  • Cast button + device picker in the player bar.

Now-Playing UX

  • Shuffle-aware "Up Next" and Queue panel (a single source of truth for upcoming tracks; refreshes when shuffle toggles).
  • "Playing from …" link that navigates back to the source playlist / album / mix / liked songs.

Fixes

  • Tray icon blank regression — loadAppIcon() now reads the :/qt/qml/TidalWave resource prefix (moved by QTP0001 NEW), with a fallback so it can't silently break again.
  • Favourites top liked song appeared twice — de-dup on append + guard overlapping load chains.
  • Quality labels — Tidal-consistent Max / High / Low (was inconsistent "HI-FI"/"MASTER"), centralized in Player::qualityLabel().

Cross-platform & packaging

  • Replaced hardcoded /tmp paths with QDir::tempPath() (this broke playback on Windows, not just downloads).
  • Guarded MPRIS/ALSA behind Q_OS_LINUX.
  • Debian package via CPack — .desktop entry, hicolor icons, and a complete Depends list (Qt6 runtime, qml6-module-*, SQLite driver, Avahi; ffmpeg as Recommends). Addresses the "dependency hunting" complaint.
  • Added push/PR CI (ubuntu/windows/macos build matrix); the release workflow now attaches the .deb.

Testing

  • Clean from-scratch build: 0 errors, 0 warnings.
  • App verified live: loads, local playback, cast button + device picker ("Searching for devices…" with no device present), Tidal-consistent quality badge, favourites shows the top song once, shuffle reorders Up Next, "Playing from Liked Songs" navigates.
  • .deb built and inspected (dpkg -c/-I): binary, desktop file, icons, and deps including libavahi-client3.
  • Not testable in CI/here: end-to-end casting to a physical Chromecast (needs a device on the LAN).

🤖 Generated with Claude Code

…ackaging

Downloads
- Per-track download to FLAC/MP3/WAV via native file picker, with tags + cover art.

Chromecast output (Linux)
- Native CASTV2 casting: Avahi mDNS discovery, TLS/protobuf session, and a
  built-in HTTP media server that streams the current track to the device.
  Covers every quality tier (FLAC up to 96kHz, or AAC); downsamples hi-res.

Now-Playing UX
- Shuffle-aware "Up Next" / queue (single source of truth for upcoming tracks).
- "Playing from <playlist/album/mix/liked songs>" navigation link.

Fixes
- Tray icon: read the :/qt/qml/TidalWave resource prefix (regressed by QTP0001 NEW).
- Favourites: stop duplicating the top liked song; guard overlapping load chains.
- Quality labels: Tidal-consistent Max/High/Low, centralized in one helper.

Cross-platform & packaging
- Replace hardcoded /tmp paths with QDir::tempPath() (fixes Windows playback).
- Guard MPRIS/ALSA behind Q_OS_LINUX.
- Debian package via CPack (.desktop entry, hicolor icons, full runtime Depends).
- Add push/PR CI (ubuntu/windows/macos); release now attaches the .deb.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@immineal
immineal merged commit dc6bec0 into main Jul 4, 2026
0 of 3 checks passed
@immineal
immineal deleted the feat/v0.3.0-downloads-chromecast branch July 4, 2026 13:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant