Skip to content

Releases: the-draupnir-project/Draupnir

v2.4.1

23 Jun 20:19
e42ef15

Choose a tag to compare

[v2.4.1] - 2025-06-23

Fixed

  • Fixed an issue where protection config values were not validated or substituted with default values when protections were loaded. This effected the RoomTakedownProtection as described in #911 reported by @FSG-Cat.

v2.4.0

23 Jun 11:44
548d304

Choose a tag to compare

[v2.4.0] - 2025-06-23

Added

  • Implemented /ping for synapse-http-antispam. It is now possible to check if synapse is misconfigured by searching for Successfully pinged antispam server with request ID in any worker log.

  • It is now possible to configure the symbol prefix (by default !) used for Draupnir commands by @FSG-Cat.

  • The RoomTakedownProtection now sources rooms from the Synapse admin API aswell as synapse-http-antispam.

Changed

  • Room discovery notifications are now disabled by default. This is because if enabled initially, they are likely to flood your management room with room details that you will never go through.

Fixed

  • Bringing Draupnir into safe mode would not disable and dispose of enabled protections.

v2.3.1

29 May 19:07
ee76799

Choose a tag to compare

[v2.3.1] - 2025-05-29

Fixed

  • RoomTakedownProtection would fail to creat a notification room if it the
    homeserver at any point failed to invite remote users. We invite users to the
    room separately.

  • RoomTakedownProtection would invite non joined members of the mangagement
    room to the newly created notification room. Including left and banned users.

v2.3.0

29 May 17:55
05d388d

Choose a tag to compare

[v2.3.0] - 2025-05-29

This update stabilizes several features for homeserver administrators that were developed in the v2.3.0-beta programme.

Please see homeserver administration in the documentation for an overview of server admin features.

Highlights

  • Support for synapse-http-antispam to replace the legacy Mjolnir antispam module.
  • Autosuspension for resident users matching watched policy rules.
  • Takedowns as an alternative to conventional bans. takedown marks users, rooms, or servers with a policy that means any content associated with the entity should be removed and takendown. This is a much stronger consequence than ban and is reserved for illegal or intolerable content. See MSC4204 for details. This command works in conjunction with the new Room Takedown Protection
  • There is now a generic page for the homeserver administrative features we have added to Draupnir. Please try them out and give us your thoughts in #draupnir:matrix.org.
  • You can now search in the documentation thanks to @FSG-Cat.
  • The mention limit protection has been stabilised.

Added

  • --http-antispam-authorization-path option by @TheArcaneBrony to allow loading the synapse-http-antispam authorization token from a file on systems using systemd credentials.

  • Booleans and quoted strings are now supported by the command reader. Thanks to @mtippmann and @ll-SKY-ll.

  • A policy remove command has been added to remove policies by literal without unbanning users or any other consequences.

Changed

  • The MentionLimitProtection has been stabilised and configuration settings have been added. The old experimental version of the protection was using a file based configuration that is no longer used. The protection will now warn users and the ban.

  • The shutdown room command has been improved so that the content violation notification can be toggled with a new --notify option. The command also now uses V1 of the delete rooms API rather than V2 simply because for unknown reasons clients are not getting the leave events propagated to them properly with V2.

  • The room discovery notifications from the RoomTakedownProtection have been moved to their own room.

Fixed

  • The ServerBanSynchronisation is smarter about applying ACL's when there are lots of policy changes.
  • Typo in the protections show command fixed by @HarHarLinks.
  • Typo in HomeserverUserPolicyProtection fixed by @ll-SKY-ll.
  • Negative integers can now be entered into the markdown reader.
  • Fixed an issue where draupnir would write MSC4205 hashed entities without the proper namespacing. Reported by @deepbluev7.
  • Stopped content violation notifications appearing on room takedown.

Special thanks

Thanks to @Mikaela @nexy7574 @tulir @FSG-Cat @MTRNord @enbea @ll-SKY-ll @cdesnoai for their contributions in the 2.3.0-beta that have made this release possible.

v2.3.0-beta.2

14 Apr 17:37
656b8de

Choose a tag to compare

v2.3.0-beta.2 Pre-release
Pre-release

[v2.3.0-beta.2]

Fixed

  • !draupnir deactivate <user id> --no-confirm was backwards.

  • --purge-messages on user deactivation was broken.

Apologies, normally we'd have integration tests for this but we are time limited
at the moment.

v2.3.0-beta.1

14 Apr 15:31
720d703

Choose a tag to compare

v2.3.0-beta.1 Pre-release
Pre-release

[v2.3.0-beta.1]

Added

  • A new protection has been added to automatically suspend resident users
    matching policies from Draupnir's watched lists
    (HomeserverUserPolicyProtection). If the policies match
    automaticallyRedactForReasons then the management will also be prompted for
    a purging deactivation to remove the user's messages.

  • !draupnir deactivate <user id> now prompts for confirmation and has a
    --purge-messages option, which will restrict the user's account while all of
    their messages are redacted.

  • !draupnir unrestrict <user id> command that will unsuspend / unshadowban the
    user's account.

  • !draupnir suspend <user id> command that uses the synapse admin API to
    suspend users.

Changed

  • The Redaction Synchronisation Protection has been improved in a few ways:
    • Invitations in protected rooms will be rejected as part of the redaction
      process when they are sent from users being redacted (e.g. as a brigading
      tactic).
    • User redaction will now be triggered on bans and the reason will be scanned
      for automaticallyRedactForReasons from Draupnir's config.

Fixed

  • The Draupnir bot itself is now excluded from the MentionLimitProtection thanks
    to @nexy7574 in #815.

  • MessageIsMediaProtection now correctly checks for noop thanks to @FSG-Cat in
    #807.

  • Redactions are now ignored in BasicFloodingProtection thanks to @nexy7574 in
    #805

  • @FSG-Cat has changed some more mentions of Mjolnir to Draupnir in
    #796.

v2.3.0-beta.0

28 Mar 11:35
d7df581

Choose a tag to compare

v2.3.0-beta.0 Pre-release
Pre-release

[v2.3.0-beta.0]

In this update we want feedback on new homeserver administrative features we have added to Draupnir. Please try them out and give us your thoughts in #draupnir:matrix.org.

Added

  • New server administrative features have been added to Draupnir. For an overview see homeserver administration in our documentation.

  • A new Room Takedown Protection has been added to assist homeserver administrators in managing the rooms their server is joined to. This includes a room discovery utility where Draupnir will notify the management room with details of rooms it has discovered on the homeserver (configurable with a threshold for joined members). The intent of this protection is to keep rooms with intolerable or illegal content off of the homeserver, including invitations to these rooms. Room takedown is backed up by policy list support. Added by @Gnuxie and @enbea.

  • A new Block invitations on server protection to assist homeserver administrators in preemptively blocking invitations from users or rooms listed in Draupnir's watched policy rooms. This replaces the functionality in the legacy Mjolnir antispam module and is compatible with Synapse workers.

  • A new takedown command has been added as an alternative to the ban command. takedown marks users, rooms, or servers with a policy that means any content associated with the entity should be removed and takendown. This is a much stronger consequence than ban and is reserved for illegal or intolerable content. See MSC4204 for details. This command works in conjunction with the new Room Takedown Protection

  • Support has been added for MSC4205: Hashed moderation policy entities. Currently we only support revealing hashed entities for rooms. Except from in the Block invitations on server protection. The takedown command will hash entities by default. These policies require your Draupnir (or homeserver) to have encountered a user, room, or server before it can reveal the moderation policy. This stops policy rooms from becoming an address book for abuse.

  • Support for synapse-http-antispam has been added to Draupnir and protections. Thanks to @tulir.

  • Room state backing store can now be used in the appservice deployment mode. Contributed by @MTRNord in #753.

  • An experimental protection to stop excess membership changes. This protection will send a warning before kicking users that are changing their membership event frequently. All of which can be configured.

  • A schema has been added to the appservice config file to prevent simple mistakes.

Fixed

  • An issue with the RoomStateBackingStore for users on docker with read-only containers where SQLite temporary files couldn't be created. Reported by @cdesnoai and @TheArcaneBrony in #746. Fixed by @enbea.

  • An issue where errors from appservice startup would not propagate to the top level.

  • Old config properties have been removed from default.yaml thanks to @ll-SKY-ll.

  • Typo in BasicFloodingProtection thanks to @Mikaela.

v2.2.0

03 Mar 19:03
6ad94dc

Choose a tag to compare

Changed

  • ⚠️ The unban command no longer accepts a list argument. The unban command
    now features a preview and confirmation prompt unless the --no-confirm
    option is provided. This preview shows all the policies that will have to be
    removed to unban a user, all the rooms they will need to be unbanned from, and
    any rooms that they will be invited to if the --invite option is used.
    Accepting the prompt will then unban the user or entity from all watched lists
    and all protected rooms.
    image

  • The unban prompt in the ban propagation protection now includes a preview of
    which rules will be removed and which rooms the user will be unbanned from.

  • !draupnir protections show now merges protection setting documentation and
    current values into one section.
    image

  • Compatible capability providers are shown for the capability set in the
    !draupnir protections show command.
    image

  • !draupnir rooms now shows a date alongside each room for when the room state
    revision was last updated. The room layout has been changed to show which
    rooms are protected, joined, and also show watched lists.

Added

  • Simulated capabilities for all available protection capabilities. These allow
    protections to run without effects.

  • A command !draupnir protections capability reset <protection name> to
    restore the default capability set.

  • A !draupnir rules matching members command has been added to show all policy
    rules that match members to protected rooms.

Fixed

  • Improved logging for unknown errors (see
    #733).

  • The unban command no longer reinvites users by default.

  • Improve error handling in parts of the room state backing store. Reported by
    @TheArcaneBrony. We are still trying to investigate what is causing the errors
    in the first place in
    #691 and need
    help.

  • Fixed a bug where Draupnir would reply with a very hard to understand error
    message to commands that had provided an extra argument.

Special thanks

Special thanks to all contributors who helped in this release: @daedric7,
@FSG-Cat, @JokerGermany, @ll-SKY-ll, @mahdi1234, @MTRNord, and @TheArcaneBrony

v2.1.0

02 Feb 11:07
bcfdfdf

Choose a tag to compare

Fixed

  • config.protectAllJoinedRooms was unimplemented in versions v2.0.2 and
    below. This went under the radar in the beta programme because it would have
    only been detectable for first time testers migrating over. Reported by
    @cremesk and @HReflex.

  • Draupnir will now automatically unprotect rooms when the bot is kicked, and
    send an alert to the management room.

  • config.commands.allowNoPrefix will include the full command arguments again.
    Reported by @JacksonChen666 and @heftig in #707.

  • Fixed an issue where the ProtectedRoomsSet would not be disposed
    on entering safe mode via the !draupnir safe mode command. This
    would cause duplicate protections to apply out of date policies to
    protected rooms. Reported by @TheArcaneBrony in
    #687.

  • An issue where sometimes Draupnir would crash if it were unable to
    fetch its own profile from the homeserver. We just fallback to
    nothing if this was the case
    #703. Reported
    by @JokerGermany i think.

Added

  • RoomSetBehaviourProtection to add the
    config.protectAllJoinedRoomsFunctionality. This is also responsible for
    unprotecting rooms as the bot is removed from them.

  • The !draupnir rooms command will now distinguish between joined
    and protected rooms, joined but unprotected rooms, and protected but
    parted rooms.

Thank you to everyone who has been promptly reporting bugs and making these
fixes possible <3

v2.0.2

24 Jan 16:29
8764a17

Choose a tag to compare

[v2.0.2] 2025-01-24

⚠️ If you are upgrading from Mjolnir or a previous version of Draupnir, please not that the config option protectAllJoinedRooms is not working. See #706.

Added

  • The unban command now has an --invite option to re-invite any users that are unbanned by the command. By @nexy7574 in #666.

Fixed

  • Draupnir will now refresh the room state cache in the background after startup when the backing store is in use. Fixed by @Gnuxie.

  • Fixed issues where the bot wouldn't respond to pings from some SchildiChat, Element Web, and Element X. Reported by @Cknight70 in #686. Fixed by @Gnuxie in #699

  • Fixed an issue where Draupnir would ignore the Retry-After http header and so not rate limit Draupnir properly. Reported and fixed by @nexy7574 in #694.

  • Draupnir will respond when the allowNoPrefix config option is used. Reported by @JacksonChen666 in #678. Fixed by @Gnuxie in #699.

  • Draupnir will now ignore newlines in secret files, previously Draupnir was appending the newline to the secrets. Reported and fixed by @TheArcaneBrony in #696.