Skip to content

0.9.0 - 2026-08-25

Choose a tag to compare

@github-actions github-actions released this 25 Aug 12:47

Release Notes

Added

  • Windows xray lifecycle on CI. tests/xray_lifecycle_windows.rs mirrors
    the Unix subprocess suite with a rustc-compiled fake xray, so
    xray::spawn readiness, stop() kill, and trial-dir cleanup are now
    covered on windows-latest as well as ubuntu-latest.
  • ADR-012 + SBOM. ADR-012 locks the review-scope calls (engine stays on
    api::types per ADR-011, serde(other) stays rejected). Release builds
    now emit cf-scanner.spdx.json via cargo-sbom and upload it with the
    global artifacts.

Changed

  • Frontend redesign ("Ethereal Glass"). OLED near-black paper with
    violet/emerald mesh orbs; display font Space Grotesk Variable, body Plus
    Jakarta Sans Variable (Inter removed); ultra-light 1.5px icon strokes;
    double-bezel cards (outer shell + inset core) across Simple, Pro, results
    tiles, and the results table; floating sticky glass header; button-in-
    button CTAs with spring hover physics; scroll-entry reveals via
    IntersectionObserver; progress bar animates scaleX (RTL-aware) instead
    of width. Latin-only font subsets keep dist lean.
  • Server god-file split. src/server.rs (3.2k lines) is now
    src/server/{mod,state,error,guard,sse}.rs — router + handlers stay in
    mod.rs; state/Ranges, error envelope, guard/middleware, and SSE remain
    isolated. No behavior change.
  • Data-dir single writer. paths::data_write_guard() serializes every
    managed write (profiles.json now tmp+rename with 0o600 on the tmp file,
    ranges pool, identity.json, xray binary + sidecar). The gate is held
    across the whole atomic write.
  • Library facade. src/lib.rs hides geo, socks, inline_verify as
    mod (crate-private); the public surface is exactly what the binary and
    the integration tests import.

Fixed

  • CI: dtolnay/rust-toolchain@master drift broke the windows leg and then
    ignored component inputs — toolchain is now selected by action ref
    (@1.88) with explicit rustup component add steps. A bare env: that
    broke release.yml parsing was removed.

Install cf-scanner 0.9.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/qmahyar/cf-scanner/releases/download/v0.9.0/cf-scanner-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/qmahyar/cf-scanner/releases/download/v0.9.0/cf-scanner-installer.ps1 | iex"

Download cf-scanner 0.9.0

File Platform Checksum
cf-scanner-x86_64-pc-windows-msvc.zip x64 Windows checksum
cf-scanner-x86_64-pc-windows-msvc.msi x64 Windows checksum
cf-scanner-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
cf-scanner-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum