✨ itch v18.0.0 is the result of almost 600 commits since v17.6.6
It brings two major new features and a large number of small improvements.
Sandboxing 💂
itch v18 introduces the itch.io sandbox, which isolates game processes from the rest of the system and prevents them from accessing sensitive user data.
It can be enabled from the preferences panel:
The itch.io sandbox is experimental 🔥🐲, but creators are encouraged to make sure their content is compatible. It uses a separate user account on Windows, native sandboxing facilities (sandbox-exec
) on OSX, and firejail on Linux.
More information on the sandbox's design and its implementation on Windows, macOS, and Linux can be found in the official documentation. Feel free to read #670 for our sandboxing research.
App manifests 📒
Letting developers pick which executable(s) the app should launch has been requested almost since the first version we've released. App manifests are now supported in itch v18: if there is a file named .itch.toml
in the game's folder, itch will let the player pick between different actions:
Valid actions may point to:
- 🚀 Executables / binaries, e.g.
bin/MyGame.exe
- 🌏 HTML games, such as
twine1/index.html
- 🔗 URLs, such as
https://itch.io/community
- 📁 Local files, such as
docs/manual.pdf
ordocs/howtoplay.txt
Manifests are described in detail in the itch app integration guide. See also known issues at the end of this changelog.
API integration 🎲
App manifests may request authorization to access the itch.io API within a certain scope.
The only valid scope so far is profile:me
, which allows identifying the itch.io account of the player and getting basic information about them:
The screenshot above is Sample HTML app
itch.io API integration is available both to native games and HTML5 games (launched with the itch app). For more information, read the documentation.
Download manager improvements ☁️
The new download manager lets you pause and resume downloads, and prioritize them.
Additionally, download progress is shown in the dock / task bar.
Local search and filtering 🔎
All game and collection grids can now be filtered by typing a keyword, and by default only shows games compatible with the current system:
The sidebar search now looks for 1) local results 2) creators 3) all games on itch.io. Local results include all games made, owned, or in collections:
Browser improvements 🌏
The in-app browser no longer flashes a white background when loading a page, and now has a button to open the current page in your external web browser:
Actions now appear on the right-hand side, making a dropdown menu unnecessary and allowing for bigger targets. The ❤️ 'Buy now / Donate' and the new 🔗 'Share' button will wiggle after playing something, as a friendly reminder. Cmd-clicking / middle clicking a link now opens it in a background tab.
Collection view 📁
Someone had to something about it:
Automatic issue report 🚨
When a game crashes, a dialog will pop up, suggesting to either View the game log, or Report the issue:
Issue reports are posted to the itch-compatibility-watchlist issue tracker (requires a GitHub account). They help us ensure that a great number of itch.io games are compatible with the app.
Developers are, of course, encouraged to first view the logs and see if it might be an easy fix!
Press & review copies 📰
Users enrolled in the itch.io press system now have a Review
button that lets them install games from creators who have opted-in to the press system.
- Developers can opt their games into the press system in their user settings
- Press can apply for access on our application page
Internationalization 🎌
After a bit of inactivity, translation has picked up again — each language now has a person who can approve or discard suggestions (see #696), instead of having to wait on Amos to approve them.
Weblate has been updated to version 2.6, which improved its UX a lot. Additionally, all dates and durations in the app are now localized properly via moment.js.
Linux support 🐧
Previously, the itch update server (serving download links on itch.io/app) considered Linux
to be a uniform platform. Obviously, that was foolish, hence, it now treats Linux as three platforms: linux
(.tar.xz portable builds), rpm
(.rpm packages for yum/dnf) and deb
(.deb packages which are NOT for the Ubuntu Software Center. Bad software center, you're GROUNDED. Stay down.)
Links on https://itch.io/app should now serve .deb files of the appropriate architecture to Ubuntu users, and .rpm files of the appropriate architecture to Fedora users. Debian seems to refuse to identify itself in the user agent, which means if you're using Debian you'll have to read docs (but you knew what you were getting into).
Linux packages now depend on libappindicator1
, which is necessary for proper tray icon behavior and explains a LOT of strange reports. The app is now powered by electron 1.2.5, which includes various fixes, and various bugs that we'll discover together once this release is out, of course.
Last but not least, Ethan Lee aka flibitijibibo, wrote a lengthy guide on packaging games for Linux the pragmatic way: Hope you like reading ldd output!.
Icons 🚒
Somebody had to do something:
Miscellaneous 😴
- Overall performance of the app has been improved, especially startup time
- Animated GIFs are now frozen until proven innocent (until hovered) — turns out this saves a ton of CPU time, especially important when a game is launched.
- The app now restores your previous tabs and logs you back in
- Tab reordering is a lot faster, tab close icons are more visible
- Added a 'Close all tabs' button. Shortcut: CommandOrCtrl+Shift+W
- You can now force games to close by clicking on the 'Running...' button and confirming, or hitting the global shortcut Ctrl+Alt+Backspace (might not work with some Linux games that capture keyboard input)
- Scrollbars are higher-contrast, making them easier to read
- The 'me' menu (bottom-left) has a lot more entries, including functionality that used to be in the 'Help' menu (now hidden by default).
.unitypackage
files used to be mistakenly extracted — they're now simply downloaded.- Closing the last tab now goes back to the last 'essential' tab used, instead of the bottom-most one.
- In preferences, app now displays a 'Translated X%' badge corresponding to the % translated
- Thumbnail aspect ratio has been fixed everywhere
- After downloading butler, the app runs it once to make sure that, well, it can run. (Hashes+size already cover corrupt downloads, but nobody can protect you from a really really old glibc...)
- Instead of showing 'Buy now' button that leads to a 404, app now uses the API (which is now fixed) to know if a game can be purchased or not.
- This release completely drops
redux-saga
and is not looking back. - This release goes to great lengths to make React and electron's webview play well together. Trust me, you don't want to know.
- Oh yeah I guess I redesigned a bunch of things I didn't mention? Well, download it already!
Known issues 🐛
- Still can't edit collections from within the app
- Up/down arrow in search box will highlight results, but enter won't select them
- AUR package is still affected by gem install issue, depending on how your Ruby is installed
- Some outdated versions of Kaspersky detect butler.exe as a trojan — simply update Kaspersky and reinstall itch if needed
- In-progress downloads do not survive app restarts at the moment (but will resume once queued again)
- Download manager doesn't show download speeds yet
- Dependency management / prerequisites (MSVC/DirectX redist, etc.) will be addressed in a future version, via manifests.
Acknowledgements ✨
This release would not have been possible without the entire itch.io team, our translators and our QA testers. Thanks for making this big release happen!