v0.16.0 Snappy Sloth
Hello internet!
Roll up roll up and see ye all version 0.16.0 of GoToSocial, codename SNAPPY SLOTH.
Release highlights
- Sign up / registration: In this release, you can open your instance to new registrations (aka sign-ups) via the new signup page at
https://[your-instance.tld]/signup
. No more manually creating new users via the CLI :)
Documentation here: https://docs.gotosocial.org/en/latest/admin/signups/ - Accounts overview for moderators: To support the new sign-up feature, and help instance admins to moderate, we made a new section in the settings panel where admins + moderators can get an overview of accounts, and filter by instance, status, and more. You'll find this new accounts view in the settings panel.
- Totally reworked message delivery system and worker queues: We've completely reworked the way GoToSocial sends out messages to your followers and performs worker-related tasks; this should drastically increase the speed that outgoing messages are delivered, especially for users with lots of followers. It also paves the way for future work in terms of persisting worker and message queues over restarts.
- Account mutes: The account mute API endpoints are now implemented, meaning you can put (timed) mutes of accounts in place, to hide statuses from specific accounts from your home timeline, and/or hide notifications from muted accounts.
- Accurate account stats: This release introduces code to pull up-to-date counts of statuses, followers, and following from remote instances and show these stats via the API. So now in your client of choice, you should see an accurate count of the number of statuses and followers/following of a given account, no more "0 followers, 0 following, 0 statuses".
- HTTP header permissions settings: The settings panel now has a section that allows admins to set regular expressions to deny requests depending on HTTP headers.
Documentation here: https://docs.gotosocial.org/en/latest/admin/request_filtering_modes/ - Filters v2 implementation: We've now implemented the v2 API for filters, which means you can create more complex filters to hide keywords or statuses, and more clients should be able to create filters on GoToSocial.
- Send test email: Admins can now use the settings panel to send a test email, to check if their SMTP (email) configuration is valid.
- Profile API: Clients that use the profile API to delete avatar + header images should now work, since we've now implemented this part of the API.
- Search operators: We've added a first search operator to GoToSocial, so when you're searching for statuses, you can add
from:@[username]@[domain]
to your search term, to search only within statuses created by the given account (while still respecting the search limitations we already had in place).
Documentation here: https://docs.gotosocial.org/en/latest/user_guide/search/ - Email change: Users can now change their email address in the settings panel without admin intervention.
Documentation here: https://docs.gotosocial.org/en/latest/user_guide/settings/#email-change - Memory usage optimizations: GoToSocial now uses memory more conservatively than before; you should only need about 150-200MiB of memory to run GtS with a full cache, and it will spike less.
Migration notes
Upgrading
To upgrade to 0.16.0 from a previous release:
Binary/tar
- Stop GoToSocial
- Untar the new release, including the web assets and html templates.
- Edit your config.yaml file as necessary (see below).
- Start GoToSocial
Docker
- Stop GoToSocial.
- Pull the new docker container (
superseriousbusiness/gotosocial:0.16.0
orsuperseriousbusiness/gotosocial:latest
) - Start GoToSocial.
config.yaml
The configuration file has changed since the previous release. You can see a diff of the config file here: v0.15.0...v0.16.0#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622
Database Migrations
Detailed Changelog
Features + Performance
- [performance] massively improved ActivityPub delivery worker efficiency by @NyaaaWhatsUpDoc in #2812
- [feature] New user sign-up via web page by @tsmethurst in #2796
- [performance] update GetAccountsByIDs() to use the new multi cache loader endpoint by @NyaaaWhatsUpDoc in #2828
- [feature] Admin accounts endpoints; approve/reject sign-ups by @tsmethurst in #2826
- [performance] cached oauth database types by @NyaaaWhatsUpDoc in #2838
- [feature/performance] Store account stats in separate table by @tsmethurst in #2831
- [feature] Stub status history endpoint by @tsmethurst in #2847
- [feature] Status source endpoint by @tsmethurst in #2848
- [feature] Stub account mutes endpoint by @tsmethurst in #2852
- [feature] Stub conversations endpoint by @tsmethurst in #2853
- [performance] update remaining worker pools to use queues by @NyaaaWhatsUpDoc in #2865
- [feature] Page through accounts as moderator by @tsmethurst in #2881
- [feature] Add HTTP header permission section to frontend by @tsmethurst in #2893
- feature: filters v2 server-side warning/hiding by @VyrCossont in #2793
- [performance] update go-structr -> v0.8.2 which includes some minor memory usage improvements by @NyaaaWhatsUpDoc in #2904
- [performance] update go-structr and go-mutexes with memory usage improvements by @NyaaaWhatsUpDoc in #2909
- [performance] cache v2 filter keyword regular expressions by @NyaaaWhatsUpDoc in #2903
- [performance] update storage backend and make use of seek syscall when available by @NyaaaWhatsUpDoc in #2924
- [experiment] add alternative wasm sqlite3 implementation available via build-tag by @NyaaaWhatsUpDoc in #2863
- [feature/frontend] Let admins send test email to validate SMTP config by @tsmethurst in #2934
- [feature] Debug admin endpoint to clear caches by @tsmethurst in #2940
- Implement profile API by @VyrCossont in #2926
- [feature] Implement Filter API v2 by @VyrCossont in #2936
- [feature] Add from: search operator and account_id query param by @VyrCossont in #2943
- [feature/frontend] Add debug sections to settings panel by @tsmethurst in #2950
- [performance] bump go-structr to v0.8.5 to improve memory usage by @NyaaaWhatsUpDoc in #2955
- [feature] log worker startup counts by @NyaaaWhatsUpDoc in #2958
- [feature] do not uncache status / emoji media if attached status is bookmarked by @NyaaaWhatsUpDoc in #2956
- [feature] Self-serve email change for users by @tsmethurst in #2957
- [feature] User muting by @VyrCossont in #2960
- Implement filters_changed stream event by @VyrCossont in #2972
- [feature] filter API v2: restore keywords_attributes and statuses_attributes by @VyrCossont in #2995
Bugfixes
- [bugfix] Include MIME email headers to avoid mangling non-ascii text by @tsmethurst in #2827
- [bugfix] fix get all tokens by @tsmethurst in #2841
- [bugfix] Fix minor API issue w/ boosted statuses by @tsmethurst in #2846
- [bugfix] nil panic when deleting status by @NyaaaWhatsUpDoc in #2849
- [bugfix] Fix incorrect field name for status source, add helpful message by @tsmethurst in #2854
- [bugfix] fix error string typo by @NyaaaWhatsUpDoc in #2873
- [bugfix] paging rel links by @NyaaaWhatsUpDoc in #2883
- [bugfix] retry on http 500 errors inclusive by @NyaaaWhatsUpDoc in #2886
- [bugfix] further paging mishaps by @NyaaaWhatsUpDoc in #2884
- [bugfix] flaky paging test by @NyaaaWhatsUpDoc in #2888
- [bugfix] function queue memory pools limitlessly grow by @NyaaaWhatsUpDoc in #2882
- [bugfix/chore] Tidy up remaining references to workers in cmd by @tsmethurst in #2889
- [bugfix] Lock when checking/creating notifs to avoid race by @tsmethurst in #2890
- [bugfix] add missing caches to the main cache sweep command by @NyaaaWhatsUpDoc in #2891
- [bugfix] close + drain body if response is too large by @NyaaaWhatsUpDoc in #2897
- [bugfix] fix cache size calculations by @NyaaaWhatsUpDoc in #2907
- [bugfix/frontend] Fix emoji values not resetting on upload by @tsmethurst in #2905
- [bugfix] concurrent map writes in dereferencer media processing maps by @NyaaaWhatsUpDoc in #2964
- [bugfix] Don't nil emojis + fields on blocked accounts by @tsmethurst in #2968
- [bugfix] update media if more than just url changes by @NyaaaWhatsUpDoc in #2970
- [bugfix] Filter fixes by @VyrCossont in #2971
- [bugfix/frontend] Use re2 syntax for regex validation by @tsmethurst in #2978
- [bugfix] boost and account recursion by @NyaaaWhatsUpDoc in #2982
- [bugfix] Deref stats async, serve stub collections if handshaking by @tsmethurst in #2990
- [bugfix] Correct Swagger path for poll voting by @VyrCossont in #2996
- [bugfix] Ensure side effects handled for local unlocked follows by @tsmethurst in #2998
- [bugfix] avoid v. long notification clear query by @tsmethurst in #3007
Chores + Version Bumps
- [chore] update go-structr => v0.6.2 (fixes nested field ptr following) by @NyaaaWhatsUpDoc in #2822
- [chore]: Bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.24.0 to 1.25.0 by @dependabot in #2818
- [chore] Delete the unnecessary #, because this # lead to the wrong URL. by @KyoSakuyo in #2830
- [chore]: Bump golang.org/x/crypto from 0.21.0 to 0.22.0 by @dependabot in #2835
- [chore]: Bump golang.org/x/net from 0.23.0 to 0.24.0 by @dependabot in #2834
- [chore] bump bun library versions by @NyaaaWhatsUpDoc in #2837
- [chore] Turn
accounts-registration-open
false by default by @tsmethurst in #2839 - [chore] bump to modernc.org/sqlite v1.29.5 -> v1.29.7 by @NyaaaWhatsUpDoc in #2850
- [chore]: Bump github.com/KimMachineGun/automemlimit from 0.5.0 to 0.6.0 by @dependabot in #2859
- [chore] Update robots.txt by @daenney in #2856
- [chore] bump modernc.org/sqlite to v1.29.8 (with our concurrency workaround) by @NyaaaWhatsUpDoc in #2855
- [chore]: Bump github.com/miekg/dns from 1.1.58 to 1.1.59 by @dependabot in #2861
- [chore]: Bump codeberg.org/gruf/go-mutexes from 1.4.0 to 1.4.1 by @dependabot in #2860
- [chore] Refactor settings panel routing (and other fixes) by @tsmethurst in #2864
- [chore] Settings refactor 2: the re-refactoring-ing by @tsmethurst in #2866
- [chore] Upgrade our Go version to 1.22 by @daenney in #2862
- [chore] Bump go swagger by @tsmethurst in #2871
- [chore] Update setting testrig loglevel by @daenney in #2870
- [chore] Update the flags passed to goreleaser by @daenney in #2869
- [chore] update Docker container to use new go swagger hash by @tsmethurst in #2872
- [chore]: Bump go.opentelemetry.io/otel/sdk from 1.25.0 to 1.26.0 by @dependabot in #2879
- [chore]: Bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.25.0 to 1.26.0 by @dependabot in #2878
- [chore] Fix conflict in workers tests by @tsmethurst in #2880
- [chore]: Bump github.com/minio/minio-go/v7 from 7.0.69 to 7.0.70 by @dependabot in #2877
- [chore]: Bump github.com/tdewolff/minify/v2 from 2.20.19 to 2.20.20 by @dependabot in #2875
- [chore] include attemptno in httpclient logs by @NyaaaWhatsUpDoc in #2887
- [frontend] Do optimistic update when approving/rejecting/suspending account by @tsmethurst in #2892
- [chore]: Bump golang.org/x/image from 0.15.0 to 0.16.0 by @dependabot in #2898
- [chore]: Bump github.com/gin-contrib/gzip from 1.0.0 to 1.0.1 by @dependabot in #2899
- [chore]: Bump codeberg.org/gruf/go-structr from 0.7.0 to 0.8.0 by @dependabot in #2902
- [chore]: Bump golang.org/x/oauth2 from 0.19.0 to 0.20.0 by @dependabot in #2900
- [chore] bump modernc.org/sqlite v1.29.8 -> v1.29.9 (concurrency workaround) by @NyaaaWhatsUpDoc in #2906
- [chore]: Bump golang.org/x/net from 0.24.0 to 0.25.0 by @dependabot in #2914
- [chore]: Bump golang.org/x/crypto from 0.22.0 to 0.23.0 by @dependabot in #2915
- [chore]: Bump github.com/gin-contrib/sessions from 1.0.0 to 1.0.1 by @dependabot in #2916
- [chore]: Bump github.com/gin-contrib/cors from 1.7.1 to 1.7.2 by @dependabot in #2912
- [chore] dependabot updates by @NyaaaWhatsUpDoc in #2922
- [chore]: Bump github.com/tdewolff/minify/v2 from 2.20.24 to 2.20.25 by @dependabot in #2923
- [chore]: Bump github.com/jackc/pgx/v5 from 5.5.5 to 5.6.0 by @dependabot in #2929
- [chore]: Bump github.com/tdewolff/minify/v2 from 2.20.25 to 2.20.32 by @dependabot in #2927
- [chore] Fix report email link by @tsmethurst in #2932
- [chore] Small styling + link issues by @tsmethurst in #2933
- [chore] make wasm sqlite3 available to goreleaser via env var by @tsmethurst in #2938
- [chore/bugfix] Don't cache MovedTo account by @tsmethurst in #2939
- [chore] improved startup / shutdown by @NyaaaWhatsUpDoc in #2925
- [chore] Make worker run startup messages debug output by @daenney in #2944
- [chore] little startup tweaks by @tsmethurst in #2941
- [chore]: Bump github.com/spf13/viper from 1.18.2 to 1.19.0 by @dependabot in #2954
- Compile filter keyword regexps when touched through PutFilter or UpdateFilter by @VyrCossont in #2951
- [chore] Fiddle with CI tests; use wasmsqlite3 by @tsmethurst in #2966
- [chore] Use
(created)
instead ofdate
for outgoing HTTP signatures by @tsmethurst in #2969 - [chore] Update WASM go-sqlite3 to v0.16.1 by @daenney in #2976
- [chore] Warn about email/password change when using OIDC by @tsmethurst in #2975
- [chore]: Bump github.com/minio/minio-go/v7 from 7.0.70 to 7.0.71 by @dependabot in #2988
- [chore]: Bump golang.org/x/net from 0.25.0 to 0.26.0 by @dependabot in #2986
- [chore]: Bump github.com/tdewolff/minify/v2 from 2.20.32 to 2.20.33 by @dependabot in #2984
- [chore]: Bump github.com/gorilla/websocket from 1.5.1 to 1.5.2 by @dependabot in #2987
- [chore]: Bump golang.org/x/image from 0.16.0 to 0.17.0 by @dependabot in #2985
- [chore] Roll back use of
(created)
pseudo-header pending #2991 by @tsmethurst in #2992 - [chore] Upgrade WASM SQLite to v0.16.2 by @daenney in #2997
- [chore] Bump braces from 3.0.2 to 3.0.3 in /web/source by @dependabot in #2999
- [chore] Don't render sign-up form when registrations closed by @tsmethurst in #3001
- [chore] Update move test by @tsmethurst in #3005
- [chore] Silence memlimit package by @daenney in #3002
Docs
- [docs] Remove last references to RPi by @daenney in #2885
- [docs] Fix link in general configuration by @wuhang2003 in #2946
- [docs]: Document build tag for WASM SQLite by @daenney in #2942
- [docs] Add optional instructions for replicating SQLite for disaster recovery by @martijndeb in #2981
- [docs] Rework README a bit, import into docs by @tsmethurst in #3006
- [docs] Update roadmap by @tsmethurst in #3011
New Contributors
- @KyoSakuyo made their first contribution in #2830
- @wuhang2003 made their first contribution in #2946
Full Changelog: v0.15.0...v0.16.0