Skip to content

v0.17.0 Selective Sloth

Compare
Choose a tag to compare
@gotosocialorg gotosocialorg released this 15 Oct 10:42
· 89 commits to main since this release
3ad49f7

⚠️ 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. This will take anywhere between a few seconds and an hour or even longer (on slower hardware / big databases). Please be patient! Back up your database file before updating! We had to rejig the entire statuses table to introduce interaction policies (see below). ⚠️

Hello everyone! This is the first ever BETA release of GoToSocial. Say hello to v0.17.0 Selective Sloth.

We've absolutely jam-packed this release with goodies!

Please read the migration notes carefully for instructions on how to upgrade to this version.

Release highlights

  • Interaction policies: This release gives you the ability to set interaction policies on your statuses using the settings panel. Interaction policies let you determine who can reply to, like, or boost your statuses. You can accept or reject interactions as you wish; accepted replies will be added to your replies collection, and unwanted replies will be dropped. This feature is still a work-in-progress as we will almost certainly have some kinks to work out in terms of implementation etc, but we wanted to get it into people's hands as quickly as possible.
    User docs here: https://docs.gotosocial.org/en/latest/user_guide/settings/#default-interaction-policies
    Federation docs here: https://docs.gotosocial.org/en/latest/federation/posts/#interaction-policy
  • Much wider range of support for different media types: In this release we've embedded a webassembly build of ffmpeg into the GoToSocial binary, so that users can post many different types of media than previously, including mp3, flac, and other audio types, and many more video types. Admins: you don't need to have ffmpeg installed on your server for this to work.
  • Audio player: to complement the new media types, we adapted our current video player to also play audio, so people visiting your profile can play MP3s and FLACs. Album art is supported when embedded in the audio file!
  • Header/avatar alt text: You can now set alt-text for your avatar + header images, so that screenreader users visiting your profile can read a description of your beautiful face.
  • Better threading model for statuses: On the web view of a thread, conversations are now indented at different levels, to make it easier to see who's replying to whom.
  • Prefers-reduced-motion is now supported, so that folks with animations turned off in their operating system or browser aren't confronted with lots of animation when they open your profile.
  • Conversations view: You can now view a list of your direct message conversations, making it much easier to keep track of who you're talking to.
  • Import/export csv files: It's now possible to import Mastodon-compatible CSV files for accounts you follow and accounts you block, making it much easier to migrate across instances. Export of these files is supported too.
  • Exclusive lists: You can now mark lists as "exclusive", which means that posts from accounts in an exclusive list will show up only in that list and not in your home timeline.
  • Show/hide posts on your profile: Previously only Public posts were shown on your web profile. This is still the default, but you can now choose to show unlisted posts on your web profile too (the Mastodon default), or to show no posts at all.
  • Lots of new themes: solarized, brutalist, ecks pee, and more.
  • Store worker queue on restart: when you stop the instance, pending tasks are stored into the database, and loaded again when you start up the instance, so that no tasks get lost between restarts.

Migration notes

Upgrading

To upgrade to v0.17.0 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.
  3. Download and untar the new release, including the web assets and html templates.
  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.
  3. Pull the new docker container (superseriousbusiness/gotosocial:0.17.0 or superseriousbusiness/gotosocial:latest)
  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.

  • Add db-postgres-connection-string.
  • Remove media-image-max-size and media-video-max-size.
  • Add media-local-max-size and media-remote-max-size.
  • Add media-ffmpeg-pool-size.
  • Add storage-s3-redirect-url.
  • Change http-client.timeout default from 10s to 30s to reduce occurrence of "could not download media" message.

You can see a diff of the config file here: v0.16.0...v0.17.0#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622

Database Migrations

⚠️⚠️⚠️

This release contains several VERY LONG 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 an hour or maybe even more (on slower hardware).

Please be patient!

⚠️⚠️⚠️

Which release archive/container should I use?

Tl;dr: Regardless of whether you're using SQLite or Postgres as your DB driver, you most likely you want the regular version without moderncsqlite in the name.

However, if you're on FreeBSD, 32-bit Linux or 32-bit ARM, we recommend using the moderncsqlite version instead.

You may need to change some configuration options too. See the table below:

OS Architecture Support level Binary archive Docker
Linux x86-64/AMD64 (64-bit) 🟢 Full linux_amd64.tar.gz superseriousbusiness/gotosocial:0.17.0
Linux Armv8/ARM64 (64-bit) 🟢 Full linux_arm64.tar.gz superseriousbusiness/gotosocial:0.17.0
FreeBSD x86-64/AMD64 (64-bit) 🟢 Full1 freebsd_amd64_moderncsqlite.tar.gz None provided
Linux x86-32/i386 (32-bit) 🟡 Partial2 linux_386_moderncsqlite.tar.gz superseriousbusiness/gotosocial:0.17.0-moderncsqlite
Linux Armv7/ARM32 (32-bit) 🟡 Partial2 linux_armv7_moderncsqlite.tar.gz superseriousbusiness/gotosocial:0.17.0-moderncsqlite
Linux Armv6/ARM32 (32-bit) 🟡 Partial2 linux_armv6_moderncsqlite.tar.gz superseriousbusiness/gotosocial:0.17.0-moderncsqlite

FreeBSD

moderncsqlite version currently recommended, though you might have success with the regular WASM SQLite version.

If running with regular WASM SQLite and having instability or memory issues, the following settings may help:

db-max-open-conns-multiplier: 0
db-sqlite-journal-mode: "TRUNCATE"
db-sqlite-synchronous: "FULL"

32-bit

moderncsqlite version is needed, as performance with regular WASM SQLite is not guaranteed when running on 32-bit.

Remote media processing will likely not work with reasonable performance, so you should set the following config variables to prevent download of remote media onto your instance:

media-remote-max-size: 0
media-emoji-remote-max-size: 0

Changelog

Features and performance

Bug fixes

Chores & version bumps

Documentation

Other