This is the first version of the app to officially support arm64 on macOS (aka Apple silicon)! The auto-updater will automatically pull the arm64 version for those on Apple silicon. No separate reinstallation necessary. All supplemental binaries (butler, itch-setup) will also automatically be replaced with their arm64 equivalent. New version of butler and itch-setup have also been deployed to coincide with this release. The app should now start faster, be faster, and have less impact on your battery since it no longer needs to run through emulation on modern macOS computers.
This version of the app also includes our new OAuth login flow. We plan to retire username & password login in the app in favor of an OAuth login that requires a browser to complete the login. Unfortunately API endpoints that allow someone to authenticate via a username & password are prime targets for credential stuffing attacks. Our previous solution to this was to add a captcha in the app, but it broke more often than not, as electron is not a regular browser.
The OAuth login is now the default screen. Username & password will remain available as a secondary option until we verify that people don't have any issues logging in.
Notes on arm64
Because the app is booted by itch-setup, we decided to remove the universal build of the electron app we published with the last canary version. itch-setup will pick the version of the app that is correct for your system, so it's not necessary to download an app that is 2x the size that runs on both intel and arm64. (We do provide universal builds on the kitch installation program though)
This update also completes our major refactor and migration of our CI system to GitHub Actions. All executables are now built, signed, notarized, and deployed through a GitHub actions workflow. We look forward to adding support for arm64 Windows and Linux in future updates now that we have completed the foundation.
With the new CI we are fully retiring all 32 bit binaries that we used to publish. Many of these were already not being updated anymore, but we'll be removing the download links entirely from broth.
Build System & CI
- macOS signing and notarization done on GitHub Actions via separate job (new
release/sign-macos.js) - Windows code signing via Azure Code Signing in CI
- Separate macOS x64 and arm64 builds (removed
@electron/universal, builds are no longer merged into a universal binary) - Tagged builds are published to itchio via butler through GitHub Actions
- Restored integration test workflow on GitHub Actions
- Removed GitLab CI references, fully migrated to GitHub Actions
- Use tarballs for artifact transfer to preserve symlinks and permissions
- Upgraded
@electron/packagerv18 to v19,@electron/notarizev2 to v3 - No longer installs external npm dependencies during packaging (dependencies are bundled by esbuild)
Login
- New OAuth login flow with PKCE as the default login method
- Password login still available as a fallback ("Log in with password" link)
- OAuth callback handled via
itch://oauth-callbackprotocol - Manual code paste fallback for when the browser redirect doesn't work
- New butlerd message:
Profile.LoginWithOAuthCode
React & Dependencies
- Upgrade React 16 to React 17
- Upgrade styled-components to 5.3.11
- Added typed Redux hooks (
useAppDispatch,useAppSelector) - Many class components converted to functional components with
React.memo - Replaced
react-container-dimensionswith built-inContainerDimensionscomponent usingResizeObserver - Removed
rimrafdependency (use nativefs.rm) - Removed
RandomSvgcomponent (unused) - Removed
recursive-copydev dependency
UI Improvements
- Broth component in preferences now expandable, showing executable path, version, directory, stage, source channel
- Playtime duration tooltips now show precise hours/minutes/seconds on hover
- Remembered profiles layout improvements
Accessibility
- We did a pass over all clickable button like elements to ensure that they use semantic HTML elements like to ensure that they can be navigated to and activated with a keyboard
- Icons now have
role="img"andaria-labelfor screen readers - Search results use standard
scrollIntoView()for keyboard navigation instead of deprecatedscrollIntoViewIfNeeded() - Remembered profiles use flexbox layout instead of absolute positioning, improving tabbing order
Platform
- macOS: proper arm64 architecture detection for broth packages (no longer hardcoded to amd64)
- macOS: binary architecture validation — re-downloads amd64 binaries on arm64 Macs
- Broth package state now tracks download channel
Other
- Updated localization strings (Farsi, Chinese Simplified, Indonesian, Italian, and others)