codeberg superseriousbusiness/gotosocial v0.21.0-rc3

pre-releaseone day ago

Here's the second release candidate for v0.21.0 of GoToSocial.

What happened to rc2 you ask? Shhhhhhh. Shh. Shush. It's okay. Don't worry about it.

For instructions to update to this release candidate from versions < v0.21.0-rc1, see the v0.21.0-rc1 release candidate notes, but replace v0.21.0-rc1 with v0.21.0-rc3 throughout.

To update to this release candidate from v0.21.0-rc1, just follow the instructions below.

Release highlights

  • Fix some buggggggggggggsssssssssss.

Migration notes

Upgrading

To upgrade to v0.21.0-rc3 from a previous release:

Binary/tar

  1. Stop GoToSocial.
  2. Back up your database! If you're running on SQLite, this is as simple as copying your sqlite.db file, eg., cp sqlite.db sqlite.db.backup. On Postgres you can do this with pg_dump.
  3. Download and untar the new release, including the web assets and html templates, not just the binary.
  4. Edit your config.yaml file if necessary (see below).
  5. Start GoToSocial.
  6. Wait patiently for any migrations to run, do not interrupt migrations or you could leave your db in a broken state and will have to restore from backup!
  7. Enjoy your updated instance.

Docker

  1. Stop GoToSocial.
  2. Back up your database! If you're running on SQLite, this is as simple as copying your sqlite.db file, eg., cp sqlite.db sqlite.db.backup. On Postgres you can do this with pg_dump.
  3. Pull the new docker container with docker pull docker.io/superseriousbusiness/gotosocial:0.21.0-rc3 or docker pull docker.io/superseriousbusiness/gotosocial:latest if this is a stable release and not a release candidate.
  4. Edit your config.yaml file or environment variables if necessary (see below).
  5. Start GoToSocial.
  6. Wait patiently for any migrations to run, do not interrupt migrations or you could leave your db in a broken state and will have to restore from backup!
  7. Enjoy your updated instance.

config.yaml

No changes since rc1.

Database Migrations

No migrations since rc1.

Which release archive/container should I use?

GoToSocial releases binary builds for 64-bit Linux, FreeBSD, and NetBSD operating systems. We also release Docker builds for 64-bit Linux.

OS Architecture Support level Binary archive Docker
Linux x86-64/AMD64 (64-bit) 🟢 Full linux_amd64.tar.gz docker.io/superseriousbusiness/gotosocial:0.21.0-rc3
Linux Armv8/ARM64 (64-bit) 🟢 Full linux_arm64.tar.gz docker.io/superseriousbusiness/gotosocial:0.21.0-rc3
FreeBSD x86-64/AMD64 (64-bit) 🟢 Full freebsd_amd64.tar.gz Not provided
FreeBSD Armv8/ARM64 (64-bit) 🟢 Full freebsd_arm64.tar.gz Not provided
NetBSD x86-64/AMD64 (64-bit) 🟢 Full netbsd_amd64.tar.gz Not provided
NetBSD Armv8/ARM64 (64-bit) 🟢 Full netbsd_arm64.tar.gz Not provided

nowasm

For your convenience, we also provide UNSUPPORTED, EXPERIMENTAL BUILDS, created using the nowasm tag, in the downloads list below. There is no Docker build for nowasm.

GoToSocial releases built with nowasm use the Go-native, modernc version of SQLite instead of the WASM one, and will use on-system ffmpeg and ffprobe binaries for media processing.

Using a nowasm build is currently the only way to run GoToSocial on a 32-bit system.

For more information on running a nowasm build, see the nowasm documentation page.

Changelog

Features and performance

  • b0863b60e19c62acd0b5ff1f52b01fecd7d01025: [feature] add a status visibility debug endpoint (#4682) (@gruf)
  • 9696ef4fbed83877faa916e96fc843d766783918: [feature] Opt-in to show boosts on web view of profile (respecting visibility settings) (#4680) (@kipvandenbos)
  • 8ac11f58db23daba3d2ad72f5a8d0c01f28cbe70: [feature] Add language dropdown to sign-in form, fall back to first instance language if not provided (#4679) (@kipvandenbos)
  • c4f1988a30a013f132f98a84274583305c066c39: [feature/frontend] Expand/collapse all spoilers button for threads (#4672) (@kipvandenbos)
  • dd294194f43c82141cc8beb5367f4edd17806529: [performance] Create index for poll expiry scheduling to prevent long startup times (#4670) (@kipvandenbos)
  • 043649969478ffbfdc9e998b9db069d85783e91f: [feature] include canQuote = author only, on outgoing posts (#4662) (@kipvandenbos)
  • 696fc6661931937d45f6c1d023d0246b071bed7f: [feature] Preserve whitespace in opengraph meta description elements (#4658) (@kipvandenbos)
  • c6079206fd18360981d57b1da27a47247bf3b035: [feature] add more fields to nodeinfo metadata (#4463) (@Candinya)
  • d4521f91841dc4bc7dded69e52e53772e44e3bba: [feature] Send out and serve polite LikeRequest, ReplyRequest, and AnnounceRequest objects (#4642) (@kipvandenbos)
  • 29e7d442b42fa9dd4a4a772ea84cfdd3ef1acd55: [performance] small performance improvement for ffmpeg nowasm builds (#4628) (@gruf)
  • c74c5b74049bf9530a4c3fa5ba99c63fdd85d178: [feature] Implement domain limit StatusesPolicy and AccountsPolicy side effects (#4621) (@kipvandenbos)
  • e1186f45943dd59786f4e29f5e6be95f11e56d07: [feature] Add domain limit follows policy side effects (#4617) (@kipvandenbos)
  • e8e27f44128eb8b070cd2044fada153fabbe58d4: [feature] Prepend domain limit content warning to posts as appropriate (#4618) (@kipvandenbos)
  • b1ffb66ba3eb9bb7b2ceeb8d092a860ab75cd7e9: [feature] add /api/v1/admin/media_purge endpoint (#4613) (@kipvandenbos)
  • 74718a6cecd7eb18a03167fc41b722e57d7e4a27: [feature] Add domain limit media Reject and MarkSensitive side effects (#4611) (@kipvandenbos)
  • 8cb4a5d652b3836ba83047f222d9a160a2843a13: [performance] add local, public and tag timeline caches (#4582) (@gruf)
  • c75483a1057b8465999439322258b587ad9b4b17: [feature/frontend] Add settings panel section for creating, updating, and deleting domain limits (#4567) (@kipvandenbos)
  • d489dcb1710181630a762158074291fb5439bf1a: [feature] support for toot:indexable (#4538) (@vyr)
  • 409380304dc977e1e26e5f6dad0f1e2df9563dcd: [feature] Implement stub authorize_interaction route (#4557) (@kegi)
  • fd2f293a9e3e1ea9c2e755fba9596022af8abf69: [feature] Add domain limit DB model and API endpoints (#4554) (@kipvandenbos)
  • dfcc6bc3c32fce5b4d5bc95ad61dca8765f41ada: [performance] remove hard reliance on .Cached field to indicate whether media / emoji is cached (#4545) (@gruf)
  • 4c36a0f34a11b667acd59a6c0270fda0d3c05f66: [performance] add optional S3 object info caching (#4546) (@gruf)
  • d6a7c43215c0e0f825db458faf6d9d571e91b66f: [performance] when transforming media, perform read operations of large files using mmap (#4541) (@gruf)
  • c4292158514afea8a7757aef07dbe99758b0eb0a: [performance] reduce account stats database calls (#4496) (@gruf)
  • 7fad9e40a691da5d88d146ebbc0d1540841f7a20: [performance] cache account IDs in home timeline query not in exclusive lists (#4502) (@gruf)
  • 433619fd67ec54b8d362b8833d35fb11ac3eef8a: [performance] pull in latest httpsig with performance enhancements and bugfixes (#4500) (@gruf)
  • 8d6209fe4f18c292d36bb1c0db002bc73db8581e: [feature] granular admin scopes for custom emojis (#4489) (@vyr)
  • 5fd52369c98eb83b735533674bcc4c3b227f69d2: [performance] handle emoji refreshes asynchronously when fetched as part of account|status dereferences (#4486) (@gruf)

Bug fixes

  • 980f2ca2270c80b70133a72249bb7d2ff8fa0179: [bugfix] Fix incorrect domain limit statuses policy serialization (#4692) (@kipvandenbos)
  • 812a6c5353b48705d2eb630e9caa70abd008d4ab: [bugfix] Vary "order by" statement when doing unions according to driver in use (#4691) (@kipvandenbos)
  • db1184e9b60330a9d47b44f48edae845ed00591a: [bugfix] Fix boosts not showing on web view of profile when show public + unlisted is selected (#4690) (@kipvandenbos)
  • df4c875633fead4a4bc895b07a8e14b28dde66b0: [bugfix] Fix manualApproval not always serialized (#4688) (@kipvandenbos)
  • 7fa9ed12ce98829a0bcab67bbbf7dbd63427147a: [bugfix] Check boosted statuses for media when doing web media_only statuses queries (#4685) (@kipvandenbos)
  • c4f98bd7bd5524b97a20afb0b430b4f39ba14056: [bugfix/performance] Bail early during remote emoji deref when max size is 0. (#4681) (@technomancy)
  • 409b286dc269aa4da17f88f7617e585937f16a82: [bugfix] Fix statuses not being timelined + notified when dereffed rather than delivered (#4667) (@kipvandenbos)
  • c5d255fb3363df10918e7c7613e5e08ef3a12662: [bugfix] Use ipv6 cidr for trusted proxies req when clientIP is ipv6; check for empty clientIP before parsing (#4666) (@kipvandenbos)
  • 55df1b8cf9481cff654e31512051544455cd17ff: [bugfix] Disallow registration via sign up page when OIDC is enabled (#4665) (@kipvandenbos)
  • c1708c211f721e33b4984a3d391a37b6f3ffc11f: [bugfix] Don't return 500 when someone tries to Delete or Update something they don't own (#4663) (@kipvandenbos)
  • ce571b73d8ee3fc7c83ac8da9901e44e0e54c850: [bugfix] Don't return 500 Internal Server Error for QuoteAuthorization deletes (#4661) (@kipvandenbos)
  • 6151130843a6eef595ea6f2197ec408722c2cbbb: [bugfix] Don't allow decrement of account stats below 0 (#4657) (@kipvandenbos)
  • 9afd66f653353978b6927f949182b43bb5cd8997: [bugfix/frontend] web/template/page_header.tmpl: use singular verb if necessary (#4600) (@r-ricci)
  • ac4ecf695f8e6ba9d727d99fb36ee7c8882e5981: [bugfix] Updated the example Grafana dashboard for the new metric names in GoToSocial 0.20.0. (#4525) (@VirtualWolf)
  • 314ae57a38cdfd5d1df8e517f89f662570d67a17: [bugfix] Check that token is defined before logging the user out (#4632) (@prettysunflower)
  • 531ada22ceaa7f8eacafcc3d3f0fd2eab951280f: [bugfix] Mark targets of pre-approved polite interaction requests as no longer pending approval (#4647) (@kipvandenbos)
  • 3c6817fbcafd35da3bd69fa902beffd8a7d1c69b: [bugfix] Allow mention namestrings to include unicode emoji in username + domain parts (#4609) (@kipvandenbos)
  • 9a6004bffe9461dbd37190866ca1dce7c16cdb7c: [bugfix] ensure oneOf and anyOf properties serialized as arrays (#4608) (@gruf)
  • a9cefbb9ef06b7325132e471516fa50f62e881f7: [bugfix] Check follow req as well as follow when building relationship model (#4605) (@kipvandenbos)
  • 9a84303db92f95be665677490434f1ef36150670: [bugfix] Remove follow (req) notifications on Follow Undo (#4604) (@kipvandenbos)
  • 3c5b43e2fe9e2ebedfd8b6f141727b28c9ea390b: [bugfix] Fix my migration crimes (#4602) (@kipvandenbos)
  • a54a30b4d50cdafd11d58ebef3823b47c8937d9f: [bugfix] Preserve significant whitespace for new local plain posts + incoming remote posts (#4599) (@kipvandenbos)
  • 73c5da325decdaf458a8dcbf99227f560c859c45: [bugfix] don't apply visibility / status filtering when requesting your own account statuses (#4597) (@gruf)
  • 9b5c8d6a27ea16ac9cac99d89822b141bf6c136e: [bugfix] potential race condition on status unboost (#4596) (@gruf)
  • 05b294d8a1d45f20b1291debbd5547fa6a13a7de: [bugfix] Return unboosted status with reblogged=false (#4593) (@kipvandenbos)
  • e5cf4b65b7893d98db137c1a5477c50d4494fee1: [bugfix] ensure followed status tags have mute checks applied (#4569) (@gruf)
  • e9ea8098616060c4be61000b175a78daa55ab5ac: [bugfix] potential panic on update poll vote (#4578) (@gruf)
  • 70edae82527737358c0bec000b11400de48d71b1: [bugfix] Add Swagger docs for the user:notification stream (#4555) (@vyr)
  • b0b1f5a2be7d0cbb22faad9c7efc93b8f19980e1: [bugfix] Fix async-emoji-loading (#4553) (@gruf)
  • 4cabe7efb70d239764af3ea9510c41f541b83d43: [bugfix] Add Swagger docs for blur filter action (#4551) (@vyr)
  • 2c92445ec7854723decffcbf63d8822f199c6b4d: [bugfix] update go-mmap to macOS-compatible version (#4550) (@vyr)
  • 25d9f7c8bb8dc3a098fb003e8640d261d6e38372: [bugfix] more RSS validation issues (#4517) (@gruf)
  • 6fd14bc4fd23b0944799fbabe2034d4792640f32: [bugfix] Fix invalid period parameter when generating the TOTP URL (#4536) (@TwizzyDizzy)
  • b5607c756bf082202c0f97fa8527c512899ac74c: [bugfix] recheck for just-processed-emoji within mutex lock before starting processing (#4505) (@gruf)
  • a7fb24ed3532efb518f7e1caba5756fb89b48751: [bugfix] Fix HTTP return code for Likes of remote statuses (#4504) (@kipvandenbos)
  • 4a95bd5e1d2dce871553f015b05f8013083baf80: [bugfix] rss feed validation (#4499) (@gruf)
  • c495a128e90b8c9e6eff93591479264477de2ccd: [bugfix] Fix "client IP could not be parsed" error msg (#4497) (@kipvandenbos)
  • 566a0bc912cc58d4f38abdd20bd4554656c37503: [bugfix] repeated posts on timeline endpoints (#4494) (@gruf)

Chores & version bumps

  • 5e2e0d9e7e896c6b65c6cd68888a2fe8de070849: [chore] update dependencies (#4686) (@gruf)
  • f5fb5a6897ae92a0fa7be7f6d72fee485b203f45: [chore] move zero size media check into transport dereference function (#4684) (@gruf)
  • 581f9a81b3272db51bf67f397effdfd08846b32e: [chore] update dependencies (#4683) (@gruf)
  • 0efa81bb9af0d540c18e4f2ce65bed8c1536dc06: [chore] some twiddling (#4674) (@gruf)
  • f9f62e49dda91541556743460d2170db89b71d70: [chore] updated dependencies (#4673) (@gruf)
  • 74d5a2fb30362c10ab522b6be2235cb1f05ac952: [chore] Clean up web push subscription if access token no longer exists (#4669) (@kipvandenbos)
  • 53ad3d6b8eb99ec678540328f71113613b646913: [chore] Dick about with ogmeta tags a bit more (#4656) (@kipvandenbos)
  • 5295d4fad83a6b38b015d175d21da9a50dce7c28: [chore] More interaction tidying (#4655) (@kipvandenbos)
  • 513a4e55072de1a39b6d9bd37b811ceabf7e815b: [chore/frontend] Opengraph: for statuses with media, omit account and instance avatars (#4638) (@belkadan)
  • 5d824d2698b97c46e9fb56e8681f25e4f8d161b6: [chore/performance] avoid serializing empty / null AS properties (#4651) (@kipvandenbos)
  • 3d89f8f2f8b7e7ab44f22203a7cee2c466f8875e: [chore] updated dependencies (#4644) (@gruf)
  • af53aa0e2b4f34526773a654f5b6148434bc01a4: [chore] Remove deprecated always and with_approval properties in favor of automatic_approval and manual_approval (#4643) (@kipvandenbos)
  • 131f26db1f1c34dba9e1fa318c0beb3120440678: [chore] updated dependencies (#4637) (@gruf)
  • 5aa0a6dbc5ab67ba0f0affb2ad9734346ef79e54: [chore] updated dependencies (#4634) (@gruf)
  • 42a231a98b6e844392bd1a6de6bc1ced5deeff83: [chore] store basic error details when failing to process remote media (#4625) (@gruf)
  • b310e99b436357bb34b98f1b9233f3c9c69aaab0: [chore] update dependencies (#4629) (@gruf)
  • b619f902eb57988028867aaba777fbb085981e77: [chore] Update robots.txt md5 hashes for etags (#4623) (@kipvandenbos)
  • cbaf51337522d85d2e744033529c000c95d8aee3: [chore] Update robots.txt with latest list of "ai" bullshit user-agents (#4622) (@kipvandenbos)
  • b6cfb7cddc332cf43c64fe9a12c050346a2fc07e: [chore] update dependencies (#4620) (@gruf)
  • 07f8d985f30878a1c9e18140a1bd74e2e7e8ac41: [chore] make timeline cache timeouts configurable (#4616) (@gruf)
  • 63f5c7e459730370ea1ef52ef614d55b4fd02969: [chore] update dependencies (#4615) (@gruf)
  • 5e6de65c0b56a43bcf2cc17bc85918149deb740e: [chore] tweak default timeline timeouts (#4614) (@gruf)
  • 1309d1e998b30af468996e8d02a1fdd7eac4b3f1: [chore] move packages to external repo (#4610) (@gruf)
  • 6018e13823d34745c63e10949f8e289107ccd1be: [chore] update dependencies (#4612) (@gruf)
  • ffc182831681fc24c60205107900fde6d43dc8ca: [chore] update dependencies (#4607) (@gruf)
  • 4996d894d14bdaa98533ec54bef570c898a1e14d: [chore] Flag release archive files as 0644 explicitly (#4603) (@kipvandenbos)
  • 826f69e815500de9927705eff87a6757babb864f: [chore] update dependencies (#4601) (@gruf)
  • 4780662511879d8357a88d1d55fdc7a437693326: [chore] Swap Application and Service actor types for better Smithereen compat (#4598) (@kipvandenbos)
  • 9c08aaf292d693e3727f7b060ab50e2c29ed5e90: [chore] Update some git template stuff (#4595) (@kipvandenbos)
  • 56143a7e7748519acac6d463b9406d1c588f74bb: [chore] Update goreleaser build tags, add env vars (#4592) (@kipvandenbos)
  • dd4452a467ee7afec6fb11df515095e348a2b2cb: [chore] Use stable in docs links instead of latest (#4591) (@kipvandenbos)
  • 60bed4346b27f4a9d6546bd9923c20673f97da58: [chore] update go-ffmpreg v0.6.15 -> v0.6.16 (#4587) (@gruf)
  • 91af26428605ffa49d7b34ecbea90d824ff09e53: [chore] add nooidc build tag to support building without OIDC support (#4586) (@gruf)
  • 93ef092af66d63bfdb76c5f1ba88d0d16c979050: [chore] update dependencies (#4585) (@gruf)
  • dd36113768b05da6932f46193ae8b1d2e5219966: [chore] add a useful comment on logging package implementation details (#4581) (@gruf)
  • f2523fc5e915428a651181752cab7ac467c8cd53: [chore] adds compile time checks for unsafe pointer casting (#4576) (@gruf)
  • 7e9dfb09cbb900ac3b820336dfcc32fb4b4647e2: [chore] don't add disabled http handlers (#4572) (@gruf)
  • e46149d0698f270452142872b886bbb7b953b8ee: [chore] async media / emoji api fiddling (#4487) (@gruf)
  • 5a77d3dbd57381d5559857a3e58af647a837f646: [chore] update dependencies (#4568) (@gruf)
  • 7cca808919cdf0c9542a0b38900955c5f7f0a62e: [chore] Go back to using name for attachment alt text for now, add note in docs (#4559) (@kipvandenbos)
  • 72b2711d50ac4a69b364650b19c5ef4cbf64aa34: [chore] Apply schema for OpenAPI errors (#4511) (@vyr)
  • 2d4cec604880aa68744d7f9995e17404aab76af6: [chore] update dependencies (#4547) (@gruf)
  • 457c333b35fbc9e16c7ffebc2b9db6da08b69bc9: [chore] add useful instructions for LLM agents operating on the gotosocial codebase :innocent: (#4543) (@gruf)
  • 04d7b9e7be4b1043ac3361c132d55ae6edc10476: [chore] update dependencies (#4542) (@gruf)
  • 8fb03afed54b2610f8d74c6351757bbfdd8a47c0: [chore] update dependencies (#4539) (@gruf)
  • cd24983542e568a761b5eab7d55e0031b1623f48: [chore] add a 'nos3' build tag to support compiling without S3 storage support (#4522) (@gruf)
  • 871f2a2b6b048546ef400ad4550fb12db6acc630: [chore] add a 'nosqlite' and 'nopostgres' build tags to support compiling without certain database support (#4523) (@gruf)
  • 7084a0b52334285f862775258653d64ea12ae7b9: [chore] reduce binary size (#4519) (@gruf)
  • 6cdb58fd376a10f68e5ec1c52373746d798a7734: [chore/frontend] Use autocomplete="one-time-code" for 2fa input (#4516) (@kipvandenbos)
  • 98a6b2fce22bdbabc46bc60e80954a39fe3ba788: [chore] fix typo in web push notification title (#4514) (@mkljczk)
  • bf3ee3bbe2112e25394c83b1f73ae4ff4a172b6c: [chore] update dependencies (#4507) (@gruf)
  • 23aa4c7c9f4e2a02f9075a1c82b5c9c219be5cf4: [chore] Better handling of Gone accounts during PostInbox (return 202 Accepted instead of 401 Unauthorized) (#4506) (@kipvandenbos)
  • f63280f5d0b7e448fa1ed2bc8b3b8f9e8998a438: [chore] Rationalize HTTP return codes for fedi endpoints, other tidying up (#4503) (@kipvandenbos)
  • 16f58b25d185a766c7d28a73768b2e65c99031ee: [chore/performance] Use CTE for list select statuses query (#4501) (@kipvandenbos)
  • d3a5d3b924fa21a1b39b0688e23a756c71c0cd8c: [chore] update dependencies (#4495) (@gruf)

Documentation

  • 3b4454d574e7e367e0bf919b1c263d82c2958516: [docs] fix indentation in interaction controls doc (#4650) (@kipvandenbos)
  • b45385d19761e6e3b250915bf8eb6151bfc56efd: [docs] Update interaction control docs to >=v0.21.0 way of doing things (#4648) (@kipvandenbos)
  • 17208a6fb249b6ee8d6e927df3ab38e1a04e5dac: [docs] Add docs for domain limits (#4624) (@kipvandenbos)
  • 3b4a98b169521ac9a6024450d209c0dd6e1a7393: [docs] update slurp's repository URL (#4580) (@cdn0x12)
  • ecececcf099407fa77346de8c95fc93e120e6693: [docs] Update docs to differentiate between Service, Person, and Application actor types, add FEDERATION.md linking to docs (#4566) (@kipvandenbos)
  • 0e10e7febadcb5e570e6da846d43b4b9574d196f: [docs] Document setting OTEL_EXPORTER_PROMETHEUS_HOST for Docker (#4498) (@kipvandenbos)

Don't miss a new gotosocial release

NewReleases is sending notifications on new releases.