Skip to content

Releases: pitill0/fluxtuner

FluxTuner 1.2.2

Choose a tag to compare

@github-actions github-actions released this 04 Sep 12:34

FluxTuner v1.2.2

This maintenance release improves Linux tray compatibility, especially on XFCE.

Fixed

  • Improved com.canonical.dbusmenu compatibility 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

Choose a tag to compare

@github-actions github-actions released this 03 Sep 08:59
b404010

FluxTuner 1.2.1

This patch release fixes GTK packaging introduced in 1.2.0.

Fixed

  • Include fluxtuner.gui.tray in 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

Choose a tag to compare

@github-actions github-actions released this 02 Sep 17:54
a3caee2

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

Choose a tag to compare

@github-actions github-actions released this 01 Sep 20:08
6f4b17d

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-scheme when 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

Choose a tag to compare

@github-actions github-actions released this 25 Aug 16:11
eb62d2b

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

Choose a tag to compare

@github-actions github-actions released this 19 Jul 00:35
58cac37

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 gate workflow.
  • 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

Choose a tag to compare

@github-actions github-actions released this 12 Jul 18:14
2ed213c

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.py and fluxtuner/web/static/app.js as 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, paused and error transitions.
  • 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, pause and waiting events from overwriting newer state.
  • Fixed lifecycle reconciliation across connectivity, visibility, pagehide and pageshow events.
  • 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 main release commit.

FluxTuner 1.0.5

Choose a tag to compare

@github-actions github-actions released this 08 Jul 11:18

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.js into 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 tests
  • node --check fluxtuner/web/static/app.js
  • node --check fluxtuner/web/static/js/*.js
  • uv run --extra dev pytest -q
  • uv 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

Choose a tag to compare

@github-actions github-actions released this 02 Jul 18:34

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

Choose a tag to compare

@github-actions github-actions released this 01 Jul 18:38

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/stats endpoint 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.