Skip to content

Releases: pitill0/fluxtuner

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.

FluxTuner 1.0.2

Choose a tag to compare

@github-actions github-actions released this 01 Jul 12:28

FluxTuner 1.0.2

FluxTuner 1.0.2 adds a safer password change request flow for private Web/server deployments.

Added

  • Added Web password change requests for private server deployments.
  • Added a public “Forgot password?” flow where non-admin users choose a new password that only becomes active after administrator approval.
  • Added admin UI actions to approve or reject pending password change requests.

Changed

  • Non-admin users with a pending password change request are prevented from logging in with the old password until the request is resolved.
  • Active sessions for non-admin users are revoked when a password change request is created.
  • Standardized visible Web timestamps as YYYY-MM-DD HH:mm in the user's local browser time.

Security

  • Password change requests store only password hashes, never plaintext passwords.
  • Public password change requests use a generic response to avoid revealing whether an account exists.
  • Administrator accounts are not blocked through the public password change request flow; admin recovery remains a CLI/manual operation.

Release quality

  • Added a local make gate release check covering formatting, linting, tests, mypy, JavaScript syntax, Bandit and pip-audit --local.

Notes

This release includes a database schema update for Web password change requests. Existing users, profiles, favorites, playlists and history are preserved.

FluxTuner 1.0.1

Choose a tag to compare

@github-actions github-actions released this 01 Jul 08:21

FluxTuner 1.0.1

Small Web UX polish release based on early real-world usage of the private FluxTuner Web app.

Improved

  • Improved the visibility and contrast of the persistent Web player bar.
  • Styled the external stream action consistently with the rest of the Web UI.
  • Show display names in the authenticated header instead of internal usernames.
  • Made register and playlist dialogs scrollable on mobile screens.

Fixed

  • Fixed hidden Web dialogs and authenticated header controls being displayed incorrectly on mobile.

Notes

This release does not change the authentication model or storage format. It is a safe UX-focused update for existing FluxTuner Web 1.0.0 deployments.

FluxTuner 1.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 13:01

FluxTuner 1.0.0

FluxTuner 1.0.0 marks the first stable release of the project.

This release introduces a private Web dashboard, pending account registration with admin approval, stronger Web security boundaries, full-package mypy coverage, updated documentation, and final packaging polish.

Highlights

  • Private Web dashboard for authenticated users
  • Admin dashboard metrics and server/user overview
  • Pending account registration with approve/reject workflow
  • First-run admin setup for private deployments
  • Server-side sessions, CSRF protection, login rate limiting, and stronger Web input validation
  • Private Web search endpoint
  • Safer station URL handling
  • Light/dark Web UI polish and improved mobile behavior
  • Full-package mypy coverage
  • Reviewed documentation for Web, multi-user mode, security, architecture, and release process
  • Clean Python packaging for wheel/sdist builds

Validation

This release was validated with:

  • pytest -q
  • ruff check .
  • ruff format --check .
  • python -m mypy --follow-imports=skip fluxtuner/
  • bandit -q -r fluxtuner
  • pip-audit
  • node --check fluxtuner/web/static/app.js
  • python -m build
  • Manual desktop/mobile Web smoke tests
  • Fresh container smoke test

Notes

FluxTuner remains a local-first internet radio project. The Web/server mode is designed for private deployments and small trusted groups, not as a public SaaS platform.

FluxTuner 0.9.0 — Private Web mode, multi-user auth and polished app shell

Choose a tag to compare

@github-actions github-actions released this 29 Jun 11:15
540d951

FluxTuner 0.9.0 is a major Web/server mode release.

This version turns FluxTuner Web into a private, authenticated local web app with multi-user support, first-run administrator setup, protected library data and a much more polished browser UI.

Highlights

Private Web/server mode

  • Added local Web user accounts.
  • Added first-run setup wizard for creating the first administrator.
  • Added optional setup token protection for exposed deployments.
  • Added Argon2id password hashing.
  • Added server-side sessions.
  • Added CSRF protection for private Web API mutations.
  • Added authenticated Web access for favorites, history and manual playlists.
  • Added browser-based Admin UI for managing Web users.
  • Added emergency Web user CLI commands.

Web UI polish

  • Added responsive app shell with compact navigation.
  • Added isolated Admin view.
  • Added compact server-health summary inside Admin.
  • Added browser playlist picker.
  • Added light/dark theme toggle.
  • Added real packaged Web app icon.
  • Improved theme contrast and form/dialog readability.
  • Improved playlist dialog theming in both light and dark modes.
  • Improved player visibility across login/logout.
  • Improved hamburger menu dismissal with outside click and Escape.
  • Fixed logout so browser playback stops immediately.

Fixes

  • Fixed deleting Web favorites by raw stream URL.
  • Fixed default technical Web user permissions.
  • Fixed setup-before-auth initialization.
  • Fixed Web app icon packaging in wheels and containers.
  • Fixed stale Admin view state when switching from admin to non-admin users.
  • Fixed Web resource loading on Python 3.11.

Documentation and packaging

  • Updated README for 0.9.0.

  • Updated changelog.

  • Added and updated secure Web deployment docs.

  • Updated container deployment documentation.

  • Updated architecture and multi-user model docs.

  • Updated Flatpak metadata.

  • Clarified licensing:

    • core/local FluxTuner remains MIT licensed
    • Web/server and multi-user components use the FluxTuner Web Non-Commercial License

Validation

Validated with:

node --check fluxtuner/web/static/app.js
python -m ruff check .
python -m ruff format --check .
python -m pytest
bandit -r fluxtuner
pip-audit --local
python -m build

Also smoke-tested with a clean container and persistent data volume.

Upgrade notes

Web/server deployments should use a persistent FLUXTUNER_DATA_DIR, usually mounted as /data in containers.

For local HTTP testing, set:

FLUXTUNER_WEB_SECURE_COOKIES=false

For LAN or internet-accessible deployments, keep secure cookies enabled and serve FluxTuner Web behind HTTPS:

FLUXTUNER_WEB_SECURE_COOKIES=true

For first-run exposed deployments, set:

FLUXTUNER_WEB_SETUP_TOKEN=<strong-random-token>

See docs/web.md, docs/container.md and docs/secure-web-deployment.md for deployment details.

FluxTuner 0.8.0 — Multi-profile foundation

Choose a tag to compare

@github-actions github-actions released this 27 Jun 18:52

FluxTuner 0.8.0 introduces multi-profile support across the main app interfaces.

Profiles now scope favorites, playback history and manual playlists, making it possible to keep separate contexts such as default, work, home, terrace or testing profiles within the same FluxTuner installation.

This release adds persistent active profile support, profile-aware CLI import/export, profile-aware legacy CLI favorites, and profile-aware behavior in the Textual TUI, GTK GUI and Web mode.

Web API endpoints also support a per-request profile override with ?profile=NAME.

This is intentionally multi-profile support, not full multi-user account support yet. Profiles are context-level separation inside one installation; they do not provide authentication, permissions or per-user isolation.

The important part: FluxTuner now has the storage and interface foundation needed for future true multi-user support.

Highlights:

  • Multi-profile support for favorites, playback history and manual playlists.
  • Persistent active profile commands.
  • --profile NAME support for profile-aware CLI commands.
  • Profile-aware favorites and playlists import/export.
  • Profile-aware legacy numbered CLI favorites flow.
  • Textual TUI, GTK GUI and Web mode now use the persisted active profile.
  • Web API ?profile=NAME override support.
  • Updated documentation, architecture diagrams and Flatpak metadata.