gostations/CHANGELOG.md

5.7 KiB

Changelog

All notable changes to gostations will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[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

Added

  • Flashing visual feedback on control buttons for better UX:
    • Volume symbols (🔉 / 🔊) flash on ↑/↓
    • Skip symbols (◀◀ / ►►) flash on left/right (or h/l)
    • Stop symbol () flashes on s/x just before returning to the list
  • Subtle thin bordered "panel" around the button row (using the same style/color as the inner Now Playing border)

Changed

  • Hint row (full-width bottom bar + faint help text inside the player card) cleaned up for no-wrap and minimalism:
    • Replaced "left/right" text with ANSI arrows (←/→)
    • Extremely terse abbreviations ("vol", "spc/p", etc.)
    • Centered (instead of left-justified)
  • Control symbols refreshed for consistent visual weight (geometric pointer style matching the play ► symbol; less bold/bright than previous technical arrows)
  • Playback card and button panel are now content-sized (width of buttons + minor padding) + centered in the terminal, instead of expanding to full width
  • Global last-used player volume is now persisted:
    • Saved on every volume keypress and observed change
    • Also saved explicitly on clean stop (s/x) and quit
    • Restored on next playback entry (first station of run uses ini value; subsequent stations carry the live session value)
    • Injected via --volume=... when launching mpv (respects existing options)
  • Many iterative layout, centering, border, and text polish items throughout the playback view and hint row

Fixed

  • Volume now carries over correctly when using s/x to return to the list and selecting another station (live session value is preferred over re-reading the ini)
  • Various small robustness improvements around volume initialization and persistence

See the git history for the full set of TUI polish changes since v2.0.1.

[2.0.1] - 2026-06-06

Fixed

  • CI "Test" and "Build" flows: added go mod tidy (and Makefile deps targets) before make test-short / make build / cross to ensure complete go.sum for all modules (configparser, wmenu, charmbracelet/* etc.). This resolves repeated "missing go.sum entry" failures in minimal Gitea runners.
  • TestPrecheck_Unit now skips gracefully (with clear message) when the configured player (default: mpv) is not installed. Prevents os.Exit(1) from failing the root package under go test -short in CI.
  • Release workflow: added shell: bash to steps using bashisms; go mod tidy before cross builds; robust error handling in "Create Release & Upload Assets" (set -euo pipefail, curl --fail, explicit RELEASE_ID check, debug prints of API responses, "target" and "draft": false). Install scripts and asset packaging improved for portability.
  • Makefile: removed duplicate SHELL lines, added per-platform go mod download inside cross for CI resilience, release-notes target.
  • Pinned Go to 1.24.2 in workflows; modernized old build.yml (now proper test+build with checkout/setup-go/cache); cleaned ci-build.sh.
  • Re-iterated v2.0.0 tag during debugging; process now stable for proper asset drops on Gitea releases page.

See git history for details of the CI/release hardening.

[2.0.0] - 2026-06-05

v2.0 ships the new TUI and a pile of rewired plumbing.

Added

  • Add mpv IPC player with playback controls and winamp-style UI
  • Add favorites management (CLI + TUI) and in-filter server search
  • Add custom substring/AND filter for station list
  • Add auto-filter on typing
  • Add vertical volume bar to playback view
  • Add find/play subcommands and JSON favorites support
  • Add unit and integration tests for core functionality
  • Full modern TUI (Bubble Tea + bubbles/list + lipgloss) as the default experience
  • Two-stage UI: station selection list → dedicated playback view
  • Playback view inspired by classic Winamp (metadata viewer + controls)
  • --legacy flag to force the old wmenu UI (preserved for now)

Changed

  • Reorganize into internal packages
  • Switch to CombinedOutput for command execution
  • Default UI is now the new TUI (no more wmenu unless --legacy)
  • Player abstraction extended for controls and metadata
  • Build/release process modernized (Makefile, cross-compilation, Gitea release workflow + installers) to match other projects

Fixed

  • Fix critical panics and error handling during reorganization
  • Fix config lookups for Windows
  • Fix inverted short guards, format strings and typos
  • Various legacy subExecute / player execution issues from the old architecture

See the git history for the full list of changes leading to 2.0.

[0.2] - Previous

Legacy wmenu-based UI + initial internal refactoring.