crabidy/plan
Test User d5b35a4da2 cbd-tui: shade the spectrum bars and hold their peaks
Modelled on BeSpec's LED mode. Bars are now shaded by height rather than
drawn in one flat color, and a peak-hold marker rides above each column.

Shading is a function of the row alone, so it stays cheap: the color is
computed once per row and the row's cells still coalesce into a couple of
spans. `gradient_color` ramps the configured base from 55% brightness at
the floor to 30% toward white at the top, so a loud bar reads as hot and
not merely tall. Only an `Rgb` base can be interpolated -- a color name or
a palette index is a reference into the terminal's own theme, whose RGB
value is not ours to know -- so those render flat, whatever
`spectrum_gradient` says.

The peaks are per-bin state advanced in `update_spectrum`: a bin at or
above its peak raises it at once, otherwise the peak falls 0.03 a frame,
about 1.7s from full scale at the server's 20 fps. The server keeps
streaming zeroed frames while the audio is idle, so the markers fall away
on pause instead of freezing on screen. A marker is drawn only in a row
the bar does not reach: a cell holds one glyph, so one inside the bar's
own top cell would eat the bar to repeat what its top edge already shows.

Config gains `spectrum_gradient` (default true) and `spectrum_peak_color`
(default the primary blue, `"none"`/`"off"` to draw none), resolved with
`spectrum_color` into one `SpectrumStyle` in place of the old
`set_spectrum_color`. Existing config files take the defaults.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 13:08:43 +02:00
..
audiobookshelf-provider.md Add the audiobookshelf provider (`/abs`) 2026-07-23 23:22:52 +02:00
bookmarks.md Capture library subtrees as bookmarks 2026-07-21 11:11:27 +02:00
build-features.md docs, flake: document tailored builds and name the flake features 2026-07-25 03:18:50 +02:00
captures.md Capture library subtrees with downloaded audio 2026-07-21 13:45:04 +02:00
cbd-bundle.md Bundle server and TUI into a single cbd binary 2026-07-21 14:15:47 +02:00
cli.md Implement the comprehensive CLI (stage 5) 2026-07-22 12:13:51 +02:00
crabidy-store.md Reconcile crabidy-store quality gates and plan with what shipped 2026-07-22 11:36:52 +02:00
fs-provider.md Add a filesystem provider for serialized track nodes 2026-07-21 01:58:55 +02:00
fyyd-provider.md fyyd: mark live API validation done 2026-07-23 17:35:18 +02:00
help-modal.md Add a help modal to cbd-tui behind a declarative binding table 2026-07-20 17:27:12 +02:00
incremental-captures.md Make download captures incremental with skipped tracks and progress 2026-07-21 15:45:04 +02:00
jamendo.md Add the Jamendo provider (/jamendo) for Creative-Commons music 2026-07-24 13:43:05 +02:00
node-editing.md Add rename and delete for modifiable library nodes 2026-07-20 23:34:47 +02:00
orphans.md Add the /orphans provider: a store garbage-collection view 2026-07-22 22:47:23 +02:00
progressive-queueing.md Queue large collections progressively 2026-07-21 01:08:34 +02:00
queue-persistence.md Persist queues as fs-provider folders 2026-07-21 10:41:49 +02:00
queue-register.md cbd-web: queue marks, visual mode, and the register 2026-07-26 10:35:21 +02:00
roles-auth.md Auth: anonymous callers inherit the highest unguarded role 2026-07-23 16:06:01 +02:00
rss-provider.md rss: subscribe to podcast feeds at /rss, including premium ones 2026-07-26 12:36:30 +02:00
search.md Add Tidal search as creatable library nodes 2026-07-20 17:58:44 +02:00
seek.md seek: put seek and track-skip on two keys, and make the web gauge clickable 2026-07-26 14:29:30 +02:00
soundcloud.md Add the SoundCloud provider (`/soundcloud`) with HLS playback 2026-07-24 02:27:10 +02:00
summary.md cbd-tui: shade the spectrum bars and hold their peaks 2026-07-27 13:08:43 +02:00
visual-mode.md cbd-tui: add library visual (paint-select) mode on v/V; move spectrum to f 2026-07-24 16:20:55 +02:00
web-client.md Add a Leptos web client served by the server 2026-07-21 22:43:06 +02:00
youtube-provider.md Add a YouTube provider backed by yt-dlp 2026-07-21 14:01:58 +02:00
youtube-rustypipe.md Fetch streams in bounded windows and restore yt-dlp for stream URLs 2026-07-21 18:18:40 +02:00