Bootstrap packages onto npm now we're monorepo. (#1069)

Preperation for 3.0.0

Part of https://github.com/the-draupnir-project/planning/issues/102.

For some dumb reason the CHANGELOG from mps was never added but ok.
This commit is contained in:
Gnuxie
2026-04-02 18:44:00 +01:00
committed by GitHub
parent f951a48419
commit a8d2ea3d6d
22 changed files with 681 additions and 99 deletions
-8
View File
@@ -1,8 +0,0 @@
---
"@the-draupnir-project/matrix-protection-suite": patch
"draupnir": patch
---
Fixed a bug where User policies of any recommendation would result in the
MemberBanSynchronisationProtection banning users. This is was a particularly
important issue for compatibility with Meowlnir.
-6
View File
@@ -1,6 +0,0 @@
---
"draupnir": minor
---
Draupnir will crash at startup if it does not have the ability to send state
events to the mangement room.
-5
View File
@@ -1,5 +0,0 @@
---
"@the-draupnir-project/matrix-protection-suite": minor
---
Fix method names around room v12 privileged creators to no longer have typos
-5
View File
@@ -1,5 +0,0 @@
---
"draupnir": patch
---
Add version command for appservice mode.
-6
View File
@@ -1,6 +0,0 @@
---
"draupnir": major
---
Require Self Service Provisioning to be Manually Enabled in config. Breaks
existing workflows.
-6
View File
@@ -1,6 +0,0 @@
---
"draupnir": major
---
All installations from source will need to change how they install, build, and
start Draupnir.
-8
View File
@@ -1,8 +0,0 @@
---
"draupnir": major
---
Draupnir now must be started with the --draupnir-config option to provide a path
to the config file. Depending on legacy `config` package behaviour was
deprecated in
https://github.com/the-draupnir-project/Draupnir/releases/tag/v2.0.0-beta.8.
-5
View File
@@ -1,5 +0,0 @@
---
"draupnir": patch
---
Add changesets to manage changes.
-5
View File
@@ -1,5 +0,0 @@
---
"draupnir": minor
---
Add appservice provision limits and add appservice force provision command.
-5
View File
@@ -1,5 +0,0 @@
---
"draupnir": major
---
Updated minimum engine version to node 24.
-5
View File
@@ -1,5 +0,0 @@
---
"draupnir": patch
---
Add branch information to status command output.
+53 -2
View File
@@ -8,10 +8,61 @@ SPDX-License-Identifier: CC-BY-SA-4.0
All notable changes to Draupnir will be kept in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to
This project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] - 2026-04-02
### Major Changes
- 🚨 All uncontainerised installations from source will need to change how they
install, build, and start Draupnir. If you installed Draupnir by following our
debian instructions, you will need to check that your systemd unit file
`ExecStart`
[matches our documentation](https://the-draupnir-project.github.io/draupnir-documentation/bot/setup_debian#example-systemd-service),
and follow our
[upgrade steps](https://the-draupnir-project.github.io/draupnir-documentation/bot/setup_debian#updating-the-bot).
For custom source installations you can see the basics of the steps
[here](https://the-draupnir-project.github.io/draupnir-documentation/bot/bot/setup_selfbuild),
and note that the way Draupnir is started has changed. Any installation using
images from docker do not need to change the way Draupnir is started.
- 🚨 The minimum supported node.js version has changed from 20 to **24**. This
is simply a result of node 20 approaching EOL and 24 being the active LTS.
- 🚨 Draupnir now must be started with the --draupnir-config option to provide a
path to the config file. Depending on legacy `config` package behaviour was
deprecated in
https://github.com/the-draupnir-project/Draupnir/releases/tag/v2.0.0-beta.8.
Most setups will have already made the change as this has been the documented
way to provide a config file since the beginning of the project.
- For appservice deployments, self service provisioning (via invitations) has to
be to be manually enabled in the appservice config file. Contributed by
@FSG-Cat.
### Minor Changes
- Draupnir will crash at startup if it does not have the ability to send state
events to the mangement room. Most installs will already have this permission,
but in any case the error logging for this is self explanatory. Reported by
@nono-lqdn.
- 30611aa: Add appservice provision limits and add appservice force provision
command. Contributed by @FSG-Cat.
### Patch Changes
- 5870c02: Fixed a bug where User policies of any recommendation would result in
the MemberBanSynchronisationProtection banning users. This is was a
particularly important issue for compatibility with Meowlnir. Contributed by
@nexy7574.
- 30611aa: Add version command to the appservice admin bot. Contributed by
@FSG-Cat.
- b4d105f: Add branch information to status command output. Contributed by
@FSG-Cat.
### Special thanks
Special thanks to our wonderful support community in
[#draupnir:matrix.org](https://matrix.to/#/#draupnir:matrix.org).
## [v2.8.0] - 2025-12-18
### Changed
+3 -3
View File
@@ -46,7 +46,7 @@
"@sinclair/typebox": "0.34.13",
"@the-draupnir-project/interface-manager": "4.2.6",
"@the-draupnir-project/matrix-basic-types": "1.5.0",
"@the-draupnir-project/mps-interface-adaptor": "file:../../packages/mps-interface-adaptor",
"@the-draupnir-project/mps-interface-adaptor": "0.6.0",
"@vector-im/matrix-bot-sdk": "^0.8.0-element.3",
"better-sqlite3": "^12.8.0",
"body-parser": "^1.20.2",
@@ -56,8 +56,8 @@
"js-yaml": "^4.1.0",
"jsdom": "^24.0.0",
"matrix-appservice-bridge": "^11.2.0",
"matrix-protection-suite": "file:../../packages/matrix-protection-suite",
"matrix-protection-suite-for-matrix-bot-sdk": "file:../../packages/matrix-protection-suite-for-matrix-bot-sdk",
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0",
"matrix-protection-suite-for-matrix-bot-sdk": "npm:@the-draupnir-project/matrix-protection-suite@5.0.0",
"pg": "^8.8.0",
"yaml": "^2.3.2"
},
+10 -10
View File
@@ -36,7 +36,7 @@
"@sinclair/typebox": "0.34.13",
"@the-draupnir-project/interface-manager": "4.2.6",
"@the-draupnir-project/matrix-basic-types": "1.5.0",
"@the-draupnir-project/mps-interface-adaptor": "file:../../packages/mps-interface-adaptor",
"@the-draupnir-project/mps-interface-adaptor": "0.6.0",
"@vector-im/matrix-bot-sdk": "^0.8.0-element.3",
"better-sqlite3": "^12.8.0",
"body-parser": "^1.20.2",
@@ -46,8 +46,8 @@
"js-yaml": "^4.1.0",
"jsdom": "^24.0.0",
"matrix-appservice-bridge": "^11.2.0",
"matrix-protection-suite": "file:../../packages/matrix-protection-suite",
"matrix-protection-suite-for-matrix-bot-sdk": "file:../../packages/matrix-protection-suite-for-matrix-bot-sdk",
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0",
"matrix-protection-suite-for-matrix-bot-sdk": "npm:@the-draupnir-project/matrix-protection-suite@5.0.0",
"pg": "^8.8.0",
"yaml": "^2.3.2"
},
@@ -14628,7 +14628,7 @@
},
"packages/matrix-protection-suite": {
"name": "@the-draupnir-project/matrix-protection-suite",
"version": "6.0.0",
"version": "7.0.0",
"license": "AFL-3.0",
"dependencies": {
"@gnuxie/typescript-result": "^1.0.0",
@@ -14652,7 +14652,7 @@
},
"packages/matrix-protection-suite-for-matrix-bot-sdk": {
"name": "@the-draupnir-project/matrix-protection-suite-for-matrix-bot-sdk",
"version": "4.0.2",
"version": "5.0.0",
"license": "AFL-3.0",
"dependencies": {
"@gnuxie/typescript-result": "^1.0.0",
@@ -14663,14 +14663,14 @@
"@types/glob-to-regexp": "^0.4.1",
"@types/node": "^24.12.0",
"@vector-im/matrix-bot-sdk": "0.8.0-element.3",
"matrix-protection-suite": "file:../matrix-protection-suite",
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0",
"typedoc": "^0.26.3"
},
"peerDependencies": {
"@sinclair/typebox": "0.34.13",
"@the-draupnir-project/matrix-basic-types": "1.5.0",
"@vector-im/matrix-bot-sdk": "^0.8.0-element.3",
"matrix-protection-suite": "file:../matrix-protection-suite"
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0"
}
},
"packages/matrix-protection-suite-for-matrix-bot-sdk/node_modules/@types/node": {
@@ -14786,17 +14786,17 @@
},
"packages/mps-interface-adaptor": {
"name": "@the-draupnir-project/mps-interface-adaptor",
"version": "0.5.3",
"version": "0.6.0",
"license": "Apache-2.0",
"devDependencies": {
"@types/node": "^24.12.0",
"matrix-protection-suite": "file:../matrix-protection-suite"
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0"
},
"peerDependencies": {
"@gnuxie/typescript-result": "^1.0.0",
"@sinclair/typebox": "^0.34.13",
"@the-draupnir-project/interface-manager": "^4.2.3",
"matrix-protection-suite": "file:../matrix-protection-suite"
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0"
}
},
"packages/mps-interface-adaptor/node_modules/@types/node": {
+1 -1
View File
@@ -12,7 +12,7 @@
},
"license": "Apache-2.0",
"repository": {
"url": "https://github.com/the-draupnir-project/interface-manager.git",
"url": "https://github.com/the-draupnir-project/Draupnir.git",
"type": "git"
},
"private": false,
+1 -1
View File
@@ -12,7 +12,7 @@
},
"license": "Apache-2.0",
"repository": {
"url": "https://github.com/the-draupnir-project/matrix-basic-types.git",
"url": "https://github.com/the-draupnir-project/Draupnir.git",
"type": "git"
},
"private": false,
@@ -8,10 +8,16 @@ SPDX-License-Identifier: CC-BY-SA-4.0
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to
This project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [5.0.0] - 2026-04-02
### Major changes
- The project scope and repository has changed to
@the-draupnir-project/Draupnir.
## [4.0.2] - 2025-10-13
### Fixed
@@ -1,6 +1,6 @@
{
"name": "@the-draupnir-project/matrix-protection-suite-for-matrix-bot-sdk",
"version": "4.0.2",
"version": "5.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
@@ -26,7 +26,7 @@
"@types/glob-to-regexp": "^0.4.1",
"@types/node": "^24.12.0",
"@vector-im/matrix-bot-sdk": "0.8.0-element.3",
"matrix-protection-suite": "file:../matrix-protection-suite",
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0",
"typedoc": "^0.26.3"
},
"dependencies": {
@@ -37,9 +37,9 @@
"@sinclair/typebox": "0.34.13",
"@the-draupnir-project/matrix-basic-types": "1.5.0",
"@vector-im/matrix-bot-sdk": "^0.8.0-element.3",
"matrix-protection-suite": "file:../matrix-protection-suite"
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0"
},
"publishConfig": {
"@gnuxie:registry": "https://registry.npmjs.org"
"access": "public"
}
}
+584 -4
View File
@@ -8,10 +8,590 @@ SPDX-License-Identifier: CC-BY-SA-4.0
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to
This project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] - 2024-07-30
## [7.0.0] - 2026-04-02
- Initial release.
### Major changes
- Project scope moved from @gnuxie to @the-draupnir-project
- the matrix-protection-suite now lives in the Draupnir monorepo
https://github.com/the-draupnir-project/Draupnir
### Minor Changes
- 7bb9d51: Fix method names around room v12 privileged creators to no longer
have typos
### Patch Changes
- 5870c02: Fixed a bug where User policies of any recommendation would result in
the MemberBanSynchronisationProtection banning users. This is was a
particularly important issue for compatibility with Meowlnir.
## [6.0.0] - 2025-12-12
### Changed
- `ServerConsequences` is no longer a generic capability provider and is now
specific to the `ServerBanSynchronisationProtection` (as it should have been
all along). The capability providers associated with the interface have now
been renamed which is a breaking change.
- The `ServerBanSynchronisationProtection` now depends on its own intent
projection for producing ACL updates.
### Added
- `SemanticType` abstraction in attempt to get the benefits of TDD without
creating meaningless tests. I don't mean to imply that TDD leads to
meaningless tests, but this abstraction helps ensure that all tests are
created in relation to an interface type and their reason to exist is
documented. As well as focussing on checking the behavioural contracts that
are normally implicit to interfaces. So it's an interesting feature.
- `HandleRegistry` abstraction to help modularise the "glue code" that sticks
protection handles up to their data sources. This is particularly important
because this glue code normally involves resource management (because
listeners are resources). And it's bad if resource management code exists in
an ad-hoc way. Handles are described with a `HandleDescription`, which are
then placed into a `HandleRegistryDescription` which describes the handles
available for a specific context type. And then a `HandleRegistry` which helps
bind the handles for a specific context and for specific plugins.
## [5.1.0] - 2025-11-21
### Added
- Generalised the various variations of the revision issuer abstraction into a
`Projection` interface.
- Added _Intent projections_ for the `MemberBanSynchronisation` and
`ServerBanSynchronisation` standard protections. These show what the
protections _intend_ to effect with capabilities before capabilities attempt
to realise that intent. Think of them as the effect and the capabilities as
the effect handler.
- All protections can make use of _intent projections_ but obviously migrating
the logic will take some time. Especially as the upstream revision issuers
have not been migrated to projections and may be missing detail that is
normally fetched from protection's arbitrary hooks. It's important to note
that the intent projections are deterministic. Whereas protections typically
have non-determinism mixed within them. To work around these instances you
will have to make input projections to act as sources of non determinism. And
this keeps all non determinism at the sources or sinks of the dataflow within
MPS.
- _Lifetimes_ now have ease of use methods for allocating implementations of the
``Symbol.dispose`/`Symbol.asyncDispose` methods.
## [5.0.0] - 2025-10-28
### Changed
- `Lifetime` abstraction introduced for resource management. Is meant to replace
adhoc `unregisterListener` methods.
https://github.com/the-draupnir-project/planning/issues/79. Protection
contructor API has been broken as a result as all protections now get a child
Lifetime from the `ProtectionManager` that they can atomically allocate
resources against.
## [4.1.0] - 2025-10-10
### Changed
- Protection settings are now stored before enabling the protection when
protection settings are changed. This is to prevent error loops when
protections modify their own settings.
## [4.0.0] - 2025-10-01
### Changed
- `PermalinkSchema` has been split into different schema for each kind of
matrix.to url. This wasn't done before because we didn't know how to make a
TypeBox transforms for the same base type work in a union.
## [3.13.0] - 2025-09-29
### Added
- `RoomVersionMirror['privilidgedCreators']` method for fetching creators from
the create event.
## [3.12.0] - 2025-09-25
### Changed
- Pagination has been reworked with a cleaner less stateful API.
### Added
- `KeyedBatchQueue` allows batching items in a queue around a costly operation
e.g. calls to `/messages`.
### Fixed
- `ReactionEvent` schema no longer declares content to be optional
## [3.11.0] - 2025-08-14
### Added
- `RoomCreateEvent` schema for `m.room.create`
- `RoomVersionMirror` for determining if a room version supports _prividlidged
creators_.
### Changed
- `PowerLevelsMirror` now needs to consider the create event and room version.
## [3.10.0] 2025-08-12
### Added
- Batches can now be cancelled.
## [3.9.0] - 2025-08-07
### Added
- Tombstone event schema.
## [3.8.0] - 2025-08-06
### Added
- Client capabilities negotiation to client platform.
## [3.7.1] - 2025-06-23
### Fixed
- Prevent compatible PersistentConfigData and PersistentConfigBackend. We had
instantiated a PersistentConfigBackend instance to provide to a dependency
requiring a PersistentConfigData instance. So we must now make these
interfaces mutually incompatible.
## [3.7.0] - 2025-06-23
### Added
- New concept of event mixin, which largely already exists within Matrix. These
are essentially groups of proprties that may appear in matrix events of
different types to render media. They are the basis of the "Extensible events"
series of MSCs.
- To parse mixins, we use description objects that implement the
`EventMixinDescription` interface.
- `handleTimelineEventMixins` callback has been added to the `Protection`
interface. This allows protections to handle specific pre-parsed mixins from
events.
### Changed
- Should events fail to parse in accordance to their schema, their `type` will
be changed to `me.marewolf.undecodable_content`, and the content will be
hidden behind `UnsafeContentKey`. This still allows their mixins to be
extracted and presented to protections.
## [3.6.1] - 2025-06-17
### Fixed
- Fixed a bug where protections were not disabled when the _protected rooms set_
was disposed.
## [3.6.0] - 2025-06-13
### Added
- `TimedGate` interface. The idea is just a simple scheduler for a background
task that will only allow 1 task to run at a time and 1 task to be scheduled
to run, without chaining. This is perfect for e.g. scanning the synapse room
directory or synchronising server ACL across a protected rooms set.
### Changed
- `ConstantPeriodBatch` is now cancellable.
## [3.5.0] - 2025-06-02
### Added
- `ClientPlatform` has been extended to include `toRoomReactionSender` and
`toRoomEventGetter`. Which are both capabilities for reacting to and fetching
individual events.
## [3.4.0] - 2025-05-29
### Fixed
- Stop using the unnamespaced `hashes` property in MSC4205 hashed entities when
writing policies.
### Changed
- The interface of `ProtectionsManager['changeProtectionSettings']` now returns
the new instance of the protection created by the protection description
factory. This is so that the method can be used from protection factories
themselves to alter protection settings.
## [3.3.0] - 2025-05-27
### Added
- Methods for find rooms by creators and the room creator's server as additional
info in the hash store.
## [3.2.0] - 2025-05-26
### Changed
- Change protection factories to be async. It's not clear why they weren't async
to begin with but this allows for more advanced factory code.
## [3.1.2] - 2025-05-20
### Fixed
- `ServerACLConsequences` no longer naively updates the server ACL in Matrix
rooms.
## [3.1.1] - 2025-04-13
### Fixed
- `isSimulated` property on the `Capability` interface was broken.
## [3.1.0] - 2025-03-28
### Added
- `destroy` method to hash store interface.
- `membersOfMembership` method to `RoomMembershipRevision`.
## [3.0.0] - 2025-03-23
### Added
- Introduced `matchType` enum onto `PolicyRule` splitting the `PolicyRule` type
into three variants:
- `Literal`
- `Glob`
- `HashedLiteral`
- The `PolicyRuleChangeType`enum to replace `SimpleChangeType` on
`PolicyRuleChange`.
- This brings a new variant `RevealedLiteral` for when a `HashedLiteral`
policy rule has been reversed by the `SHA256HashReverser`.
- Introduced the `HashedLiteral` `PolicyRule` variant whereby `entity` is
missing and is replaced with a `Record` mapped from algorithm to hash.
- The `SHA256HashReverser` has been added to reverse policies in
_PolicyRoomRevisionIssuers_ created by a `PolicyRoomManager`. This works in
conjunction with a store to match `HashedLiteral` policy rules against known
entity literals. Any matches will then be given the the
`PolicyRoomRevisionIssuer` to revise their `currentRevision` and emit a
revision event with the change `RevealedLiteral`.
- The `SHA256HashStore` interface has been created to store reversed hashes for
the `SHA256HashReverser`. No implementation is provided in the
matrix-protection-suite you must bring your own. Support for reversing
policies is currently focussed on rooms. We haven't added a way to reverse
membership policies yet... we will probably do this at the
`RoomMembershipRevisionIssuer` level by only calculating the hash at true
first join. We will probably also add a way for the hash function to be
injected so that you can depend on Subtle or node crypto.
### Changed
- `reason` is now optional on policy rule events to support the
`org.matrix.msc4204.takedown` recommendation.
- The `PolicyListRevision` interface has new utilities for dealing with hashed
policies and the interface has changed to accomidate for them.
- `PolicyRuleChange['changeType']` uses the `PolicyRuleChangeType` enum.
## [2.10.0] - 2025-02-12
### Added
- Introduced simulated capabilities. All of the Standard capabilities now have a
simulated version that have no effects.
- Capability renderers can now designate themselves as the default renderer for
a capability interface.
- Only one simulated capability and default renderer can be associated with a
capability interface.
## [2.9.0] - 2025-02-10
### Added
- Introduced a new `WatchedPolicyRooms` abstraction by factoring out
`PolicyRoomRevision` issuer managemenent from `PolicyRoomsConfig`. This now
replaces `PolicyRoomsConfig` and the `issuerManager` property in the protected
rooms set.
- Expose a way to get the `time` a `Revision` was created.
### Fixed
- `revisionID` is now exported on `StateRevision`.
## [2.8.0] - 2025-02-03
### Added
- `findCompatibleCapabilityProviders` function.
### Fixed
- Improved descriptions of all standard capability providers.
## [2.7.0] - 2025-02-01
### 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.
## [2.6.0] - 2025-01-24
### Changed
- `StandardRoomStateRevisionIssuer` now accepts the `RoomStateGetter` capability
rather than a callback for fetching room state.
### Removed
- `RoomStateManager['getRoomState']` has been removed and the same functionality
is now provided by by the `RoomStateGetter` capability
### Added
- `RoomStateGetter` capability to fetch room state from a room.
## [2.5.2] - 2025-01-18
### Fixed
- Fix SchemedMatrixData putting the wrong version number into data. Sadly a
complication of https://github.com/the-draupnir-project/Draupnir/issues/560.
## [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.
## [2.5.0] - 2025-01-12
### Added
- `RoomInviter` to `ClientPlatform`.
## [2.4.0] - 2025-01-10
### Fixed
- `StandardProtectionsConfig` now uses the provided `SchemedDataManager` to
persist the config while disabling protections. This was a bug, it was always
supposed to use the `SchemedDataManager` to persist the version number
alongside the serialized data. Fixes
https://github.com/the-draupnir-project/Draupnir/issues/560.
- The `SynapseAdminReport['name']` property is now appropriately unioned with
`null`.
### Added
- The `user_id` field is now present on the `SynapseAdminReport` schema.
- Access to unique member count of `SetMembership` via
`SetMembership['uniqueMemberCount']`.
## [2.3.0] - 2025-01-08
### Added
- `SchemaMigration` now provides the schema version number to use rather than
relying on deltas to hand type the number and mess up.
### Changed
- Interface of `ServerConsequences['consequenceForServersInRoom']` has changed
so that it is possible to determine if any changes/effects have been made
after calling. Changed to support
https://github.com/the-draupnir-project/Draupnir/issues/450.
- The `ServerACLEvent` Schema wrongly described `content` as optional.
### Fixed
- There was a bug where unwatching a list would cause only the list you wanted
to unwatch to become watched.
https://github.com/the-draupnir-project/Draupnir/issues/647.
- Getting the name of the capability wrong for capability context glue will now
result in an error.
## [2.2.0] - 2025-01-06
### Added
- `SetMembershipRevision` for calculating whether a Matrix user is the member of
any room in a set of rooms.
- `MembershipPolicyRevision` for easily finding policy rules that match users
within a `SetMembershipRevision`. This revision stops protections or
capabilities from needing to calculate matches themselves.
### Fixed
- `DirectPolicyListRevisionIssuer` now emits the `'revision'` event when policy
rooms are watched and unwatched.
### Changed
- `UserConsequences` now accepts an argument for `TargetMember[]` rather than a
`PolicyListRevision`, so that it can be used in conjunction with the new
`MembershipPolicyRevision`.
## [2.1.1] - 2024-12-09
### Fixed
- A bug where `ConfigMirror['setValue']` would try encode a value that was
already encoded.
## [2.1.0] - 2024-12-04
### Added
- Added a method to protections manager for changing a capability in a
protection's capability set.
- Made capability provider set config actually persist by giving it a
PersistentConfigBackend.
## [2.0.0] - 2024-11-26
### Changed
- `ProtectionsManager` depends on three different kinds of config. Config for
capability providers, protection settings, and enabled protections.
### Removed
- `ProtectionSettings` are gone.
## [1.7.0] - 2024-10-10
### Added
- `JoinRulesEvent` and `JoinRulesEventContent` are now available to use.
## [1.6.0] - 2024-10-04
### Changed
- `ConfigParseError` and `ConfigPropertyError` now reference the relevant
`ConfigDescription`.
## [1.5.2] - 2024-10-02
### Fixed
- Having valid but unjoinable rooms in `ProtectedRoomsConfig` is now a
recoverable error.
## [1.5.1] - 2024-10-01
### Fixed
- Fixed a bug where the `MjolnirPolicyRoomsConfig` would show `undefined` in the
description of `ConfigPropertyErrors`.
## [1.5.0] - 2024-10-01
### Added
- `PersistentConfigData` helper for dynamically editing schemed config files,
and recovering from parse errors.
### Changed
- `MjolnirProtectedRoomsConfig`, `MjolnirWatchedListsConfig`,
`MjolnirEnanbledProtections` have all been migrated to use
`PersistentConfigData` with recovery options.
## [1.4.0] - 2024-09-11
### Changed
- Allow `RoomJoiner` to skip calling `/join`.
## [1.3.0] - 2024-09-11
### Changed
- Upgraded `@gnuxie/typescript-result`.
- Made `ActionException['toString']` clearer.
- Made it more clear which room is causing issues for the
`ProtectedRoomsManager` as it is created.
## [1.2.0] - 2024-09-09
### Added
- `DeclareRoomState` and associated helpers are now exported.
- This includes the `describeProtectedRoomsSet` utility which easily allows you
to fake a protected rooms set.
## [1.1.0] - 2024-08-26
### Added
- The `RoomMessageSender` capability is now available on `ClientPlatform`.
## [1.0.0] - 2024-08-16
### Changed
- The `Permalink` TypeBox Schema has been renamed to `PermalinkSchema`.
- I guess we're doing semver properly now? since weh.
## [0.24.0] - 2024-08-16
### Changed
- Depend upon `@the-draupnir-project/matrix-basic-types` to provide
`StringUserID`, `MatrixRoomReference`, `MatrixGlob`, and associated types.
- Depend upon `@gnuxie/typescript-result` to provide `ActionResult`.
@@ -1,6 +1,6 @@
{
"name": "@the-draupnir-project/matrix-protection-suite",
"version": "6.0.0",
"version": "7.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
@@ -43,6 +43,6 @@
"@the-draupnir-project/matrix-basic-types": "^1.5.0"
},
"publishConfig": {
"@gnuxie:registry": "https://registry.npmjs.org"
"access": "public"
}
}
+8 -2
View File
@@ -8,10 +8,16 @@ SPDX-License-Identifier: CC-BY-SA-4.0
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to
This project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.6.0] - 2026-04-02
### Minor changes
- Project source moved into the Draupnir monorepo
https://github.com/the-draupnir-project/Draupnir
## [0.5.3] - 2025-12-11
### Changed
+7 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@the-draupnir-project/mps-interface-adaptor",
"version": "0.5.3",
"version": "0.6.0",
"description": "",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@@ -17,18 +17,21 @@
},
"license": "Apache-2.0",
"repository": {
"url": "https://github.com/the-draupnir-project/mps-interface-adaptor.git",
"url": "https://github.com/the-draupnir-project/Draupnir.git",
"type": "git"
},
"private": false,
"devDependencies": {
"@types/node": "^24.12.0",
"matrix-protection-suite": "file:../matrix-protection-suite"
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0"
},
"peerDependencies": {
"@gnuxie/typescript-result": "^1.0.0",
"@sinclair/typebox": "^0.34.13",
"@the-draupnir-project/interface-manager": "^4.2.3",
"matrix-protection-suite": "file:../matrix-protection-suite"
"matrix-protection-suite": "npm:@the-draupnir-project/matrix-protection-suite@7.0.0"
},
"publishConfig": {
"access": "public"
}
}