docs: document per-favorite volume persistence and narrow scope; prepare v2.1.1

This commit is contained in:
Greg Gauthier 2026-06-06 11:59:28 +01:00
parent 6ed2225a4f
commit 71bb7c0cf2
2 changed files with 19 additions and 4 deletions

View File

@ -5,6 +5,19 @@ All notable changes to gostations will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 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). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.1.1] - 2026-06-07
### Added
- Per-favorite volume persistence: the last volume set while playing a station that is in your favorites list is remembered and restored the next time you play that specific favorite. Non-favorited stations continue to use the global last volume (from `radiostations.ini` or the default).
- Volumes for favorites are stored inside `favorites.json` (no separate file), using the existing atomic save/load pattern.
### Changed
- Playback entry now prioritizes: per-favorite saved volume (if the station is favorited) > live session volume (for stickiness across `s`/`x` within a run) > global last volume.
- Volume changes while playing a favorite also update the per-favorite volume (saved immediately, like global).
- Explicit saves of per-favorite volume on `s`/`x` stop and on quit (in addition to per-change saves).
See the `todo/queued/per-station-volume.md` for implementation details and the narrowed scope (favorited stations only).
## [2.1.0] - 2026-06-06 ## [2.1.0] - 2026-06-06
### Added ### Added

View File

@ -60,7 +60,7 @@ A compact, Winamp-inspired screen:
- A vertical volume bar to the right of the metadata (dark gray background, green fill from the bottom; same height as the viewer; small gap). - A vertical volume bar to the right of the metadata (dark gray background, green fill from the bottom; same height as the viewer; small gap).
- Keyboard-driven on-screen controls: - Keyboard-driven on-screen controls:
- `←` / `→` (or `h`/`l`) — skip back/forward. - `←` / `→` (or `h`/`l`) — skip back/forward.
- `↑` / `↓` — volume up/down. - `↑` / `↓` — volume up/down (per-favorite volume is restored when starting a favorited station; changes are saved for that favorite).
- `m` / `M` — mute / unmute. - `m` / `M` — mute / unmute.
- `Space` or `p` / `P` — play / pause. - `Space` or `p` / `P` — play / pause.
- `s` / `S` / `x` / `X` — stop playback and return to the station list. - `s` / `S` / `x` / `X` — stop playback and return to the station list.
@ -113,6 +113,8 @@ Notable keys:
Favorites are stored as JSON (`favorites.json`) in the same directory. The TUI prefers loading favorites first when any exist. Favorites are stored as JSON (`favorites.json`) in the same directory. The TUI prefers loading favorites first when any exist.
Per-favorite volume preferences are also stored in the same `favorites.json` file (only for stations you have explicitly favorited). When you start playback for a favorited station, its last-used volume is restored (falling back to the global last volume or the default). Volume changes while playing a favorite are persisted for that station. Non-favorites always use the global last volume.
## Develop (for power users & developers) ## Develop (for power users & developers)
### Prerequisites ### Prerequisites
@ -140,10 +142,10 @@ See the `Makefile` for the exact ldflags, per-platform `go mod download`, and th
### Releasing ### Releasing
```bash ```bash
./release.sh v2.1.0 ./release.sh v2.1.1
# or manually # or manually
git tag -a v2.1.0 -m "..." git tag -a v2.1.1 -m "..."
git push origin v2.1.0 git push origin v2.1.1
``` ```
`release.sh` does a clean-tree check, creates the annotated tag, optionally runs `grokkit changelog` (best-effort), and pushes. The Gitea Actions workflow (`.gitea/workflows/release.yml`) then: `release.sh` does a clean-tree check, creates the annotated tag, optionally runs `grokkit changelog` (best-effort), and pushes. The Gitea Actions workflow (`.gitea/workflows/release.yml`) then: