- 📄 Fix getDirsize stopping after the first entry f2e2145 @V10lator
- 📄 Reserve room for the slash removeDirectory appends 9373d33 @V10lator
- 📄 Detect a failed zip entry traversal cc9fe67 @V10lator
- 📄 Add the ticket size to dltotal 10f33d9 @V10lator
- 📄 Count an already present ticket as done content ba91051 @V10lator
- 📄 Don't double close the font RWops 90cce95 @V10lator
- 📄 Fix multiline word wrapping 6a916fa @V10lator
- 📄 Close the file when the download thread fails to start eee13e6 @V10lator
- 📄 Report the real code when the async install fails ff58834 @V10lator
- 📄 Free the ticket buffer on every path 79a33a8 @V10lator
- 📄 Free tmd2 on the path overflow in install() c8e3b7e @V10lator
- 📄 Abort deinstall() when MCP reports an error 9eba12d @V10lator
- 📄 Fix duplicate detection across target devices f7ee565 @V10lator
- 📄 Handle duplicate queue codes in predownloadMenu 3e7010d @V10lator
- 📄 Treat already queued titles as success in installerMenu a5133ce @V10lator
- 📄 Guard A/UP/DOWN against an empty filter f801810 @V10lator
- 📄 Free the filtered list when opening the queue menu eb7ca13 @V10lator
- 📄 Fix LEFT paging oscillating in queueMenu f199c32 @V10lator
- 📄 Re-clamp the queue view after a failed operation e85b25c @V10lator
- 📄 Replace name2tid's binary search with a linear scan 271a4aa @V10lator
- 📄 Only remove tickets that are really zero bytes 73c87e3 @V10lator
- 📄 Write cert3's unknown_01 field 6d789b9 @V10lator
- 📄 Store the current time as entropy timestamp 3893f70 @V10lator
- 📄 Validate numeric keyboard input 89db4e7 @V10lator
- 📄 Use the real rumble pattern length ac5b1c6 @V10lator
- 📄 Use FSARename's own result in revertNoIntro 9335197 @V10lator
- 📄 Let full-length titles pass the name buffer check 98fcdb7 @V10lator
- 📄 Fix download folder name creation a400224 @V10lator
- 📄 Longer disconnect timeout adb794d @V10lator
- 📄 Derive hasDependencies when installing from the queue b2d4707 @V10lator
- 📄 Deduplicate the IO queue slot commit 0e179eb @V10lator
- 📄 Implement wrapLastEntry() f482ebd @V10lator
- 📄 Check China, Korea and Taiwan in the brick warning 6adac1b @V10lator
- 📄 Name the predownload menu cursor lines e26227d @V10lator
- 📄 Bound the proxy URL assembly to the NetConf field sizes 643e020 @V10lator
- 📄 Derive the cetk cert3 offset from the structures be56062 @V10lator
- 📄 Drop the obsolete no-intro rename TODO b71769e @V10lator
- 📄 Complete the character set of the URL check fb87276 @V10lator
- 📄 Explain the pause after removing the old wuhb 1e7d961 @V10lator
- 📄 Explain the swkbd input buffer 8439bda @V10lator
- 📄 Type TitleData rambuf as RAMBUF dd64682 @V10lator
- 📄 Explain the handling of the killed-socket curl errors 551a437 @V10lator
- 📄 Explain the demo to main game TID mask a53a84e @V10lator
- 📄 Document why FS_STAT_FILE is not tested 153ec97 @V10lator
- 📄 Explain the 33 character wrap of the menu names 2f7fade @V10lator
- 📄 Remember the last browsed folder in the file browser bfcefae @V10lator
- 📄 Drop the duplicated DerivePointerAlignment key 750d091 @V10lator
- 📄 Move and unify defines 2a72084 @V10lator
- 📄 Drop brotli and zstd from libcurl (#490) e138422 @rctphone
- 📄 Extract the MCP install error texts 7fdcd79 @V10lator
- 📄 Restore the master docker cache in PR builds 1b5c432 @V10lator
- 📈 perf: donate a socket buffer pool so the receive window can grow 88f540f @V10lator
- 📈 perf: fetch content over two parallel streams 2a22efc @V10lator
- 🐞 fix: end the socket library on shutdown so the title can unload dcbbb51 @V10lator
- 🐞 fix: keep the connection cache across files, and two smaller things 7134020 @V10lator
- 🐞 fix: stop the UDP log before the socket library it rides on 3ed6b4e @V10lator
- 📄 Fix and simplify pool handling 3a0bd37 @V10lator
- 📄 Add Auto mode measuring the best stream count per host b410c1a @V10lator
- 📄 Mark the sockopt name as used in release builds 0e3aa8c @V10lator
- 📄 Translate the parallel download mode labels 6f50631 @V10lator
- 🐞 fix: keep waiting for the donation in release builds too (#494) b6e3916 @rctphone
- 📄 Switch to the devkitPro SDL2 01e0601 @V10lator
- 📄 Add an AGENTS.md for contributors and AI agents 3eec88e @V10lator
- 📄 Update clang-format 9185afa @V10lator
- 📄 Add line ending rule to .clang-format 954beec @V10lator
- 📄 Check pull requests with the same formatter as master 28c9bfa @V10lator
- 📄 Keep the progress bar inside its range c055ad8 @V10lator
- 📄 Feed the text functions a fixed format b546b72 @V10lator
- 📄 Treat a stopped app as no answer be7f2b4 @V10lator
- 📄 Report a cancelled install as a stop c7884cc @V10lator
- 📄 Pump the app while the boot error waits 6fd97e5 @V10lator
- 📄 Drop an update version that does not fit c558065 @V10lator
- 📄 Leave room for the file name in the folder limit 236b7a6 @V10lator
- 📄 Keep the network error inside its buffers f42d3fc @V10lator
- 📄 Wait for a free slot before committing a close f9678c0 @V10lator
- 📄 Free the TMD of an already queued install ca177c8 @V10lator
- 📄 Fall back to the folder in the already queued log 4150b12 @V10lator
- 📄 Bound the uninstall line in its buffer 9013b21 @V10lator
- 📄 Keep the no-intro prefix inside its buffer 84b6576 @V10lator
- 📄 Keep the no-intro renames inside the path buffers e5fbb84 @V10lator
- 📄 Hand zlib only the bytes that are left in the buffer 16c67e4 @V10lator
- 📄 Bound the path the file browser builds 6dfe834 @V10lator
- 📄 Draw the bye frame before marking the power exit 3986590 @V10lator
- 📄 Read the MCP async result as volatile a9742eb @V10lator
- 📄 Fold accented capitals in the title search dbf9043 @V10lator
- 📄 Drop localise() on composed lines b931e3c @V10lator
- 📄 Move the title queue lookup out of the folder loop 34fc7b5 @V10lator
- 📖 docs: tell agents to format commit headers for the changelog b938dd4 @V10lator
- 🐞 fix(downloader): resume a stopped ramp phase at the queue count a25bf01 @V10lator
- 🧯 build: Update SDL_FontCache 1f1ed66 @V10lator
- 🐞 fix(downloader): keep the speed display from dropping to zero fe5e7fe @V10lator
- 🐞 fix(fontcache): upload new glyphs straight into the atlas f9be769 @V10lator
- 📖 docs: spell out the squash and co author rules 303581c @V10lator
- 🌟 feat(ui): add the UI kernel and the fixed frame main loop 49e9fb9 @V10lator
- 🐝 refactor(menu): convert the menus to the shared screen stack 3416b12 @V10lator
- 🐝 refactor(ui): run the engine through the UI pump 104b789 @V10lator
- 🐝 refactor(boot): run the boot through the UI kernel bf52ad2 @V10lator
- 📖 docs: tie the squash rule to the GitHub master ed47c52 @V10lator
- 🌟 feat(ui): glide the progress bars towards their target 6d4c28d @V10lator
- 🌟 feat(ui): fade the popups in and out 1a6568c @V10lator
- 🌟 feat(renderer): add a filled rectangle to the frame 873211a @V10lator
- 🌟 feat(ui): blend between the screens ee446bd @V10lator
- 🌟 feat(ui): show a progress bar on the loading screen 8d35702 @V10lator
- 🐞 fix: Don't call drawByeFrame multiple times f9ca039 @V10lator
- 🐞 fix(filebrowser): Presave correct folder ce7e59f @V10lator
- 📄 Revert "Possible fix for #420 by Claude AI" 2c1cdef @V10lator
- 🐞 fix(downloader): keep the speed across a ramp phase handover 46b0bf3 @V10lator
- 🐞 fix(queue): check the folder length before it enters the queue 7778084 @V10lator
- 🐞 fix(ui): let the swap land at the vblank 3eb2062 @V10lator
- 📖 docs: replace the menu loops with the screens of the UI kernel 4d961d7 @V10lator
- 🐞 fix(ui): Presave the view struct 6d1a7fb @V10lator
- 🐝 refactor(ui): Remove another unneeded variable ef75648 @V10lator
- 🐝 refactor(swkbd): follow the wut names for the keyboard fields dbdcfaa @V10lator
- 🧯 build: stop passing -Wno-pointer-sign to g++ 0bbabf4 @V10lator
- 🧯 build: install the libcurl pkg-config file f3e49b4 @V10lator
- 🐞 fix(buffer): size the fixed buffers for what is put into them 9aa76da @V10lator
- 🐞 fix(downloader): give the ticket download a plain name f8f8392 @V10lator
- 🐞 fix(downloader): free the ticket buffer when the fake ticket fails 6321a44 @V10lator
- 🐞 fix(missingcontent): pass a device instead of the USB mask 1e00587 @V10lator
- 🐞 fix(download): keep the title and queue bars gliding across the files 7d3e1b4 @V10lator
- 📈 perf(renderer): fade error overlays from the frame path c9c8f97 @V10lator
- 📖 doc: pin the commit author to the agent model name f8b06df @V10lator
- 🐞 fix(ioqueue): clear the slot before publishing the write index 81b2783 @V10lator
- 🐞 fix(downloader): do not pin a stream count from an empty measurement e560a1c @V10lator
- 🐞 fix(menu): never open a second exit question behind the first c3c8c94 @V10lator
- 🐞 fix(downloader): close the cancel question when the file ends on its own 776764b @V10lator
- 📈 perf(ioqueue): wait for a free slot without sleeping c34acf3 @V10lator
- 📈 perf(downloader): ask the filesystem once about a content file 41336a3 @V10lator
- 🐞 fix(filesystem): let the FS overlay be seen before it is hidden again 2dea7df @V10lator
- 🐞 fix(downloader): keep the file bar steady across a ramp handover 7d72241 @V10lator
- 🐞 fix(file): stop removeDirectory from writing a name past the path 2319bdd @V10lator
- 📈 perf(downloadMenu): drop the two buffers nothing ever reads 9783bd1 @V10lator
- 📈 perf(renderer): measure a line only where the width is read b3df273 @V10lator
- 🐞 fix(installer): let the writes of a no-image set land before MCP sees them 405e677 @V10lator
- 🐞 fix(installer): free the no-image transform when nothing is kept 3787987 @V10lator
- 🐞 fix(predownloadMenu): install when a caller forces the install device 5028173 @V10lator
- 🐞 fix(predownloadMenu): read the installed state again after the demo switch 37644e3 @V10lator