Kate v0.23.8 (August 2023)#

The v0.23.8 is August’s experimental release of Kate. This is a breaking release.

New cartridge format#

Important

BREAKING CHANGE: cartridge format will not work on older Kate versions, and older cartridge formats will not work on newer Kate versions.

0.23.8 uses a new block-based cartridge format and will not be able to read previous cartridge versions. This means that this version will not be able to upgrade past cartridges or load past cartridges.

The new cartridge version is simpler and lays the necessary groundwork for supporting signed cartridges and better memory usage — the current implementation still reads the entire cartridge in memory, but future implementations will stream the contents instead.

PRs: #14

Cache refreshing support#

In order to work offline in the browser, Kate caches all of the files needed to run the application locally. Sometimes this cache might get out of sync with updates and use; this version adds a new “Refresh cache” operation to the Diagonstics & Recovery section to help with such issues.

PRs: #13

Support for navigation requests#

Kate blocks all network access in cartridges for security and privacy, but there are cases where it is reasonable to allow a cartridge to open an URL in the user’s browser (e.g.: if it’s linking to the developers’ pages in a credits screen).

This version introduces a new capability to support this feature and the necessary rails to allow this to work with the user’s active consent (and some minimal auditing support).

PRs: #15

Proper capability support#

Since this version introduces the first capabilities in the console, it also introduces a way for users to manage capabilities at any time. The new permissions screen allows users to revoke capabilities even while cartridges are running (and it takes effect immediately), to mitigate the damage if a cartridge abuses its powers.

PRs: #16

Audit logs!#

This version introduces proper audit logs with a retention and cleanup policy. This gives users a more persistent view of what their console has been up to in the background. There’s no automated audit based on this yet, but that may be coming in future versions as well.

PRs: #18

The importer and new powerful capabilities!#

In order to support game dev tools to run sandboxed in Kate, this version introduces a few powerful capabilities to get restricted expose restricted access to the device’s resources to cartridges.

The new APIs are:

  • “Device File Access”: gives a cartridge the ability of accessing selected files and folders in your device — you have to select the files first;

  • “Save to device”: gives a cartridge the ability of saving data to the device’s file system, modelled after browsers’ “download” concept;

  • “Install cartridge”: gives a cartridge the ability of installing other cartridges — you’ll be asked for confirmation.

Together these form the basis of the new Kate Importer cartridge, which supports importing some games made for other platforms and automatically converting them to work on Kate.

PRs: #19

Minor changes#

  • The default keyboard key for Kate’s Capture button is now C instead of Left Control. The change is due to how browsers’ shortcuts depend on Control modifiers, making captures be triggered when the user did not intend them to be.

  • Cartridge boxes in the library now show the stability of the cartridge (e.g.: if it’s a demo, a beta release, or a regular one), as well as the age rating. (PRs: #17)

  • Older, unused and undocumented API experiments have been removed from the source code. This doesn’t impact any cartridge, but it reduces the Kerne’s attack surface and moves us further towards a proper secure Kate release.

  • There’s a new developer-oriented settings screen with the only option being relaxing Kate’s installation preconditions so you can reinstall the same version of the cartridge — good for iterating while dev’ing.

  • Cartridges that do not have a thumbnail image now have their title shown in the cartridge box instead, which makes it easier to figure out what all the black boxes are if devs haven’t included a cover image.

  • Bumped limits for captures: now that games for other platforms can be imported, the initial capture limits are too small for their resolution. The new limits should be safe and reasonable for most games.

  • Introduced a “Fairness Supervisor”, which helps prevent cartridges from abusing resources in the device in a way that makes it unusable. (PRs: #20)

  • Removed the possibility of installing cartridges in single-cartridge mode. Also removed the “For Developers” settings from this mode — since this is used to publish a single cartridge in a platform like Itch.io, neither of these features are useful or desirable there.

Fixed bugs#

  • Fixed an issue where the last cartridge would not scroll fully into view upon selection if there were many cartridges before it in the library.

  • Changed how IndexedDB indexes are used in Kate so that we don’t trigger the semantic issues Safari has with it. This makes Kate partially supported in iOS again — but do note that Safari still lacks implementation for many of the APIs Kate relies on, such as webp recording for screen recording.

  • Fixed an issue where the cartridge would still get input when it was not the application on the foreground. No more confusing behaviour when opening the settings screen while playing a game.

  • Virtual input is reset when the console loses focus. This makes it harder to have confusing things happening when you switch out to another tab or minimise Kate.

  • Fixed an issue where an error happening while showing a dialog would cause gamepad controls to be stuck in an inexisting dialog screen.

  • Fixed an issue where cartridges with very long titles would overflow the screen and cause it to move around as focus changed horizontally.

  • Fixed an issue where licence/privacy notices could not be loaded in single-cartridge mode.