Skip to content

Releases: vindeckyy/Solar-Flare

v2026.718.5-solarflare

Choose a tag to compare

@vindeckyy vindeckyy released this 18 Jul 21:04

SolarFlare v2026.718.5-solarflare

Built from the clean tag at commit 3d9e083c18e262b7f2c9cf19b159190b2d0bcb38.

Highlights:

  • Completely redesigned responsive observatory Web UI with desktop navigation rail and compact mobile controls.
  • SolarFlare branding across localized presentation copy while retaining protocol compatibility.
  • Local featured Moonlight client catalog with no third-party runtime fetch.
  • Six current UI screenshots on the main README and a reproducible all-tab capture script.
  • Focused Web UI contract coverage: 16 tests passed.

Asset:

  • sunshine-x86_64 — clean, stripped Linux x86_64 Release ELF built with X11 and NVENC/CUDA support.
  • Embedded version: 2026.718.5-0-g3d9e083c (no dirty suffix).
  • SHA-256: ba07fabdeaddcfedd6d03609b8fc9080695b872f82a057d4632c584597b4ad8a.

Diff since v2026.708.4-solarflare: v2026.708.4-solarflare...v2026.718.5-solarflare

v2026.708.4-solarflare

Choose a tag to compare

@vindeckyy vindeckyy released this 16 Jul 20:17

SolarFlare v2026.708.4-solarflare

Built from 506b3506 on master. Includes the portal stability fixes from #17 (closes #14 and #16):

  • Portal D-Bus wait now bounded by a 15 s GLib timeout so a stalled portal fails fast instead of wedging the HTTPS control plane.
  • cursor_mode = EMBEDDED requested when the portal's AvailableCursorModes advertises it (fixes invisible cursor on KDE).
  • verify_and_update_display_parameters() falls back to logical / stream resolution when wl_output reports 0x0 (KWin quirk), so absolute mouse input works.
  • dbus_response_t gained a destructor: signal subscription + timeout source + response variant are released together (same bug class as 75c83f9).
  • Signal pre-subscription before the proxy call, returned-path verification: closes the race where a fast response terminated the wait with the wrong subscription.
  • Build fix: src/stream.cpp now includes nanors/rs.h so the restored nanors parity-override compiles.

Asset

sunshine-x86_64 — Linux x86_64 stripped ELF (binary only). Note: the web UI is served from an assets/web directory on disk, not embedded in the binary. Building from source always ships the current UI (the web-ui CMake target runs npm run build); if you install the prebuilt binary, deploy assets/web alongside it (or build from master) so the config interface reflects your changes.

Build: cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DOCS=OFF -DSUNSHINE_ENABLE_TRAY=OFF; stripped with strip.
Source: https://github.com/vindeckyy/Solar-Flare/tree/v2026.708.4-solarflare
Diff since v2026.708.3: v2026.708.3-solarflare...v2026.708.4-solarflare

v2026.708.3-solarflare

Choose a tag to compare

@vindeckyy vindeckyy released this 13 Jul 04:46

Security sweep:

  • src/stream.cpp: bound length-prefixed parse in IDX_INPUT_DATA and IDX_LOSS_STATS handlers (M-1)
  • src/crypto.cpp: PEM_read_bio_X509 / PEM_read_bio_PrivateKey return values now checked (M-2)
  • src/nvhttp.cpp: cap concurrent TLS handshakes at 64 (M-3)
  • src/httpcommon.cpp + src/confighttp.cpp: password min length 12 + per-IP login rate limit 10/30s (M-4)
  • src/confighttp.cpp: cover-upload path traversal guard, API token log-injection guard (L-1, L-2)
  • src/httpcommon.cpp: download_file TLS verify + HTTPS-only + timeout (L-3)
  • cmake/packaging/linux.cmake: install(CODE) hook applies setcap on local builds

v2026.708.2-solarflare

Choose a tag to compare

@vindeckyy vindeckyy released this 10 Jul 10:57

v2026.708.2-solarflare

19 commits since v2026.708.1-solarflare.

Build system

  • ccache + mold — CMAKE_CXX_COMPILER_LAUNCHER/CMAKE_C_COMPILER_LAUNCHER wired, -fuse-ld=mold, 17s cold rebuild
  • Submodule stub fix — check_not_empty now detects .git stub files in uninitialized submodules (fresh clones no longer skip git submodule update --init)
  • OOM guard — cap -j6 on 16GB machines
  • GEN_WAYLAND hardening — wayland-protocols submodule fetched before cmake configure
  • CI — ci-copr.yml removed (source of release-time failure emails)

Fixes

  • capture — verify_kwin() guarded + X11 window_system forced when skip_wayland_correlation is set
  • rate_cap_pct — link detection cache cleared on config change (stale links no longer persist)
  • docs — */ break sequence in set_thread_cpu_pinning doxygen comment
  • test coverage — skip_wayland_correlation, sf_opus, sf_audio keys added to internal options skip set

Docs & changelog

  • README: visual polish, corrected numbers, badge updates
  • CHANGELOG-SolarFlare.md: restructured chronological, full 95-commit index appended
  • Morning sweep patches (audio FX, KMS, config consistency)

Removed

  • Windows port code and documentation scrapped

v2026.708.1-solarflare

Choose a tag to compare

@vindeckyy vindeckyy released this 09 Jul 03:22

SolarFlare 2026-07-08 patch release

Fixes the long-standing "I have to re-pair every time Sunshine restarts" bug.

Highlights since v2026.708.0-solarflare:

  • fix(certs): adopt existing pkey/cert on restart instead of generating (7fde0ef)
    Every restart was creating a new server cert because the user's
    sunshine.conf has no pkey=/cert= lines, so the empty-config
    branch in http::init() generated a random unique_id on every
    start. The new cert invalidated every paired Moonlight client and
    forced re-pair. Fix: scan appdata/credentials/ for existing
    pkey-* files and adopt the newest by mtime. On Hayden's box
    this stops the accumulation of 2266+ cert/pkey pairs from previous
    restarts. One re-pair required after this update (the existing
    paired client certs in sunshine_state.json don't match the
    adopted server cert). After that, every restart preserves the cert.

  • feat(error): SUN_ERR tagged error log + process-wide counters (5d113c3, 6cd3046, 718fb65)
    New src/error.h with error_category_e, encode_error_e, and the
    SUN_ERR(cat, tag, msg) macro. Every error log line is now
    self-correlated with file:line:func + category tag + per-category
    atomic counter. encode() and encode_nvenc() return
    std::optional<encode_error_e> so call sites can branch on the
    specific cause (EMPTY_PACKET, FRAME_INDEX_MISMATCH,
    UNSUPPORTED_SESSION) instead of the previous generic "Could not
    encode video packet" message. New GET /api/errors endpoint
    (LOGS_GET scope) returns the counter snapshot for the Web UI.

  • test(error): standalone runner
    tests/run_test_error.sh bypasses the cmake test target (which
    OOMs the 16GB box on full test_sunshine link). Compiles only
    src/error.cpp + tests/unit/test_error.cpp + gtest_main.cc in
    ~5s, ~300MB peak. 4 unit tests pass on the host.

Upgrade notes:

  1. Pull and rebuild: cd ~/Desktop/Solar-Flare && git pull --rebase && cmake --build cmake-build-test --target sunshine -j4
  2. Install: sudo cp cmake-build-test/sunshine /usr/local/bin/sunshine && sudo setcap "cap_dac_override,cap_sys_admin,cap_sys_nice+ep" /usr/local/bin/sunshine
  3. Restart: systemctl --user restart sunshine
  4. Re-pair ONE TIME in Moonlight (forced because the adopted server cert doesn't match the certs currently in sunshine_state.json)
  5. Optional cleanup: rm ~/.config/sunshine/credentials/pkey-* to remove the 2265 orphan pairs

After step 4, every subsequent restart preserves the cert. No more forced re-pair.

v2026.708.0-solarflare

Choose a tag to compare

@vindeckyy vindeckyy released this 08 Jul 17:21

SolarFlare 2026-07-08 release

Highlights since v2026.999.2-solarflare:

  • cert: persist TLS cert/key in appdata/credentials/, survive reboots (fixes pairing after reboot)
  • cert: empty nvhttp.cert defaults; remove blocking set_options (fixes TLS handshake hang)
  • stream: align stream ports with Moonlight clients https_port+offset math
  • stream: give audio its own UDP port instead of colliding with control (fixes 48015 EADDRINUSE)
  • proc: keep detached app sessions alive indefinitely (fixes 5s timeout disconnect loop)
  • x11: remove INPUT_PROP_DIRECT from uinput touch device (fixes X11 game input)
  • niri: add niri (Smithay) Wayland compositor support
  • niri: 6 unit tests for niri auto-detect + set_backend round-trips

Build version: 86-ab0efcc
Tests: 474 passed / 12 skipped
Commits since v2026.999.2-solarflare: 33
Commit count since fork (upstream..HEAD): 86