This here's the second release candidate for GoToSocial v0.22.0.
For instructions to update to this release candidate from versions < v0.22.0-rc1, see the v0.22.0-rc1 release candidate notes, but replace v0.22.0-rc1 with v0.22.0-rc2 throughout.
To update to this release candidate from v0.22.0-rc1, just follow the instructions below.
Release highlights
- Fixed a bug that was causing migrations on SQLite to fail with an erroneous
out of memorypanic - Fixed a bug with streaming + assets endpoints on split-domain deployments.
Migration notes
Upgrading
To upgrade to v0.22.0-rc2 from a previous release:
Binary/tar
- Stop GoToSocial.
- Back up your database! If you're running on SQLite, this is as simple as copying your
sqlite.dbfile, eg.,cp sqlite.db sqlite.db.backup. On Postgres you can do this with pg_dump. - Download and untar the new release, including the web assets and html templates, not just the binary.
- Edit your config.yaml file if necessary (see below).
- Start GoToSocial.
- 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!
- Enjoy your updated instance.
Docker
- Stop GoToSocial.
- Back up your database! If you're running on SQLite, this is as simple as copying your
sqlite.dbfile, eg.,cp sqlite.db sqlite.db.backup. On Postgres you can do this with pg_dump. - Pull the new docker container with
docker pull docker.io/superseriousbusiness/gotosocial:0.22.0-rc2ordocker pull docker.io/superseriousbusiness/gotosocial:latestif this is a stable release and not a release candidate. - Edit your config.yaml file or environment variables if necessary (see below).
- Start GoToSocial.
- 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!
- Enjoy your updated instance.
config.yaml
No changes since rc1.
Database Migrations
No new 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.22.0-rc2
|
| Linux | Armv8/ARM64 (64-bit) | π’ Full | linux_arm64.tar.gz | docker.io/superseriousbusiness/gotosocial:0.22.0-rc2
|
| 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
- 3fe273cbd9d92f7ef4cab6d81a2a57fb081c5ef0: [feature] Show explanation when user shows no posts on the web (#4846) (@kipvandenbos)
- a77b44caec869a723456c16707f982db9235e711: [feature] better error pages + handling for hidden or gone statuses (#4840) (@kipvandenbos)
- cc3af19e788e64c0f6c0d21085645d251a7e7cc4: [feature] Allow sorting access tokens by last_used, allow setting name per access token (#4833) (@kipvandenbos)
- b765e749bee6ca65e1b123f7fcaacb7d5893f433: [feature] Forward outgoing creates, updates, and deletes to relay pushes (#4820) (@kipvandenbos)
- bae8f079f0da820698d92e374265a796f41e80d5: [feature] add statuses multi GET endpoint (#4814) (@gruf)
- 126959d7f3bd06107c2251f7c28dc559fb896707: [feature/frontend] Add
data-name="{{- .Name -}}"to fields to allow for per-field styling (#4827) (@kipvandenbos) - a2266f281859f6714202fcf42d34c1d045a67aba: [feature] add cleanup of old remote status threads (#4808) (@gruf)
- 12e6d0c76b5ef690b7bcc759c46b6f930c6ff3af: [feature] Dereference + store statuses delivered by a followed relay actor (#4810) (@kipvandenbos)
- 603c8497402c61bf3db7462fc1b9c3ed5fe2ede6: [feature] Add button to clear instance delivery errors (#4818) (@kipvandenbos)
- 4e2589bc3ce283a33cae3a9adf1cbfb81f93beaa: [feature] make almost every http.Client{} and http.Server{} option configurable (#4730) (@gruf)
- 77059b4e8a6916c345644da5e812ae34a7f120e2: [feature] add sqlite cli commands (#4726) (@gruf)
- f4bf4aa061d8214e3ac820184f29ef3ab8d2c737: [performance] add configurables for timeline cache lengths (#4807) (@gruf)
- 39ad5099682ff4c5ee2afc03127117085928f3db: [feature] Add db functions, api endpoints, and settings panel sections for relay subscriptions + pushes (#4796) (@kipvandenbos)
- 0496504231cb1c37517aaa935858bc64692e92fe: [feature] Add storage-s3-region config option (#4788) (@Misofist)
- 85050eec411b584828529e4915a488913bbac479: [feature] Serve instance actor AP representation without auth (#4798) (@kipvandenbos)
- cc1316b498e78cbc8a4d50732f855cddf55d4dc9: [feature] Store delivery errors, add remote instances overview to view stored errors (#4741) (@kipvandenbos)
- 40fff696ba5aed940c8d7ffa3962b063c12a3d29: [feature] Add config option
smtp-from-display-namefor customization of email from address display name (#4769) (@kipvandenbos) - 4e935d03fcab8c78601176f2ac4095bcb6f54e60: [performance] further index fiddling (#4761) (@gruf)
- ef60ffecc823d48824850c77c118c482e4d41b4b: [feature] hook up "log-db-queries" again and when enabled log at TRACE regardless of current "log-level" (#4764) (@gruf)
- 9972836d289efe823c450fa18ecb72e69d3e53a7: [performance] use CTE for home timeline query, allows postgres to make use of indices, thanks @cdn0x12 (#4760) (@gruf)
- c40dbf0fb8b201b237f8daae8c345a2be3299041: [performance] don't block on media load on API endpoints to improve latency (#4756) (@gruf)
- 0415d71afc78447750fe8c133c69041cee133cd8: [feature] implement status deletion via stubbing (#4752) (@gruf)
- 7362d55a35588095cd112acf914598755d56012b: [feature] add deleted flag to the statuses table to track tombstones (#4716) (@gruf)
- ea7e3c0cd7faa32bec6727103b3881fdd2c0cdb2: [feature/frontend] add TrΓ€welling status to profile (#4540) (@wolfyjade)
- ec692007777a622f1602612f697b8a1d7f4aef64: [feature] Add instance directory page for accounts that opt-in to discoverability (#4707) (@kipvandenbos)
Bug fixes
- aec4f4610a5f0d98146e8e233573be3b63b4fe01: [bugfix] Update go-sqlite3 to v0.35.1 to fix
out of memorypanic during migration (#4864) (@kipvandenbos) - 1a58374aa73dc8cf0055584807c6665b8b4de73f: [bugfix] Fix account domain being used incorrectly in api instance responses (#4863) (@kipvandenbos)
- c35d2b7264b3dbb311c47d4767e8a379a57caf17: [bugfix] temporarily removes the sqlite vacuum CLI action, as it seems to fail with i/o issues (#4859) (@gruf)
- f85412164ea32ef56da3f213ff1c9b377c0367fe: [bugfix] nowasm: on context cancel hook, check that process is non-nil before calling Kill() (#4855) (@gruf)
- 4ce10bdb5e022f9f32fdbb0f28da17ca268a9579: [bugfix] Fix error message for account-domain/host validation being the wrong way around (#4851) (@kipvandenbos)
- de2e6a066e03adcd9b33b29c6e1b989c6ae6ebb3: [bugfix] Always return 401 unauthorized when deref of pubkey fails (#4836) (@kipvandenbos)
- 1a0e3fda4174d996687b57be655f96c723ef8c86: [bugfix] fix error format strings (#4835) (@gruf)
- e0bc24aadc2456f88943cc87d16f1aa15afb5985: [bugfix] don't return 500 error on unsupported Announce forwards (#4828) (@kipvandenbos)
- 6a5794e6bb94dbb34f090dff58c305aec68ddf2c: [bugfix] Check error type when dereferencing threads, to avoid spurious error messages (#4824) (@kipvandenbos)
- 8198126b3efaceabea43726d52b4557c9324fa00: [bugfix/frontend] Validate domain name for new domain perms earlier to avoid confusing err messages (#4826) (@kipvandenbos)
- ed6b7375abff0c0f89100dd711b69718adb634df: [bugfix] Ignore extraneous data streams when processing videos (#4819) (@prplecake)
- dd81a521a5c9d8e58229032692480225df4c55ee: [bugfix] Fix logic error on outgoing poll votes (#4813) (@kipvandenbos)
- f20588d77899a2dcca70ab8da98295991af9bb66: [bugfix]: make GET /api/v1/admin/reports match Mastodon admin API (#4778) (@mkljczk)
- a0d235b8573e29748b65ad2a2025c9078f51bd42: [bugfix] numerous media processing bug fixes (#4771) (@gruf)
- beb928196cf81bb751823bef95b222eef9b51c74: [bugfix] Preescape backslashes when doing plaintext parsing (#4770) (@kipvandenbos)
- 80b8faaf2d4eafb87c909bf4a3278427e59198a6: [bugfix] set deleted status placeholder serialization (#4768) (@gruf)
- bc19d7b705ed83bd6c85b22a6c19e0aaef65311c: [bugfix] fix media setting errors on codec unsupported or generic ffmpeg/ffprobe related errors (#4749) (@gruf)
- 085448e30d8eccfe7423f6763bfcbf550ef3f156: [bugfix] Only insert status pins if slice not empty (#4743) (@kipvandenbos)
- ad85f899566401ab917bab08c6001405ef92a0ed: [bugfix] Fix 404 for local audio files with no cover image (#4739) (@kipvandenbos)
- b49939a6a0624966563ccf73f42cf29010caf3c4: [bugfix] Check
replyAuthorizationprop on statuses, fall back to deprecatedapprovedBy(#4732) (@kipvandenbos) - dd7d659129a4d163791d7370489b59470852b58e: [bugfix] catch empty media attachment URLs and set appropriate error text so they get replaced with placeholder text (#4723) (@gruf)
- 10afa7692afa109a0dd108a824ba200dd9643ae0: [bugfix] ensure domain limit status filters get serialized the same as regular status filters (#4722) (@gruf)
- da22ce93b0f8b73da96bb5f842583ff476a29f9d: [bugfix] do not crash on null
media.metaon reports page (#4721) (@mkljczk) - d1f330e9cd2d5d00a23569864420b53a57a4f0b6: [bugfix] Fix missing prometheus go runtime metrics (#4718) (@kipvandenbos)
Chores & version bumps
- ed164e831ecb662f05e4c1c2aa34d977c801a313: [chore] HTTP server/client config stuff (#4861) (@kipvandenbos)
- 19d294ebba6db95c2dd53321228e9fb91835d850: [chore] update dependencies (#4854) (@gruf)
- 06c10bba8305f1cddc4ccbeff4b268293e4e7999: [chore] update dependencies (#4848) (@gruf)
- 8bc9103f018956efd50aada5e765b2b372d8d17b: [chore] Return 202 when we're forwarded an activity originating from a domain we block (#4844) (@kipvandenbos)
- c8f6ef80288ced68e5149e89c51ca56ccdd851cd: [chore] Don't error message when unable to enrich mention because remote is blocked (#4838) (@kipvandenbos)
- 2c9a2c6e2ccb419ceb3c117f41151acc842d0138: [chore] updated dependencies (#4831) (@gruf)
- 7161b5c7db457353f09a41612c4d3be3775c2636: [chore] Add more bullshit crawlers to
robots.txtπ (#4829) (@kipvandenbos) - 3b63e8979d098a72bebdfc04940d2a3cb12280b6: [chore] remove unused
auth_flow.shscript (#4822) (@kipvandenbos) - aeb597ed983bb5f2f768807258c85b522c201875: [chore] update dependencies (#4815) (@gruf)
- 47237d7b81a35a6e727fcedf53430d87288f28b1: [chore] update dependencies (#4806) (@gruf)
- 6cdf99a467f892ad3e6c0586870d8014d719c232: [chore] update dependencies (#4801) (@gruf)
- 62852a052611393f3f8b714db995ac90232c89c3: [chore] update dependencies (#4797) (@gruf)
- 22105fba1b1b8291457cb9a7461ba57c346c693b: [chore] update dependencies (#4791) (@gruf)
- 650a9982606c909894f8b92c706a2ddd466f2568: [chore] update dependencies (#4784) (@gruf)
- 12ff7d3dc47a062f52996a6c19b363bae9284b68: [chore] Totally definitely legitimately support Claude code, we love our shit-eating LLM capitalist overlords π (#4781) (@mkljczk)
- e5f7b69df36d3f0a64c82bd20f770b4585967dc0: [chore] Update
gotosocial-woodpecker-buildversion number (#4774) (@kipvandenbos) - 003788429dd2ad57294482af2411559998cdefbb: [chore] update dependencies (#4773) (@gruf)
- 92d7e6c456ac4cba741a2bf2438e45f78aaa8f5b: [chore/performance] Set lazy loading in HTML for status header avatars (#4772) (@kipvandenbos)
- c7f37c34e26fb005b55ed88983e6ac7e74042268: [chore] update dependencies (#4745) (@gruf)
- fe460402d3adce60792a8609267a50f2a4a6fda3: [chore] Use
bun.Ident()inGetCachedAttachments(#4753) (@kipvandenbos) - df7b9e0319a7574c8ae0ccdf870949ff3c2e2d87: [chore] updated dependencies (#4719) (@gruf)
- 8d1f34958355947df667d02050e5c45ac7283541: [chore] Updating linter in CI/CD to v2.9.0 (#4714) (@foxbite)
Documentation
- 542c57f71626e0f167eceb05f4c76bdbe732284d: [docs] update list of supported platforms regarding recent changes to ncruces/go-sqlite3 and our build tag behaviour (#4858) (@gruf)
- 40ed94590f149cd3656ddd09dfa0141f37686d7c: [docs] Update db maintenance docs, add status cleanup docs, update media cleanup docs (#4857) (@kipvandenbos)
- 10244f032b3cb0eb3c5e1dd736b5edcc102794df: [docs] Update database maintenance docs to specify using the gts binary to run analyze (#4843) (@kipvandenbos)
- bafe562b3930b8c7bbe07563b59a9960a194fc5e: [docs] Update config examples for crons (#4821) (@kipvandenbos)
- a2cbe8cf28d3271c52c6032cb9ea1841ea606ada: [docs/bugfix] Fix link to example systemctl file (#4751) (@kipvandenbos)
Other
- c6388ed0886c12b5691ce6538c1962bdb0af430f: [frontend] tweak account directory styling (#4860) (@kipvandenbos)
- 47772362b9bf91dab3916a768495d19b5ec84a64: [frontend] Update media cleanup form to better reflect API (#4839) (@kipvandenbos)