GitHub/WoltLab/com.woltlab.wcf.conversation.git
2 years agoMerge branch '5.4'
Tim Düsterhus [Mon, 14 Mar 2022 10:02:53 +0000 (11:02 +0100)]
Merge branch '5.4'

2 years agoRelease 5.4.15 dev 1 5.4.15_dev_1
Alexander Ebert [Thu, 10 Mar 2022 13:30:21 +0000 (14:30 +0100)]
Release 5.4.15 dev 1

2 years agoUpdating minified JavaScript files
WoltLab [Thu, 10 Mar 2022 10:45:42 +0000 (10:45 +0000)]
Updating minified JavaScript files

2 years agoMerge branch '5.4'
Tim Düsterhus [Wed, 9 Mar 2022 14:28:40 +0000 (15:28 +0100)]
Merge branch '5.4'

2 years agoMerge branch '5.3' into 5.4
Tim Düsterhus [Wed, 9 Mar 2022 14:21:21 +0000 (15:21 +0100)]
Merge branch '5.3' into 5.4

2 years agoMerge branch '5.2' into 5.3 5.3.final
Tim Düsterhus [Wed, 9 Mar 2022 14:15:00 +0000 (15:15 +0100)]
Merge branch '5.2' into 5.3

2 years agoUpgrade to `actions/checkout@v3` 5.2.final
Tim Düsterhus [Wed, 9 Mar 2022 14:14:01 +0000 (15:14 +0100)]
Upgrade to `actions/checkout@v3`

2 years agoMerge branch '5.3' into 5.4
Tim Düsterhus [Wed, 9 Mar 2022 14:12:23 +0000 (15:12 +0100)]
Merge branch '5.3' into 5.4

2 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Wed, 9 Mar 2022 14:11:56 +0000 (15:11 +0100)]
Merge branch '5.2' into 5.3

2 years agoRemove codestyle workflow for non-PSR-12 branches
Tim Düsterhus [Wed, 9 Mar 2022 14:10:33 +0000 (15:10 +0100)]
Remove codestyle workflow for non-PSR-12 branches

see WoltLab/WCF@2163aa902ace5c899fe7ae42220f91e5a3d71865

2 years agoRecompile JavaScript
Tim Düsterhus [Wed, 9 Mar 2022 13:53:38 +0000 (14:53 +0100)]
Recompile JavaScript

2 years agoMerge branch '5.4'
Tim Düsterhus [Wed, 9 Mar 2022 13:47:41 +0000 (14:47 +0100)]
Merge branch '5.4'

2 years agoUpdate npm dependencies
Tim Düsterhus [Wed, 9 Mar 2022 13:36:32 +0000 (14:36 +0100)]
Update npm dependencies

2 years agoUpdating minified JavaScript files
WoltLab [Tue, 1 Mar 2022 18:33:32 +0000 (18:33 +0000)]
Updating minified JavaScript files

2 years agoMarking all items as read did not reset the count
Alexander Ebert [Mon, 21 Feb 2022 13:11:54 +0000 (14:11 +0100)]
Marking all items as read did not reset the count

2 years agoMerge branch '5.4'
Tim Düsterhus [Tue, 15 Feb 2022 15:22:31 +0000 (16:22 +0100)]
Merge branch '5.4'

2 years agoMerge branch '5.3' into 5.4
Alexander Ebert [Tue, 15 Feb 2022 13:58:12 +0000 (14:58 +0100)]
Merge branch '5.3' into 5.4

2 years agoRelease 5.3.20 5.3.20
Alexander Ebert [Tue, 15 Feb 2022 13:55:41 +0000 (14:55 +0100)]
Release 5.3.20

2 years agoRelease 5.4.14 5.4.14
Alexander Ebert [Tue, 15 Feb 2022 13:33:54 +0000 (14:33 +0100)]
Release 5.4.14

2 years agoMerge branch '5.4'
Tim Düsterhus [Mon, 14 Feb 2022 14:47:50 +0000 (15:47 +0100)]
Merge branch '5.4'

2 years agoRelease 5.4.14 dev 1 5.4.14_dev_1
Alexander Ebert [Thu, 10 Feb 2022 17:02:24 +0000 (18:02 +0100)]
Release 5.4.14 dev 1

2 years agoMerge pull request #171 from WoltLab/conversation-order-removed
Tim Düsterhus [Thu, 10 Feb 2022 14:14:50 +0000 (15:14 +0100)]
Merge pull request #171 from WoltLab/conversation-order-removed

Fix conversation order when being removed from conversation

2 years agoMake CASE statements more readable in queries in UserConversationList
Tim Düsterhus [Thu, 10 Feb 2022 13:57:53 +0000 (14:57 +0100)]
Make CASE statements more readable in queries in UserConversationList

2 years agoFix conversation order when being removed from conversation
Tim Düsterhus [Thu, 10 Feb 2022 11:28:20 +0000 (12:28 +0100)]
Fix conversation order when being removed from conversation

When one is removed from a conversation, UserConversationList will use the time
of removal as the conversation's `lastPostTime` when ordering, instead of the
actual time of the newest message to not leak information about new messages
after removal.

However this was not properly accounted for within `readObjectIDs()`. Now if a
conversation one was removed from receives new messages after a long-ish time -
with several conversations in between - the conversation will appear on the
*pageNo* where it would be if one would still be a participant. But within the
page it would be ordered based on the timestamp of removal (i.e. appear at the
very bottom of the page).

Fix this by also overriding `lastPostTime` in `readObjectIDs()`. This will move
the conversation to the proper `pageNo` based on the removal time.

This might still be slightly misleading, because the “last message” column in
the template shows the time of the actual last visible message, but this
confusion can be resolved by opening the conversation and seeing the removal
timestamp matching up, whereas without this fix the conversation can be all
over the place.

2 years agoUse `->prepare()` instead if `->prepareStatement()` in ConversationEditor::removePart...
Tim Düsterhus [Thu, 10 Feb 2022 10:49:41 +0000 (11:49 +0100)]
Use `->prepare()` instead if `->prepareStatement()` in ConversationEditor::removeParticipant()

2 years agoMerge branch '5.4'
Tim Düsterhus [Thu, 10 Feb 2022 10:49:14 +0000 (11:49 +0100)]
Merge branch '5.4'

2 years agoMerge branch '5.3' into 5.4
Tim Düsterhus [Thu, 10 Feb 2022 10:48:57 +0000 (11:48 +0100)]
Merge branch '5.3' into 5.4

2 years agoMerge pull request #170 from WoltLab/remove-participant-last-message-id
Tim Düsterhus [Thu, 10 Feb 2022 10:47:29 +0000 (11:47 +0100)]
Merge pull request #170 from WoltLab/remove-participant-last-message-id

Fix calculation of `lastMessageID` when removing other conversation participants

2 years agoFix calculation of `lastMessageID` when removing other conversation participants
Tim Düsterhus [Thu, 10 Feb 2022 10:33:50 +0000 (11:33 +0100)]
Fix calculation of `lastMessageID` when removing other conversation participants

Without this `ORDER BY` usually the first visible message would've been set as
the `lastMessageID`, as that's the first row within the `conversation_message`
table.

2 years agoImproved the styling of the user menu
Alexander Ebert [Fri, 4 Feb 2022 16:54:33 +0000 (17:54 +0100)]
Improved the styling of the user menu

2 years agoIncorrect calculation of the "other participant" avatar
Alexander Ebert [Fri, 4 Feb 2022 16:27:24 +0000 (17:27 +0100)]
Incorrect calculation of the "other participant" avatar

See #169

2 years agoFix update_com.woltlab.wcf.conversation_5.5_cleanup_orphaned_attachments.php again
Tim Düsterhus [Wed, 2 Feb 2022 12:46:27 +0000 (13:46 +0100)]
Fix update_com.woltlab.wcf.conversation_5.5_cleanup_orphaned_attachments.php again

see 3880927fdc5fc427e4b485639d1813c4cb3bee52

2 years agoFix update_com.woltlab.wcf.conversation_5.5_cleanup_orphaned_attachments.php
Tim Düsterhus [Wed, 2 Feb 2022 12:44:02 +0000 (13:44 +0100)]
Fix update_com.woltlab.wcf.conversation_5.5_cleanup_orphaned_attachments.php

2 years agoUpdating minified JavaScript files
WoltLab [Wed, 2 Feb 2022 12:30:33 +0000 (12:30 +0000)]
Updating minified JavaScript files

2 years agoMerge pull request #168 from WoltLab/55-user-menu
Alexander Ebert [Fri, 21 Jan 2022 10:59:38 +0000 (11:59 +0100)]
Merge pull request #168 from WoltLab/55-user-menu

Implementation of the new user menu for conversations

2 years agoValidate the module and permissions, improved code clarity
Alexander Ebert [Fri, 21 Jan 2022 10:53:47 +0000 (11:53 +0100)]
Validate the module and permissions, improved code clarity

2 years agoMark files/js/WoltLabSuite/**/*.js as linguist-generated
Tim Düsterhus [Fri, 21 Jan 2022 08:38:49 +0000 (09:38 +0100)]
Mark files/js/WoltLabSuite/**/*.js as linguist-generated

2 years agoImplementation of the new user menu for conversations
Alexander Ebert [Thu, 20 Jan 2022 17:48:40 +0000 (18:48 +0100)]
Implementation of the new user menu for conversations

See #167

2 years agoUpdate commit for WoltLab/WCF in package.json
Tim Düsterhus [Fri, 21 Jan 2022 08:36:34 +0000 (09:36 +0100)]
Update commit for WoltLab/WCF in package.json

This is to get the types for perfect-scrollbar.

2 years agoUpdate commit for WoltLab/WCF in package.json
Tim Düsterhus [Thu, 20 Jan 2022 12:42:04 +0000 (13:42 +0100)]
Update commit for WoltLab/WCF in package.json

2 years agoMerge branch '5.4'
Tim Düsterhus [Wed, 19 Jan 2022 14:35:36 +0000 (15:35 +0100)]
Merge branch '5.4'

2 years agoMerge branch 'can-reply-can-read' into 5.4
Tim Düsterhus [Wed, 19 Jan 2022 14:35:26 +0000 (15:35 +0100)]
Merge branch 'can-reply-can-read' into 5.4

2 years agoRemove obsolete check for `->canRead()` in ConversationMessageAction::validateContainer()
Tim Düsterhus [Tue, 18 Jan 2022 14:48:22 +0000 (15:48 +0100)]
Remove obsolete check for `->canRead()` in ConversationMessageAction::validateContainer()

2 years agoVerify that the conversation is readable in Conversation::canReply()
Tim Düsterhus [Tue, 18 Jan 2022 14:47:53 +0000 (15:47 +0100)]
Verify that the conversation is readable in Conversation::canReply()

2 years agoMerge pull request #166 from WoltLab/attachment-orphan
Tim Düsterhus [Thu, 13 Jan 2022 14:05:26 +0000 (15:05 +0100)]
Merge pull request #166 from WoltLab/attachment-orphan

Clean up orphaned attachments when upgrading to 5.5

2 years agoClean up orphaned attachments when upgrading to 5.5
Tim Düsterhus [Thu, 13 Jan 2022 10:19:09 +0000 (11:19 +0100)]
Clean up orphaned attachments when upgrading to 5.5

Resolves #158

2 years agoMerge pull request #165 from WoltLab/new-search-form
Marcel Werk [Thu, 13 Jan 2022 10:19:41 +0000 (11:19 +0100)]
Merge pull request #165 from WoltLab/new-search-form

Search form overhaul

2 years agoFixed extended link
Marcel Werk [Wed, 12 Jan 2022 21:18:42 +0000 (22:18 +0100)]
Fixed extended link

2 years agoFixed code style
Marcel Werk [Wed, 12 Jan 2022 20:46:02 +0000 (21:46 +0100)]
Fixed code style

2 years agoSearch form overhaul
Marcel Werk [Wed, 12 Jan 2022 20:42:23 +0000 (21:42 +0100)]
Search form overhaul

see https://github.com/WoltLab/WCF/pull/4605

2 years agoUnified buttons
Marcel Werk [Wed, 12 Jan 2022 20:38:43 +0000 (21:38 +0100)]
Unified buttons

2 years agoMerge branch '5.4'
Tim Düsterhus [Mon, 10 Jan 2022 10:27:59 +0000 (11:27 +0100)]
Merge branch '5.4'

2 years agoUpdate npm dependencies
Tim Düsterhus [Mon, 10 Jan 2022 10:27:45 +0000 (11:27 +0100)]
Update npm dependencies

2 years agoMerge branch '5.4'
Tim Düsterhus [Wed, 5 Jan 2022 09:20:59 +0000 (10:20 +0100)]
Merge branch '5.4'

2 years agoRelease 5.4.10 5.4.10
Alexander Ebert [Wed, 22 Dec 2021 16:28:25 +0000 (17:28 +0100)]
Release 5.4.10

2 years agoRelease 5.4.10 dev 1 5.4.10-dev-1 5.4.10_dev_1
Alexander Ebert [Fri, 17 Dec 2021 16:41:02 +0000 (17:41 +0100)]
Release 5.4.10 dev 1

2 years agoMerge branch '5.4'
Tim Düsterhus [Mon, 13 Dec 2021 12:58:01 +0000 (13:58 +0100)]
Merge branch '5.4'

2 years agoUpdate prettier and typescript
Tim Düsterhus [Mon, 13 Dec 2021 12:47:56 +0000 (13:47 +0100)]
Update prettier and typescript

2 years agoMerge branch '5.4'
Tim Düsterhus [Thu, 9 Dec 2021 08:32:13 +0000 (09:32 +0100)]
Merge branch '5.4'

2 years agoDrop obsolete update_com.woltlab.wcf.conversation_5.4_deleteLanguageItems.php
Tim Düsterhus [Wed, 8 Dec 2021 09:34:03 +0000 (10:34 +0100)]
Drop obsolete update_com.woltlab.wcf.conversation_5.4_deleteLanguageItems.php

2 years agoUpdate fileDelete.xml
Tim Düsterhus [Wed, 8 Dec 2021 09:31:48 +0000 (10:31 +0100)]
Update fileDelete.xml

Generated with:

    #!/bin/bash

    cat <<'EOF'
    <?xml version="1.0" encoding="UTF-8"?>
    <data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/2019/fileDelete.xsd">
     <delete>
    EOF

    comm -23 <(git log 2bf40f755228eeae2902562471acf14177777eb6..HEAD --diff-filter=D --no-renames --summary |awk '/delete mode/{print $NF}' |grep files/ |sort -u) <(find files/ |sort -u) \
     |sed 's~^files/~~' \
     |sed 's~^~\t\t<file>~;s~$~</file>~'

    cat <<'EOF'
     </delete>
    </data>
    EOF

2 years agoAdd update instructions from 5.4.*
Tim Düsterhus [Tue, 7 Dec 2021 16:05:53 +0000 (17:05 +0100)]
Add update instructions from 5.4.*

3 years agoCount drafts for flood control during actual submission
Tim Düsterhus [Fri, 3 Dec 2021 12:59:06 +0000 (13:59 +0100)]
Count drafts for flood control during actual submission

Otherwise a spammer might be able to silently prepare a large number of drafts,
submitting them in bulk when they prepared enough.

3 years agoMerge pull request #164 from WoltLab/close-phrase
Tim Düsterhus [Mon, 29 Nov 2021 13:50:35 +0000 (14:50 +0100)]
Merge pull request #164 from WoltLab/close-phrase

Clarify that "closing" a conversation prevents new replies

3 years agoClarify that "closing" a conversation prevents new replies
Tim Düsterhus [Mon, 29 Nov 2021 10:50:58 +0000 (11:50 +0100)]
Clarify that "closing" a conversation prevents new replies

3 years agoRemove obsolete import
Tim Düsterhus [Wed, 24 Nov 2021 08:50:30 +0000 (09:50 +0100)]
Remove obsolete import

see 8fb48c34b510262be8c5e1fffc445d50d72463a2

3 years agoMerge pull request #162 from WoltLab/jumpToExtended
Tim Düsterhus [Tue, 23 Nov 2021 13:41:05 +0000 (14:41 +0100)]
Merge pull request #162 from WoltLab/jumpToExtended

Remove broken ConversationMessageAction::jumpToExtended()

3 years agoRemove broken ConversationMessageAction::jumpToExtended()
Tim Düsterhus [Mon, 22 Nov 2021 14:55:14 +0000 (15:55 +0100)]
Remove broken ConversationMessageAction::jumpToExtended()

The target controllers for the forwarding no longer exist since
a3258a9f150a8febeef0f2c7d1899799d953e1cc.

see WoltLab/WCF#4575

3 years agoStop checking the `enable_censorship` option
Tim Düsterhus [Mon, 25 Oct 2021 09:16:06 +0000 (11:16 +0200)]
Stop checking the `enable_censorship` option

see WoltLab/WCF#4567

3 years agoMerge pull request #161 from WoltLab/search-index-worker
Tim Düsterhus [Mon, 11 Oct 2021 14:40:56 +0000 (16:40 +0200)]
Merge pull request #161 from WoltLab/search-index-worker

Add ConversationMessageSearchIndexRebuildDataWorker

3 years agoAdd ConversationMessageSearchIndexRebuildDataWorker
Tim Düsterhus [Mon, 11 Oct 2021 13:17:56 +0000 (15:17 +0200)]
Add ConversationMessageSearchIndexRebuildDataWorker

This also fixes a bug within the indexing process: Previously each message
within a conversation would have been assigned the conversation's subject as
the subject, while the regular creation process does not.

Fix this by only setting the title for the first message within the
conversation.

Resolves #160

3 years agoUpdate for PHP CS Fixer 3.2.1
Tim Düsterhus [Tue, 5 Oct 2021 09:35:33 +0000 (11:35 +0200)]
Update for PHP CS Fixer 3.2.1

3 years agoLink the conversation's time to the conversation itself
Tim Düsterhus [Mon, 4 Oct 2021 13:53:22 +0000 (15:53 +0200)]
Link the conversation's time to the conversation itself

Resolves #159

3 years agoMerge pull request #156 from WoltLab/markAsRead-notification
Joshua Rüsweg [Mon, 4 Oct 2021 06:04:02 +0000 (08:04 +0200)]
Merge pull request #156 from WoltLab/markAsRead-notification

Refactor logic in ConversationAction::markAsRead()

3 years agoEnsure explicit database INDEX names
Tim Düsterhus [Thu, 30 Sep 2021 14:27:38 +0000 (16:27 +0200)]
Ensure explicit database INDEX names

Checking all revisions of all `.sql` files returned that a INDEX was never
added to an existing table using `ALTER TABLE`. Thus this update script should
not result in changes in *any* installation out there, making this process
quite fast even in large communities. It is added and should be execute
nonetheless for full correctness.

The following fish script was used to check the revisions:

    for file in (g log 2bf40f755228eeae2902562471acf14177777eb6..HEAD --diff-filter=D --no-renames --summary |awk '/delete mode/{print $NF}' |grep '.sql$')
     for rev in (git rev-list --all -- $file)
     git show $rev:$file
     end
    end 2>&1 |grep -v '^fatal:' |grep '^ALTER' |sort -u

see WoltLab/WCF#4505

3 years agoReplace install.sql by database PIP
Tim Düsterhus [Thu, 30 Sep 2021 14:17:36 +0000 (16:17 +0200)]
Replace install.sql by database PIP

The PHP definition already includes explicit INDEX names, because the two
indices in wcf1_conversation_to_user would conflict otherwise.

An update script will be added in a follow-up commit.

see WoltLab/WCF#4505

3 years agoMerge branch '5.4'
Tim Düsterhus [Mon, 27 Sep 2021 10:33:57 +0000 (12:33 +0200)]
Merge branch '5.4'

3 years agoRemoved the upgrade instructions
Alexander Ebert [Fri, 24 Sep 2021 12:12:34 +0000 (14:12 +0200)]
Removed the upgrade instructions

3 years agoRelease 5.4.8 5.4.8
Alexander Ebert [Fri, 24 Sep 2021 09:15:53 +0000 (11:15 +0200)]
Release 5.4.8

3 years agoMerge branch '5.4'
Tim Düsterhus [Fri, 24 Sep 2021 08:15:18 +0000 (10:15 +0200)]
Merge branch '5.4'

3 years agoMerge branch '5.4' of https://github.com/WoltLab/com.woltlab.wcf.conversation into 5.4
Alexander Ebert [Fri, 24 Sep 2021 07:41:24 +0000 (09:41 +0200)]
Merge branch '5.4' of https://github.com/WoltLab/com.woltlab.wcf.conversation into 5.4

3 years agoRelease 5.4.8 dev 2 5.4.8_dev_2
Alexander Ebert [Fri, 24 Sep 2021 07:41:04 +0000 (09:41 +0200)]
Release 5.4.8 dev 2

3 years agoRun php-cs-fixer using PHP 8.0
Tim Düsterhus [Fri, 24 Sep 2021 07:37:32 +0000 (09:37 +0200)]
Run php-cs-fixer using PHP 8.0

3 years agoMerge pull request #157 from WoltLab/attachment-orphan
Tim Düsterhus [Thu, 23 Sep 2021 11:41:19 +0000 (13:41 +0200)]
Merge pull request #157 from WoltLab/attachment-orphan

Prevent method calls on `null` in ConversationMessageAttachmentObjectType::canDownload()

3 years agoPrevent method calls on `null` in ConversationMessageAttachmentObjectType::canDownload()
Tim Düsterhus [Thu, 23 Sep 2021 10:08:02 +0000 (12:08 +0200)]
Prevent method calls on `null` in ConversationMessageAttachmentObjectType::canDownload()

This may happen for attachments where the corresponding conversation /
conversation message no longer exists.

3 years agoRefactor logic in ConversationAction::markAsRead()
Tim Düsterhus [Thu, 23 Sep 2021 08:49:52 +0000 (10:49 +0200)]
Refactor logic in ConversationAction::markAsRead()

see WoltLab/com.woltlab.wbb#455

3 years agoRelease 5.4.8 dev 1 5.4.8_dev_1
Alexander Ebert [Wed, 22 Sep 2021 16:37:02 +0000 (18:37 +0200)]
Release 5.4.8 dev 1

3 years agoUpdating minified JavaScript files
WoltLab [Wed, 22 Sep 2021 16:10:55 +0000 (16:10 +0000)]
Updating minified JavaScript files

3 years agoMerge branch '5.4'
Tim Düsterhus [Tue, 21 Sep 2021 08:35:23 +0000 (10:35 +0200)]
Merge branch '5.4'

3 years agoDisable npm cache in javascript workflow
Tim Düsterhus [Tue, 21 Sep 2021 08:34:23 +0000 (10:34 +0200)]
Disable npm cache in javascript workflow

3 years agoUpdate npm dependencies
Tim Düsterhus [Tue, 21 Sep 2021 08:30:48 +0000 (10:30 +0200)]
Update npm dependencies

3 years agoSkip the JS for invisible participant if the user lacks the permissions
Alexander Ebert [Mon, 20 Sep 2021 16:17:25 +0000 (18:17 +0200)]
Skip the JS for invisible participant if the user lacks the permissions

3 years agoIncorrect check to display the signatur
Alexander Ebert [Mon, 20 Sep 2021 14:50:53 +0000 (16:50 +0200)]
Incorrect check to display the signatur

This check was effectively redundant since 3.0, but worked until a legacy trait was removed in 5.4. This was overlooked and caused signatures to be hidden in 5.4.

Fixes 381191f4f1e26cdfff406e4ac6240c063d816068

3 years agoMerge branch '5.4'
Alexander Ebert [Thu, 9 Sep 2021 10:00:45 +0000 (12:00 +0200)]
Merge branch '5.4'

3 years agoMerge branch '5.3' into 5.4
Alexander Ebert [Tue, 31 Aug 2021 13:57:56 +0000 (15:57 +0200)]
Merge branch '5.3' into 5.4

3 years agoMerge branch '5.2' into 5.3
Alexander Ebert [Tue, 31 Aug 2021 12:32:58 +0000 (14:32 +0200)]
Merge branch '5.2' into 5.3

3 years agoRelease 5.2.15 5.2.15
Alexander Ebert [Tue, 31 Aug 2021 11:41:53 +0000 (13:41 +0200)]
Release 5.2.15

3 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Tue, 31 Aug 2021 11:30:54 +0000 (13:30 +0200)]
Merge branch '3.1' into 5.2

3 years agoRelease 3.1.23 3.1.23 3.1.final
Alexander Ebert [Tue, 31 Aug 2021 10:34:34 +0000 (12:34 +0200)]
Release 3.1.23

3 years agoMerge branch '5.4'
Tim Düsterhus [Thu, 26 Aug 2021 10:34:43 +0000 (12:34 +0200)]
Merge branch '5.4'