FTP: What's new
- Fixed: the FTP server is a new implementation. The old core is gone, replaced with the latest source code from mtheall's ftpd, which has been adapted to properly fit in Checkpoint.
- Fixed: 3DS transfers are roughly 4x faster on upload and 2x on download. The bottleneck was synchronous socket calls stalling the transfer thread, so the console now overlaps disk and network work instead of alternating between them.
- You'll notice the UI being a bit less responsive on the 3DS when FTP transfers are running: this is completely normal.
- Fixed: the Switch server no longer exhausts the system's socket buffers during a folder upload, which left it unable to accept new data connections until it timed out.
- Fixed: turning FTP off in Settings now closes the listening socket and drops the sessions, instead of leaving the port open.
Scripting: What's new
- Added: browser, a file browser for the SD card and for a title's live save archive.
- It supports copy, move, rename, delete, make folders, read properties, zip and unzip, one item or a batch at a time.
- It is the practical way to reach into a save without a PC: pull one file out of an archive onto the card, drop an edited one back in, or move a folder between two titles.
- Added: extdata (3DS), to create the extdata archive a title never made (#576).
- This script solves an issue where game mods use extdata for a title that never creates them. The script allows to artificially create a new extdata archive for that title.
- It also inspects any extdata id, including one a mod wrote under an id Checkpoint does not derive from the title id, and deletes an archive when you mean to.
- Added: new API calls, all documented in
scripts/README.md.sav_mkdir,sav_rmdirandsav_rename: scripts can now shape the folder structure inside a save archive, not just read and write files in it.sav_open_extdata, to open a per-title extdata archive by its raw id.extdata_default_id,extdata_createandextdata_delete(3DS; they return-1on Switch).extdata_createrefuses to touch an archive that already exists, so a mistyped id cannot erase a save.
- Fixed: the 3DS title catalog handed to scripts now also holds the titles that appear in the Extdata list alone.
- Fixed:
strdupallocates on the same run-scoped heap asmalloc, sofree()releases it and an aborted run reclaims it.
Wireless transfer: What's new
- Added: a fixed Receive PIN, in Settings > Network (3DS) / Connectivity (Switch).
- The PIN is still random per receive by default. Pin one and a
chlink send --pin 1234baked into a script keeps working run after run, which is what makes unattended batch transfers from the PC possible.
- The PIN is still random per receive by default. Pin one and a
- Fixed:
chlink sendfailing with "receiver rejected the PIN (403): Invalid token" (#561). Go canonicalises header names before writing them, so the console's case-sensitive lookup never found the token header and rejected every upload. - Fixed: a backup received from a sender that identifies no installed title no longer lands in an "Unknown title" folder (#572). It goes to the title whose backup list you opened Receive from, which is the one you pointed at.
- Fixed: the receiver no longer logs a connection in progress as an error, and no longer floods the log during a transfer.
3DS: What's new
- Fixed: a restore that cannot fit the console's path limit is refused before anything is deleted. It used to wipe the save archive first and die afterwards, on a backup folder the filesystem was never going to accept. Both the copy roots and every entry under them are checked up front, and the message names the offending path.
- Fixed: files a desktop OS left next to your backup no longer break a restore (#577). macOS stores a file's extended attributes in a
._sidecar next to it on FAT/exFAT, and drops.DS_Storein every folder Finder opens; a restore hit one after it had already cleared the console-side save. Those, and the equivalents Windows leaves behind, are now filtered out of the copy. - Fixed: carts whose save lives in on-cart NAND are now identified (#553, WarioWare: D.I.Y. and friends). They have no SPI save chip, so the probe used to report a bogus capacity and back up whatever the bus returned. Checkpoint now says what the cart is and points at GodMode9i in DS mode, rather than failing with a save archive error.
- Fixed: the progress modal no longer looks frozen while a restore clears the destination (#559). Clearing an extdata archive of thousands of files is now its own progress stage, and the stage labels (Backup, Restore, Clearing, Sending...) are translated.
- Fixed: buttons no longer do anything while the title list is still loading (#565). You could back up or restore a title you could not see yet, against a selection that was about to move.
- Added: Simplified Chinese is selectable in Settings (#566, thanks @dragonflylee). The translation shipped in 5.0.0 but the 3DS language list never offered it.
- Added: New 3DS consoles also run their application cores at 804 MHz now. This is a no-op on Old 3DS and 2DS.
- General system stability improvements to enhance the user's experience.
Switch: What's new
- Fixed: restoring a save of tens of thousands of small files no longer stalls near the end.
- The save data area is extended when the backup needs more room than it has.
- Files are preallocated instead of being grown block by block, and the free space is checked against the cluster-rounded requirement after the wipe, so the restore refuses up front instead of dying at 95%.
- The copy is counted against the pre-flight scan: a restore that reports success but moved fewer files than the backup holds is now reported as the failure it is.
- Save partition space is logged at every step, so a restore that still fails can be diagnosed from the log.
- Fixed: restore verification is about twice as fast. The CRC of each file is taken from the bytes already in the copy buffer, so the verify pass re-reads only the committed save instead of both sides.
- Fixed: the console no longer goes to sleep in the middle of a backup, restore or transfer (#574). Sleeping suspended the process mid-copy, on the save filesystem, with a journal half committed. Only auto-sleep is held off: the screen still dims on its usual idle delay.
- Added: the selection ring and the grid now animate between tiles instead of jumping, and snap when what is underneath changes (a different save type filter, a different account).
- Fixed: the same progress and stage-label work as the 3DS side (#559).
- General system stability improvements to enhance the user's experience.
Translations
- Added: Russian translation (thanks @Waleri228)
- Current language support includes English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese, Simplified Chinese and Russian.
- If you're a native speaker and think that text wording and appearance in the UI can be improved, please submit a pull request or open an issue on this repository.
If you wish to contribute, pull requests are highly appreciated.
