github superseriousbusiness/gotosocial v0.17.0-rc1

pre-release9 hours ago

⚠️ 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 more (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). ⚠️

Release highlights

Hello everyone! This is the first release candidate for v0.17.0 of GoToSocial! We've absolutely jam-packed this release (candidate) with goodies:

  • 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 0.17.0-rc1 from a previous release:

Binary/tar

  1. Stop GoToSocial
  2. Back up your database! For sqlite, this is as simple as copying your sqlite.db file.
  3. Untar the new release, including the web assets and html templates.
  4. Edit your config.yaml file as necessary (see below).
  5. Start GoToSocial
  6. Wait patiently for migrations to run and do not interrupt them.

Docker

  1. Stop GoToSocial.
  2. Back up your database! For sqlite, this is as simple as copying your sqlite.db file.
  3. Pull the new docker container (superseriousbusiness/gotosocial:0.17.0-rc1 or superseriousbusiness/gotosocial:latest)
  4. Edit your config.yaml file as necessary (see below).
  5. Start GoToSocial.
  6. Wait patiently for migrations to run and do not interrupt them.

config.yaml

The configuration file has changed since the previous release. You can see a diff of the config file here: v0.16.0...v0.17.0-rc1#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622

  • 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.

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. This will take anywhere between a few seconds and an hour or more (on slower hardware / big databases). Please be patient! Back up your database file before updating! ⚠️

Detailed changelist

Features + performance

Bugfixes

  • [bugfix] rename include_types[] to types[] by @tsmethurst in #3023
  • [bugfix] add Date and Message-ID headers for email by @jugendhacker in #3031
  • [bugfix] Fix typo in instance cache copyF by @tsmethurst in #3052
  • [fix] use instance configured emoji maxsize on emoji update validation by @f0x52 in #3056
  • [bugfix] update SignupURL routing in email template by @CDN18 in #3055
  • [bugfix] Handle ErrHideStatus when preparing timeline statuses by @VyrCossont in #3071
  • [frontend] Better autocapitalize/spellcheck settings on forms by @tsmethurst in #3077
  • [bugfix] Don't throw error when parent statuses are missing (#2011) by @snowkat in #3088
  • [bugfix] Fix panic in isStatusHomeTimelineable by @tsmethurst in #3096
  • [bugfix] give read-only access to /dev for ffmpeg to access /dev/urandom by @NyaaaWhatsUpDoc in #3109
  • [bugfix] update common get target account / status doing refresh async by @NyaaaWhatsUpDoc in #3124
  • [bugfix] media.Processor{}.GetFile() returning 404s on first call, correctly loading on 2nd by @NyaaaWhatsUpDoc in #3129
  • [bugfix] Explicitly propagate filter results from statuses to their boosts in API responses by @VyrCossont in #3130
  • Serialize empty conversation account list as empty list, not null by @VyrCossont in #3137
  • [bugfix] Use punycode for host part of resource query param when doing webfinger requests by @tsmethurst in #3133
  • [bugfix] ensure ffmpeg muxer gets set correctly by setting input file extension before clean by @NyaaaWhatsUpDoc in #3142
  • [bugfix] moves file rename to earlier in media pipeline so ffmpeg calls ALWAYS have a file extension by @NyaaaWhatsUpDoc in #3146
  • [bugfix] take into account rotation when generating thumbnail by @NyaaaWhatsUpDoc in #3147
  • Fix no rows in result set error in emoji list command by @rdelaage in #3152
  • [bugfix] close files before error return by @NyaaaWhatsUpDoc in #3163
  • [bugfix] fix emoji recaching operations by @NyaaaWhatsUpDoc in #3167
  • [bugfix] send back Sec-Websocket-Protocol header for streaming WebSocket by @leahneukirchen in #3169
  • [bugfix] ensure testrig package only compiled-in when debug enabled by @NyaaaWhatsUpDoc in #3185
  • [bugfix] updated pinned counts on status delete by @NyaaaWhatsUpDoc in #3188
  • [bugfix] incorrect AP serialize function used serializing worker data by @NyaaaWhatsUpDoc in #3196
  • [bugfix] relax missing preferred_username, instead using webfingered username by @NyaaaWhatsUpDoc in #3189
  • [bugfix] permit unspecified orientation data by @NyaaaWhatsUpDoc in #3205
  • [bugfix/frontend] Fix error on submitting domain perm with enter key by @tsmethurst in #3218
  • [bugfix/frontend] Small safari + gnome web fixes by @tsmethurst in #3219
  • [bugfix] Carry-over ApprovedByURI to avoid marking already-approved remote statuses as pending approval by @tsmethurst in #3231
  • [bugfix] Let prometheus client do its own compression handling by @tsmethurst in #3232
  • [bugfix] move WASM compilation stage much later in server init by @NyaaaWhatsUpDoc in #3242
  • [bugfix] Fix incorrect json-ld @context serialization by @tsmethurst in #3243
  • [bugfix/frontend] Fix TypeError: gtsError is undefined by @tsmethurst in #3245
  • [bugfix] fix new processing media / emoji not being added to dereferencer maps 🀦 by @NyaaaWhatsUpDoc in #3269
  • [bugfix] Fix temp table deletion causing runaway allocations by @tsmethurst in #3278
  • [bugfix] Swagger: add missing filter_action param for v2 filter PUT by @VyrCossont in #3281
  • [bugfix] Update home timeline query to ignore exclusive list entries by @tsmethurst in #3289
  • [bugfix] Hoist filterable text field extraction out of loop by @VyrCossont in #3297
  • always set the status sensitive flag to true if it has a content-warn… by @NyaaaWhatsUpDoc in #3308
  • [bugfix] Use better plaintext representation of status for filtering by @tsmethurst in #3301
  • [bugfix] Be more lenient when parsing mastodown following.csv by @tsmethurst in #3311
  • [bugfix] Ensure id set on outgoing Reject + Accept by @tsmethurst in #3312
  • [bugfix] Fix incorrect policy value parsing by @tsmethurst in #3315
  • [bugfix] Fix pending approval check by @tsmethurst in #3316
  • [bugfix/email] Don't use plainAuth when no smtp username/password provided by @tsmethurst in #3332
  • [bugfix] add support for media with rotation contained in stream side data by @NyaaaWhatsUpDoc in #3335

Chores

Docs

Security

New Contributors

Full Changelog: v0.16.0...v0.17.0-rc1

Don't miss a new gotosocial release

NewReleases is sending notifications on new releases.