Here's the first release candidate of GoToSocial v0.18.0!
Please read the migration notes carefully for instructions on how to upgrade to this version. This version contains several very long migrations so you will need to be patient when upgrading, and backup your database first!!
Release highlights
- Status edit support: one of our most-requested features! You can now edit your own statuses, and see instance edit history from other accounts too (if your instance has them stored).
- Push notifications: probably the second most-requested feature! GoToSocial can now send push notifications to clients via their configured push providers.
You may need to uninstall / reinstall client applications, or log out and back in again, for this feature to work. (And if you're using Tusky, make sure you've got ntfy installed). - Global instance css customization: admins can now apply custom CSS across their entire instance via the settings panel.
- Domain permission subscriptions: it's now possible to configure your instance to subscribe to CSV, JSON, or plaintext lists of domain permissions.
Each night, your instance will fetch and automatically create domain permissions (or permission drafts) based on what it finds in a subscribed list.
See the domain permission subscription documentation for more information. - Trusted-proxies helper: instances with improperly configured trusted-proxies settings will now show a warning on the homepage, so admins can make sure their instance is configured correctly.
- Better outbox sorting: messages from GoToSocial are now delivered more quickly to people you mention, so conversations across instances should feel snappier.
- Log in button: there's now a login button in the top right of the instance homepage, which leads to a helpful page about clients, with a link to the settings panel. Should make things less confusing for new users!
- Granular stats controls: with the
instance-stats-mode
setting, admins can now choose if and how their instance serves stats via the nodeinfo endpoints. Existing behavior from v0.17.0 is the default.
Migration notes
Upgrading
To upgrade to v0.18.0-rc1 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.db
file, eg.,cp sqlite.db sqlite.db.backup
. - Download and untar the new release, including the web assets and html templates.
- 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.db
file, eg.,cp sqlite.db sqlite.db.backup
. - Pull the new docker container (
superseriousbusiness/gotosocial:0.18.0-rc1
orsuperseriousbusiness/gotosocial:latest
) - 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
The configuration file has changed since the previous release.
- Added
instance-subscriptions-process-from
. - Added
instance-subscriptions-process-every
. - Added
instance-stats-mode
.
You can see a diff of the config file here: v0.17.3...v0.18.0-rc1#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622
Database Migrations
⚠️⚠️⚠️
This release may contain database migrations which will run the first time you start up this new version.
Be sure not to interrupt this migration process.
This will take anywhere between a couple seconds and up to an hour or more (on slower hardware).
Please be patient!
⚠️⚠️⚠️
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 | superseriousbusiness/gotosocial:0.18.0-rc1
|
Linux | Armv8/ARM64 (64-bit) | 🟢 Full | linux_arm64.tar.gz | superseriousbusiness/gotosocial:0.18.0-rc1
|
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
- e3c2b79: [performance] minimise log field allocations (#3529) (@NyaaaWhatsUpDoc)
- c2029df: [feature] Allow emoji shortcode to be 1-character length (#3556) (@tsmethurst)
- 3015436: [feature] Add domain permission drafts and excludes (#3547) (@tsmethurst)
- cac9d65: [performance] convert enum strings to ints (#3558) (@NyaaaWhatsUpDoc)
- c9d36f7: [performance] use new instance of bun.DB after migrations to reduce number of in-memory model schema (#3578) (@NyaaaWhatsUpDoc)
- dce85a2: [feature/themes] Add auto-switching themes for blurple/brutalist/solarized (#3588) ( <>)
- 9609c45: [feature] Add global instance CSS customization setting (#3352) (@S0yKaf)
- 3e18d97: [feature] unending polls (#3592) (@NyaaaWhatsUpDoc)
- 23fc70f: [feature] add support for receiving federated status edits (#3597) (@NyaaaWhatsUpDoc)
- 9477fd7: [feature] Allow partial-word hashtags using non-breaking spaces (#3606) (@tsmethurst)
- fe8d5f2: [feature] add support for clients editing statuses and fetching status revision history (#3628) (@NyaaaWhatsUpDoc)
- e9bb7dd: [feature] Create/update/remove domain permission subscriptions (#3623) (@tsmethurst)
- 451803b: [feature] Fetch + create domain permissions from subscriptions nightly (#3635) (@tsmethurst)
- 0a99901: [performance] reduce InboxForward->Create calls by partially implementing Exists() (#3647) (@NyaaaWhatsUpDoc)
- 1472d92: [feature] Add
published
property to outgoing AP Actor representations (#3671) (@tsmethurst) - b42cb7a: [feature] Add warning about
trusted-proxies
to make config easier (#3675) (@tsmethurst) - 9333bbc: [feature] Serve bot accounts over AP as Service instead of Person (#3672) (@tsmethurst)
- 5b765d7: [feature] Push notifications (#3587) (@VyrCossont)
- 3720251: [feature] show status edits on frontend (#3678) (@NyaaaWhatsUpDoc)
- 71b5035: [feature] Process incoming Undo Announce properly (#3676) (@tsmethurst)
- 7b7fc52: [feature/frontend] Add login button to index page which reiterates info about clients (#3377) (@vivlim)
- 65fb8ab: [feature] Implement
deliveryRecipientPreSort
to prioritize delivery to mentioned accounts (#3668) (@tsmethurst) - d16e4fa: [feature] Use maintenance router to serve 503 while server is starting/migrating (#3705) (@tsmethurst)
- ab758cc: [feature] Add system message wrappers for pending replies and placeholder attachments (#3713) (@VyrCossont)
- a55bd6d: [feature] Add
instance-stats-randomize
config option (#3718) (@tsmethurst) - 27844b7: [feature] Implement Web Push notification policy (#3721) (@VyrCossont)
- 07d2770: [feature] Change
instance-stats-randomize
toinstance-stats-mode
with multiple options; implement nodeinfo 2.1 (#3734) (@tsmethurst) - baed591: [feature] Use
X-Robots-Tag
headers to instruct scrapers/crawlers (#3737) (@tsmethurst)
Bug fixes
- 9ace025: [bugfix] post counters should not include direct messages (#3554) (@Booklordofthedings)
- a444ade: [bugfix] notification types missing from link header (#3571) (@NyaaaWhatsUpDoc)
- 6a8af42: [bugfix] Allow unsetting filter expiration dates (#3560) (@VyrCossont)
- 65917f5: [bugfix] Log + ignore unknown notification types (#3577) (@tsmethurst)
- 732b03a: [bugfix] Load instance-wide custom css unconditionally in thread details page (#3595) ( <>)
- f78002f: [bugfix] Load instance-wide custom css in page stylesheets template (#3601) ( <>)
- 0784aa3: [bugfix] small editing tweaks (#3631) (@NyaaaWhatsUpDoc)
- 6b72740: [bugfix] Advertise audio/mpeg as supported (#3632) (@daenney)
- 29da5b3: [bugfix] more little edit fixes (#3633) (@NyaaaWhatsUpDoc)
- 8daa4da: [bugfix] More permissive CSV parsing for perm subs, text parse fix (#3638) (@tsmethurst)
- 8cfae01: [bugfix] migration to cleanup dropped status edits (#3637) (@NyaaaWhatsUpDoc)
- 634d4f4: [bugfix] Fix existing perm adoption (#3651) (@tsmethurst)
- 37fd7c7: [bugfix] Store LastModified for domain perm subs + send as If-Modified-Since (#3655) (@tsmethurst)
- 4c052c8: [bugfix] Rename domain perm sub migration to unique date (#3679) (@tsmethurst)
- 702d492: [bugfix] Fix top-level posts with a mention being counted as replies when doing
exclude_replies
(#3689) (@tsmethurst) - bfe8144: [bugfix] Allow processing null ID emojis (#3702) (@tsmethurst)
- 1ab960b: [bugfix] harden checks for remotes masquerading as local, and return correct local account redirects early (#3706) (@NyaaaWhatsUpDoc)
- 91cef34: [bugfix] Missing emoji urls (#3707) (@NyaaaWhatsUpDoc)
- 493de5c: [bugfix] fix boost of account ID check (#3709) (@NyaaaWhatsUpDoc)
- b9e0689: [bugfix] Extend parser to handle more non-Latin hashtags (#3700) (@VyrCossont)
- 8a9422a: [bugfix] shut down LE server nicely (#3714) (@tsmethurst)
- f5eee56: [bugfix] Swagger: fix media_ids[] param for creating statuses (#3722) (@VyrCossont)
- 053d820: [bugfix] Don't panic on delivery of Activity with no
object
(#3730) (@tsmethurst) - bfb81f5: [bugfix] wrong nodeinfo version (tobi is a boob) (#3735) (@tsmethurst)
Chores & version bumps
- b846378: [chore] update go ffmpreg to v0.6.0 (#3515) (@NyaaaWhatsUpDoc)
- 29007b1: [chore] update bun libraries to v1.2.5 (#3528) (@NyaaaWhatsUpDoc)
- 98eef32: [chore]: Bump golang.org/x/net from 0.30.0 to 0.31.0 (#3536) (@dependabot[bot])
- aeacbe3: [chore] pin otel library versions (#3538) (@NyaaaWhatsUpDoc)
- d850248: [chore]: Bump golang.org/x/image from 0.21.0 to 0.22.0 (#3533) (@dependabot[bot])
- e892bc3: [chore]: Bump golang.org/x/oauth2 from 0.23.0 to 0.24.0 (#3537) (@dependabot[bot])
- daf55ba: [chore] Bump cross-spawn from 7.0.3 to 7.0.6 in /web/source (#3552) (@dependabot[bot])
- ae1a985: [chore]: Bump github.com/tdewolff/minify/v2 from 2.21.1 to 2.21.2 (#3567) (@dependabot[bot])
- 2ed4098: [chore] Update gorilla/websocket (#3561) (@daenney)
- 934e895: [chore]: Bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#3564) (@dependabot[bot])
- c454b1b: [chore] Bump tooling versions, bump go -> v1.23.0 (#3258) (@tsmethurst)
- 5c818de: [chore] Sign the bloody thing, fix the other bloody thing (#3572) (@tsmethurst)
- 312cb8b: [chore] rename New___(string) int signature functions to Parse___(string) int (#3580) (@NyaaaWhatsUpDoc)
- 936b269: [chore]: Bump github.com/minio/minio-go/v7 from 7.0.80 to 7.0.81 (#3590) (@dependabot[bot])
- dbef5ee: [chore] Replace Semaphore recommendation with Pinafore. (#3586) (@technomancy)
- a597e1e: [chore]: Bump codeberg.org/gruf/go-ffmpreg from 0.6.0 to 0.6.1 (#3591) (@dependabot[bot])
- 55d6731: [chore] Update frontend bug report issue title prefix (#3596) ( <>)
- 79f2e85: [chore] bumps modernc/sqlite version to v1.34.2 on our custom fork (#3599) (@NyaaaWhatsUpDoc)
- 642f523: [chore] stub /api/v1/accounts/{id}/featured_tags endpoint (#3598) (@ptrcnull)
- a4e82cb: [chore]: Bump golang.org/x/text from 0.20.0 to 0.21.0 (#3611) (@dependabot[bot])
- f72e753: [chore]: Bump golang.org/x/image from 0.22.0 to 0.23.0 (#3608) (@dependabot[bot])
- d9e722d: [chore]: Bump golang.org/x/net from 0.31.0 to 0.32.0 (#3610) (@dependabot[bot])
- acdd495: [chore] Log during potentially long migrations (#3613) (@tsmethurst)
- fd3b1e6: [chore] Bump nanoid from 4.0.2 to 5.0.9 in /web/source (#3614) (@dependabot[bot])
- 9ae0c7b: [chore] Update ncruces/go-sqlite3 to 0.21.3 (#3629) (@daenney)
- 1aa7f70: [chore] Stub /api/v1/announcements implementation (#3630) (@daenney)
- 77f1e79: [chore] Update robots.txt with more AI bots (#3634) (@daenney)
- c013892: [chore] replace statuses.updated_at column with statuses.edited_at (#3636) (@NyaaaWhatsUpDoc)
- 4d42310: [chore]: Bump github.com/gin-contrib/gzip from 1.0.1 to 1.1.0 (#3639) (@dependabot[bot])
- b95498b: [chore]: Bump mvdan.cc/xurls/v2 from 2.5.0 to 2.6.0 (#3643) (@dependabot[bot])
- e77c7e1: [chore] better dns validation (#3644) (@NyaaaWhatsUpDoc)
- 0096222: [chore]: Bump github.com/gin-contrib/sessions from 1.0.1 to 1.0.2 (#3664) (@dependabot[bot])
- cfe6ac5: [chore]: Bump github.com/jackc/pgx/v5 from 5.7.1 to 5.7.2 (#3663) (@dependabot[bot])
- 77ea305: [chore]: Bump golang.org/x/net from 0.33.0 to 0.34.0 (#3660) (@dependabot[bot])
- 9835d3e: [chore]: Bump github.com/gin-contrib/cors from 1.7.2 to 1.7.3 (#3661) (@dependabot[bot])
- 5c0514e: [chore]: Bump github.com/coreos/go-oidc/v3 from 3.11.0 to 3.12.0 (#3662) (@dependabot[bot])
- 2a46681: [chore] Allow suppressing trusted-proxies warning by disabling rate limiting (#3686) (@tsmethurst)
- 5c96702: [chore]: Bump github.com/gin-contrib/gzip from 1.1.0 to 1.2.2 (#3693) (@dependabot[bot])
- 3428bc9: [chore]: Bump github.com/miekg/dns from 1.1.62 to 1.1.63 (#3695) (@dependabot[bot])
- a773768: [chore]: Bump github.com/SherClockHolmes/webpush-go from 1.3.0 to 1.4.0 (#3694) (@dependabot[bot])
- 726d2ba: [chore] some tidy ups (#3677) (@NyaaaWhatsUpDoc)
- 9048290: [chore] skip
trusted-proxies
warning if ip excepted from rate limiting (#3699) (@tsmethurst) - 61141ac: [chore] remove type switch in Create() and instead move to FederatedCallbacks() (#3697) (@NyaaaWhatsUpDoc)
- fc895ad: [chore] Web Push: Use server URL for VAPID sub claim (#3716) (@VyrCossont)
- c47b9bd: [chore] Add "object" uri to outgoing Accept + Reject messages (#3717) (@tsmethurst)
- 77f25e2: [chore] disallow /nodeinfo/ too (#3729) (@wolfyjade)
- a6d852d: [chore]: Bump golang.org/x/oauth2 from 0.24.0 to 0.25.0 (#3725) (@dependabot[bot])
- c086d40: [chore]: Bump github.com/KimMachineGun/automemlimit from 0.6.1 to 0.7.0 (#3726) (@dependabot[bot])
- 8b74cad: [chore]: Bump github.com/tdewolff/minify/v2 from 2.21.2 to 2.21.3 (#3727) (@dependabot[bot])
- acd3e80: [chore]: Bump github.com/minio/minio-go/v7 from 7.0.81 to 7.0.84 (#3728) (@dependabot[bot])
- dd094e4: [chore] update otel libraries (#3740) (@theSuess)
- 1a8e42e: [chore] update readme support matrix (#3738) (@NyaaaWhatsUpDoc)
- 00bd0f7: [chore] Update drone + goreleaser (#3742) (@tsmethurst)
Documentation
- ffa67ac: [docs] Include link to a live instance in README (#3549) (@thombles)
- da4db81: [docs] Added note to documentation about mutuals-only posts not being functional. (#3557) (@VirtualWolf)
- 44b7bc7: [docs/zh] Update zh docs: synced to da4db81 (#3589) ( <>)
- 4fbe06e: [docs] Add missing --config-path arg in backup documentation (#3607) (@thestfndev)
- 3ab2d86: [docs] Swagger: fix filter context params by moving enum list from the list type to the item type (#3684) (@VyrCossont)
- b3ecfe1: [docs] remove
-X POST
from curl commands (#3665) (@mjaschen)
Other
- 45e1609: bump ncruces/go-sqlite3 to v0.20.2 (#3524) (@NyaaaWhatsUpDoc)
- 58f916e: docs: Clarify object store configuration (#3527) (@daenney)
- 3fceb5f: bumps uptrace/bun dependencies to v1.2.6 (#3569) (@NyaaaWhatsUpDoc)
- 61f8f1e: pull in ncruces/go-sqlite3 v0.20.3 with tetratelabs/wazero v1.8.2 (#3574) (@NyaaaWhatsUpDoc)
- 3cc5049: pulls in the latest exif-terminator version with bugfix and performance optimizations (#3583) (@NyaaaWhatsUpDoc)
- d9f67ef: send out poll votes as separate create activities given that no other AP servers support multiple objects in a single activity (#3582) (@NyaaaWhatsUpDoc)
- 60acdb2: Bump nanoid from 3.3.7 to 5.0.9 in /web/source (#3615) (@dependabot[bot])
- fb12bbb: bump ncruces/go-sqlite3 to v0.21.0 (#3621) (@NyaaaWhatsUpDoc)
- 8504043: bump gruf/go-ffmpreg to v0.6.2 (#3622) (@NyaaaWhatsUpDoc)
- ec00dbd: bump gruf/go-ffmpreg to v0.6.3 (#3624) (@NyaaaWhatsUpDoc)
- 9697df0: bump ncruces/go-sqlite3 to v0.21.1 (#3625) (@NyaaaWhatsUpDoc)
- c953f57: update ncruces/go-sqlite3 to v0.21.2 (#3626) (@NyaaaWhatsUpDoc)
- eb77cee: update gruf/go-ffmpreg to v0.6.4 (#3627) (@NyaaaWhatsUpDoc)
- b8ef9fc: bump uptrace/bun dependencies from 1.2.6 to 1.2.8 (#3645) (@NyaaaWhatsUpDoc)
- 81b66ad: update ncruces/go-sqlite3 v0.21.3 -> v0.22.0, gruf/go-ffmpreg v0.6.4 -> v0.6.5 (#3646) (@NyaaaWhatsUpDoc)
- 3617e27: bumps uptrace/bun deps to v1.2.8 (#3698) (@NyaaaWhatsUpDoc)
- 5275871: check boosted account ID when performing usermute checks (#3708) (@NyaaaWhatsUpDoc)
- a24048f: bumps our fork of modernc.org/sqlite to v1.34.5 (#3731) (@NyaaaWhatsUpDoc)
- e1781ff: adds support for build specifically without wasm ffmpeg (#3732) (@NyaaaWhatsUpDoc)
- 1276cde: temporary fix for tetratelabs/wazero#2365 armv8 compiler support bug (#3741) (@NyaaaWhatsUpDoc)