Commit Graph

12 Commits

Author SHA1 Message Date
lentikr 184a67e519 feat(lyrics,mediactl): embed local lyrics and album art in MPRIS/NowPlaying
Read embedded lyrics (LRC or plain text) and cover art from local file
tags at play time. Lyrics are preferred over network fetch when present;
album art is cached by content hash under ~/.local/share/cliamp/album-art/
and published via mpris:artUrl (Linux) and MPNowPlayingInfoCenter (macOS).
2026-06-29 20:17:41 +08:00
Bjarne Øverli 5dbf703880 spotify: show OAuth URL in TUI during interactive sign-in
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
When the auto-launched browser doesn't reach the user (containers,
headless envs, missing xdg-open), the auth flow used to silently
hang for 5 minutes and then time out. Surface the OAuth URL in the
provider loading view so the user can paste it into a browser
manually. Also log the URL via applog.Info so it's preserved for
support reports.

Closes #220
2026-05-10 18:56:10 +02:00
Bjarne Øverli e14d84c419 Add play/append/queue actions to Spotify and YouTube search results
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
Search results overlays now support Enter (play now), a (append), and
q (queue next) on the selected track, instead of only routing to a
Spotify cloud-playlist add. The cloud-playlist add moves to p.

YouTube/SoundCloud net search gains a results picker (ytsearch10 /
scsearch10) using the same keymap, replacing the previous one-shot
ytsearch1 auto-queue. Adds shared playTrackImmediate / appendTrack /
queueTrackNext helpers and closeNetSearch / closeSpotSearch helpers
that drop cached result slices on close.

playlist.IsYTSearch generalises the ytsearch:/ytsearchN:/scsearch:/
scsearchN: prefix check used by IsURL, IsYouTubeURL, and IsYTDL.
2026-05-01 21:15:40 +02:00
Bjarne Øverli 2f7044d071 Add cliamp.message plugin API for status bar messages
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
Plugins can now call cliamp.message(text, duration_secs?) to display
transient messages in the UI status bar. Closes #175.

Delivery flows through prog.Send to the Bubbletea model thread, so
plugin timers and event handlers never touch UI state directly.
2026-04-17 19:06:13 +02:00
Gjermund Garaba 9a78b3e3f1 feat: support media controller on mac (#172)
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
* feat: support media controller on mac

* fix(notifications): publish current playback state when media notifier attaches

* fix(darwin): lock startup to the Cocoa main thread

* refactor: cleanup and simplify

* missed cleanup
2026-04-07 08:56:17 +02:00
Bjarne Øverli 73a040c270 Extract player.Engine interface and ConfigSaver to decouple TUI model
The Model held a concrete *player.Player and called config.Save()
  directly, making it untestable without a live audio backend and
  real filesystem. This extracts two interfaces:

  - player.Engine: 30-method interface covering all Player methods the
    TUI uses. The Model now accepts player.Engine, enabling mock-based
    testing of the playback state machine.

  - model.ConfigSaver: single-method interface for config persistence.
    All 11 config.Save() calls in ui/model/ now go through
    m.configSaver, removing the direct filesystem dependency.
2026-04-02 20:47:24 +02:00
Gjermund Garaba b6deffe92b chore(deps): bump to charm.land v2 dependencies (#161)
Co-authored-by: bjarneo <bjarneo@users.noreply.github.com>
2026-04-02 15:49:51 +02:00
Bjarne Øverli 63a81f21e2 Reduce lag on song switch and visualizer ticks
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
- Close old pipelines async to avoid blocking UI on ffmpeg/HTTP teardown
- Batch position+duration into single speaker lock per tick
- Make local file preloads async to keep event loop responsive
- Use bulk copy for tap ring buffer instead of per-element modulo
- Reuse FFT output buffers in visualizer to reduce GC pressure
2026-03-31 18:54:33 +02:00
Bjarne Øverli 2029e39e52 Add feed track support for podcast RSS playlists
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
2026-03-30 21:33:06 +02:00
bjarneo 8a59b9881b Add --audio-device flag and TUI device picker (d) with cross-platform… (#88)
Release / build (amd64, darwin, macos-latest) (push) Has been cancelled
Release / build (amd64, linux, ubuntu-latest) (push) Has been cancelled
Release / build (amd64, windows, windows-latest) (push) Has been cancelled
Release / build (arm64, darwin, macos-latest) (push) Has been cancelled
Release / build (arm64, linux, ubuntu-latest) (push) Has been cancelled
Release / release (push) Has been cancelled
Release / update-homebrew (push) Has been cancelled
* Add --audio-device flag and TUI device picker (d) with cross-platform backends for Linux/macOS/Windows

* Fix device picker cursor wrapping and overlay height consistency
2026-03-30 18:36:59 +02:00
laamalif 7abf6f740c Add Jellyfin provider and shared media-server browser support (#155)
Co-authored-by: Bjarne Øverli <bjarne.oeverli@gmail.com>
2026-03-30 17:15:03 +02:00
Bjarne Øverli 77cac44689 Split the model into smaller files 2026-03-30 16:52:25 +02:00