Fixes a tonne of shite mare.
Importantly https://github.com/the-draupnir-project/Draupnir/issues/845.
And something @ll-SKY-ll mentioned in the draupnir room regarding the new MentionLimitProtection.
Added
- Quote syntax to quote strings.
- Boolean presentation type and translator to string.
Fixed
- Added a pathway to create negative integers.
- 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.
* Update RedactionSynchronisation for new protection apis.
* Rerwrite redaction synchronisation protection
* Reject invitations on ban.
* Add renderer and simulated redaction synchornisation capability.
* Reduce dependencies of redaction synchronisation protection.
* Allow RedactionSynchronisation to be unit tested.
* Update to MPS 3.1.0.
---------
Signed-off-by: Rory& <root@rory.gay>
Co-authored-by: Rory& <root@rory.gay>
* Set renderers and glue for new simulated capabilities.
https://github.com/the-draupnir-project/planning/issues/2.
* Distinguish simulated capability messages when rendering.
* Update for MPS 2.10.0
* Add `!protections capability reset <protection name>` command.
This will allow you to use the default capabilities for a protection.
* Update CHANGELOG for simulated capabilities.
Currently looks like this, we just don't have alternative capabilities yet:

* Include compatible capability providers in capability set.
* Update to MPS v2.8.0
This gives us the function to find compatible capability providers for
a capability interface.
* Improve description of capability providers some more.
* Iterate capability provider UX some more.
* Initial ProtectAllJoinedRoomsProtection.
We need something like this to implement `config.protectAllJoinedRooms`,
we also need something to go alongside that removes rooms as they
are added or removed.
it will probably be a behaviour of the same protection that we will
split out.
* Move it cos i cba and we need to merge with a protection to unprotect
on leave and ban.
* IDK i keep getting distracted i need my notebook back aaaa.
* Create RoomsSetBehaviourProtection out of redundant protections.
* Add toggle for RoomsSetBehaviour.
* Enable the RoomsSetBehaviour protection by default.
* Add the behaviour protection to protections index.
* Whoopsie unprotected parted rooms should actually call itself.
* Fix bugs meow.
* handleExternalInvite -> handleExternalMembership
* Make sure leave events get propagated in bot mode.
* Add batcher to ProtectJoinedRooms component.
* Hook into handleExternalMembership for RoomsSetBehaviour.
* Remove crap from fixtures.ts
* leave all rooms when starting integration tests.
* Change how protections are informed of membership.
* Add test for Joinig and protecting rooms on invite.
* Tidy up UnprotectPartedRooms rendering.
* Update for MPS v2.7.0
Added
- Generic item batching is now available for protections to use by
using the `StandardBatcher`.
Changed
- `Task` has been improved to be more liberal in the closures it
accepts. And `Task` now has more options for logging how tasks have
failed.
- The `Protection` callback `handleExternalInvite` has been renamed to
`handleExternalMembership`.
Fixed
- An issue where adding rooms to the protected rooms set more than
once could sometimes cause duplicate events to be propagated.
* Fix typo mare.
* Stop protecting rooms automatically when config.protectAllJoinedRooms is false.
* Update CHANGELOG.md
We have added a "command normaliser" to interface-manager that can cover all the edge cases for pinging the bot or prefixing a command.
Fixes https://github.com/the-draupnir-project/Draupnir/issues/678
Fixes https://github.com/the-draupnir-project/Draupnir/issues/686
* Use interface-manager's command normaliser.
There's still work to be done to make sure we can get ahold of the
displyaname.
* Fetch displayname for Draupnir for the command normaliser.
* Update to interface-manager@4.0.0
This gives us the new command normaliser
* Test UnbanCommand and UnbanPrompt have unbanned as a side effect.
You'd think it would be obvious, but clearly it hasn't been. Part of
the reason for it is just how un-ergonomic it used to be to verify
room state. Fortunately it's quite straight forward to do since MPS
has picked up. So now we can do it easily.
* Update for MPS 2.5.2.
- Fix SchemedMatrixData putting the wrong version number into data.
Sadly a complication of
https://github.com/the-draupnir-project/Draupnir/issues/560.
- Fix an issue where the implementation of the RoomUnbanner capability
was actually calling `/ban`.
Fixes https://github.com/the-draupnir-project/Draupnir/issues/667.
[2.5.1] - 2025-01-14
Fixed
- An issue with the `SetRoomMembershipRevisionIssuer` that would allow
duplicate listeners to be added to rooms that were already in the
set. This would cause lots of issues with downstream revision
listeners. We've hardened code downstream, e.g. with the
`MembershipPolicyRevisionIssuer`, in case this happens again.
Fixes https://github.com/the-draupnir-project/Draupnir/issues/258
Fixes https://github.com/the-draupnir-project/Draupnir/issues/408
Fixes https://github.com/the-draupnir-project/Draupnir/issues/409
* Create a way to only forward reports in WebAPIs.
Honestly, I'm going to revert this because I think I have found a
better way of testing the report poller.
* Begin improving and fixing the report poller.
We need to change the ReportManager so that we can interface it out
for testing. The reason being that the report poller is inactive
in the harness and so we can't use that with a protection handle
to test. Instead I want to instantiate a report poller with
a mocked report manager.
* Update integration test nginx to mirror reports to synapse.
We need this so that we can test the report poller without needing to
do gymnastics to selectively forward reports.
* Interface out ReportManager.
Needed so we can test the report poller without doing gymnastics with
setting up fake protections.
* Fix report poller from paginating over the same reports.
https://github.com/the-draupnir-project/planning/issues/38.
* Revert "Create a way to only forward reports in WebAPIs."
This reverts commit 59b335f658.
We don't need this anymore.
* Update for MPS v2.4.0
Gives us the synapse admin client, updates schema, and gives us the fix for https://github.com/the-draupnir-project/Draupnir/issues/560
* Stop using `setSerializedValue` on protection settings.
We don't need it now that we've updated the command reader.
* Update interface-manager and MPS.
* Enable standard presentation type translators.
This will fix issues with the ban command reason.
* Add command to change the active capability provider of a protection.
* Update MPS for persistent capability set config.
The command will actually persist the chosen capabilities
across startup.
I don't think this has been a problem but it messes up the dev environment
if you want to link all of draupnir's dependencies like matrix-protection-suite,
interface-manager and so on.