*ForTheUsers presents the* **Homebrew App Store 2.2** for the Nintendo Wii U and Switch --- This update brings marked improvements not only in the console client, but also in the general process that goes into how we track and manage homebrew and contribute back to the community. **App Download:** https://gitlab.com/4TU/hb-appstore/releases **View Online:** https://apps.fortheusers.org TL;DR: - No more initial loading screen! None! - Faster downloads everywhere with CDN - Easier to submit packages / track updates - More formal package build spec + transparency about our sources - Detailed download statistics for all packages from the last 3 years! In July 2019, we passed our *third year* of hosting the Homebrew App Store service since starting on the Wii U! Thank you to everyone who has used the App Store or otherwise shown support for this project. You're the reason we keep doing this. The App Store team is: [pwsincd](https://github.com/pwsincd), [rw-r-r_0644](https://github.com/rw-r-r-0644), [CompuCat](https://compucat.me), [crc32](https://crc32.dev), [quarky](https://heyquark.com), [Whovian9369](https://cybre.space/@Whovian9369), [vgmoose](https://vgmoose.com), and [Ep8Script](https://twitter.com/ep8script) Our homepage: https://fortheusers.org Chat with us on Discord: https://discord.fortheusers.org ## Detailed Changelog: **Wii U + Switch App Client** Download: https://gitlab.com/4TU/hb-appstore/releases - No more loading screen! Images and metadata are now downloaded on-the-fly, and you are dropped immediately into the app listing (by rw-r-r_0644!) - Smoother scrolling with both touch and controller - Abstracted UI components into the standalone library [Chesto](https://gitlab.com/4TU/chesto) - Chesto is a declarative, element-based library for creating lightweight user interfaces in SDL2. Along with the App Store console client, it also powers [vgedit](https://github.com/vgmoose/vgedit). - Want to give it a try? Have a peek at CompuCat's tiny example, [ChestoTesto](https://gitlab.com/4TU/chestotesto)! - Uses https for default repos (sorry for dragging feet on this!) - Fixes issues when package structure totally changes (libget#8) - Shows progress while extracting files from the zip package - Onscreen quit button added (small but important detail, it was not obvious that minus could exit in the last update, thanks to jacquesCedric for this) - Switch: Themes are now excluded from the "All Apps" category - Wii U: Fix bug that duplicates appstore entries in HBL upon upgrading... (see Note) - Move primary development from GitHub to GitLab[^1] Sources: https://gitlab.com/4TU/hb-appstore https://gitlab.com/4TU/libget https://gitlab.com/4TU/chesto *Wii U Notice:* The duplicate appstore entries in HBL was an oversight on my (vgmoose's) part, but should resolve itself after launching *either* HBL app after the update. It has to do with old users migrating from .elf to .rpx, and me trying to consolidate it for each platform. After updating, the issue should not occur again in the future due to libget#8 being fixed. TL;DR: after updating there will be *two* appstore apps in HBL. Launching either one will work, and it will clean up the extra one automatically. --- **Web Client** Website: https://apps.fortheusers.org - Rewritten to match the homebrew client UI better - Talks to libget repos directly - Aggregates both Switch + Wii U apps - New page for submitting apps with icon/banner uploading (by pwsincd) - Show much more detailed statistics for package downloads Sources: https://gitlab.com/4TU/hbas-frontend https://gitlab.com/4TU/submitter --- **Backend Infrastructure** We've developed a new tool called [Spinarak](https://gitlab.com/4tu/spinarak), which lets us automatically build packages (using a separate repo of package metadata) and bundle them into a libget repo! This has greatly simplified and standardized the way we build our packages. ***How it's laid out*** The metadata for the repos used by the Homebrew App Store is available in these GitLab repos: https://gitlab.com/4TU/switch.apps https://gitlab.com/4TU/switch.themes https://gitlab.com/4TU/wiiu.apps https://gitlab.com/4TU/wiiu.plugins (Incidentally, yes - we *did* split out plugins for Maschell's [Wii U Plugin System](https://github.com/Maschell/WiiUPluginSystem) and Switch themes into their own repos.) GitLab also allows us to run Spinarak using their CI services, which lets us host the final static libget repos directly on Gitlab's CDN. This results in much faster download speeds for people outside of the UK. ***How it fits together*** Merging a commit to the master branch of one of the metadata repos triggers Spinarak (running on GitLab CI) to take the new changes that are made and update the associated libget repo, repackaging packages as necessary. These are then hosted as static artifacts on the GitLab Pages CDN. Work on these build scripts and metadata documentation was done by CompuCat and Whovian9369! We also have a Discord bot (Dragonite) that receives incoming package submissions and checks existing packages for updates. The bot is able to commit directly to the metadata repos pending approval/input from repo maintainers in our Discord. Once the commit is made, Spinarak promptly updates the repo. Work on this bot was done by crc32! Finally, our brand-new[^2] Stats API (hbas-backend) is a service hosted separately from the static resources, responsible for collecting download data and user feedback for apps. It's designed to allow us to generate and surface graphs for every package's historical and current data. For more info on this, see the readme. ***How you can help*** If anyone finds an issue with a package in one of our repos, they can fix the metadata and PR it in through Git. This also allows us to be a lot more transparent about where we source our packages from and where the data is unpacked. We are hopeful that by having all of the metadata available in this manner, our repositories can act more as a public resource that people can contribute to and make adjustments as are seen fit (typos, additional details, etc). Keeping this all in the open also should make it easier for other people who want to host their own repo to get started. Sources: https://gitlab.com/4TU/dragonite https://gitlab.com/4TU/spinarak https://gitlab.com/4TU/hbas-backend Finally, a few people have asked us if they can use the information in our repos as a resource in apps of theirs. This metadata is now available under a CC BY-SA license. Enjoy! https://creativecommons.org/licenses/by-sa/4.0/ [^1]: We'll continue to upload releases to GitHub for the moment, but that repo will eventually be deprecated and direct users to GitLab. [^2]: We've had stats for a while, but our previous process generated stats simply by parsing log files. It was long overdue for a proper implementation.