vibez v1.1.0 — Apple Music and Local Audio in your terminal, now with Native Windows support and Dithered Unicode Album Art
▲ 3 r/AppleMusic+1 crossposts

vibez v1.1.0 — Apple Music and Local Audio in your terminal, now with Native Windows support and Dithered Unicode Album Art

Hey,

A few weeks ago I released vibez (https://github.com/simonepelosi/vibez), an open-source, keyboard-first TUI music player built with Go and Bubble Tea. It lets you stream full-track Apple Music and local audio files directly from your terminal, without needing Cider, Electron wrappers, or official apps.

Today I am happy to announce vibez v1.1.0, introducing native Windows support, crisp dithered album art, and stability fixes.

---

### What is vibez?

For those discovering it for the first time:
- Full-track streaming: Apple Music streaming via a headless Chrome session and Widevine CDM (not 30-second preview clips).
- Local playback: Play your local MP3, FLAC, M4A/AAC, and OGG collection with a built-in 10-band parametric EQ.
- Vibe Mode (v): Type what you are doing or feeling in plain English ("late night lofi coding", "synthwave highway"), and vibez curates a tailored queue for you.
- Discovery and Radio Modes (d / R): Continuous smart auto-queue with dialable similarity from same-artist to pure exploration.
- Vim-style navigation: Jump with gg/G, scroll with j/k, and command line mode with : (:save, :vol, :mute).
- Animated mascot: A terminal bear that naps when idle and dances when music is playing.
- System integration: Discord Rich Presence (RPC), Last.fm scrobbling, and desktop notifications.

---

### What is New in v1.1.0?

#### 1. Native Windows Support (amd64, Pure Go, Zero CGO)
Until now, Windows users had to rely on WSL2. v1.1.0 brings first-class native Windows builds:
- Automated Google Chrome discovery across registry App Paths, per-user paths, and PATH.
- Local audio playback served over an authenticated, loopback HTTP session.
- Native Discord Rich Presence over Windows named pipes (\\.\pipe\discord-ipc-*).
- Windows self-updating with automatic rollback if binary replacement fails.
- Thanks to @hiKareeem for implementing native Windows support (#148).

#### 2. Dithered Album Art (:art) with Unicode Sextants
The :art view has been completely overhauled:
- Downsamples album covers to a 16-color palette and applies Atkinson error-diffusion dithering.
- Renders using Unicode sextants (U+1FB00) (2x3 sub-pixels per terminal cell). On modern terminals that render sextants natively (kitty, Ghostty, WezTerm, Alacritty, foot), covers look sharp and gap-free.
- Automatically falls back to half-blocks on terminals without sextant support (such as Apple Terminal).
- Thanks to @chriopter for implementing this renderer (#146).

#### 3. Linux In-Place Auto-Update Fix
- Fixed an issue where the self-updater on Linux silently failed with ETXTBSY ("Text file busy") when verifying file writability on the executing binary. The updater now probes directory permissions properly.
- Thanks to @ianswope for uncovering and fixing this bug (#160).

#### 4. Concurrency and Stability Polish
- MusicKit Debouncing: Prevented duplicated m.play() calls and race conditions when rapidly changing queues or resuming tracks (thanks to @Wang-Yang-source, #153).
- Data Race Fix: Synchronized request logging across goroutines with a mutex in Apple Music search tests (thanks to @ianswope, #159).

---

### Installation and Getting Started

#### Linux / macOS (One-liner):
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/simonepelosi/vibez/main/scripts/install.sh | sh

#### Windows:
Download the pre-compiled vibez_windows_amd64.zip archive from the GitHub Releases page, or build from source:
go build -o vibez.exe .

#### Already installed?
Run:
vibez update

#### Test-drive without an Apple Music subscription:
You can test the full TUI with simulated playback using demo mode, or point it to your local music directory:
```sh
vibez --demo
# Or local library:
vibez --local --music-dir ~/Music
```

---

### Links

- GitHub Repository: https://github.com/simonepelosi/vibez
- Release Notes: https://github.com/simonepelosi/vibez/releases/tag/v1.1.0

Feedback, bug reports, and terminal setup impressions are welcome!

u/pelpsi — 5 days ago
▲ 31 r/linuxapps+1 crossposts

I built Vibez, a fast keyboard-driven Apple Music terminal player and v1.0.0 is out now!

Hey everyone,

I'm happy to announce that **[vibez](https://github.com/simonepelosi/vibez) has reached its v1.0.0 milestone!**
What started as a personal project to listen to Apple Music without heavy desktop apps has grown into a full-featured, keyboard-driven music player for Linux and macOS, built with Go and Charm's [Bubble Tea](https://github.com/charmbracelet/bubbletea).

---

### What is vibez?

**vibez** brings your Apple Music library and catalog into a terminal interface. It does not rely on Electron wrappers or separate browser tabs.
---

### What's New in v1.0.0:

* **Discord Rich Presence (RPC)**:
- Broadcasts track title, artist, album, high-resolution artwork, and a live progress bar to your Discord profile.
- Implemented in pure Go communicating directly over local Unix domain sockets without external dependencies or heavy RPC libraries.
- Automatically resyncs on seek actions and repeat-one loops, with non-blocking fallback and a `--no-discord` flag.
* **Local Offline Playback (`--local`)**:
- Play MP3, FLAC, M4A, and OGG files directly from your storage.
- Powered by native CoreAudio on macOS and GStreamer on Linux.
* **Hardened Audio Engine & Diagnostics**:
- Resilient process lifecycle management, native MusicKit queue advancement, and empty library diagnostics.

---

### Core Features:

* **Vibe Mode (`v`)**: Describe a mood in plain English ("late night lofi coding", "80s synthwave night drive"), and vibez dynamically searches and queues matching tracks.
* **Discovery & Radio Modes (`d` / `R`)**: Continuous station generation seeded from any track, with an adjustable similarity dial ranging from "same artist" (0.9) to "pure discovery" (0.0).
* **10-Band Parametric Equalizer (`e`)**: Full parametric EQ with real-time curve adjustments and persistent configuration.
* **Keyboard-First Workflow**: Vim-style navigation (`j`/`k`, `gg`, `G`), command prompt (`:`), MPRIS D-Bus integration on Linux, and desktop notifications.
* **Themes**: Built-in palettes for Tokyo Night, Catppuccin, Dracula, Gruvbox, and Nord.
* **Mascot Animation**: Terminal ASCII mascot that animates during playback and rests when paused.
* **Last.fm Scrobbling**: Built-in background scrobbler support.

---

### Installation

Install via the shell script:
```bash
curl -fsSL https://raw.githubusercontent.com/simonepelosi/vibez/main/install.sh | bash
```

Links
GitHub: https://github.com/simonepelosi/vibez
Release Notes: https://github.com/simonepelosi/vibez/releases/tag/v1.0.0
Demo Mode: Run vibez --demo to explore the interface with built-in tracks without any credentials.

Thanks to all contributors who submitted issues, reviewed pull requests, and helped test across platforms. Feedback and suggestions are always welcome.

u/pelpsi — 16 days ago
▲ 7 r/AppleMusic+1 crossposts

Vibez v0.6.0 — Album art in your terminal, Linux arm64 playback, macOS installer + more

Hey everyone!

I've been building vibez — a TUI Apple Music player for Linux and macOS built with Go and Bubble Tea.

Version 0.6.0 is out today!

Here is what's new in this release:

Album-art view (:art)
You can now render album covers directly inside your terminal. Type :art to toggle the now-playing panel between the standard progress bar and high-res album covers rendered as colored Unicode blocks. Covers are automatically downloaded, scaled to fit your terminal grid with square aspect ratio calculation, and cached per size.

Linux arm64 (aarch64) full-track playback
Full-track playback via Chrome/CDP now runs on Linux arm64 systems. Vibez automatically detects system Chromium and registered Widevine CDMs (such as Raspberry Pi / Arch ARM setups) to provide full streaming support.

macOS installation support
The install.sh script now fully supports macOS on both Apple Silicon and Intel architectures. It automatically detects local Google Chrome installations and handles macOS-native checksum verification.

Smarter Radio Mode
Radio mode (R) can now be seeded directly from songs in your personal library in addition to catalog tracks. Radio refills now page larger batches under the hood to ensure continuous playback.

MPRIS D-Bus Improvements
Fixed an issue where previous track metadata (like cover art, title, or artist) lingered in Linux desktop widgets, Waybar, or playerctl after track changes or stopping playback. Metadata keys are now cleanly zeroed out on every state update.

Better error reporting & fixes

Installation & Links
GitHub Repository: https://github.com/simonepelosi/vibez
One-line installer: curl -fsSL https://raw.githubusercontent.com/simonepelosi/vibez/main/scripts/install.sh | bash

Feedback, suggestions, and issue reports are very welcome. If you enjoy using vibez, a star on GitHub would mean a lot!

u/pelpsi — 2 months ago
▲ 91 r/AppleMusic+5 crossposts

Vibez 0.3.0 out now! TUI Apple Music player for Linux and MacOS - thanks for 100+ stars on GitHub!

Hey!

I've been building vibez, a TUI Apple Music player for Linux and MacOS

v0.3.0 is out today!

Here's what changed:

Play Next

Press Shift+Tab on albums, artists, recommendations, or tracks to insert them right after the currently playing song.

Better queue management

You can now reorder the queue with Shift+↑/↓ (or **Ctrl+↑/↓**). The selection automatically follows the moved track, making queue editing much smoother.

Keyboard shortcut docs

The README and in-app help now document Tab (add to queue), Shift+Tab (play next), and Shift+↑/↓ (move in queue).

More reliable playback

Improved Widevine DRM support for headless playback and macOS, fixing playback issues and CONTENT_UNSUPPORTED/"no DRM" errors in Chrome-based streaming.

Better authentication

Expired Apple Music user tokens are now detected during startup and automatically trigger the re-authentication flow instead of leaving the player stuck on initialization.

Fixes

* Gracefully handle empty Apple Music libraries and Favorites (404 responses now return empty collections instead of failing).
* Fixed equalizer keyboard conflicts, so navigation keys no longer interfere with playback controls while the EQ panel is open.

Install, instructions and more: https://github.com/simonepelosi/vibez

Feedback and issues are very welcome. If you're enjoying vibez, a star on GitHub would mean a lot!

u/pelpsi — 3 months ago
▲ 69 r/linuxaudio+7 crossposts

Vibez v0.2.0 — Apple Music in your terminal, now with library browsing, 10-band EQ, macOS/WSL2 support + more

Hey!!

I've been building vibez — a TUI Apple Music player for Linux. Think cmus or ncspot, but for Apple Music.

v0.2.0 is out today. Here's what changed:

Library browsing

You can now browse your personal Apple Music library sections for Songs, Albums, Artists, and Playlists directly from the interface.

10-band parametric EQ

Fine-tune your playback using a new 10-band parametric equalizer. Settings are fully persisted so your custom mix is saved across sessions.

Configurable audio quality

Take control of your bandwidth and sound. You can now configure your preferred Apple Music audio quality inside your config or change it on
the fly via the :quality command.

macOS & WSL2 support

We've expanded platform compatibility: vibez now supports macOS natively via Chrome/CDP playback and introduces a dedicated workaround flag
to fix audio issues under WSL2.

Fixes

Playlist browsing now gracefully falls back to ?include=tracks if Apple's API returns a 404 for library track requests.

Library loading errors are now properly surfaced in the UI instead of failing silently.

Clearer local-build auth guidance is now displayed on 401 Apple Music API errors.

Install, instructions and more: https://github.com/simonepelosi/vibez

Feedback and issues very welcome — still early days. Star if you like it!

u/pelpsi — 5 months ago
▲ 34 r/linuxaudio+4 crossposts

Vibez v0.1.0 — Apple Music in your Linux terminal, now with auto-update, playlist editing + more

Hey!

I've been building vibez — a TUI Apple Music player for Linux.
v0.1.0 is out today!

Here's what changed:

Auto-update:

vibez now checks GitHub for a new release on startup (once per 24 h). If one is available, it downloads the binary, verifies its SHA-256 checksum, atomically replaces itself, and re-execs — all while showing progress on the loading screen. Pass --no-update to skip it.

Expired session detection:

Before starting the audio engine, vibez now probes Apple Music with the stored user token. If it gets a 401/403 it clears the token and re-authenticates cleanly, instead of looping silently.

Add tracks to playlists:

Press p on any queue item (or ctrl+p in search results) to add it to an existing Apple Music library playlist.

Streaming quality in header:

The current MusicKit bitrate (e.g. 256 kbps) is now shown next to the volume indicator. vibez also explicitly requests the highest available quality.

Fixes:

MPRIS app icon now resolves correctly in desktop media panels and notifications.

Install, instructions and more: https://github.com/simonepelosi/vibez

Feedback and issues very welcome — still early days. Star if you like it!

u/pelpsi — 5 months ago
▲ 3 r/golang

Hey all,

I’m building Vibez, a Go-based app that integrates with Apple Music via MusicKit JS. Right now I’m relying on a headless Chrome instance to handle the web auth flow and playback context, but this feels pretty heavy and fragile.

Repo is there: https://github.com/simonepelosi/vibez

What I’d like to achieve is:
- Remove the Chrome/headless browser dependency entirely
- Handle auth + playback in a cleaner, more backend-driven way (ideally Go-native)
- Still respect Apple Music’s requirements (user token, DRM, etc.)

From what I understand:
- MusicKit JS requires a browser context for user authorization
- Playback is tied to that web environment
- There doesn’t seem to be an official “pure API” way to fully replace it

So I’m wondering:

  1. Has anyone successfully removed headless Chrome when working with MusicKit or similar web-based SDKs?
  2. Are there alternative approaches (e.g. delegating auth to a real browser once, then reusing tokens)?
  3. Is this fundamentally impossible due to DRM / WebKit / FairPlay constraints?
  4. Any Go-friendly patterns for handling this kind of hybrid web/native flow?

I’m open to rethinking the architecture (e.g. separating discovery from playback), but I’d like to avoid spinning up a browser just to make this work.

Curious if anyone has tackled something similar or has insights into cleaner approaches.

Thanks!

u/pelpsi — 5 months ago
▲ 17 r/ASCII

Hey! I'm developing Vibez, an Apple Music TUI player (available there: https://github.com/simonepelosi/vibez ) and I need a feedback for the UI: do you think that the Album ASCII art could fit there? If yes do you have some suggestion/reccomandation ?

u/pelpsi — 6 months ago
▲ 39 r/vibecoders_+9 crossposts

Hey 🐻👋

I've been building vibez — a TUI Apple Music player for Linux that streams full tracks (not 30-second previews) via a headless Chrome +

Widevine DRM. Think cmus or ncspot, but for Apple Music.

v0.0.9 is out today. Here's what changed:

🎨 Themes

Four built-in themes ship now: default (Tokyo Night / Catppuccin), dracula, gruvbox, and nord.

Just drop "theme": "dracula" in ~/.config/vibez/config.json. You can also roll your own palette as a JSON file in

~/.config/vibez/themes/<name>.json — all 20+ color roles are themeable: core palette, progress bar, glow animation, mode chips, even the bear 🐻.

🐛 Fixes that actually matter

- TUI no longer freezes ~500 ms on every track change — _stopAndWait was blocking on the wrong playback states.

- Glow + bear animation no longer speed up over time.

- Library panel was silently broken.

- Apple Music favorites.

- Lyrics panel now loads lazily.

Install, instruction and more there: https://github.com/simonepelosi/vibez

Feedback and issues very welcome — still early days. ⭐️ if you like it!

u/pelpsi — 6 months ago
▲ 22 r/CLI

Hey 🐻👋

I've been building vibez — a TUI Apple Music player for Linux that streams full tracks (not 30-second previews) via a headless Chrome +

Widevine DRM. Think cmus or ncspot, but for Apple Music.

v0.0.9 is out today. Here's what changed:

🎨 Themes

Four built-in themes ship now: default (Tokyo Night / Catppuccin), dracula, gruvbox, and nord.

Just drop "theme": "dracula" in ~/.config/vibez/config.json. You can also roll your own palette as a JSON file in

~/.config/vibez/themes/<name>.json — all 20+ color roles are themeable: core palette, progress bar, glow animation, mode chips, even the bear 🐻.

🐛 Fixes that actually matter

- TUI no longer freezes ~500 ms on every track change — _stopAndWait was blocking on the wrong playback states.

- Glow + bear animation no longer speed up over time.

- Library panel was silently broken.

- Apple Music favorites.

- Lyrics panel now loads lazily.

Install, instruction and more there: https://github.com/simonepelosi/vibez

Feedback and issues very welcome — still early days. ⭐️ if you like it!

u/pelpsi — 6 months ago
▲ 31 r/linuxapps+1 crossposts

Hey 👋

Just dropped v0.0.8 of vibez, my open-source Apple Music TUI for Linux. Here's what's new:

🎙 Last.fm scrobbling Run vibez auth lastfm login once and vibez will automatically:

- Send a Now Playing update when a track starts

- Scrobble it once you've hit 50% playtime (or 4 minutes, whichever comes first)

- Ignore tracks under 30 s and correctly exclude paused time

⏩ Seek Finally! Press ← / → to jump ±10 seconds in the current track. Or use :seek 90 to jump to an exact second.

🔍 Search now returns albums & playlists The / search popup now shows a unified Tracks / Albums / Playlists list, colour-coded by section.

Hit Enter to play, Tab to queue — works on all three types.

Check my repo for trying out (please let me know ❤️): https://github.com/simonepelosi/vibez

u/pelpsi — 6 months ago