9a54f5c6bd
Bump version to 0.2.2
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
v0.2.2
2026-01-31 00:27:40 +00:00
732001771e
Fix artist list scrolling to bottom on click
...
Restore saved scroll offset into ListState before select() so ratatui
preserves the current viewport position instead of scrolling from zero.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-31 00:25:53 +00:00
0823168167
Bump version to 0.2.1
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
v0.2.1
2026-01-29 15:45:26 +00:00
cdf4f611fc
Add OpenSSL dev headers to build dependencies in README
...
reqwest pulls in openssl-sys via native-tls, which requires
OpenSSL development headers to compile from source.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-29 15:43:04 +00:00
Jamie Hewitt
ee10c9fa55
Update README.md with correct curl
2026-01-28 11:05:40 +00:00
d17ea748f6
Bump version to 0.2.0
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
v0.2.0
2026-01-28 00:15:01 +00:00
fb0786122e
Extract built-in theme data from theme.rs into theme_builtins.rs
...
Moves ~265 lines of TOML theme constant data to a dedicated file,
reducing theme.rs from 553 to ~290 lines of logic.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 00:07:29 +00:00
763e9bc8db
Split mouse.rs into page-specific handler files
...
Extract handle_artists_click and handle_playlists_click into
mouse_artists.rs and mouse_playlists.rs respectively, reducing
mouse.rs from ~530 to ~247 lines.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 00:03:41 +00:00
112f18582a
Fix all 16 clippy warnings
...
- Collapse else { if } blocks into else if (6 instances)
- Replace map_or(false, ...) with is_some_and(...) (6 instances)
- Replace iter().cloned().collect() with .to_vec() (2 instances)
- Replace manual char comparison with array pattern (1 instance)
- Replace useless vec! with array literal (1 instance)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 23:58:18 +00:00
766614f5e9
Remove dead code and #![allow(dead_code)] blanket suppressions
...
- Delete src/audio/queue.rs (321 lines, PlayQueue never used)
- Remove #![allow(dead_code)] from audio, subsonic, and mpris module roots
- Remove unused MpvEvent2 enum, playlist_clear, get_volume, get_path,
is_eof, observe_property from mpv.rs
- Remove unused DEFAULT_DEVICE_ID, is_available, get_effective_rate
from pipewire.rs (and associated dead test)
- Remove unused search(), get_cover_art_url() from subsonic client
- Remove unused SearchResult3Data, SearchResult3 model structs
- Move parse_song_id_from_url into #[cfg(test)] block (only used by tests)
- Add targeted #[allow(dead_code)] on deserialization-only fields
(MpvEvent, SubsonicResponseInner.version, ArtistIndex.name)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 23:56:52 +00:00
7582937439
Add missing tempfile dev-dependency for config tests
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 23:44:01 +00:00
b94c12a301
Refactor app/mod.rs into focused submodules
...
Split the 2495-line mod.rs into 10 files by concern:
- playback.rs: playback controls and track management
- cava.rs: cava process management and VT100 parsing
- input.rs: event dispatch and global keybindings
- input_artists.rs: artists page keyboard handling
- input_queue.rs: queue page keyboard handling
- input_playlists.rs: playlists page keyboard handling
- input_server.rs: server page keyboard handling
- input_settings.rs: settings page keyboard handling
- mouse.rs: all mouse click and scroll handling
- mod.rs: App struct, new(), run(), event_loop(), load_initial_data()
Pure code reorganization — no behavioral changes.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 23:41:43 +00:00
bd8f8e6302
Switch install script and README URLs to GitHub
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
v0.1.0
2026-01-27 22:24:10 +00:00
db7dc8dac0
Only highlight selected item in focused pane
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 22:20:34 +00:00
4bc7bb198d
Move cava prompt before build step in install script
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 21:58:44 +00:00
ee688d4086
Fix install script: read cava prompt from terminal, not stdin pipe
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 21:57:55 +00:00
b7d87c533a
Add optional cava install prompt to install script
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 21:55:36 +00:00
cb5b29e924
Add one-line install script and simplify README installation section
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 21:51:35 +00:00
c4e4da4f59
Add screenshot to README
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 21:48:46 +00:00
12cc70e6ec
Initial commit — ferrosonic terminal Subsonic client
...
Terminal-based Subsonic music client in Rust featuring bit-perfect audio
playback via PipeWire sample rate switching, gapless playback, MPRIS2
desktop integration, cava audio visualizer with theme-matched gradients,
13 built-in color themes with custom TOML theme support, mouse controls,
artist/album browser, playlist support, and play queue management.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 21:43:26 +00:00