Skip to content

Releases

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 17 Aug 06:00
Canonical conf.toml preamble: version=2 always at TOML top level (0.2.2)

On-device doctor caught it: 'lsfg-vk-cli validate' -> unsupported
configuration version. The engine requires integer version=2 at the
root of conf.toml, but the version-ensuring code operated on raw lines
without table awareness - a legacy file carrying 'version = 2' after
the [global] header (parsed as global.version) kept it there, leaving
no root-level version and the engine rejected the whole file.

with_conf_version now rewrites the preamble deterministically:
version=2 first, then [global] with the preserved body. Any placement
history (v1, inside [global], missing) normalizes correctly.

Doctor also reports conf.toml's parsed version/profile count and the
panel shows a 'conf.toml version' line so this class of issue is
visible at a glance. 63 tests (3 new regression tests).

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 17 Aug 05:50
Point remote_binary at the v0.2.0 proven engine assets (0.2.1)

Store builds now bundle the PancakeTAS 8b0da26 layer, its layer-info
and the lsfg-vk-cli diagnostic binary instead of the experimental
engine.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 05:47
Switch to the hardware-proven engine + on-device doctor (0.2.0)

The experimental adaptive engine had never run on Adreno/Turnip/FEX and
produced no visible frame generation on-device. The reference working
setup on Armada (lsfg-vk-odin2-armada) is PancakeTAS/lsfg-vk develop
@ 8b0da26 (v2.0.0-dev) - so the plugin now bundles exactly that
revision (fixed multipliers, adaptive off) and keeps the experimental
engine selectable via LSFG_SOURCE=experimental for later validation.

Aligning with the working reference setup:
- conf.toml now starts with the top-level 'version = 2' marker
- profiles match on BOTH the executable basename and its relative path
  (under FEX the engine may see either form)
- profiles created by v0.1.x are healed at startup: the basename entry
  is added and conf.toml rewritten
- re-adding a game merges into the existing profile instead of
  duplicating

New on-device diagnostics:
- bundled lsfg-vk-cli (when built by the source) and a 'Full
  diagnostic' button: manifest sanity, library presence, ELF arch vs
  host, glibc requirement (parsed from the real aarch64 libc, not the
  possibly-emulated python) and 'lsfg-vk-cli validate' output
- adaptive controls are disabled when the engine lacks the capability

60 unit/integration tests (doctor, merge, healing, conf version,
adaptive capability defaults), smoke_zip covers run_doctor.

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 17 Aug 05:22
Rework panel layout for the narrow QAM (0.1.5)

On-device feedback: content overflowed the QAM panel width.

- target FPS is now a fixed-value dropdown (30/45/60/90/120/144/240,
  current value always offered) instead of a slider bar
- game header row is fully clickable with a compact chevron; the
  Expand/Collapse ButtonItem is gone
- status lines render label + detail on two lines with wrapping and
  ellipsis instead of a single row that squeezed
- executable list wraps instead of overflowing

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 17 Aug 05:13
Harden everything found by the full test campaign (0.1.4)

Test campaign results - two real bugs found and fixed:
- a globally corrupt conf.toml used to block every write with no
  recovery path; the whole old file is now quarantined (.rejected)
  and a fresh config is written instead
- the Lossless.dll fallback read scan_cache['lossless_dll'] which was
  never stored, so the discovered path only survived until the manual
  override cleared it; set_scan_cache now persists it

Also:
- settings lossless_dll persisted in scan cache
- device detail line no longer renders an orphan '· Hz' without rates
- new scripts/smoke_zip.py: unzips a built plugin, stubs decky, and
  drives 9 server methods end-to-end against the exact shipped code
  (PASS on local zip, decky-CLI store-simulated zip and CI zip)
- backend integration suite grew to 51 tests: every frontend-callable
  method, JSON-serializability of all responses, install/uninstall
  idempotency, fake Steam library scan + progress events, corrupt
  conf recovery, foreign profile preservation, validation boundaries,
  case-insensitive keys, subpath executables, fake /proc detection
- engine binary audited: only libc/libstdc++/libm/libgcc_s NEEDED,
  vkNegotiateLoaderLayerInterfaceVersion exported, ELF64 AArch64

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 17 Aug 05:04
Fix profile mutations: _to_thread rejected keyword arguments (0.1.3)

Every set_profile_* call passed kwargs (target_fps, multiplier, ...) to
Plugin._to_thread, whose signature was (fn, *args) - so all profile
mutations failed with 'TypeError: _to_thread() got an unexpected keyword
argument' and the frontend reloaded in a loop (broken-looking panel).

- _to_thread now forwards **kwargs to asyncio.to_thread
- add_steam_game now returns ok:true (the frontend treated every
  successful add as a failure)
- single reload after mutations instead of double
- guard /proc scans on non-Linux hosts
- new integration tests with a stubbed decky module exercising the real
  Plugin methods incl. conf.toml roundtrip (37 tests total)

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 17 Aug 04:53
Fix arch detection under FEX emulation + surface errors in the panel …

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 17 Aug 04:28
Prepare for Decky plugin store submission (0.1.1)

- Drop the debug flag (store requirement)
- Ship the prebuilt aarch64 layer via package.json remote_binary
  (pinned to the v0.1.0 release assets, sha256-verified at build time)
  so the store's x86_64 CI does not need to cross-compile the engine
- Rename backend/ to engine/: the decky CLI treats backend/Dockerfile
  as a custom docker backend, which the store builders cannot run for
  linux/arm64; engine/ stays a plain dev-only build script directory
- Verified with the real decky CLI: 'decky plugin build -b -o' produces
  a conforming zip (frontend container build + remote binaries + zip)

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 04:00
Armada LSFG Adaptive v0.1.0

Decky plugin bringing adaptive LSFG-VK frame generation to Armada OS
handhelds (aarch64):

- Python backend managing the lsfg-vk Vulkan layer (aarch64 build bundled
  in bin/) and per-game adaptive profiles in ~/.config/lsfg-vk/conf.toml
- Activation by active_in executable matching: no Steam launch options
- React/TS panel (bilingual FR/EN) with status, per-game settings and
  Steam library scan
- Engine: eugeniosegala/lsfg-vk-experimental (GPL-3.0) pinned in
  backend/Dockerfile, compiled for linux/arm64 in fedora:41
- 31 unit tests, local build script, GitHub Actions release workflow,
  curl-able installer