ITotalJustice 5e315bd65f many fixes and performance improvements for network requests (see commit details)
- add etag support
- add last-modified support

with the above 2 changes, this means that all downloads can be cached. when attempting to download a file,
if the file is an image, load from cache. after, the download is processed with the above tags sent. if a 304 code
is received, then the file hasn't changed. otherwise, the new tags are saved and the downloaded file is now used (in the
case of an image, the new image is now loaded over the cached one).

this results in a *huge* speed improvement and overall a huge amount of bandwidth is saved for both the client and server.

- themezer requests now only request the data needed.

this results in a json file that is 4-5x smaller, meaning a much faster download and parsing time.

- loading images is capped to 2 images a frame. this was done to avoid fs being the bottle neck.
  a 9 page listing will take 5 frames. scrolling through lists is more responsive.

- downloads are pushed to the front of the queue as they're added. the point of this is to prioritise
  data that we need now.

- fix potential crash when sorting files based on names as its possible for a file to have the same name
  in the metadata. this fallsback to sorting by path, which is unique.

- add timeout for processing events. this was done in order to not block the main thread for too long.

- github json files have changed from a name + url to a repo + author pair.
- drawing widgets now starts from the last file in the array. as a menu takes up the whole screen, it
 is pointless drawing menu's underneath. this halves gpu usage.
- download url caching has been removed. this was added to fix a race condition when opening /
  closing a widget which starts a download when created. this would result in 2 same files being
  downloaded at the same time. this is no longer an issue and was overhead per download request.
2024-12-29 00:33:31 +00:00
2024-12-26 19:23:39 +00:00
2024-12-16 21:13:05 +00:00
2024-12-16 21:13:05 +00:00
2024-12-16 21:13:05 +00:00
2024-12-16 21:13:05 +00:00
2024-12-16 21:13:05 +00:00
2024-12-16 21:13:05 +00:00

sphaira

A homebrew menu for the switch.

See the gbatemp thread for more details / discussion.

showcase

Img Img
Img Img
Img Img
Img Img

bug reports

for any bug reports, please use the issues tab and explain in as much detail as possible!

please include:

  • CFW type (i assume Atmosphere, but someone out there is still using Rajnx)
  • CFW version
  • FW version
  • The bug itself and how to reproduce it

ftp

ftp can be enabled via the network menu and listens on port 5000, no username or password is required.

mtp

mtp can be enabled via the network menu.

file assoc

sphaira has file assoc support. lets say your app supports loading .png files, then you could write an assoc file, then when using the file browser, clicking on a .png file will launch your app along with the .png file as argv[1]. This was primarly added for rom loading support for emulators / frontends such as retroarch, melonds, mgba etc.

[config]
path=/switch/your_app.nro
supported_extensions=jpg|png|mp4|mp3

the path field is optional. if left out, it will use the name of the ini to find the nro. For example, if the ini is called mgba.ini, it will try to find the nro in /switch/mgba.nro and /switch/folder/mgba.nro.

see assets/romfs/assoc/ for more examples of file assoc entries

Credits

  • borealis
  • stb
  • yyjson
  • nx-hbmenu
  • nx-hbloader
  • deko3d-nanovg
  • libpulsar
  • minIni
  • gbatemp
  • hb-appstore
  • haze
  • everyone who has contributed to this project!
Description
A homebrew menu for the Nintendo Switch
Readme GPL-3.0 16 MiB
Languages
C 52.1%
C++ 45.1%
JavaScript 1.2%
CMake 0.6%
Python 0.5%
Other 0.5%