• v0.3.8 75a7f5b79f

    OutFlux 0.3.8
    All checks were successful
    Release / decide (push) Successful in 29s
    CI / test (push) Successful in 3m27s
    Release / test (push) Successful in 3m32s
    Release / attach (push) Successful in 9m31s
    Stable

    Ghost released this 2026-10-26 10:08:23 +00:00 | 11 commits to main since this release

    Headless Linux seeding client, plus two GUI fixes: the Settings rank
    editor was dead in in-memory mode and long debug-log errors drew over
    the rows below them.

    Added

    • bare src/cli/seeder.js (src/cli/seeder.js): a long-lived headless Linux
      seeding client. Walks the catalog, dispatches the real seed verb per
      hash (refusals reported per-hash, never fatal), then serves and stays
      up until SIGINT/SIGTERM. D3 untouched: seed remains the sole announce
      path and its held-check gate is what refuses a hash the deps do not
      hold; the client only enumerates and reports.

    Fixed

    • The GUI sidecar opens a per-user persistent data dir by default
      (OUTFLUX_STORAGE overrides, matching the CLI), so the Settings rank
      editor is no longer dead in in-memory mode. A second GUI instance
      gets the daemon's named fd-lock refusal instead of silently losing
      its weights.
    • Settings log rows size from their wrapped text (the preferred-height
      binding collapsed long errors to one line and overdrawn the rows
      below); min-height keeps the one-line rhythm.

    Measured: cargo test 81/81; npm test 868/868 (4049 asserts); lint clean.

    Downloads
  • v0.3.7 8719a76372

    OutFlux 0.3.7
    All checks were successful
    Release / decide (push) Successful in 26s
    Release / test (push) Successful in 3m30s
    CI / test (push) Successful in 3m35s
    Release / attach (push) Successful in 8m55s
    Stable

    Ghost released this 2026-10-24 13:34:13 +00:00 | 15 commits to main since this release

    The release artifacts could not be used together: the core zips shipped
    without the GUI, and the separately-attached GUI exe could not find a
    core when run anywhere else — the GUI opened, its sidecar never spawned,
    and the app hung silently for 20 seconds.

    Fixed

    • The linux-x64 and win32-x64 bundles now ship the GUI binary INSIDE the
      zip (outflux-gui beside bare.exe). Unzip, run outflux-gui(.exe) — the
      sidecar resolves the core from its own folder and boots. The release
      layout gate hard-requires the GUI binary in those bundles now.
      (Measured: standalone GUI exe = window with zero child processes, no
      storage, 20s hang; the same exe inside the bundle boots instantly.)
    • The GUI fails fast with a named error when the daemon process dies
      before its control listener comes up ("sidecar exited before its
      control listener came up — see outflux-core.log in the resolved root")
      instead of burning the full 20s timeout on a corpse.
    • The standalone-GUI release job is gone; every downloadable bundle is
      complete. darwin-arm64 stays core-only (no macOS GUI build yet).

    Measured: cargo test 81/81; workflow YAML validated. The packaging path
    is exercised end-to-end by this release run itself.

    Downloads
  • v0.3.6 2cd10f0e85

    OutFlux 0.3.6
    All checks were successful
    Release / decide (push) Successful in 28s
    CI / test (push) Successful in 3m30s
    Release / attach (push) Successful in 1m27s
    Release / test (push) Successful in 3m52s
    Release / gui (push) Successful in 8m15s
    Stable

    Ghost released this 2026-10-24 11:07:18 +00:00 | 18 commits to main since this release

    The GUI's transport controls were dead ends on Windows: ffplay could not
    be paused or seeked, and the seeded indicator could never light up.

    Fixed

    • mpv's JSON IPC on Windows now uses a NAMED PIPE (\\.\pipe\outflux-mpv-*)
      instead of a filesystem socket path — the listener never appeared under a
      tmpdir path, so mpv could not be controlled at all on Windows. With mpv on
      PATH the playbar is fully live: pause/resume, seek, and a position bar
      that actually moves (playback-time property ticks stream through the
      daemon). ffplay remains the honest start/stop-only fallback.
    • The library's seeded dot was hardcoded false in the GUI: the daemon's
      /catalog carries no seeded field, so the GUI now merges GET /seeded (the
      daemon's own "is THIS node announcing" answer) into the catalog and
      per-track status. Seed/Unseed clicks reflect within one poll; a failed
      /seeded degrades to false, never invented state.
    • Sidebar navigation entries now expose accessible-role/label, so screen
      readers and the element-tree tests can address every view by name.
    • The runtime-resolution test compared mixed path separators; now
      separator-normalized. The playback test's fake-player fixture is
      spawnable on Windows (was a .sh script, EFTYPE under bare-subprocess).

    Measured: JS suite 865/865 tests / 4048/4048 asserts, lint clean;
    GUI cargo test 81/81, clippy -D warnings clean; real-mpv e2e 9/9
    (OUTFLUX_REAL_PLAYER=1) — pre-fix it died with "mpv ipc: socket never
    appeared".

    Downloads
  • v0.3.5 73118f62f9

    OutFlux 0.3.5
    All checks were successful
    Release / decide (push) Successful in 30s
    CI / test (push) Successful in 3m31s
    Release / attach (push) Successful in 1m31s
    Release / gui (push) Successful in 7m25s
    Release / test (push) Successful in 3m54s
    Stable

    Ghost released this 2026-10-24 02:50:43 +00:00 | 22 commits to main since this release

    The GUI could not find its own core bundle when launched by double-click
    on Windows — the exact case every packaged release ships for.

    Fixed

    • The sidecar spawn failed with "failed to spawn sidecar: no such file or
      directory (os error 2)" on double-clicked Windows exes. The GUI resolved
      the core bundle root from the current working directory's ancestors, but
      Windows sets that to C:\Windows\System32 (or the user's home), not the
      exe's folder. Resolution now checks the executable's own directory
      FIRST (the bundle root — package.json + src/ beside the exe), then the
      cwd ancestors for dev checkouts. Found from a user's Windows report;
      three new tests pin the resolution order.
    • Sidecar spawn failures now name the resolved root and every runtime
      candidate tried, so "os error 2" is never undiagnosable from a release.
    Downloads
  • v0.3.4 88b97620a0

    OutFlux 0.3.4
    All checks were successful
    Release / decide (push) Successful in 29s
    CI / test (push) Successful in 3m26s
    Release / test (push) Successful in 3m26s
    Release / attach (push) Successful in 1m2s
    Release / gui (push) Successful in 7m27s
    Stable

    Ghost released this 2026-10-23 12:45:26 +00:00 | 27 commits to main since this release

    Every status line the shell shows now also lands in a debug log, so a
    truncated status bar is never the only record.

    Added

    • Settings view has a debug log: all status lines (info and failures) are
      timestamped and kept (up to 200 rows), errors highlighted red. An
      "errors only" filter and a Clear button make scanning quick.

    Fixed

    • Log rows grow to fit wrapped text instead of eliding, so long daemon
      reasons (e.g. "index subscriptions — error: …") are always readable.
    Downloads
  • v0.3.3 5b5f595a3f

    OutFlux 0.3.3
    All checks were successful
    CI / test (push) Successful in 3m16s
    Release / test (push) Successful in 3m15s
    Release / decide (push) Successful in 25s
    Release / attach (push) Successful in 1m3s
    Release / gui (push) Successful in 4m54s
    Stable

    Ghost released this 2026-10-18 15:04:39 +00:00 | 30 commits to main since this release

    First GUI-only smoke test found a real playback bug — every play after the
    first crashed the daemon's /play route.

    Fixed

    • The local-player sink object now implements the sink contract's stop()
      itself (kill the live handle and clear it). It only ever implemented
      start/handle, so the second /play in a daemon's lifetime always failed
      with TypeError: sink.stop is not a function (500 INTERNAL) — the crash
      path fired whenever a track ended naturally, the player binary exited
      (e.g. no audio device), or the user switched tracks. Found by the live
      GUI smoke test against the real daemon; regression test drives the sink
      through start → start with a fake player binary (red without the fix).
    Downloads
  • v0.3.2 f7c199b520

    OutFlux 0.3.2
    All checks were successful
    CI / test (push) Successful in 3m15s
    Release / test (push) Successful in 3m10s
    Release / decide (push) Successful in 25s
    Release / attach (push) Successful in 1m2s
    Release / gui (push) Successful in 4m53s
    Stable

    Ghost released this 2026-10-17 08:33:08 +00:00 | 33 commits to main since this release

    Bug-hunt fixes, batch 2 (daemon resilience + route correctness).

    Fixed

    • Both HTTP servers keep a permanent post-startup 'error' listener — a
      later server-level error no longer crashes the daemon as uncaught.
    • Daemon startup releases partially-built state (listeners, deps/storage
      fd-lock) when any setup step after buildDeps fails, instead of leaking
      it and making the next start fail cryptically.
    • /import claims its single-slot guard synchronously (TOCTOU: two
      concurrent POSTs could both pass the old check and scan together);
      validation refusals release the claim.
    • /next and /prev route sink failures through playerAction
      (SINK_UNAVAILABLE -> 503, UNSUPPORTED -> 422) instead of 500 INTERNAL
      with a stack trace.
    • readBody caps buffered request bodies at 1 MiB.
    • Malformed percent-encoding in path params answers 400 BAD_REQUEST
      instead of throwing URIError into a 500.

    Note: core platform zips were removed after upload — assets are GUI binaries only (linux-x64, win32-x64), including the tokio-reactor startup fix (dae6763) and the batch-2 daemon fixes (f7c199b). macOS builds are not included.

    Downloads
  • v0.3.1 735e3f424e

    OutFlux 0.3.1
    All checks were successful
    CI / test (push) Successful in 3m15s
    Release / attach (push) Successful in 1m3s
    Release / test (push) Successful in 3m16s
    Release / decide (push) Successful in 27s
    Release / gui (push) Successful in 5m18s
    Stable

    Ghost released this 2026-10-17 07:30:28 +00:00 | 36 commits to main since this release

    The GUI no longer hides the core when it fails to start.

    Fixed

    • GUI (Windows release): the sidecar only looked for the Bare runtime at
      node_modules/bare-runtime-win32-x64/bin/bare.exe, but the release core
      bundle places bare.exe at the bundle root — the lookup missed, the
      sidecar fell back to node (absent on Windows) and the core never
      started. The runtime is now found at the bundle root too.

    Added

    • The GUI's core sidecar now appends everything the daemon prints
      (stdout + stderr, plus a spawn banner) to outflux-core.log in the
      core's folder, so a core that fails to boot is diagnosable from a
      release instead of dying silently.

    Note: core platform zips were removed from this release after upload — assets are GUI binaries only (linux-x64, win32-x64). macOS builds are not included.

    Downloads
  • v0.3.0 b4b444055d

    OutFlux 0.3.0
    All checks were successful
    CI / test (push) Successful in 3m16s
    Release / test (push) Successful in 3m13s
    Release / decide (push) Successful in 26s
    Release / attach (push) Successful in 1m2s
    Stable

    Ghost released this 2026-10-17 06:53:22 +00:00 | 39 commits to main since this release

    The OutFlux GUI (Slint) as ready-to-run binaries.

    Added

    • outflux-0.3.0-gui-linux-x64 - native Linux x64 GUI binary
    • outflux-0.3.0-gui-win32-x64.exe - Windows x64 GUI binary

    Run the binary directly. macOS builds are not included in this release.

    The peer-to-peer core (CLI, TUI) ships in the source tree; see the repo README for building it.

    Downloads
  • v0.2.1 8eb495fc1f

    OutFlux 0.2.1
    Some checks failed
    CI / test (push) Failing after 26s
    Release / test (push) Successful in 2m21s
    Release / decide (push) Successful in 27s
    Release / attach (push) Successful in 45s
    Stable

    Ghost released this 2026-10-14 18:39:06 +00:00 | 100 commits to main since this release

    Release automation now ships platform artifacts: every push to main that
    bumps the version tags itself, publishes the Forgejo release, builds a
    linux-x64 bundle (JS core + Bare runtime binary, other platforms'
    prebuilds pruned) and attaches it as a zip.

    Added

    • outflux-<version>-linux-x64.zip release artifact, built and
      attached automatically by the release workflow on the real runner.
    • scripts/prune-prebuilds.js: prunes non-target prebuilds and
      bare-runtime sibling binaries from a staged bundle.

    Notes

    • scripts/release-publish.js hardened after live-API testing: origin
      parsing (host-backtracking bug), multipart attachment upload, attach
      on the release-already-exists path, TOKEN/GITHUB_TOKEN/FORGEJO_TOKEN
      all accepted, REPO override respected.
    • Not in this release: macOS artifacts (needs a mac runner).
    Downloads