Skip to content

Improve run discovery and archive-aware save operations - #18

Open
x43x61x69 wants to merge 5 commits into
dougchansan:mainfrom
x43x61x69:local-modifications
Open

x43x61x69 wants to merge 5 commits into
dougchansan:mainfrom
x43x61x69:local-modifications

Conversation

@x43x61x69

Copy link
Copy Markdown

The kit currently depends on a narrow run-directory layout, and selecting a save archive does not carry its full identity through subsequent file actions. This change discovers workspace runs, defaults to the newest one, and preserves the selected archive for listing, backup, replacement, deletion and comparison.

The main behavior changes are:

  • Discover runs through workspace ancestors and NS2_RUNS, distinguish a connected run from a promoted filesystem root, and keep save inventory available when no installed titles are listed.
  • Add archive-specific actions, exact archive pulls, recursive replacement manifests and optional comparison after backup.
  • Route single-file writes through the staged writer. Replace the title write allowlist with interactive title/account/path confirmation; require separate confirmation for missing backups or changed live bytes, and reject piped input as authorization. Preserve upstream chunked hashing and manifest integrity checks.
  • Keep upstream Balatro support while selecting its primary account archive exactly, hiding its menu actions for unsupported archives, and requiring interactive confirmation for receipt-owned removal, including direct CLI use.
  • Include optional cleanup-gated acquisition retry and worker-timeout diagnostic patches. Their tests use a pinned companion ns2jb checkout instead of ignored staging files.

This branch merges upstream 9d8ba7f, retaining its Balatro implementation and third-party notices. Single-file regression coverage is adapted to the shared writer, and Balatro test fixtures resolve the system temporary directory so macOS /var symlinks do not cause false failures. README update histories record the changes and integration dates.

Validation: 87 Node tests pass locally; one optional real-release ZIP test skips. All 8 Python tests and both Lua suites pass. The shell dry run skips without a local save backup. No new console installation/rollback success is claimed, and the native acquisition hang remains unresolved. CI tests the acquisition diagnostics against the companion engine pinned in the workflow. No save data, launcher payloads, runs or memory captures are included.

Preserve the downloaded toolkit baseline at upstream 700814f rather than
replacing newer upstream main with an older local snapshot. Publish this work
on local-modifications and keep upstream authorship and MIT/NOTICE attribution.

Discover runs in workspace ancestors and NS2_RUNS; select the newest run by
default. Carry archive selectors through file actions, batch pulls and backup
comparison. Add exact archive pulls and recursive replacement manifests.

Replace the title write allowlist with shared path validation and interactive
archive/account/path confirmation. Require separate confirmation for missing
backups or changed live bytes, and reject noninteractive authorization.

Ship cleanup-gated acquisition and staged worker-timeout diagnostic patches.
Make their tests use the companion checkout instead of ignored staging files;
pin the CI companion revision. Document known native-hang limitations and
exclude saves, account caches, staging output and macOS metadata.

Validation: 28 Node entries, 8 Python tests and both Lua suites pass locally.
Optional real-sample cases and the shell dry run skip without local fixtures.
No new hardware success is claimed.

Local changes, integration, documentation and validation:
ZW Cai (@x43x61x69). Original toolkit credit: dougchansan and contributors.
Include the fork default branch in push triggers so the current savekit changes and pinned companion host are checked on GitHub. Maintained by ZW Cai (@x43x61x69).
Port bounded file hashing from upstream 123edd8 and staged payload integrity checks from 975a59b, adapting the tests to the shared writer and existing interactive confirmation policy. Verify replacements against their new bytes and retain the single-file adapter. Keep the optional Balatro launcher out of this selective port.

Reduce personal attribution to one credits entry per README and use functional patch headings. Validation: all 39 Node test entries pass locally.
…orkflows

Merge upstream main at 9d8ba7f, including the pinned Balatro Switch 1 launcher,
its release checks, backup receipts, rollback implementation and notices.
Retain the shared staged writer, interactive confirmations, recursive paths,
run discovery and archive-specific actions from this fork.

Limit Balatro menu entries to the supported primary account archive, pull that
archive exactly for backups/verification, and require interactive confirmation
for direct receipt-owned removal. Adapt single-file regression tests to the
shared-writer adapter and resolve macOS temporary-directory symlinks in tests.

Document the dated updates and hardware-validation limits. Validation:
87 Node tests pass, one optional real release ZIP test skips; 8 Python tests
and both Lua suites pass. The shell dry run skips without a local save backup.
No launcher payload, save, game data, runs or memory captures are included.
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.

1 participant