Skip to content

v0.22.0

Choose a tag to compare

@xgame92 xgame92 released this 02 Nov 09:20
cf9a8c4

Long lists and tables are much faster, issues with very long comment threads keep working, text
with invisible broken characters is cleaned or refused, and intake email is safe from a slow
header. Updating a self-hosted copy applies a migration in each workspace's database, which runs
on its own; there is no D1 migration and no new setting. The protocol stays at version 25.
([#168], [#169], [#171], [#172], [#173])

Security

  • A crafted header in a message to a team's intake email address could make the Worker spend
    CPU time that grew with the square of its length. postal-mime, which reads those messages, is
    updated to 4.0.8 (GHSA-f2hq-32vh-53cc). ([#173])

Fixed

  • An issue whose comments added up past about 10 MB could take no more comments, and its newest
    ones were not found by search. Such an issue's comments are now indexed apart, so it takes new
    comments and all of them stay searchable. The migration moves only issues past 1 MiB of
    comments. ([#169])
  • A picker that had just closed could take the next click or Escape meant for what lay under it,
    such as the next row's priority picker in a table. Menus and pickers now leave the page as soon
    as they close. ([#172])

Changed

  • Issue lists draw only the rows near the screen. Changing 2,000 issues at once now shows in about
    135 ms instead of 1,160, and opening a workspace from the device's copy in about 340 ms instead
    of 1,100. Rows are measured, so the list holds at any font size, and screen readers hear each
    row's place in the list. When a change is refused because its issue is gone, the message says
    so apart from other refusals. ([#171])
  • The issue table also draws only the rows near the screen, measured so they hold at any font
    size. J/K and the arrow keys move between its rows as in a list, and its header row stays at the
    top as it scrolls. ([#172])
  • Text with NUL characters or lone halves of an emoji's character pair is refused by the server,
    since it confused search or came back silently changed. The app, request forms, intake email,
    the guided start, the importer and GitHub titles clean such text instead, so people do not run
    into errors. Text already stored stays as it is. ([#168])