# Changelog
All notable changes to the **Omarchy Vibez** plugin will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## [0.2.0] - 2026-09-11
### Added
- **Synced Lyrics Viewer**:
- Embedded synced LRC lyrics drawer in the popup panel powered by LRCLIB API.
- Python helper script (`scripts/get-lyrics.py`) with automatic caching (`~/.cache/omarchy-vibez/lyrics/`), query fallback, and LRC parsing.
- Real-time line-by-line lyric highlighting synchronized to current playback timestamp.
- Automatic vertical scrolling keeping the active lyric centered in view.
- Interactive click-to-seek on any lyric line to jump directly to that point in the song.
- Keyboard toggle shortcut (`y` or `l`) and IPC action (`lyrics`).
- **Animated Equalizer Icon**:
- Dynamic 3-bar audio equalizer pulsing animation in the Omarchy status bar icon and panel header during active playback.
- Can be toggled on/off in widget settings via `animatedIcon`.
- **Shuffle & Repeat Modes**:
- One-click toggles for Shuffle (`On` / `Off`) and Repeat (`Off` / `All` / `One`).
- Keyboard shortcuts (`s` for Shuffle, `r` for Repeat) inside the popup panel.
- IPC actions for keybindings: `shuffle` and `repeat`.
- Visual status badges and color accents matching Omarchy active theme.
- **Native Omarchy OSD Toast Notifications**:
- Instant on-screen display (OSD) toasts using `omarchy.osd` whenever songs change (`
- `).
- Toast confirmation feedback when toggling Shuffle mode or cycling Repeat mode.
- Configurable via `notifyOnTrackChange` in widget settings.
- **Supervisor & Systemd Session Isolation**:
- Launched in an isolated user systemd scope (`systemd-run --user --unit=omarchy-vibez-session`), decoupling background audio playback from terminal emulator cgroups.
- Closing terminal windows (Ghostty, Alacritty, Kitty, Foot) cleanly detaches without terminating the `vibez` playback daemon or tmux session.
- Dedicated supervisor loop (`scripts/vibez-supervisor.sh`) for automatic crash recovery and clean teardown.
### Changed
- Bumped plugin version to `0.2.0` in `manifest.json`.
- Expanded IPC protocol to support `shuffle`, `repeat`, and `lyrics` commands.
- Enhanced seek bar with real-time scrub feedback, elapsed/remaining time indicators, and responsive theme styling.
- Refreshed high-resolution visual assets (`preview.png` 1920x1080 banner, `assets/panel.png`, and `assets/vibez-tui.png`).
- Updated `README.md` with comprehensive documentation of keyboard shortcuts, IPC commands, and configuration options.
### Fixed
- Fixed issue where closing the terminal emulator window closed the entire tmux session and stopped music under Hyprland / systemd transient scopes.
- Fixed race condition where OSD toast notifications showed placeholder text (`▶| vibez`) before MPRIS metadata finished loading.
- Fixed supervisor script accidentally terminating its own execution loop when killing child processes.
---
## [0.1.0] - 2026-08-20
### Added
- Initial release of the **Omarchy Vibez** plugin for the Omarchy status bar.
- Native Quickshell bar widget displaying now-playing status, track title, and artist.
- Interactive popup panel featuring:
- Album artwork display with rounded corners and adaptive aspect ratio.
- Track metadata (title, artist, album).
- Seekable progress bar with formatted elapsed and total duration (`mm:ss`).
- Media transport buttons (Previous, Play/Pause, Next).
- Quick launcher button to open or attach to `vibez` TUI in a persistent terminal.
- Mouse interaction on the status bar:
- Left click to toggle popup panel (or play/pause).
- Middle click and right click to toggle play/pause.
- Mouse wheel scrolling (up/down) to skip to next/previous tracks.
- Persistent playback architecture running `vibez` inside a managed background `tmux` session.
- IPC interface exposing actions: `toggle`, `playpause`, `next`, `previous`, `launch`, `status`, and `track`.
- Seamless Omarchy theming integration adapting to system colors, borders, and typography.
- Prerequisite validation script (`scripts/check-prereqs.sh`).
- Full configuration schema supporting widget customization (`showTitle`, `showArtist`, `showLabelOnBar`, `maxLabelWidth`, `hideWhenClosed`, `leftClick`, `scrollAction`).