codeberg superseriousbusiness/gotosocial v0.22.0-rc2

pre-release8 hours ago

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 memory panic
  • 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

  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.22.0-rc2 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 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-name for 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 memory panic 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 replyAuthorization prop on statuses, fall back to deprecated approvedBy (#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.meta on 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.sh script (#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-build version 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() in GetCachedAttachments (#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)

Don't miss a new gotosocial release

NewReleases is sending notifications on new releases.