Releases: pitill0/fluxtuner
Release list
FluxTuner 1.2.2
FluxTuner v1.2.2
This maintenance release improves Linux tray compatibility, especially on XFCE.
Fixed
- Improved
com.canonical.dbusmenucompatibility for Linux StatusNotifierItem tray menus. - Fixed right-click tray menus on XFCE, where FluxTuner previously fell back to the XFCE panel context menu.
- Added broader DBusMenu method and signal support.
- Improved tray protocol test coverage.
Development and testing
- Fixed JavaScript metadata tests under Node.js by explicitly injecting
navigatorRef. - Updated the JavaScript syntax gate to validate the browser entrypoint as an ES module.
- Added Bandit to the development dependency set.
- Simplified development installation through
.[dev].
Validation
- Tested successfully on XFCE 4.18.4 under Xorg.
- Full project gate and GitHub CI pass cleanly.
Fluxtuner 1.2.1
FluxTuner 1.2.1
This patch release fixes GTK packaging introduced in 1.2.0.
Fixed
- Include
fluxtuner.gui.trayin Python distribution artifacts. - Fix packaged GTK installations failing with:
ModuleNotFoundError: No module named 'fluxtuner.gui.tray'.
Internal
- Added installed-wheel smoke coverage for the GTK tray package in CI and release workflows to prevent this regression from recurring.
FluxTuner 1.2.0
Highlights
- Added local radio stream recording to the Textual TUI and GTK4 GUI.
- Added FFmpeg stream-copy recording with real-time input pacing.
- Added profile-scoped recording metadata persistence in SQLite.
- Added Linux system tray integration for the GTK frontend.
- GTK can now keep playback and recording running while the main window is hidden to the tray.
- Updated architecture, documentation, smoke tests and Flatpak/AppStream metadata.
Notes
- Recording is currently available in the local TUI and GTK interfaces.
- Web/server recording is intentionally deferred to a future release.
- FFmpeg is required for recording.
FluxTuner 1.1.0
Highlights
FluxTuner 1.1.0 adds configurable appearance support to the GTK desktop client.
Added
- Added System, Dark and Light GTK appearance modes.
- Added persistent GTK appearance preferences.
- Added runtime appearance switching without restarting FluxTuner.
- Added dedicated light and dark GTK palettes.
Changed
- System mode now follows
gtk-interface-color-schemewhen GTK exposes the desktop color-scheme preference. - GTK styling is now split into shared layout rules and appearance-specific palettes.
- Added the Appearance selector to the GTK application header.
Platform notes
Linux
System mode follows the desktop appearance dynamically when GTK exposes the system color scheme.
macOS
Explicit Dark and Light modes work normally.
When GTK reports the macOS system color scheme as unsupported, System mode falls back to GTK's native/default appearance.
Quality
- Expanded GTK appearance test coverage.
- Added coverage for dynamic system color-scheme changes.
- Full release gate passed.
- Package build and installed-wheel smoke tests passed.
- Release workflow completed successfully.
FluxTuner 1.0.8
Highlights
FluxTuner 1.0.8 is a focused Web reliability and mobile-efficiency release based on real-world usage.
Active sessions now renew safely instead of expiring after exactly 24 hours. Mobile playback can recover automatically after temporary network interruptions, and background metadata polling is suspended while the page is hidden.
The metadata change significantly reduces unnecessary network activity, battery consumption and device heating during screen-off mobile playback.
Changed
- Changed Web sessions from a fixed lifetime to renewable inactivity-based expiration.
- Added throttled session renewal and a configurable absolute session lifetime.
- Suspended Web metadata polling while the page is hidden.
- Added an immediate metadata refresh when active playback returns to the foreground.
Fixed
- Fixed active Web users being forced to sign in again exactly 24 hours after authentication.
- Fixed mobile Web playback remaining stopped after a temporary network loss.
- Preserved explicit pause, stop, station changes and listening-history behavior during automatic recovery.
- Prevented unnecessary background metadata requests during screen-off mobile playback.
Validation
- 893 automated tests passed.
- CI passed on
main. - Package version and release tag were verified.
- Wheel and source distribution were built successfully.
- Installed-wheel CLI smoke tests passed.
- Mobile screen-off playback was validated over several hours.
Related issues
FluxTuner 1.0.7
FluxTuner 1.0.7
FluxTuner 1.0.7 is a consolidation release that closes the post-1.0 architecture refactor and establishes a clean foundation for future features and bug fixes.
Highlights
- Completed the repository-wide architecture and documentation consolidation.
- Aligned README, usage, development, deployment, security, licensing and release guidance with the current platform.
- Clarified the boundary between the MIT-licensed local interfaces and the non-commercial Web/server edition.
- Standardized release preparation around the canonical
make gateworkflow. - Added clean package builds and installed-wheel smoke testing.
- Added release tag-to-package-version validation.
- Updated GitHub Actions used by CI, release and Flatpak workflows.
- Removed obsolete Flatpak workflow configuration and outdated release instructions.
Packaging and validation
The release workflow now verifies that the Git tag matches the package version, builds both the wheel and source distribution, installs the generated wheel and runs CLI smoke tests against the installed artifact.
Interfaces
FluxTuner continues to provide:
- Textual terminal interface
- GTK4 desktop interface
- CLI mode
- Self-hosted Web/server mode
- Modular playback through mpv, ffplay, mpg123 and ogg123
This release is intended as the new stable baseline for the next development cycle.
Fluxtuner 1.0.6
Highlights
FluxTuner 1.0.6 completes the post-1.0 architecture and Web player hardening cycle.
This release focuses on clearer ownership boundaries, deterministic browser playback behavior and stronger executable contracts before future Web metadata work begins.
Changed
- Completed the post-1.0 Web architecture refactor while keeping
fluxtuner/web/app.pyandfluxtuner/web/static/app.jsas focused composition roots. - Split shared SQLite persistence into focused domain modules for users, profiles, stations, favorites, history, playlists, password changes and public statistics.
- Retained compatibility wrappers and centralized schema/bootstrap ownership in
db.py. - Split the Web stylesheet into focused shell, public, authentication, forms, dialogs, dashboard, stations, player and admin stylesheets.
- Added an explicit Web player model with validated
idle,loading,playing,pausedanderrortransitions. - Made playback replacement, pause, stop and lifecycle recovery deterministic.
- Added conservative offline/online recovery that preserves the selected station and requires explicit resume.
- Clarified FluxTuner's terminal, desktop and self-hosted Web positioning.
- Clarified private non-commercial self-hosting, commercial licensing and external catalog/stream dependencies.
Fixed
- Prevented stale asynchronous playback attempts from updating the current player state.
- Prevented late
playing,pauseandwaitingevents from overwriting newer state. - Fixed lifecycle reconciliation across connectivity, visibility,
pagehideandpageshowevents. - Fixed responsive Web layout ownership and regressions discovered while extracting feature-local CSS.
Documentation
- Added and completed the architecture refactor roadmap for the Web JavaScript and player state-model phases.
- Added a transparent engineering-process document describing AI-assisted development under human direction.
- Expanded README guidance for Docker Compose, self-hosting, licensing and privacy boundaries.
Internal
- Added executable Node-based contracts for browser modules, bootstrap ordering, player runtime delegation, playback replacement and lifecycle reconciliation.
- Added focused persistence tests for the extracted storage domains.
- Added source-boundary and CSS ownership tests to protect the completed architecture.
Scope
Web Now Playing metadata is not included in this release.
Backend metadata caching, workers, polling and SSRF-safe stream inspection remain planned for a future update.
Validation
- Full release gate passed.
- Python wheel and source archive built successfully.
- AppStream metadata validated.
- Installed package reported version
1.0.6. - Release tag points to the current
mainrelease commit.
FluxTuner 1.0.5
FluxTuner 1.0.5
This release focuses on the FluxTuner Web experience, with a large JavaScript refactor, stronger browser playback handling, improved mobile media controls, cleaner account/admin layouts and updated documentation.
Highlights
- Refactored FluxTuner Web JavaScript from one large entrypoint into focused ES modules.
- Improved Web player state handling for slow, failed, retried and interrupted streams.
- Improved Android and iOS Media Session handoff with stronger metadata, artwork and lifecycle handling.
- Added richer Web player diagnostics for audio state, Media Session metadata and recent playback events.
- Improved first-run setup, request access, password recovery and Admin account form layouts.
- Improved the Player debug panel by clearly separating the current snapshot, recent events and exported logs.
- Added a new FluxTuner TUI theme inspired by the project landing page.
Added
- Focused Web JavaScript modules under
fluxtuner/web/static/js/. - ES module entrypoint for the Web UI.
- Richer Media Session diagnostics for mobile browser behavior.
- Stronger Player debug snapshot/event separation.
- New FluxTuner TUI theme.
- Additional tests for Web modules, dashboard behavior, setup, admin flows, player debug and Media Session handling.
Changed
- Split the former monolithic Web
app.jsinto smaller browser modules. - Hardened Web player state handling for:
- slow streams
- failed streams
- interrupted streams
- retries
- pause/resume transitions
- page visibility changes
- mobile background/lock-screen handoff
- Improved Android lock-screen media metadata and artwork handling.
- Improved iOS media handoff behavior after playback starts.
- Improved first-run setup layout.
- Improved request access layout.
- Improved password recovery layout.
- Improved Admin create/reset user layouts.
- Kept the Admin view stable after user and password-request actions while refreshing dashboard data silently.
- Updated architecture, Web, development, smoke-test and release documentation to reflect the new module structure.
Fixed
- Fixed invalid Web manifest JSON.
- Fixed static JS module packaging in source and wheel distributions.
- Fixed stale JS/module caching behavior for Web assets.
- Fixed login and account recovery feedback visibility.
- Fixed Admin action layout issues on mobile.
- Fixed Player debug UI looking like a split/duplicated log.
- Removed noisy production console output from best-effort playback history recording.
Documentation
- Updated architecture documentation and Mermaid diagrams to reflect:
index.html- ES module
static/app.js - focused modules under
static/js/ - FastAPI routers
- Web helper/action modules
- Media Session and Player debug flow
- Updated the refactor roadmap to mark the Web helper/router and JavaScript module work as completed.
- Updated Web documentation with the no-build ES module structure.
- Updated release and smoke-test docs to validate all Web JavaScript modules.
Validation
Validated with:
python -m compileall -q fluxtuner testsnode --check fluxtuner/web/static/app.jsnode --check fluxtuner/web/static/js/*.jsuv run --extra dev pytest -quv build --sdist --wheel
Manual smoke tested:
- login/logout
- first-run setup
- request access
- password recovery
- dashboard
- search
- favorites
- playlists
- player play/pause/resume/stop/retry
- failed/slow stream handling
- Android lock-screen metadata/artwork
- iOS media handoff after playback starts
- Admin users and password change requests
- Player debug panel
- mobile Admin layout
Fluxtuner 1.0.4
FluxTuner 1.0.4
This release focuses on Web admin management, public stats polish and browser/player diagnostics.
Highlights
- Added an admin-only user deletion flow for FluxTuner Web.
- Added a compact Admin danger zone with strong confirmation before destructive actions.
- Added anonymous approved-user counts to the public Web stats.
- Added an admin-only opt-in Player debug panel for browser and mobile playback diagnostics.
- Deduplicated Web player and Media Session logic so browser, mobile and external media controls use a single playback flow.
- Improved the Admin player debug layout on mobile.
Added
- Admin-only user deletion API.
- Cleanup of related Web sessions, favorites, playlists, playback history and password change requests when deleting a user.
- Admin user danger zone in the Web UI.
- Anonymous aggregate approved-user count in public stats.
- Admin-only Web player debug panel with:
- playback snapshots
- event log
- copy/export controls
- downloadable diagnostic logs
Changed
- Unified Web player and Media Session control paths.
- Made external Media Session stop actions conservative by pausing and preserving the current station instead of clearing playback state.
- Improved mobile layout for the Admin player debug panel so it no longer widens the page.
Fixed
- Fixed Admin user management lacking a real destructive-delete path.
- Fixed overlapping Web player Media Session handlers that could cause inconsistent playback behavior after search, pause, resume or external media controls.
- Fixed public stats copy and rendering so platform usage can include user count without exposing usernames, sessions, IP addresses or timestamps.
Security / Privacy
- User deletion remains admin-only, CSRF-protected and blocks self-delete.
- Public user stats expose only anonymous aggregate counts.
- Player debug logging is local, opt-in and admin-facing.
FluxTuner 1.0.3
FluxTuner 1.0.3
This release improves FluxTuner Web with anonymous public server stats, a more polished public login experience, better password guidance, and more resilient mobile live-stream controls.
Added
- Public anonymous server activity stats on the Web login page.
- Public
/api/public/statsendpoint with aggregate play, favorite and playlist counts. - Visible password requirements in Web account and password-change forms.
- Static UI coverage for the public stats and password-help views.
Changed
- Refined the FluxTuner Web public entry screen with a clearer intro, cleaner login panel and compact public activity cards.
- Improved mobile live-stream handling when using lock-screen, notification-bar or headset media controls.
- Resume now restarts live streams instead of relying on stale browser audio state.
- External media stop/pause actions no longer intentionally clear the selected station.
Security / Privacy
- Public stats expose only aggregate anonymous counts and top station names.
- No usernames, stream URLs, homepages, IPs, profiles or timestamps are exposed by the public stats endpoint.