diff --git a/.changeset/famous-aliens-smash.md b/.changeset/famous-aliens-smash.md deleted file mode 100644 index 53af7aaf..00000000 --- a/.changeset/famous-aliens-smash.md +++ /dev/null @@ -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. diff --git a/.changeset/fast-years-battle.md b/.changeset/fast-years-battle.md deleted file mode 100644 index 1ca6aaa9..00000000 --- a/.changeset/fast-years-battle.md +++ /dev/null @@ -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. diff --git a/.changeset/gentle-rockets-punch.md b/.changeset/gentle-rockets-punch.md deleted file mode 100644 index 225119c8..00000000 --- a/.changeset/gentle-rockets-punch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@the-draupnir-project/matrix-protection-suite": minor ---- - -Fix method names around room v12 privileged creators to no longer have typos diff --git a/.changeset/icy-doodles-create.md b/.changeset/icy-doodles-create.md deleted file mode 100644 index 38f27b20..00000000 --- a/.changeset/icy-doodles-create.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"draupnir": patch ---- - -Add version command for appservice mode. diff --git a/.changeset/orange-pots-win.md b/.changeset/orange-pots-win.md deleted file mode 100644 index 47a01cb6..00000000 --- a/.changeset/orange-pots-win.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"draupnir": major ---- - -Require Self Service Provisioning to be Manually Enabled in config. Breaks -existing workflows. diff --git a/.changeset/perky-buckets-work.md b/.changeset/perky-buckets-work.md deleted file mode 100644 index e253871a..00000000 --- a/.changeset/perky-buckets-work.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"draupnir": major ---- - -All installations from source will need to change how they install, build, and -start Draupnir. diff --git a/.changeset/ripe-teeth-dig.md b/.changeset/ripe-teeth-dig.md deleted file mode 100644 index 5b27151b..00000000 --- a/.changeset/ripe-teeth-dig.md +++ /dev/null @@ -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. diff --git a/.changeset/sixty-spiders-travel.md b/.changeset/sixty-spiders-travel.md deleted file mode 100644 index 44032c23..00000000 --- a/.changeset/sixty-spiders-travel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"draupnir": patch ---- - -Add changesets to manage changes. diff --git a/.changeset/sunny-cooks-jump.md b/.changeset/sunny-cooks-jump.md deleted file mode 100644 index 33a21eb4..00000000 --- a/.changeset/sunny-cooks-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"draupnir": minor ---- - -Add appservice provision limits and add appservice force provision command. diff --git a/.changeset/tidy-heads-tickle.md b/.changeset/tidy-heads-tickle.md deleted file mode 100644 index d8fc67ac..00000000 --- a/.changeset/tidy-heads-tickle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"draupnir": major ---- - -Updated minimum engine version to node 24. diff --git a/.changeset/wild-corners-lie.md b/.changeset/wild-corners-lie.md deleted file mode 100644 index 27ffd3a6..00000000 --- a/.changeset/wild-corners-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"draupnir": patch ---- - -Add branch information to status command output. diff --git a/CHANGELOG.md b/CHANGELOG.md index 13989f32..0973b803 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/apps/draupnir/package.json b/apps/draupnir/package.json index 121ec358..d8036c0e 100644 --- a/apps/draupnir/package.json +++ b/apps/draupnir/package.json @@ -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" }, diff --git a/package-lock.json b/package-lock.json index e9bbeb4c..3a8c2e3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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": { diff --git a/packages/interface-manager/package.json b/packages/interface-manager/package.json index 2095b56b..20057fbc 100644 --- a/packages/interface-manager/package.json +++ b/packages/interface-manager/package.json @@ -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, diff --git a/packages/matrix-basic-types/package.json b/packages/matrix-basic-types/package.json index 314a1a88..2bcc580a 100644 --- a/packages/matrix-basic-types/package.json +++ b/packages/matrix-basic-types/package.json @@ -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, diff --git a/packages/matrix-protection-suite-for-matrix-bot-sdk/CHANGELOG.md b/packages/matrix-protection-suite-for-matrix-bot-sdk/CHANGELOG.md index d8ff5b1b..1021eb1a 100644 --- a/packages/matrix-protection-suite-for-matrix-bot-sdk/CHANGELOG.md +++ b/packages/matrix-protection-suite-for-matrix-bot-sdk/CHANGELOG.md @@ -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 diff --git a/packages/matrix-protection-suite-for-matrix-bot-sdk/package.json b/packages/matrix-protection-suite-for-matrix-bot-sdk/package.json index 728666d7..eb754316 100644 --- a/packages/matrix-protection-suite-for-matrix-bot-sdk/package.json +++ b/packages/matrix-protection-suite-for-matrix-bot-sdk/package.json @@ -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" } } diff --git a/packages/matrix-protection-suite/CHANGELOG.md b/packages/matrix-protection-suite/CHANGELOG.md index 1d64bca5..6ba6370a 100644 --- a/packages/matrix-protection-suite/CHANGELOG.md +++ b/packages/matrix-protection-suite/CHANGELOG.md @@ -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`. diff --git a/packages/matrix-protection-suite/package.json b/packages/matrix-protection-suite/package.json index b79efa70..7f3f3234 100644 --- a/packages/matrix-protection-suite/package.json +++ b/packages/matrix-protection-suite/package.json @@ -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" } } diff --git a/packages/mps-interface-adaptor/CHANGELOG.md b/packages/mps-interface-adaptor/CHANGELOG.md index 1d8ecf23..5436d5ab 100644 --- a/packages/mps-interface-adaptor/CHANGELOG.md +++ b/packages/mps-interface-adaptor/CHANGELOG.md @@ -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 diff --git a/packages/mps-interface-adaptor/package.json b/packages/mps-interface-adaptor/package.json index 689b14bb..6556c2ac 100644 --- a/packages/mps-interface-adaptor/package.json +++ b/packages/mps-interface-adaptor/package.json @@ -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" } }