| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Remove unused code | 3 个月前 | |
FIx #579 | 1 个月前 | |
Add cursor snap animation | 2 个月前 | |
Implement proper logging and progress APIs for the script engine | 2 个月前 | |
Complete first i18n pass | 3 个月前 | |
Implement proper logging and progress APIs for the script engine | 2 个月前 | |
Play coin manipulation is the perfect feature to ship in a script | 2 个月前 | |
Fix #591 | 6 天前 | |
Use a menu to show settings and scripts options | 2 个月前 | |
Implement proper logging and progress APIs for the script engine | 2 个月前 | |
Initial implementation of wireless transfer on the switch | 3 个月前 | |
Pre-bundle sharkive cheats manager app in Checkpoint | 2 个月前 | |
QoL UX fixes | 2 个月前 | |
QoL UX fixes | 2 个月前 | |
More work on progress bars API | 2 个月前 | |
Fix #587 | 6 天前 | |
Complete first i18n pass | 3 个月前 | |
Complete autoupdater; remove hold B to refresh titles; bump version | 1 个月前 | |
Implement proper logging and progress APIs for the script engine | 2 个月前 | |
Fix #591 | 6 天前 | |
Backup size worker threads shouldn't block other threads and applets from loading | 3 个月前 | |
Gfx hygiene | 3 个月前 | |
Fix #587 | 6 天前 | |
Remove extra debug logs | 2 个月前 | |
Support system saves (fix #102) | 7 个月前 | |
Replace the old ftpd ported code with the new one | 2 个月前 | |
Add cursor snap animation | 2 个月前 | |
Gfx hygiene | 3 个月前 | |
Renderer hardening | 3 个月前 | |
Fix #588 | 5 天前 | |
Fix #591 | 6 天前 | |
Add USB MTP support on Switch (#573) Plugging the console into a PC now makes it show up as a portable device, so save backups can be dragged off (and scripts dropped on) over the charging cable, with no network and no SD card swapping. This is the USB counterpart to the existing FTP server, and it exposes the same view: the whole SD card as a single read-write MTP storage. The responder is written in-tree rather than vendored. The obvious candidate, Atmosphere's haze (and the libhaze packaging of it), is GPLv2-only, which cannot be combined with Checkpoint's GPLv3. Four new units, layered so the protocol is testable away from the cable: * mtp.hpp/.cpp - PTP/MTP wire vocabulary: the container header, the operation, response, format and property codes, and the two codecs that read and write PTP datasets (including the awkward "empty string is a bare zero byte" rule). * mtpusb.hpp/.cpp - usb:ds transport. Publishes a USB Still Image interface (class 6/1/1) with the bulk IN/OUT plus interrupt IN endpoint trio the class requires, for high and super speed, and moves blocks over page-aligned DMA buffers. usb:ds calls share one service session, so they are serialised behind a mutex while the completion wait stays outside it - that is what lets a shutdown cancel a parked transfer instead of waiting out the data-phase timeout. * mtpresponder.hpp/.cpp - the responder proper: lazily minted object handles over a directory tree, whole-file and partial reads, uploads streamed straight to disk, delete, move, rename and the object-property operations hosts lean on. Handles are never reused within a session, so a stale handle resolves to "no such object" rather than to some other file. Host-supplied names are rejected if they contain a path separator, and a "delete every object" request is refused outright. * mtpserver.hpp/.cpp - lifecycle. A worker polls the config toggle, so switching MTP off releases usb:ds and switching it on claims it again with no restart. Claiming can legitimately fail (a sysmodule holds it, or the console is docked); the loop backs off and retries. Wiring: an "mtp-enabled" config flag (default off), a Connectivity toggle whose status suffix distinguishes USB unavailable / waiting for a PC / connected, translations for all ten languages, and init and teardown alongside the FTP server. The protocol layer was exercised on a host build against a fake USB pipe - session gating, enumeration, byte-exact whole and partial reads, 3 MiB multi-block transfers in both directions, upload, rename, recursive delete, stale-handle behaviour and the traversal rejection all pass clean under ASan and UBSan. The usb:ds layer itself can only be verified on hardware. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UQoN3vCC5am5HG71cTkMzk | 1 个月前 | |
Add USB MTP support on Switch (#573) Plugging the console into a PC now makes it show up as a portable device, so save backups can be dragged off (and scripts dropped on) over the charging cable, with no network and no SD card swapping. This is the USB counterpart to the existing FTP server, and it exposes the same view: the whole SD card as a single read-write MTP storage. The responder is written in-tree rather than vendored. The obvious candidate, Atmosphere's haze (and the libhaze packaging of it), is GPLv2-only, which cannot be combined with Checkpoint's GPLv3. Four new units, layered so the protocol is testable away from the cable: * mtp.hpp/.cpp - PTP/MTP wire vocabulary: the container header, the operation, response, format and property codes, and the two codecs that read and write PTP datasets (including the awkward "empty string is a bare zero byte" rule). * mtpusb.hpp/.cpp - usb:ds transport. Publishes a USB Still Image interface (class 6/1/1) with the bulk IN/OUT plus interrupt IN endpoint trio the class requires, for high and super speed, and moves blocks over page-aligned DMA buffers. usb:ds calls share one service session, so they are serialised behind a mutex while the completion wait stays outside it - that is what lets a shutdown cancel a parked transfer instead of waiting out the data-phase timeout. * mtpresponder.hpp/.cpp - the responder proper: lazily minted object handles over a directory tree, whole-file and partial reads, uploads streamed straight to disk, delete, move, rename and the object-property operations hosts lean on. Handles are never reused within a session, so a stale handle resolves to "no such object" rather than to some other file. Host-supplied names are rejected if they contain a path separator, and a "delete every object" request is refused outright. * mtpserver.hpp/.cpp - lifecycle. A worker polls the config toggle, so switching MTP off releases usb:ds and switching it on claims it again with no restart. Claiming can legitimately fail (a sysmodule holds it, or the console is docked); the loop backs off and retries. Wiring: an "mtp-enabled" config flag (default off), a Connectivity toggle whose status suffix distinguishes USB unavailable / waiting for a PC / connected, translations for all ten languages, and init and teardown alongside the FTP server. The protocol layer was exercised on a host build against a fake USB pipe - session gating, enumeration, byte-exact whole and partial reads, 3 MiB multi-block transfers in both directions, upload, rename, recursive delete, stale-handle behaviour and the traversal rejection all pass clean under ASan and UBSan. The usb:ds layer itself can only be verified on hardware. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UQoN3vCC5am5HG71cTkMzk | 1 个月前 | |
Add USB MTP support on Switch (#573) Plugging the console into a PC now makes it show up as a portable device, so save backups can be dragged off (and scripts dropped on) over the charging cable, with no network and no SD card swapping. This is the USB counterpart to the existing FTP server, and it exposes the same view: the whole SD card as a single read-write MTP storage. The responder is written in-tree rather than vendored. The obvious candidate, Atmosphere's haze (and the libhaze packaging of it), is GPLv2-only, which cannot be combined with Checkpoint's GPLv3. Four new units, layered so the protocol is testable away from the cable: * mtp.hpp/.cpp - PTP/MTP wire vocabulary: the container header, the operation, response, format and property codes, and the two codecs that read and write PTP datasets (including the awkward "empty string is a bare zero byte" rule). * mtpusb.hpp/.cpp - usb:ds transport. Publishes a USB Still Image interface (class 6/1/1) with the bulk IN/OUT plus interrupt IN endpoint trio the class requires, for high and super speed, and moves blocks over page-aligned DMA buffers. usb:ds calls share one service session, so they are serialised behind a mutex while the completion wait stays outside it - that is what lets a shutdown cancel a parked transfer instead of waiting out the data-phase timeout. * mtpresponder.hpp/.cpp - the responder proper: lazily minted object handles over a directory tree, whole-file and partial reads, uploads streamed straight to disk, delete, move, rename and the object-property operations hosts lean on. Handles are never reused within a session, so a stale handle resolves to "no such object" rather than to some other file. Host-supplied names are rejected if they contain a path separator, and a "delete every object" request is refused outright. * mtpserver.hpp/.cpp - lifecycle. A worker polls the config toggle, so switching MTP off releases usb:ds and switching it on claims it again with no restart. Claiming can legitimately fail (a sysmodule holds it, or the console is docked); the loop backs off and retries. Wiring: an "mtp-enabled" config flag (default off), a Connectivity toggle whose status suffix distinguishes USB unavailable / waiting for a PC / connected, translations for all ten languages, and init and teardown alongside the FTP server. The protocol layer was exercised on a host build against a fake USB pipe - session gating, enumeration, byte-exact whole and partial reads, 3 MiB multi-block transfers in both directions, upload, rename, recursive delete, stale-handle behaviour and the traversal rejection all pass clean under ASan and UBSan. The usb:ds layer itself can only be verified on hardware. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UQoN3vCC5am5HG71cTkMzk | 1 个月前 | |
Fix an USB reconnection issue | 1 个月前 | |
Add app root API | 2 个月前 | |
Mixed bag optimizations and switch logging server | 3 个月前 | |
Introduce SaveDataSource | 3 个月前 | |
Complete first i18n pass | 3 个月前 | |
Fix #587 | 6 天前 | |
Gfx hygiene | 3 个月前 | |
Allow sleep mode when backup/restore/transfer ops are occurring | 2 个月前 | |
Complete first i18n pass | 3 个月前 | |
Some forced-exit hardening | 2 个月前 | |
Remove extra debug logs | 2 个月前 | |
Mixed bag of fixes | 2 个月前 | |
Remove extra debug logs | 2 个月前 | |
Fix #587 | 6 天前 | |
Add restore verification and QoL fixes | 3 个月前 | |
Fix #541, fix #574 | 2 个月前 | |
Add cursor snap animation | 2 个月前 | |
Fix #587 | 6 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 7 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 5 天前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 6 天前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 6 天前 |