Skip to content

Integrate Balatro save launcher with verified install and rollback - #17

Merged
dougchansan merged 1 commit into
mainfrom
feature/balatro-save-launcher
Nov 8, 2026
Merged

dougchansan merged 1 commit into
mainfrom
feature/balatro-save-launcher

Conversation

@dougchansan

Copy link
Copy Markdown
Owner

Closes #13.

Why

The toolkit could move generic save files but did not provide a safe integration for Luminger's Balatro launcher. An ordinary restore of the original files would leave newly added .lovegame bootstrap files behind, so rollback must also remove the files owned by the installation.

Changes

  • Add plan, stage, install, verify, and restore commands and matching kit menu actions for Balatro's Switch 1 edition (0100cd801ce5e000), including that edition on Switch 2 in compatibility mode. Refuse other title IDs.
  • Pin upstream v1.1.0 by archive SHA-256 and every installed file's size/hash. Install exactly 20 launcher files, including the font license; exclude JKSV metadata. No upstream payload or game data is vendored.
  • Make fresh installs add-only. Refuse launcher/probe/script collisions, take a complete identity-checked live backup, write an immutable receipt before console mutation, and verify both the payload and preserved gameplay files afterward.
  • Roll back only receipt-owned paths, after backing up current contents. Check current file size/hash before one deletion transaction, then verify absence and preservation. Keep gameplay data, logs, and unknown files. Protect baseline directories against output overlap.
  • Validate optional staged-file size/hash before console access and treat only canonical path-not-found as absence in the staged writer.
  • Document compatibility, operation/recovery commands, third-party licensing, and validation limits.

Validation

  • All 24 local Node/Python/shell test commands passed; the subsequent overlap and zero-UID guards passed their focused suites.
  • New offline coverage includes 13 launcher/backup tests, 14 archive tests, 16 removal transaction tests, and 2 staged-writer guard tests.
  • Downloaded the actual 58,223-byte release ZIP, verified its published SHA-256, and successfully staged its 20 files / 148,240 bytes through the top-level CLI. The optional real-archive test also passed.
  • JavaScript/Python syntax, JSON, and whitespace checks passed; independent review approved the final backup/output guard.

Hardware status

The direct SaveKit install/rollback path has not been exercised on a console in this change. The guide explicitly leaves that smoke test pending and distinguishes upstream's physical-cartridge JKSV/save-transfer results from this integration. Supported upstream image profiles are 1.0.1f and 1.0.1o; native Switch 2 Balatro is excluded.

Add planning, staging, installation, verification, and receipt-owned removal
for the Switch 1 Balatro edition. Preserve gameplay files with complete
identity-checked backups, pin the upstream release and every installed file,
and keep the original baseline immutable through failure and rollback.

Expose the launcher in the kit menu, document compatibility and the pending
hardware smoke test, and add offline regression coverage. Harden staged
writes against changed payload bytes and ambiguous file-open failures.
@dougchansan
dougchansan merged commit 9d8ba7f into main Nov 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

support for new savehax

1 participant