This is our v1.9.1 stable release of Mbin. This release includes bug fixes, performance improvements, ActivityPub compatibility improvements, thread and microblog locking, usability improvements and more...
Comparison to previous stable version v1.9.0:
| DB migrations | New ENV vars | Renamed ENV vars | Admin guide changes | Suggest cache clearing | New dependencies |
|---|---|---|---|---|---|
| ☑️ | ☑️ | ❌ | ☑️ | ☑️ | ☑️ |
We have 3 different summaries below. One for end-users, one for server admins, and finally a summary for developers.
Summary for Users
- Improve the RSS feeds: they should be faster, you can also get a combined feed of threads and microblogs now
- The search should be a lot faster now and you can also search for magazines and users by their URL again (previously you could only search for their handle)
- Likes, dislikes and boosts of Mastodon posts can now be extracted, however Mastodon does not sent us updates if these values change
- We added a discoverability setting for users and magazines. This setting is activated by default. If disabled you and your content cannot be found by searching and do not appear on /all
- Fix comments from Mastodon posts not appearing
- Threads and microblogs can now be locked
- The combined view should look more coherent. We adjusted the way microblog posts are displayed in this view
- The notification switches now have a tooltip
- We added an indexable setting for users and magazines. This setting is also activated by default. If disabled, search engines are advised to not index the corresponding threads and microblogs. Because you can only set this on a page to page basis and your comments appear on the page of threads or microblogs, the indexability of comments is dependent on the thread or microblog you're commenting on
- The random magazine is now pre-selected when creating a microblog
- Each magazine has a Tags page in which moderators of the magazine can set the hashtags by which microblogs are put in this magazine. Previously we used the name as a tag as well, without telling the user and without a way to disable it. We now add the name of each magazine to its tags page to make this behavior clear and to provide a way to disable it. When creating a magazine, we added a checkbox to add the name as a hashtag
- Infinite scroll is now working on the search page and the profile pages
- The magazine rules field is now officially deprecated. If a magazine currently has this field populated, it will still be editable, otherwise this field is removed. It will be removed in the future, as there is not a good way to federate this field to other servers. At the moment we just append it to the description with a
### Rulesin front of it
Summary for Server Admins
- Signup notifications should be created correctly again. We previously introduced a bug preventing these notifications from being sent
- Add some problematic paths to the robots.txt, which should result in fewer hits by crawlers (like, dislike, boost, search, ...)
- We removed some indexes from the DB which should result in some size savings
- We also added some missing indexes, which resulted in some performance hits. If you run in any conflicts, we created a command to fix errors for duplicate users or magazines (see documentation)
- We reduced the amount of requests to other instances in the background jobs -> should run faster
Summary for developers
Mbin:
- Improve CI by just doing nothing in some actions if there are no relevant files changes -> the required actions still run, they just don't do anything
App:
- The subject of the magazine log API is now correctly set in case of a pinned, unpinned, banned, unbanned, moderator add and moderator removed "events". The documentation should reflect that now. See #1951
- When supplying a rules value in the MagazineUpdateApi, but the magazine did not already have rules defined, the API will throw an error, because this field is now deprecated
- There are new endpoints to lock a thread and a microblog post
- There also are new OAuth scopes for locking and we added a missing one for pinning microblog posts
Fediverse:
- Having a single URL instead of an array of URLs in the
toandccfield are now supported. JSON-LD allows this for array fields - Like Activities use the magazine id instead of followers collection in the
tofield - We no longer include the activity streams namespace twice (once in the
@contextand once in the/context.json)
Upgrade Instructions
For Docker
- Get the official image or checkout the code and build it locally
- Stop all containers
docker compose down - Start all containers
docker compose up -d
For Bare Metal
- Login as the mbin/kbin user:
su mbin - Go to your repo
cd /var/www/mbin - Get the new release:
git fetch && git checkout v1.9.1 - Run the update script:
bash bin/post-upgrade. - Run
exitso we are back at the root user (or put a sudo in front of every command) - clear your opcache by reloading php fpm
systemctl restart php8.4-fpm(or for PHP 8.3:systemctl restart php8.3-fpm) - Restart the messengers:
supervisorctl restart messenger:*
Warning
Executing the migrations might fail. If that is the case and the error message says something like "Unique violation: 7 ERROR: could not create unique index [...]", we prepared a command to fix these duplications.
Bare metal (as the mbin/kbin user): php bin/console mbin:check:duplicates-users-magazines
Docker: docker compose exec php php bin/console mbin:check:duplicates-users-magazines
This command will start a guided tour to delete all duplicated users or magazines. If you are unsure, you can just run it twice: once for magazines and once for users
What's Changed
- Add safe directory before get composer cache steps by @melroy89 in #1920
- use bigger PHP limits for devcontainer by @blued-gear in #1927
- Update aws sdk php dependency (security) by @melroy89 in #1928
- Update php config for Docker by @jwr1 in #1929
- Translations update from Hosted Weblate by @weblate in #1925
- Translations update from Hosted Weblate by @weblate in #1932
- fix post_controller comment element handling by @blued-gear in #1926
- skip tests on non-code paths but keep the GitHub action by @blued-gear in #1919
- Adding the documentation of the
Deleteactivity for accounts by @BentiGorlich in #1921 - Clear old push subscriptions by @BentiGorlich in #1943
- fix wrong nav URLs when on /people, /magazines and /search by @blued-gear in #1939
- docs(contributor): contributors readme action update by @github-actions[bot] in #1945
- Fix signup notifications by @BentiGorlich in #1942
- Improve our RSS feed by @BentiGorlich in #1941
- Fix MessageManager#createMessage to properly access 'to' & 'cc' properties by @grahhnt in #1930
- docs(contributor): contributors readme action update by @github-actions[bot] in #1950
- Small fixes by @BentiGorlich in #1948
- Fix magazine log api subject by @BentiGorlich in #1951
- Improve search by @BentiGorlich in #1949
- Fix like, dislike, shares collection extraction if it is an array by @BentiGorlich in #1953
- Add discoverable setting for users and magazines by @BentiGorlich in #1947
- Fixing Mastodon mentions again again again by @BentiGorlich in #1954
- Introducing thread/microblog locking by @BentiGorlich in #1773
- Harmonize posts and threads in combined view by @blued-gear in #1888
- Improve MagazinePeopleFrontController by @BentiGorlich in #1957
- AP bots may boost by @blued-gear in #1955
- Add missing oauth user consent and translation by @BentiGorlich in #1959
- improve logs and fix some warnings by @blued-gear in #1936
- Fix combined post compact view by @blued-gear in #1961
- catch all exceptions in ImageManager::getMimetype() by @blued-gear in #1962
- Translations update from Hosted Weblate by @weblate in #1964
- DeleteUserHandler: roll back nested transaction if any exception occurs. by @blued-gear in #1963
- add tooltip to thread / magazine notification switches by @blued-gear in #1965
- Disallow vote, boost, report, crosspost in robots.txt by @BentiGorlich in #1971
- Remove duplicate indexes by @BentiGorlich in #1970
- Translations update from Hosted Weblate by @weblate in #1975
- Fix/missing magazine ap public url index by @BentiGorlich in #1956
- update symfony/process by @blued-gear in #1977
- skip tests on non-code paths but keep the GitHub action - vol 2 by @blued-gear in #1935
- Like Activities - use magazine id instead of followers collection by @BentiGorlich in #1944
- Add Indexable setting for users and magazines by @BentiGorlich in #1946
- Reduce webfinger fetches by @BentiGorlich in #1978
- Disallow /search in robots.txt by @BentiGorlich in #1979
- Fix composer packages to pass twig linter in #1016
- preselect "random" magazine for post-create-form (microblogs) when not in a magazine by @blued-gear in #1980
- update devcontainer build dependencies by @blued-gear in #1988
- Translations update from Hosted Weblate by @weblate in #1986
- Bump symfony/process from 7.3.4 to 7.4.5 in /tools in the composer group across 1 directory by @dependabot[bot] in #1976
- Bump oneup/flysystem-bundle from 4.13.0 to 4.14.1 by @dependabot[bot] in #1982
- Fix PushSubscription removal by @BentiGorlich in #1990
- Don't match microblogs by magazine name hashtag anymore by @BentiGorlich in #1800
- Fix infinite scroll on user profile and search pages by @BentiGorlich in #1952
- Deprecate the magazine rules field by @BentiGorlich in #1987
- Fix SearchController URL actor search by @blued-gear in #1991
- Fix recursive context inclusion of ActivityStreams URL by @BentiGorlich in #1997
- Translations update from Hosted Weblate by @weblate in #1992
- Add check for duplicates command (guided tour) by @melroy89 in #1994
- Add documentation for the check duplicates command by @BentiGorlich in #2007
- Bump to v1.9.1 by @BentiGorlich in #2008
New Contributors
Full Changelog: v1.9.0...v1.9.1