Replace hardcoded gmgauthier/gostations path with ${REPO} variable so release install instructions work correctly regardless of repository owner or name.
- Remove os import and manual Stdin/Stdout/Stderr assignment from subExecute
- Replace cmd.Run() followed by cmd.CombinedOutput() with single CombinedOutput call
- Adjust volume bar height to exactly match metadata display and increase gap to 2 spaces
Add Volume() to Player interface and mpvPlayer implementation to
expose current volume level. Poll volume periodically and render a
vertical bar next to the metadata display during playback. Update
UI state and tests to support the new volume indicator.
Implement mpv JSON IPC backend for non-blocking playback, streamed
metadata (media-title/icy-title), and runtime controls (pause, mute,
volume, next/prev). Extend Player interface and wire a two-stage TUI
that switches to a dedicated playback view with keyboard shortcuts and
a styled hint bar. Fallback to legacy player when mpv is unavailable.
- New `gostations fav` subcommand with `list`, `add`, `del` (supports index, URL, or search flags)
- TUI favorites toggle via `f` key; favorites auto-detected on load for "Your Favorites" title
- Pressing ENTER while filtering performs a server-side search and refreshes the list
- Default TUI now loads favorites if present, otherwise falls back to broad station lookup
- Added `sortedForDisplay` for stable fav list ordering and index-based deletion
- Tests for favorites title heuristic, sorted display, and fav del-by-index integration
Replace default fuzzy filter with substring matching where multi-word
queries require all words to appear. Fix auto-filter typing to properly
batch returned commands instead of discarding them. Update tests to
drive command loops and verify exact substring matches.
- Add auto-start filter when typing alphanumeric characters
- Refactor item struct to use explicit station field and isFavorite flag
- Show ★ prefix for favorites in list rendering
- Improve description formatting with bullet separators
- Include URL in FilterValue for better search
- Update help text and add corresponding test
Move browser, config, player, and radio logic into internal/{config,radio,player,ui,version}.
Add cached API host resolution, context-aware HTTP client, and nil/length guards to eliminate
RandomIP, nslookup, reverseLookup, and GetStations panics. Replace subExecute with clean
legacyPlayer using Run-only execution. Fix inverted -short test guards, unformatted config
error messages, and "Erorr" typo. Remove obsolete vendor/GOPATH logic from build scripts.
Update callers in stations.go and radiomenu.go to new paths; retain shims for transition.
Added comprehensive unit and live integration tests in new files:
- commander_test.go: Covers isInstalled and subExecute functions
- filer_test.go: Covers createIniFile with various scenarios
- radiomenu_test.go: Covers Short, Quit, and RadioMenu
- stations_test.go: Covers showVersion and precheck
These tests ensure reliability across happy paths, edge cases, and live environments.