Repository navigation
Releases
Releases · drewano/armada-lsfg-adaptive
v0.2.2
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
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
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
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
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
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
Fix arch detection under FEX emulation + surface errors in the panel …
v0.1.1
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
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