From c18cb3acaedfd5fda90a60b156c036ae320ca4b3 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Sat, 25 Nov 2023 18:26:49 +0100 Subject: [PATCH] Release: v2023.12-pre1 --- CHANGELOG.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac6539f90..73111af22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,56 @@ +## v2023.12-pre1 +It's been a while, but it's time for another prerelease. This release cycle is going to primarily focus on performance, both in the backend and the frontend. + +Note: This prerelease includes a lot of expensive migrations, which may take a while to run. We promise the performance benefits are worth the wait. + +### Highlights +- Reworked full text search, retiring Meili/Sonic/Elastic in favor of Postgres gin_trgm with advanced search filter support +- Significantly improved backend & API performance across the board + +### Backend +- Support for external search backends was removed +- Support for advanced search filters was added to the Postgres search backend +- The `search-by-username-and-host` API endpoint no longer excludes the local user making the request +- Renote status is now aggregated and returned with timeline responses instead of the client requesting it for each note individually +- Heuristics for which timeline query to use for each user were added, drastically improving worst case timeline performance +- Timeline queries were streamlined for improved performance, adding new multi-column indicies as appropriate +- User avatar and banner URL & blurhash were duplicated into the user table, drastically improving query performance by saving up to 6 joins per query +- The media proxy was reworked to not require a database query per requested file +- A per-request packed user cache was added to the web API to improve performance, mimicking the existing Mastodon client API implementation +- The web API now only fetches exactly as many notes as have been requested +- The `re2` dependency was updated, fixing builds on NixOS +- Environment variables that allow setting alternative locations for the config file, a second config file for secrets, the custom directory as well as the media directory were added +- The `followRequestAccepted` notification is no longer emitted for non-locked accounts +- The mfm-to-html renderer for outgoing ActivityPub messages was changed to happy-dom + +### Mastodon client API +- Search now also supports filters, using the same syntax as the web client +- NoteConverter and UserConverter now pre-aggregate applicable data in their respective `encodeMany` functions for improved performance +- The `user` column is now joined where applicable for improved performance +- The mfm-to-html renderer was changed to happy-dom, drastically improving timeline performance + +### UI/UX +- The search dialog was replaced with a proper search page, and now supports additional search filters +- A help page containing a list of all available search filters was added +- All references to post indexing were removed, as manual indexing is no longer required +- The search filter button is no longer visible in guest mode +- Inactive search tabs are no longer loaded +- Overscroll was disabled due to it causing graphical glitches and weird behavior, especially on desktop +- All images in timeline views now have the `loading="lazy"` and `decoding="async"` attributes set +- The URL card animation has been removed +- Additional posts are now loaded in before reaching the bottom of the timeline +- VueJS and Vite were updated to their respective latest versions + +### Infrastructure and governance +- Docker builds with populated BuildKit caches no longer break if the yarn cache changes + +### Miscellaneous +- References to external search backends were removed from the documentation & example configuration files +- The installation docs now contain information on the available environment variables +- The project readme was updated +- All project imports of the deprecated punycode node module were switched over to the punycode.js replacement +- Various translation updates + ## v2023.11.3 This release contains yet more packaging and distribution-related changes, including some required for packaging the project for NixOS. diff --git a/package.json b/package.json index 4284d7bc5..eca5332eb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { "name": "iceshrimp", - "version": "2023.11.3", - "codename": "aqua", + "version": "2023.12-pre1", "repository": { "type": "git", "url": "https://iceshrimp.dev/iceshrimp/iceshrimp.git"