codeberg superseriousbusiness/gotosocial v0.20.0-rc1

pre-release9 hours ago

Lads lads lads lads!

Here's the release candidate for v0.20.0 of GoToSocial!

It's been a long summer of gently poking and prodding at the sloth, and she's finally getting ready to lumber out the door and say hello.

Please read the migration notes carefully for instructions on how to upgrade to this version. Please pay particular attention to the metrics changes, as we've significantly changed the way that metrics exposure is configured. For more information on the new way of doing things, look through here: https://docs.gotosocial.org/en/latest/advanced/metrics/

Release highlights

  • Big refactor of timeline code to use less memory and be (hopefully!) more responsive and less error prone.
  • Support for scheduled statuses!
  • Support for the focal point property on the frontend + over federation, so you can set focal point on your media and have it work properly!
  • Notifications when a status you've interacted with has been edited.
  • ListenBrainz widget on the frontend, so you can show off the music you've been listening to (https://docs.gotosocial.org/en/latest/user_guide/settings/#profile-fields)
  • Instance info panel in the settings, so that non-admins on the instance can see which domains are blocked and explicitly allowed, and the reason why.
  • Bunch of new themes for profile views!
  • Config option to expose emoji endpoints without authentication -- useful for compatibility with some clients. Default value still requires authentication.
  • Footnotes in markdown!
  • Configurable thumbnail dimensions.
  • Federation of avatar + header image descriptions is handled now, both in + out of GtS.
  • The new hidesToPublicFromUnauthedWeb and hidesCcPublicFromUnauthedWeb are federated in and out now, allowing your instance and other instances that support these properties to transmit + respect preferences for the visibility of posts to render on the unauthenticated (public) web view of threads.
  • Support for avif file format.
  • JSON logging format, for easier log ingestion.
  • Atom and JSON feed support for RSS (not just xml).
  • Reworked metrics format, more + better metrics, and an importable example grafana dashboard.
  • Domain permission subscription retractions are now handled properly.
  • Probably a lot more! See below!

Migration notes

Pride / trans flags

This release includes a trans flag and a rainbow pride flag in the footer of the GoToSocial HTML.

If you are in a place where it is illegal / dangerous to show such flags, you can remove them by adding the following short custom CSS snippet to your instance-wide CSS at the bottom of the instance section of the settings panel (as admin):

footer nav ul #version span {
  display: none;
}

If you prefer, you can also remove them from the HTML altogether by editing web/template/page_footer.tmpl and then restarting the instance to reload the template. Via Docker you can do this by bind-mounting an edited version of the template file to /gotosocial/web/template/page_footer.tmpl.

We sincerely hope the world becomes a kinder place where warnings like this are not necessary.

Upgrading

To upgrade to v0.20.0-rc1 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.20.0-rc1 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

The configuration file has changed since the previous release.

  • Added log-format option, settable to logfmt (default) and json.
  • Changed default db-type from postgres to sqlite to reflect majority of use-cases.
  • Changed db-address from empty string to sqlite.db to relect change of default db-type.
  • Renamed instance-expose-suspended -> instance-expose-blocklist.
  • Renamed instance-expose-suspended-web -> instance-expose-blocklist-web.
  • Added instance-expose-allowlist.
  • Added instance-expose-allowlist-web.
  • Added instance-expose-custom-emojis.
  • Added accounts-max-profile-fields.
  • Added media-thumb-max-pixels.
  • Changed default value of media-description-max-chars from 1500 to 5000.
  • Added storage-s3-bucket-lookup.
  • Added scheduled-statuses-max-total.
  • Added scheduled-statuses-max-daily.
  • Removed tracing-transport, tracing-endpoint, and tracing-insecure-transport. These must be configured using environment variables now.
  • Removed metrics-auth-enabled, metrics-auth-username, and metrics-auth-password. These are configured differently now: https://docs.gotosocial.org/en/latest/advanced/metrics/
  • Added insecure-outgoing.

You can see a diff of the config file here: https://codeberg.org/superseriousbusiness/gotosocial/compare/v0.19.2...v0.20.0-rc1#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622

Database Migrations

⚠️⚠️⚠️

This release contains several database migrations which will run the first time you start up this new version.

Be sure not to interrupt this migration process, or you may leave your instance in a broken state!

The migrations may take anywhere between a couple seconds and thirty minutes 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 docker.io/superseriousbusiness/gotosocial:0.20.0-rc1
Linux Armv8/ARM64 (64-bit) 🟢 Full linux_arm64.tar.gz docker.io/superseriousbusiness/gotosocial:0.20.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

  • 6607e1c9444d0814b72762a46814ff0812d96343: [feature] add paging support to rss feed endpoint, and support JSON / atom feed types (#4442) (@gruf)
  • 11f39bead048821d2508569f339113127c654480: [feature] Stub out trends + suggestions (always return empty array) (#4435) (@kipvandenbos)
  • 754b7be9cfd3f50e6e219177cdd4c992a2d9c38f: [feature] Support new model of interaction flow for forward compat with v0.21.0 (#4394) (@kipvandenbos)
  • 19784e381bfe6e0aa44cd03928e0ce74edda14eb: [performance] more logging tweaks (#4415) (@gruf)
  • 5a54e7156b8e64edaf85bab74fbf2b65bcc65a13: [performance] faster request id generation (#4405) (@gruf)
  • 1144ac037fcb4fd7ec9729c4e0846c6f7fe9a2ed: [feature] add metrics for worker counts, and worker queue sizes (#4387) (@gruf)
  • e9b7e977a552275badf464a3b5882f41c6f879eb: [performance] replace uses of fmt.Sprintf() with inlineable buildURL_() and buildPath_() functions (#4374) (@gruf)
  • fb2ef90ec51c47c801d290f2f6ff2289121cbeb1: [feature] support blur filter action (#4371) (@mkljczk)
  • 7f8cb204cd5a58eb143ab20a21bfa32bd8c3c26b: [feature] 2fa management via CLI (#4368) (@gruf)
  • 660cf2c94ce6a87ac33d704ab1f68b2d4a258d92: [feature] scheduled statuses (#4274) (@mkljczk)
  • 7af9117e0dc73f83995a32f11158cffdbaf5307c: [feature + performance] add JSON logging format (#4355) (@gruf)
  • f301bd5abf0b73e935425758187e615b19602d7b: [feature/frontend] Add Ninety Eight theme (#4348) (@wolfyjade)
  • 7e45168d331401f2fedb25b8fd04f539ca723d04: [feature] add streaming of statuses and status updates to LOCAL / PUBLIC timelines (#4353) (@gruf)
  • e3dfd8889315af38c4eef1eb4247dc07a51899c7: [performance] bump codeberg.org/gruf/go-kv to v2 (#4341) (@gruf)
  • a4b54aa935f60d392cdaec7c4d315ff274ce73b5: [feature] Add avif file support (#4331) (@kipvandenbos)
  • dcfc9b7885e7ed4f7886a35ccb3e007c293d3521: [feature] Use hidesToPublicFromUnauthedWeb and hidesCcPublicFromUnauthedWeb properties for web visibility of statuses (#4315) (@kipvandenbos)
  • c8a4ce9a88fbe3122d796641406016ae4e83213d: [performance] use our own typed value context types for Value() key checking to improve performance (#4316) (@gruf)
  • 4f2aa792b33fdd5fb4b22dec813b3668d7190522: [performance] add statusfilter cache to cache calculated status filtering results (#4303) (@gruf)
  • 5fbaf5b7bec6f59bb868dd8b76a90c1bbd2986b5: [feature] Allow anchor href to work for footnotes, use ID prefix to avoid clashes (#4298) (@kipvandenbos)
  • 996da6e0291b158093d917ca76933584f464d668: [performance] filter model and database table improvements (#4277) (@gruf)
  • bfc8c31e5f80bd7e405ad407d58597a92a1e85fd: [feature] Support incoming avatar/header descriptions (#4275) (@mkljczk)
  • 7d50aec6dca079ccc9faa485c2ba53584ce8b01f: [feature] Outgoing federation of avatar/header descriptions (#4270) (@mkljczk)
  • a9b2d4ee355dbf7d154c30bd869f628829d038fa: [feature] Handle retractions of domain permission subscription entries (#4261) (@kipvandenbos)
  • 76e7fd62d2355ff6dd65b162bef0aef63859598e: [performance] use faster pixel format matching function (#4271) (@gruf)
  • d7f967cbb599c64d18fe951d1725bf3050597dda: [feature] configurable maximum thumbnail dimensions (#4258) (@gruf)
  • 54a0af34fb7a0c6a7cfb6d2712ec23a25eed4509: [feature] enable footnote extension for markdown parser (#4251) (@mkljczk)
  • 01e376526863a17d1f5bae72fd7693afa215291a: [feature] Add fields introduced in Mastodon 4.4.0 to /api/v2/instance response (#4240) (@mkljczk)
  • 43f1c6d8723db0319afedbd3b87d4763fa68262f: [feature] Add config option to expose custom emojis without auth (#4233) (@kipvandenbos)
  • 5097e6d2782600dc29f930dc14bc7fb0746a4fb8: [feature] /api/v1/follow_requests/outgoing (#4224) (@mkljczk)
  • 025ca487cf016c279d822372993e1704d06cd50d: [feature/internal/httpclient] add option to configure outgoing protocol (#4134) (@famfo)
  • faed35c9388bc28ea0fdfe3aae3b489ca952c006: [performance] cache mute check results (#4202) (@gruf)
  • a82d574acc88130578e3c066243a487344f29979: [feature] make client-side nonce calculation multi-threaded (#4219) (@gruf)
  • 0e698a49fbfc665eba08b3bb06fd90a664bf5e62: [feature] Add S3 key prefix (#4200) (@Soykaf)
  • 2c73bb3602ebdc40a58b9790cc7f5785e44ea24c: [feature/frontend] Respect color scheme preference for highlighted code blocks (#4201) (@kipvandenbos)
  • 6c1b67427873fd07f0b0455e4e34f6241dbe5374: [feature/frontend] Add four new monospace themes (#4199) (@kipvandenbos)
  • fd64a1e264d828c6248dfe3fe12631af4e93a22c: [feature] Add "Instance Info" settings panel section, with domain blocks + allows (#4193) (@kipvandenbos)
  • 326e04283a2536d64a7055bfef184f5817b691d6: [feature] update proof-of-work to allow setting required rounds (#4186) (@gruf)
  • 00e58c60cd59882199a7e378416a279de2b5212d: [feature] Add ListenBrainz functionality on the web view (#4184) (@kipvandenbos)
  • ec4d4d01150ae979896496651bc64e4148d94a06: [feature] Allow exposing allows, implement /api/v1/domain_blocks and /api/v1/domain_allows (#4169) (@kipvandenbos)
  • 3ba49aed4530276c3be4e10991bdff3fed47a2e4: [feature] Configurable max profile fields (#4175) (@jacksonchen666)
  • 8480a758081e84384a366a29ecee3c3103687512: [feature] Notify accounts when a status they've interacted with has been edited (#4157) (@kipvandenbos)
  • 7bd4bed55899face526107cb6f4413e7c6ed1011: [feature/frontend] Add id attributes to 'about user' section to allow for reordering using css (#4164) (@fthevenet)
  • 700b7eaab727ae351e71514b677fa7b7dc65c51e: [feature] Add extra opengraph meta tags (#4154) (@kipvandenbos)
  • 4c96e2571db177377e6346359ccec7cf1b8299cb: [feature] make nollamas difficulty configurable (#4119) (@gruf)
  • 6acf56cde9fde972cf7c78f15d00ade262752c19: [feature] support nested configuration files, and setting ALL configuration variables by CLI and env (#4109) (@gruf)
  • cf93d3af0ace59fa618a51537a77f7912e5f1610: [feature] Add description_limit to /api/v2/instance, increase default limit to 5k (#4140) (@kipvandenbos)
  • 57fc267b5cc1d51026be054ddc5b1fcf1a62051a: [feature] add ability to change s3 bucket lookup type (#4120) (@nopjmp)
  • d8c4d9fc5a62741f0c4c2b692a3a94874714bbcc: [feature] proof of work scraper deterrence (#4043) (@gruf)
  • ab10266bff8d3dea1655e5f98a932efa2474bdb6: [feature] Move to code.superseriousbusiness.org ( <>)
  • f7323c065a086533ce8c7f0f0cb3f69a80539992: [feature] Update attachment format, receive + send focalPoint prop + use it on the frontend (#4052) ( <>)
  • 6a6a4993338262f87df34c9be051bfaac75c1829: [performance] rewrite timelines to rely on new timeline cache type (#3941) ( <>)

Bug fixes

  • 247733aef46c46a128216f02832305a6df3e96c5: [bugfix/frontend] Use correct account domain in move account helper (#4440) (@kipvandenbos)
  • 5533fbc1f8adebb196349d991551eac6fc8b2e74: [bugfix/frontend] Fix overzealous padding removal on caption (#4439) (@kipvandenbos)
  • 0a32fc0980477be3249d6aed9c79c3ec5e3a23aa: [bugfix] prevent clicking Enter in description field from deleting the image (#4436) (@ptrcnull)
  • 10b8d270f2f9f6770772c5786908591c5db1152d: [bugfix/frontend] preserve whitespace in photoswipe captions (#4434) (@kipvandenbos)
  • 882d07db5f21b007f6c1ece4516c62c97536dfe7: [bugfix] API status edit history returned in inverse order (#4432) (@gruf)
  • f9cb086c53f06b6fd33f3c378ae1288751944eff: [bugfix] Parse scheduled_at as ISO8601 with offset if RFC3339 parse fails (#4431) (@kipvandenbos)
  • 33fed81a8de5a7002eda0c8754bcd355d4e5648a: [bugfix] set link header lo,hi values directly from returned slice, don't account for filtering (#4421) (@gruf)
  • 9b7db51436f1f85697e3c07281a70ef1e7752256: [bugfix] check for nil notification (#4417) (@gruf)
  • 4b6c65fc15164905ce29593b69641dfd2a69977f: [bugfix] ensure std log writer passes byte slices along as string, or JSON will encode as base64 raw bytes (#4416) (@gruf)
  • ed3035699f9f41a3f92437ab7a3511d9969e1501: [bugfix] fix lo paging value not always being set (#4407) (@gruf)
  • 380bfd0289cbb72f6a96f5f4267036a1736fed39: [bugfix] fix nootel metrics function signature (#4392) (@gruf)
  • 3fad524089c2d22cfc289814ddbe4abd9ee7a76a: [bugfix] when clearing media metadata, copy all streams not just first (#4375) (@gruf)
  • a6bb45e5e4ef87648df2f1bc73393b857feb7b97: [bugfix] media CLI list missing thumbs and statics (#4379) (@gruf)
  • 12e3cb71c1057f526ef9a0b9cc8204ad61ddd4e8: [bugfix] insert filter keywords/statuses into DB when creating new filters (#4376) (@mkljczk)
  • 94cbe1120e0364d0994989dff7722d0bf6e2ac07: [bugfix] use correct interaction type for pre-accepted interaction requests (#4325) (@mkljczk)
  • a97a15fd10067e38dc51d84486df933aecdf48e1: [bugfix] Fix wrong default used for HidesCcPublicFromUnauthedWeb in migration (#4318) (@kipvandenbos)
  • 79914bdbf7677b5c708cc3431af611df2c4a46b2: [bugfix] set correct scope for StatusFavePOSTHandler (#4310) (@mkljczk)
  • 7a5144b4cc0098010af69ef7298e4a8c4dda9113: [bugfix] fix possible nil ptr if requester is nil (#4307) (@gruf)
  • 39b11dbfb6f18c85ebe157ea9f85c7378c2cfb59: [bugfix] fix issues with postgres array serialization (#4295) (@gruf)
  • 700bd698282e6dafdadaddf195bc85cbe2a95b12: [bugfix] move broken stage of filters migration into new migration (#4293) (@gruf)
  • 9d5af6c3dc3f502e21f1dcf305cc0306c9bfc9fe: [bugfix] update the default configuration to not set a db type or address, to require explicitly setting it (#4228) (@gruf)
  • 80191348ba27915d40e885dc66b4df67fcf9c73e: [bugfix] fix status.Local sometimes being nil (#4285) (@gruf)
  • 38ff88f0062c2794eda88adcdc5ba3528783d093: [bugfix] Queue implicit accepts before other side effects (#4282) (@kipvandenbos)
  • 29d481d76912a8b0de0eebc41e2d8bed5b17c535: [bugfix] delete interaction requests when deleting account (#4278) (@mkljczk)
  • 8b615391e51fb7e0412ce30a4a19c01a165be973: [bugfix] Remove errant alsoKnownAs inline @context entry (#4280) (@kipvandenbos)
  • b1c0eca1d82f4a63c7a8c8cadec3cc7d59564cf1: [bugfix] improved mute checking for boosted statuses (#4276) (@gruf)
  • 726584287a721d22a0287e62a37e14c81e01b454: [bugfix] Remove hardcoded "public" db schema assumption (#4269) (@kipvandenbos)
  • fc074d23575710efe0a6f27af2d7916db63027d4: [bugfix/accessibility] Don't remove marker from unordered lists, recolor instead (#4268) (@kipvandenbos)
  • 933a9091ebfbfb49a947ba5bf9cfa44f347ece06: [bugfix] Fix nil ptr dereffing instance acct outbox (#4267) (@kipvandenbos)
  • e87681d43336273f93786f140a362c39a9b36ab4: [bugfix] process account delete synchronously to prevent OOM (#4260) (@gruf)
  • d3f2c2c7654a8b3bb2841e9598db55c1275c23f6: [bugfix] fix existing statuses with invalid visibility (#4253) (@mkljczk)
  • 3f1c3c0dacafce8a4421e5d2570adf2084f29756: [bugfix] return 422 for invalid status visibility (#4252) (@mkljczk)
  • 32738d83a8ab4d474411f48a4af09653e1a6d053: [bugfix] Update GetURL to extract url from Link objects with href (#4249) (@kipvandenbos)
  • 118d4e4d0361c7bc52c3092ba34273a31122c0db: [bugfix] Assume default code challenge method of s256 (#4241) (@kipvandenbos)
  • 6d511d696b760b097b74daab8b48868ed849dc49: [bugfix] Fix nil ptr for audio attachments with no preview in web (#4227) (@kipvandenbos)
  • ee180a23596371ff1c207727828191f096fb4597: [bugfix] fix GetAccountFollowRequestingIDs query (#4222) (@mkljczk)
  • 3ff6f6e421aa9fdc8731a08c903aa9c7950257d8: [bugfix/frontend] Fix text-shadow on dark mode themes (#4216) (@kipvandenbos)
  • 3a29a59e55dc8aa8a9bf31395f0f942eea700919: [bugfix] fix case of failed timeline preload causing lockups (#4182) (@gruf)
  • 6b6946f42ae91ad1d4f4fc6c3369d915f5609aff: [bugfix] Fix a11y property warning from authorization page (#4166) (@orva)
  • 61137e6c41afd2b60f3c36dd59c39f265379419e: [bugfix] Remove unnecessary whitespace from trusted-proxies warning (#4168) (@taaviv)
  • 1f0c261fd2d3da250f62040236f7629f603f0b03: [bugfix] Fix indentation on multi-line alt text in web view (#4149) (@kipvandenbos)
  • ebf64eb0db2074e73ae681cb2174d8ae97316746: [bugfix] fix statuses not being notified (#4143) (@kipvandenbos)
  • 8264b63337e19e643f79190bfe93b7bd9a62acd4: [bugfix] ensure timeline limit query is respected (#4141) (@gruf)
  • e464de13228f9914c094bad62ddd30a3176ec5d3: [bugfix] broken nootel function signatures (#4142) (@gruf)
  • 4a6b3575013278aca47cd1084458091b4055d2d1: [bugfix] Fixes to tablist, fileinput, checkbox (#4139) (@kipvandenbos)
  • 89df9f3b2144769f0c5e2d11a470246b57e312f6: [bugfix] Prevent multiple mentions being created for one mention (#4127) (@kipvandenbos)
  • f3f185435916165a6dd72f3a1bd67e370a2a783d: [bugfix] Fix no notification if mention edited into status (#4102) (@kipvandenbos)
  • c15002d76e2f09118bc0d7435d48bc7265416b18: [bugfix] Ensure Account and TargetAccount set when doing UndoFollow (#4118) (@kipvandenbos)
  • 1480f22aeaac1772bb9a98c0db6e9a13ff2761e1: [bugfix/chore] Invalidate prepared statuses when account representation changes (#4107) (@kipvandenbos)
  • 1bad36b63703c705d73a6b62de9145f13edae133: [bugfix] Fix wrong URI used in dereferenceLocal (#4097) (@kipvandenbos)
  • ac01652de9eef36c3576524f791bd844c6016de8: [bugfix] Fix migration unsetting bot flag (#4098) (@kipvandenbos)
  • ef0f8a55c66830dea5cdee0bf2d6b960007a2a0e: [bugfix] Fix nil ptr exception on creating user without running server first (#4094) (@kipvandenbos)
  • 14f15b321be2473596edb4cfd30011d3eff2defd: [bugfix] don't prevent moved accounts from invalidating their old tokens (#4091) (@gruf)

Chores & version bumps

  • 82216281cee085771fa86173cdf6af6487e48512: [chore/docs] Fix Prometheus metric names for Gin, include example Grafana dash, update docs (#4443) (@kipvandenbos)
  • e81bcb51717aa318b02996b846b3fe8cc733af18: [chore] update dependencies (#4441) (@gruf)
  • 6801ce299a3a0016bae08ee8f64602aeb0274659: [chore] remove nollamas middleware for now (after discussions with a security advisor) (#4433) (@gruf)
  • c949b9f2d137f37c8c93c916caacb182e6070e90: [chore] update dependencies (#4423) (@gruf)
  • a6429b5410062cb8067e6dbbc9999d7d579a751d: [chore] update dependencies (#4422) (@gruf)
  • 78defcd9166a202eb3140dc27afd288e1f9bfec4: [chore] bump dependencies (#4406) (@gruf)
  • 3efb338ca9d3e3be27b283d2a46436777dd10edb: [chore] fix copy-pasted comment (#4402) (@mkljczk)
  • 383e41e3e50f3cab3a0772ab59525707ad2c63da: [chore] bump go-structr to v0.9.9 (#4390) (@gruf)
  • a79f83cbded3fb1165b338ce316dc9f2217467ff: [chore] update dependencies (#4386) (@gruf)
  • 8c619d51b5f9ab368b375dfa643ee70b6f34e656: [chore] bump golangci-lint version in CI, disable var-naming package name checks (#4372) (@mkljczk)
  • 8e76c9ab57de618e40149a2475e83592f7cbd3b8: [chore] return correct error message (#4377) (@mkljczk)
  • 1edc0f7b3c9264c2d4b21455afb5fc2e14ff1ab7: [chore] bump to code.superseriousbusiness.org/oauth2/v4@ssb-v4.5.3-2 (#4367) (@gruf)
  • e565855540c135a56a9c31287cb99288c91101ce: [chore] pin to go 1.24.6 (#4364) (@kipvandenbos)
  • 67100809b399b60e58490fa8b1c0a72be75ac820: [chore] update dependencies (#4361) (@gruf)
  • ac032ff6abd9d2d79e892a9ad323e4194d14d428: [chore] bump codeberg.org/gruf/go-ffmpreg to v0.6.8 (#4349) (@gruf)
  • 30cd1cd9ebd000399f7e77573b948008a2a356ac: [chore] Only display report comment forwarding notice when reporting account is local (#4344) (@mkljczk)
  • c00cad2cebcb8136a998f6f7ba2c27672f785d10: [chore] bump dependencies (#4339) (@gruf)
  • eb600819854039c8d89fb1d7000f301ad3c7d542: [chore/deps] Upgrade to go-sqlite 0.27.1 (#4334) (@daenney)
  • 352353ce7a33c3ac26fbecd597ab24ae2f9c9864: [chore/testing] Add env vars to skip testrig setup/teardown (#4317) (@kipvandenbos)
  • 07f61a13de749f230bb50532de99808efdd24399: [chore] update error message (#4311) (@mkljczk)
  • 66e1ec14aa07e115580afc8e1399677f3b54eeda: [chore] move status filtering from type converter (#4306) (@gruf)
  • 8b0ea560279a5bf4479555d3924c763ddeecfcad: [chore] update go dependencies (#4304) (@gruf)
  • 771288503866cef77d47efd768195db606bb3d27: [chore] bumps ncruces/go-sqlite3 v0.26.1 => v0.26.3 (#4302) (@gruf)
  • 56d1248a85b6cde9418f9c6660c20fec7481672b: [chore] Add info and reminder to save changes at the top of profile settings page (#4289) (@kipvandenbos)
  • 5717ce6f3caf09e1952cba00ce84a53977309f5c: [chore] upgrade golangci-lint to v2.1.6 and migrate config (#4265) (@mkljczk)
  • 1dc79c95862e083bc743e3ecdf63e6e8d3cc406a: [chore] Update interactionPolicy sub-policy parsing in line with documented defaults (#4229) (@kipvandenbos)
  • 4ad17788cdaaee71f6ea41a43eaaa2af50853ac9: [chore] update to modernc.org/sqlite v1.38.0 with our concurrency workaround (#4256) (@gruf)
  • 37f9a9fa9496c353d3e2c0c3b2d842aea60a0d11: [chore] Upgrade to SQLite 3.50.1 (#4255) (@daenney)
  • b13a6437ff2da5c802a218e8938ab2eb805f52ef: [chore] move s3 storage key prefixing into the storage library itself (#4246) (@gruf)
  • 77eddea3aff27ffebf53d2341609221d4c1924e7: [chore] updates code.superseriousbusiness.org/oauth2/v4 to ssb-v4.5.3-1 (#4245) (@gruf)
  • a37dd59d1f427f17e8dfe17db9a61de205e9ffbd: [chore] blocklist -> allowlist config typo fix (#4242) (@kipvandenbos)
  • be6d80c02093842cbfe53e2d44867c255962ea95: [chore] Remove insecure PKCE Code Challenge Method for plain (#4232) (@thisismissem)
  • 3b46eb6a9eb312abf5f160552b5521e4cd8d6603: [chore] Upgrade to SQLite 3.50 (#4218) (@daenney)
  • f3c4ea01067830c02802bdf34f161aa77689a890: [chore] thread_id migration tweaks (#4198) (@gruf)
  • 143febb318ee16ca68ea312249ab5dadeab608bb: [chore] update dependencies (#4196) (@gruf)
  • 311d9a1697849e2e8d5393b8c7ca1c919829ad80: [chore] migration to update statuses.thread_id to be notnull (#4160) (@gruf)
  • b6ff55662e0281c0d6e111f9307625ef695df2fa: [chore] update dependencies (#4188) (@gruf)
  • 20aad9be0f69d188427a4824c66022274d0cb3af: [chore/woodpecker] don't make test depend on lint (#4189) (@kipvandenbos)
  • d5c9c4adc167cdb05e73f5105702cf340293e61c: [chore] Upgrade to Go 1.24 (#4187) (@daenney)
  • 3cff4b2d7d138f45787a94e6e64acdccb00e8951: [chore] various federatingdb tweaks (#4178) (@gruf)
  • cfe6336b6e1d07b2cbb7432db87054128286e39b: [chore] Change default database in example config to sqlite, update docs. (#4174) (@technomancy)
  • ca12742a7ac0aec95fc0d7897e54a2272a68c34f: [chore] Deprecate with_approval, always (client API), approvalRequired, always (fedi API) (#4173) (@kipvandenbos)
  • 5925644ad363cbbfc5a83ac86fdcea5495cdca11: [chore] Update woodpecker to catch len(fromJSON(CI_PIPELINE_FILES)) == 0 (#4177) (@kipvandenbos)
  • 3fedff3a5aa7602069290c216ced5f63acd21357: [chore] Tidy up previous interaction policy migrations (#4171) (@kipvandenbos)
  • d3c67ad64230d5e23c9cca4483e5e5119deb5789: [chore] Use Codeberg API for get_latest_snapshot (#4151) (@daenney)
  • d2f13e7564059cb4be90650b570b93e4acc964a9: [chore] update direct Go dependencies (#4162) (@gruf)
  • 8c1511a494c1af8ded1f246c865c648fd97bae43: [chore] Poke at bundle_licenses.sh a bit to make the output slightly easier on the eye (#4159) (@kipvandenbos)
  • cfa83fb44c4888f7ef3983f78b750fddc1ee768e: [chore] include a monstrous all_licenses.txt in our web assets (#4155) (@gruf)
  • 7e105f98ed4588a911ad3e3d6df73776f1b0672b: [chore/frontend] Put fonts in folders, update ecks pee to atkinson-hyperlegible next/mono (#4148) (@kipvandenbos)
  • 90a5425fe9776a18ea9a8d2b6ec98dc36a9117af: [chore] Add Go runtime and host metrics (#4137) (@daenney)
  • 73aa62581e5650e30831977203fe804b578de47f: [chore] fix testrig with new otel setup (#4135) (@kipvandenbos)
  • ecbdc4227ba49eca622812b7413aa877318fd7a0: [chore] Simplify the OTEL setup (#4110) (@daenney)
  • ad7106697306a56ef01c3110b073d77affbf3b44: [chore] Update goreleaser (#4133) (@kipvandenbos)
  • 83184da6e7b30a699062282f24e2b830c7de1394: [chore/github] Add an end of mirror notice (#4128) (@daenney)
  • 056c67f396aef017535cb8ad4c0bc5eac07ed640: [chore/cicd] Account for force pushes in conditional runs (#4121) (@kipvandenbos)
  • 211192c482310f42849d7bfba7ce63f5ef6e5aa0: [chore] more NoLLaMas proof-of-work tweaking (#4096) (@gruf)
  • bad427e7f0e654835ece503e4666d42769ed4f58: [chore/docs] fix relative link to scraper deterrence (#4111) (@cdn0x12)
  • 6c879186350f3a4735d0be5e54d386cd246a6785: [chore/cicd] Snapshot only if source code files have changed (#4115) (@kipvandenbos)
  • bf10ca0203e9abcd6a022ee444c8815a3d66899a: [chore/cicd] conditional tests + linting for pull requests (#4114) (@kipvandenbos)
  • 90f5004db03e31725300648bc311751504253c46: [chore] Update release CICD to point at "gitea" (#4100) (@kipvandenbos)
  • 31628019fead4489d7a57868bee110f6b6e91d09: [chore] tweak NoLLaMas proof-of-work algorithm (#4090) (@gruf)
  • 4fe5dfae56bf862551ed3261686df7476005d17d: [chore] nollamas: show tick + time taken on completion, use window.location.replace (#4088) (@kipvandenbos)
  • 2b82fa7481034ca5268dadfd3062727fc82555ca: [chore/docs] add symmetry to the politics (#4081) (@mkljczk)
  • 2d91eed4ed4260bd2d2af60f4dc68d845ea122e1: [chore] Remove unused import (#4077) (@kipvandenbos)
  • 4c8ff7d1b2592f28244616abe256705ef2c74ddb: [chore/docs] Put some politics in the code (#4076) (@kipvandenbos)
  • 457ca3c9d382aefd578e46901d5ed047bef3652f: [chore] Update build to use new woodpecker dind container, bump version numbers (#4073) (@kipvandenbos)
  • 7dae3364fac3168a12ceb18df42a9f518d9b913f: [chore] Override woodpecker plugin for snapshot + release to get tags (#4069) (@kipvandenbos)
  • 8bc0b06105ca481e17073359129a882772733b6c: [chore] Fix CI/CD snapshot / release (#4068) (@kipvandenbos)
  • d5c3f44bb989de83938f8629ad71cc5ef168cf74: [chore] Disable default issue template (@daenney)
  • 9b92175239026b9779a9d086d57680c8c086dbc8: [chore] Bring back the issue and PR templates (@daenney)
  • 93c3c153f0fb88930e37d1d829c1d26f0a4fb4e1: [chore] Rewrite all remaining Github links (@daenney)
  • 5bfccdad3c3f7cd768992e63e6f7fcc4298a9e64: [chore] add woodpecker ci/cd pipelines (#4061) (@kipvandenbos)
  • 346962beb540c22ddddbbf718310bf3593fcb16f: [chore] Fix daenney being bad at sed (#4060) (@daenney)
  • 152bcb43b675ee08c131995716c2188ac2282e32: [chore] Set up Github to be a mirror ( <>)
  • 85eb1926697e61b9add89595928f2941f03864d8: [chore] fix testrig build (#4059) ( <>)
  • ffde1b150faca940bc6c172068aa068cf468aa39: [chore] Move deps to code.superseriousbusiness.org (#4054) ( <>)
  • 68ed7aba25e294bf36a4ce0f77e3e6f3fcb4c963: [chore] Update activity to v1.14.0 (#4038) ( <>)

Documentation

  • d9ee6cddea862a706170b8134612424bc7ea5070: [docs] Fix broken links and typos (#4418) (@untitaker)
  • cead741c1646f0bd53746164df6b84ae1c83bd77: [docs] Revamp trusted proxies warning a bit (#4365) (@kipvandenbos)
  • bf46b87343c3002fd4ecba0658a6633aa2a3afdf: [docs] Document STARTTLS behavior (#4301) (@agx)
  • 153f6feecd333aec8b78f2a2547c6b6c7db26bec: [docs] update protocol arg help text to reflect documentation (#4250) (@oac)
  • bd4fe7081e57bcc188706b002eae8f3c4dddc430: [docs] change ID links in ToC to match goldmark parser behavior (#4223) (@mkljczk)
  • d9e8d844e18ba6daaf699aeb01b6874f116ad17d: [docs] fix typo in swagger description for ListsGETHandler (#4217) (@mkljczk)
  • b2a469d6b652f9a85803b42d3d9b98799b7ac8e6: [docs] Clarify that boosting local-only posts maintains local-only status, in the documentation (#4145) (@filipesm)
  • 7d74548a91b792d1cf0e8bf039dc5ed2151961ac: [docs] Various little docs updates (#4144) (@kipvandenbos)
  • 4d6408015bab9f2c0b3b5820ed6d048f868f5c1f: [docs/zh] Update zh docs: synced to 6c879186 (#4117) (@cdn0x12)
  • efc79528d2e26e0470799cb25fa7225a2123dbde: [docs] small changes to the proof-of-work scraper deterrence docs (#4084) (@gruf)
  • afb4279d27c700b7e54383f09d693ca5993e7c8a: [docs] Move docs links to codeberg (#4074) (@kipvandenbos)
  • d3e9a9e56310e988c7356c9a0be6d2658836ad12: [docs] clearer structure for "combining blocks and allows" section (#4065) (@kutuptiyini)
  • 768ee70b881a07cae4b2a6a46869e306df08ef14: [docs] Mention where to run the command to grant CREATE permissions (#4050) (@Ember)

Other

  • 9cb177cd8a84a43e6fed913a5cdadc882611c7f4: style: add a missing whitespace (#4404) (@karolis)
  • 96c05a90a21371ff1e6f141a93bcb1c9cf6f896c: chore: github/README update release month (#4359) (@daenney)
  • 436765a6a2ddf400b6e06c9a7c3283b1351fcbcd: bump dependencies: minio-go, go-sqlite3, goldmark, otel, x/image/webp (#4075) (@gruf)

Don't miss a new gotosocial release

NewReleases is sending notifications on new releases.