mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 19:11:08 +00:00
* feat(components): Auto updates for FEX, DXVK and VKD3D-Proton Each component gets an Auto or Manual mode on the Default Components page. Auto installs the newest DroidDeck-Components nightly into every Proton that ships the component, matching each Proton's ARM64EC or x64 flavour, keeps the current and replaced builds, and removes older builds it downloaded. A game that ran on the previous build and exits within 30 seconds twice on the new one rolls the line back; the failed build is skipped until a newer one is published. Existing manual choices keep that component on Manual, and DXVK stays on Manual while a GPU rule pins its version. * fix(components): Auto notes per line, Original label and first-update rollback Boot history on the Original is recorded before the first update so that update can roll back, rollback notes stay with their own component, the Original shows by name, and new Protons get the current build even when no newer one is published. * fix(components): Auto owns only its own downloads and follows in-place Proton updates Auto deletes only builds it downloaded, re-swaps a Proton whose version changed under an existing choice, reports a missing nightly listing as a failed check, writes its state atomically so the page can read it without waiting on a download, and words the rollback and download messages to match what it does. * fix(components): Auto keeps a rollback and reads updated Protons' own files After a rollback only a build newer than every rejected one is taken, so an older build still listed in the nightly cannot replace the restored one. Flavour detection treats a choice saved for an older Proton version as not applied, so a Proton Steam updated in place is read from its own files and re-swapped. A failed state rename falls back to a direct write and is logged. * fix(components): Keep the last good Auto state when a save fails * fix(components): Serialise Auto state reads and writes * Install the Linux runtime by itself on first launch The runtime auto-update skipped devices with no runtime, so FEX, Proton, DXVK and VKD3D waited for the first Steam launch to install it. Claim a first install when the device never had a runtime, on a usable network, outside battery saver and with a supported GPU, and check Proton as soon as the runtime is ready. A runtime the user removed stays removed. * fix(components): Check components as soon as Proton is installed The Auto check stamped its hourly timer even when no Proton was installed yet, so a fresh device waited an hour after Proton arrived. Skip the stamp until a Proton exists and run the check right after a Proton install finishes. * fix(components): Apply stored builds on every check and retry unfinished rollbacks A held or failed download no longer skips applying the stored build or stamps the hourly timer. Stored builds are applied on every check, so a new Proton is reconciled inside the hour, and a check requested while one runs is queued. A rollback that could not restore or swap a Proton is retried and reported only once it finishes. Removing the runtime marks it as seen so it is not installed again, and the failed-save test skips where the process can still write read-only files. * fix(components): Keep rollback restores pending until applied and save state on failure * fix(components): Hold newer builds until a pending rollback is applied * fix(components): Drop pending restores for removed Protons * fix(components): Never auto-install a non-ARM64X build over a Proton's own ARM64X DXVK or VKD3D * fix(components): Read probe archives outside the lock and block auto updates while the original build is unknown * fix(components): Require ARM64X when any Proton on the line needs it, and before each swap