Hello everyone! After much testing and prodding and poking, we're ready to release v0.7.0 Stormy Sloth into the world!
This is the umpteenth alpha release of GoToSocial (we stopped counting), and it brings a massive amount of new stuff, fixes, and tweaks.
Thank you for your continued support, and enjoy the release!
Release Highlights
- Basic video support (mp4 only). You can finally upload videos, and view videos from remote instances too. Not all mp4 files work, currently -- this is something we'll investigate for next release most likely.
- Support for federating reports in and out of GoToSocial, and viewing reports via the admin settings panel (this feature was sponsored by NLnet).
- Support for webp attachments, avatars, and headers.
- Users can now create, remove, and view status bookmarks!
- Domain blocks now apply on a wildcard basis, so you can block a second level domain (like
example.org
) and it will apply to subdomains too (likepoop.example.org
etc). - HTTP request throttling -- only a certain number of http requests are served at a time now. This should vastly improve responsiveness under load on small instances.
- Much better logic for pruning old avatars + headers, leading to gb of disk space savings.
- So many bug fixes and performance improvements.
Migration notes
Upgrading
To upgrade to 0.7.0 from a previous release:
Binary/tar
- Stop GoToSocial
- Untar the new release, including the web assets and html templates.
- Edit your config.yaml file as necessary (see below).
- Start GoToSocial
Docker
- Stop GoToSocial.
- Pull the new docker container (
superseriousbusiness/gotosocial:0.7.0
orsuperseriousbusiness/gotosocial:latest
) - Start GoToSocial.
config.yaml
The configuration file has changed since the previous release. We recommend copying the new file from example/config.yaml
and pasting values into it from your previous config.yaml. You can see a diff of the config file here: v0.6.0...v0.7.0#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. This will take anywhere between a couple seconds and ten minutes (on slower hardware). Please be patient!
Sqlite format changes
0.7.0 now uses SQLite's WAL journal mode by default. This means there will be some new SQLite related files in your GoToSocial directory:
- sqlite.db-shm
- sqlite.db-wal
When you do SQLite backups, you should back these files up too (you do have backups, right?).
If you use Postgres rather than SQLite, you can ignore this.
Updating from 0.7.0-rc2
0.7.0-rc2 was slightly broken. If you're getting lots of 'not found' errors for avatars and headers, after running 0.7.0-rc2, see here for steps to fix it: #1505
If you skipped over rc2, ignore this :)
Detailed Changelog
Features
- 83b522a [feature/Frogend] basic report admin interface (#1424)
- a59dc85 [feature/frogend] (Mastodon) domain block CSV import (#1390)
- 382512a [feature] Implement
/api/v2/instance
endpoint (#1409) - 3283900 [feature] Federate reports to remote instance as Flag (if desired) (#1386)
- 08f8fea [feature/frontend] filterable local emoji list (#1385)
- 17eecfb [feature] Public list of suspended domains (#1362)
- 993aae5 [feature] Accept incoming federated Flag activity (#1382)
- faeb7de [feature] Implement reports admin API so admins can view + close reports (#1378)
- e974724 [feature] Implement
/api/v1/reports
endpoints on client API (#1330) - 73be244 [feature] Add RSS autodiscovery on profiles that enable RSS (#1373)
- acc333c [feature] Inherit resource limits from cgroups (#1336)
- 627b8ee [feature] Tune sqlite pragmas (#1349)
- 3512325 [feature] Add local user and post count to nodeinfo responses (#1325)
- d648793 [feature] Implement Report database model and utility functions (#1310)
- 90a14ab [feature] HTTP request throttling middleware (#1297)
- 1659f75 [feature] For video attachments, store + return fps, bitrate, duration (#1282)
- 2bbc64b [feature] Enable basic video support (mp4 only) (#1274)
- d10388c [feature] support Sec-Websocket-Protocol in streaming API (#1254)
- 69dd5fe [feature] domain block wildcarding (#1178)
- 58c87bd [feature] allow uncaching of other media types (#1234)
- 4b8d7bd [feature/frogend] Emoji copy "Steal this look" (#1222)
- cb2b2fd [feature] support configuring database caches (#1246)
- 5e060d0 [feature] Start implementing refetch of lost media files via
/api/v1/admin/media_refetch
(#1221) - 477ae50 [feature] Allow users to create + delete bookbarks, and view bookmarked statuses (#1168)
- 199b685 [feature] overhaul the oidc system (#961)
- 1a3f26f [feature] media: add webp support (#1155)
Bugfixes
- b599309 [bugfix] Set 'discoverable' properly on API accounts (#1511)
- 6ee0dc8 [bugfix] Set cache-control max-age dynamically for s3 (#1510)
- 40b584c [bugfix] Fix 410 Gone race on account deletes (#1507)
- b8e1ab3 [bugfix] use woff(2) fonts for Noto Sans (#1509)
- 6c6f042 [bugfix] Return empty result rather than 500 error when searching for blocked domains (#1498)
- 561ad71 [bugfix] Fix up
error getting account avatar/header
errors, other small fixes (#1496) - c223c75 [bugfix] Set appropriate cache-control when using presigned s3 links (#1480)
- e5e257c [bugfix] Fix error on searching for account w/accountDomain by host (#1465)
- 52fbb3e [bugfix] fix 'steal this look' form, uncheck entries after processing (#1454)
- 4e4da19 [bugfix] Use SignatureCheck middleware for web profile endpoints too (#1451)
- ad6ab03 [bugfix] don't trash emoji in profile fields on edit (#1440)
- ac2bdbb [bugfix] fix file range length calculation being off by 1 (#1448)
- 6a6647d [bugfix] Ignore missing files when cleaning up media (#1435)
- 75e1b9c [bugfix] fix old password hash staying in cache (#1432)
- 80c26d6 [bugfix] Allow instance thumbnail description to be set separately from image (#1417)
- 04ac3f8 [bugfix] Fix password change keys (#1416)
- abe9447 [bugfix] fix cache startup (#1414)
- 271da01 [bugfix] Read Bookwyrm Articles more thoroughly (#1410)
- d4cddf4 [bugfix] Parse video metadata more accurately; allow Range in fileserver (#1342)
- 132c738 [bugfix] Mount bookmarks endpoint correctly (#1338)
- 1bda6a2 [bugfix] return early in websocket upgrade handler (#1315)
- 2bf9bfa [bugfix] fix panic during status delete loop by breaking out early on len(statuses) == 0 (#1317)
- de74cc6 [bugfix/frogend] replace ch units to prevent layout shift on page load (#1301)
- eabb906 [bugfix] fix media create error not being checked (#1283)
- 6ebdc30 [bugfix] Close reader gracefully when streaming recache of remote media to fileserver api caller (#1281)
- 2b0342b [bugfix] use match-sorter for filtering domain blocks (#1270)
- 1d24c1c [bugfix] Use null for empty api status
language
(#1268) - 8703933 [bugfix] fix unordered favorites (#1245)
- 04636a3 [bugfix] attach bookmarks module to api (#1238)
- 199672e [bugfix] fix unordered favorites (#1236)
Performance
- acc9592 [performance] processing media and scheduled jobs improvements (#1482)
- 40bc03e [chore/performance] Update media prune logic, add extra CLI command (#1474)
- 70739d3 [performance] remove throttling timers (#1466)
- 95715f9 [performance] Don't fetch avatar + header if uri hasn't changed (#1463)
- 02767bf [performance] remove local copying of file for satisfying range headers (#1421)
- 5318054 [performance] media processing improvements (#1288)
Chores
- 4cba90c [chore] Split the bug template in two (#1500)
- 700ed77 [chore] Webkit frontend fixes (#1492)
- 041c8e6 [chore] Do cache-control in a less silly way to avoid writing header twice (#1481)
- efbc5da [chore]: Bump github.com/minio/minio-go/v7 from 7.0.47 to 7.0.48 (#1486)
- 33b77b3 [chore]: Bump golang.org/x/image from 0.3.0 to 0.4.0 (#1485)
- 7231752 [chore]: Bump modernc.org/sqlite from 1.20.3 to 1.20.4 (#1484)
- 6ac1dda [chore] small changes missed in previous dereferencer.GetAccount() PRs (#1467)
- 65b1941 [chore] Fix report username wrapping (#1464)
- 27e95fd [chore/bugfix] Serve + throttle publickey separately from rest of ActivityPub API (#1461)
- 0ed50c1 [chore/frogend] domain blocklist layout on smaller screens (#1436)
- b63b1b6 [chore] Update bug report template (#1437)
- 47daddc [chore/frogend] Restructure form data default values / update from Query data (#1422)
- 0a98743 [chore]: Bump codeberg.org/gruf/go-runners from 1.4.0 to 1.5.1 (#1428)
- 1df25a3 [chore]: Bump github.com/yuin/goldmark from 1.5.3 to 1.5.4 (#1427)
- dae14cc [chore]: Bump github.com/ulule/limiter/v3 from 3.10.0 to 3.11.0 (#1429)
- 7f32457 [chore] stub /api/v1/featured_tags endpoint (#1420)
- 33aee1b [chore] reformat GetAccount() functionality, support updating accounts based on last_fetch (#1411)
- 49beb17 [chore] Text formatting overhaul (#1406)
- 4ee4cd2 [chore/performance] use only 1 sqlite db connection regardless of multiplier (#1408)
- b80be48 [chore] Use 'immediate' lock for sqlite transactions (#1404)
- eccb380 [chore] Silence maxprocs logging (#1402)
- 356e238 [chore]: Bump github.com/go-playground/validator/v10 (#1400)
- 7bcdf35 [chore]: Bump github.com/microcosm-cc/bluemonday from 1.0.21 to 1.0.22 (#1399)
- 782169d [chore] set max open / idle conns + conn max lifetime for both postgres and sqlite (#1369)
- 27d4e36 [chore] Settings refactor fix4 (#1383)
- 36f62d6 [chore] remove funky duplicate attachment in testrig (#1379)
- 605dfca [chore] bump go version to 1.19.5 (#1377)
- 98a09b5 [chore]: Bump github.com/spf13/viper from 1.14.0 to 1.15.0 (#1375)
- 3e4dc6b [chore]: Bump github.com/abema/go-mp4 from 0.9.0 to 0.10.0 (#1374)
- 13ec15d [chore] extending maximumPasswordLength to 256 (#1372)
- 0ceacd7 [chore] bump db dependencies (#1366)
- b375d3b [chore] Add name to instance field for autosuggestion (#1359)
- 747683b [chore] Settings refactor fix 2 (#1357)
- 13e3aaa [chore] Fix new emoji preview title/alt text (#1354)
- 9b139b6 [chore/frogend] Settings refactor (#1318)
- 974ec80 [chore] Change default sqlite busy timeout to 5m (#1352)
- a6c6bdb [chore]: Bump codeberg.org/gruf/go-errors/v2 from 2.0.2 to 2.1.1 (#1346)
- fe3e9ed [chore]: Bump github.com/minio/minio-go/v7 from 7.0.44 to 7.0.47 (#1348)
- 2a46980 [chore]: Bump golang.org/x/oauth2 from 0.3.0 to 0.4.0 (#1347)
- eafd73c [chore] Remove omitempty on account source; refactor tests to use prettyprint json (#1337)
- 36aa685 [chore] Bump json5 from 1.0.1 to 1.0.2 in /web/source (#1308)
- ac562fa [chore]: Bump github.com/coreos/go-oidc/v3 from 3.4.0 to 3.5.0 (#1322)
- 0ca6a9d [chore]: Bump golang.org/x/image from 0.2.0 to 0.3.0 (#1320)
- 86ae0b1 [chore]: Bump golang.org/x/text from 0.5.0 to 0.6.0 (#1321)
- 345b765 [chore]: Bump golang.org/x/net from 0.4.0 to 0.5.0 (#1319)
- 6791920 [chore/frogend] update status blockquote css (#1302)
- adbc877 [chore] pull in latest go-cache, go-runners versions (#1306)
- 0dbe6c5 [chore] Update/add license headers for 2023 (#1304)
- ff46dd4 [chore] Fix emoji notnull constraint on initial gtsmodel (#1303)
- 71dfea7 [chore] shuffle middleware to split rate limitting into client/s2s/fileserver, share gzip middleware globally (#1290)
- 941893a [chore] The Big Middleware and API Refactor (tm) (#1250)
- 560ff12 [chore]: Bump github.com/abema/go-mp4 from 0.8.0 to 0.9.0 (#1287)
- b966d3b [chore]: Bump github.com/gin-gonic/gin from 1.8.1 to 1.8.2 (#1286)
- abd594b [chore]: Bump codeberg.org/gruf/go-bytesize from 1.0.0 to 1.0.2 (#1285)
- 0871f5d [chore] note broken go v1.19.4 in contributing.md (#1278)
- 0f38e7c [chore] fix some little config whoopsies (#1272)
- da751c0 update go-cache to v3.2.0 with support for ignoring errors (#1273)
- eb08529 [chore/bugfix] Switch markdown from blackfriday to goldmark (#1267)
- 0f8d938 [chore] Add svg version of sloth logo as logo.svg (#1265)
- a7e71d7 [chore]: Bump golang.org/x/image from 0.1.0 to 0.2.0 (#1252)
- 24b4f9b [chore] make single pull request template (#1239)
- e58d2d8 [chore] move caches to a separate State{} structure (#1078)
- dd1a4cd [chore] Remove deprecated linters (#1228)
Documentation
- 674646b [docs] Update config.yaml (#1499)
- f3eb28a [docs] Suggest confirming host option in config (#1502)
- fd62847 [docs] Fix nginx fileserver caching example (#1506)
- 76d1b48 [docs] move federating with gotosocial documentation into single file (#1494)
- eeca198 [docs] Update user/admin settings docs (#1491)
- dc766f9 [docs] Add an example on how to setup redirect with Traefik (#1395)
- 43cbe3b [docs] Simplify Apache httpd proxy documentation (#1396)
- c59ec6f [docs] Add Flag documentation to federation docs (#1393)
- 1fa574f [docs] Tidy up federation docs into 'federating with gotosocial' section (#1392)
- 8d18888 [chore/docs] add instance-expose-suspended-web to instance docs (#1391)
- 6b15b83 [docs] Remove videos from the list of missing features in the FAQ. (#1344)
- 98edd75 [docs] Rewrite sponsorship + funding section, add NLnet (#1305)
- 9859a43 [docs] Add s3 ssl variable to storage docs (#1294)
- 2a1205a [docs] AWS S3 config details added (#1300)
- 0b8eafe [docs] Fix documentation edit link (#1298)
- 9ecb1c8 [docs] Add troubleshooting section for Apache (#1291)
- bae7398 [docs] Update Apache docs to use 127.0.0.1 instead of localhost (#1266)
- 418bfbf [docs] Update nginx docs to use 127.0.0.1 instead of localhost (#1264)
- ce615b5 [docs] Serve static assets with nginx (#1251)
- d2a09c1 [docs] Caching webfinger with nginx (#1242)
- 610c270 [docs] Update
CONTRIBUTING.md
, add pull request templates (#1216) - aea16bb [docs] Update README.md (#1126)
- 923d333 [docs] encourage using loopback bind address (#1166)
New Contributors
- @hikari-no-yume made their first contribution in #1166
- @mal0ki made their first contribution in #1126
- @mperham made their first contribution in #1228
- @matthewp made their first contribution in #1168
- @voigt made their first contribution in #1236
- @autumnull made their first contribution in #1267
- @kensanata made their first contribution in #1291
- @brianclemens made their first contribution in #1298
- @anantshri made their first contribution in #1300
- @lsnow99 made their first contribution in #1294
- @sleepdeprecation made their first contribution in #1325
- @xnuk made their first contribution in #1372
- @kvibber made their first contribution in #1373
- @ketan-vijayvargiya made their first contribution in #1395
- @Sentynel made their first contribution in #1435
- @minecraftchest1 made their first contribution in #1502
- @wioxjk made their first contribution in #1499