Compare commits

..

2 Commits

Author SHA1 Message Date
timedout a569222854 chore: Add newsfrag 2026-05-15 02:38:38 +01:00
timedout 8daffedac1 feat: Implement MSC4472 2026-05-15 02:34:20 +01:00
8 changed files with 99 additions and 54 deletions
+1 -1
View File
@@ -71,7 +71,7 @@ runs:
- name: Install timelord-cli and git-warp-time
if: steps.check-binaries.outputs.need-install == 'true'
uses: https://github.com/taiki-e/install-action@184183c2401be73c3bf42c2e61268aa5855379c1 # v2
uses: https://github.com/taiki-e/install-action@3235f8901fd37ffed0052b276cec25a362fb82e9 # v2
with:
tool: git-warp-time,timelord-cli@3.0.1
Generated
+56 -46
View File
@@ -949,7 +949,7 @@ dependencies = [
"lock_api",
"log",
"maplit",
"nix 0.31.3",
"nix 0.31.2",
"num-traits",
"parking_lot",
"rand 0.10.1",
@@ -1709,7 +1709,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
"windows-sys 0.52.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -2601,6 +2601,16 @@ version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
[[package]]
name = "iri-string"
version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20"
dependencies = [
"memchr",
"serde",
]
[[package]]
name = "itertools"
version = "0.13.0"
@@ -2761,9 +2771,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lettre"
version = "0.11.22"
version = "0.11.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0da65617f6cb926332d039cb578aad56178da86e128db6a1b09f4c94fa5b3349"
checksum = "dabda5859ee7c06b995b9d1165aa52c39110e079ef609db97178d86aeb051fa7"
dependencies = [
"async-trait",
"base64 0.22.1",
@@ -3103,9 +3113,9 @@ dependencies = [
[[package]]
name = "nix"
version = "0.31.3"
version = "0.31.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3"
dependencies = [
"bitflags",
"cfg-if",
@@ -3150,7 +3160,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
"windows-sys 0.60.2",
"windows-sys 0.61.2",
]
[[package]]
@@ -4164,7 +4174,7 @@ dependencies = [
[[package]]
name = "ruma"
version = "0.15.1"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"assign",
"js_int",
@@ -4183,7 +4193,7 @@ dependencies = [
[[package]]
name = "ruma-appservice-api"
version = "0.15.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"ruma-common",
@@ -4195,7 +4205,7 @@ dependencies = [
[[package]]
name = "ruma-client-api"
version = "0.23.1"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"assign",
@@ -4217,7 +4227,7 @@ dependencies = [
[[package]]
name = "ruma-common"
version = "0.18.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"base64 0.22.1",
@@ -4250,7 +4260,7 @@ dependencies = [
[[package]]
name = "ruma-events"
version = "0.33.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"indexmap",
@@ -4271,7 +4281,7 @@ dependencies = [
[[package]]
name = "ruma-federation-api"
version = "0.14.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"bytes",
"headers",
@@ -4294,7 +4304,7 @@ dependencies = [
[[package]]
name = "ruma-identifiers-validation"
version = "0.12.1"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"thiserror",
@@ -4303,7 +4313,7 @@ dependencies = [
[[package]]
name = "ruma-macros"
version = "0.18.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"cfg-if",
@@ -4319,7 +4329,7 @@ dependencies = [
[[package]]
name = "ruma-push-gateway-api"
version = "0.14.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"ruma-common",
@@ -4331,7 +4341,7 @@ dependencies = [
[[package]]
name = "ruma-signatures"
version = "0.20.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"base64 0.22.1",
"ed25519-dalek",
@@ -4347,7 +4357,7 @@ dependencies = [
[[package]]
name = "ruma-state-res"
version = "0.16.0"
source = "git+https://github.com/ruma/ruma.git?rev=aa266b1e15c782322ffcbd2574264ef74ad2ebe6#aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"ruma-common",
@@ -4428,7 +4438,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys",
"windows-sys 0.52.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -4487,7 +4497,7 @@ dependencies = [
"security-framework",
"security-framework-sys",
"webpki-root-certs",
"windows-sys 0.52.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -4611,9 +4621,9 @@ dependencies = [
[[package]]
name = "sentry"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "931a20b0da02350676e3d6d3c9028d58eaa448cf42a866712eec5845a505421e"
checksum = "e8ac94aab850a23d7507307cc505332ed2bafd36c65930dfc5c43610f9e9b477"
dependencies = [
"cfg_aliases",
"httpdate",
@@ -4631,9 +4641,9 @@ dependencies = [
[[package]]
name = "sentry-backtrace"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "911ee36abf5b7fa335fccd5f54361ba9c16baea5f0c3bb361a687b6c195c21cf"
checksum = "1b803539b9ec0bde4ad759bf07190f6c24062363d519790ac2552dd5a6b21232"
dependencies = [
"backtrace",
"regex",
@@ -4642,9 +4652,9 @@ dependencies = [
[[package]]
name = "sentry-contexts"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b9d7d469e9e22741c17ca23fb8b42d79861590eb7cf330f3da34fc1e4bc1bc6"
checksum = "7e09c2dadaaa7b2a6dd5e84650b70bbdba504e318a2059a7ff0b9eedc51ef336"
dependencies = [
"hostname",
"libc",
@@ -4656,9 +4666,9 @@ dependencies = [
[[package]]
name = "sentry-core"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "545dc562b6758d646ac19e1407f4ebc26d452111386743e03323464bc48bb2e0"
checksum = "56de6f8c10ed1b74543b9654b99d3d9a2d876bd5996f3ecd60afdc30ef40ad0e"
dependencies = [
"rand 0.9.4",
"sentry-types",
@@ -4669,9 +4679,9 @@ dependencies = [
[[package]]
name = "sentry-debug-images"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "660e9def38a573a869a182f7e90f58aaaa460f38b92b31fd1755ec537193bb48"
checksum = "e1524373dd0f1001eff4d323f0ce877ee47a9bcf109f6343d1e208752fd9c95f"
dependencies = [
"findshlibs",
"sentry-core",
@@ -4679,9 +4689,9 @@ dependencies = [
[[package]]
name = "sentry-log"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c13b9313bdd6a9db19e65ac0e4754e64dea6f18cdd15444656abb050db4538d"
checksum = "45ce87f3c93659f8ab95f0e62a80b63c2d49f2012980ae6b3c1abce29bd6cde2"
dependencies = [
"bitflags",
"log",
@@ -4690,9 +4700,9 @@ dependencies = [
[[package]]
name = "sentry-panic"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "772d9de150c8ca910c835353c85f434457348fdd21208f9b3da3574202b1dc5d"
checksum = "382b8f029465d2e2da7ef25bd08110e91817cfe9e2849ac0547359e0ae50f27e"
dependencies = [
"sentry-backtrace",
"sentry-core",
@@ -4700,9 +4710,9 @@ dependencies = [
[[package]]
name = "sentry-tower"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2abea154597936d5df2d39fbe8aac16d584de6b3572c70c39558764d9d2efe15"
checksum = "d83ec6e0890d678b012e901b891f07c73e489cee8dc51b8cbafd50ece3a09ee8"
dependencies = [
"http",
"pin-project",
@@ -4714,9 +4724,9 @@ dependencies = [
[[package]]
name = "sentry-tracing"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c51ec9620a4d398dcdf7ee90effbf8d8691cfa24e91978bfa8565cac039d4980"
checksum = "77782d2a65e141f20020ec59552aaf9449aeea64bd7624e20c114b8474c4a9ee"
dependencies = [
"bitflags",
"sentry-backtrace",
@@ -4727,9 +4737,9 @@ dependencies = [
[[package]]
name = "sentry-types"
version = "0.48.2"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "041359745a44dd2e14fe21b7510fe7ca8b5beffce6636a0b52e5bc7d5f736887"
checksum = "00c69667ff14f47aad798e6be2ad8409e350b3ab0b8d72b338b462ed35f7bcc4"
dependencies = [
"debugid",
"hex",
@@ -4760,7 +4770,7 @@ checksum = "dcc7fe48e34d02a97bc8e6253b8b91e5a47fe2c47eaacb5149cefbb69922eaf0"
dependencies = [
"ahash",
"annotate-snippets",
"base64 0.21.7",
"base64 0.22.1",
"encoding_rs_io",
"getrandom 0.3.4",
"granit-parser",
@@ -5040,7 +5050,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
dependencies = [
"libc",
"windows-sys 0.60.2",
"windows-sys 0.61.2",
]
[[package]]
@@ -5547,9 +5557,9 @@ dependencies = [
[[package]]
name = "tower-http"
version = "0.6.10"
version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51"
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
dependencies = [
"async-compression",
"bitflags",
@@ -5559,6 +5569,7 @@ dependencies = [
"http",
"http-body",
"http-body-util",
"iri-string",
"pin-project-lite",
"tokio",
"tokio-util",
@@ -5566,7 +5577,6 @@ dependencies = [
"tower-layer",
"tower-service",
"tracing",
"url",
]
[[package]]
@@ -6088,7 +6098,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys 0.52.0",
"windows-sys 0.61.2",
]
[[package]]
+4 -2
View File
@@ -343,8 +343,9 @@ version = "1.1.1"
# Used for matrix spec type definitions and helpers
[workspace.dependencies.ruma]
# version = "0.14.1"
git = "https://github.com/ruma/ruma.git"
rev = "aa266b1e15c782322ffcbd2574264ef74ad2ebe6"
#git = "https://github.com/ruma/ruma.git"
git = "https://github.com/timedoutuk/ruma.git"
rev = "9679644f410bf19fe71ec2ad55bce7faeee3de0f"
features = [
"appservice-api-c",
"client-api",
@@ -379,6 +380,7 @@ features = [
"unstable-msc4293",
"unstable-msc4406",
"unstable-msc4439",
"unstable-msc4472",
"unstable-extensible-events",
]
+1
View File
@@ -0,0 +1 @@
Implemented unstable support for MSC4472, starting to get the ball rolling on deprecating old room versions. Contributed by @nex.
+12 -2
View File
@@ -1,7 +1,11 @@
use std::collections::BTreeMap;
use axum::extract::State;
use conduwuit::{Result, Server};
use conduwuit::{
Result, Server,
info::room_version::{STABLE_ROOM_VERSIONS, UNSTABLE_ROOM_VERSIONS},
};
use itertools::Itertools;
use ruma::{
RoomVersionId,
api::client::discovery::get_capabilities::{
@@ -25,7 +29,13 @@ pub(crate) async fn get_capabilities_route(
body: Ruma<get_capabilities::v3::Request>,
) -> Result<get_capabilities::v3::Response> {
let available: BTreeMap<RoomVersionId, RoomVersionStability> =
Server::available_room_versions().collect();
Server::available_room_versions()
.filter(|(version, _)| {
(services.config.allow_unstable_room_versions
&& UNSTABLE_ROOM_VERSIONS.contains(version))
|| STABLE_ROOM_VERSIONS.contains(version)
})
.collect();
let mut capabilities = Capabilities::default();
capabilities.room_versions = RoomVersionsCapability::new(
+1 -1
View File
@@ -307,7 +307,7 @@ where
}
let sender_user = event.sender();
let type_ignored = IGNORED_MESSAGE_TYPES.contains(event.kind());
let type_ignored = IGNORED_MESSAGE_TYPES.binary_search(event.kind()).is_ok();
let server_ignored = services
.moderation
.is_remote_server_ignored(sender_user.server_name());
+22
View File
@@ -21,6 +21,16 @@ pub const STABLE_ROOM_VERSIONS: &[RoomVersionId] = &[
pub const UNSTABLE_ROOM_VERSIONS: &[RoomVersionId] =
&[RoomVersionId::V3, RoomVersionId::V4, RoomVersionId::V5];
pub const DEPRECATED_ROOM_VERSIONS: &[RoomVersionId] = &[
RoomVersionId::V3,
RoomVersionId::V4,
RoomVersionId::V5,
RoomVersionId::V6,
RoomVersionId::V7,
RoomVersionId::V8,
RoomVersionId::V9,
];
type RoomVersion = (RoomVersionId, RoomVersionStability);
impl crate::Server {
@@ -29,6 +39,13 @@ impl crate::Server {
self.supported_room_versions().any(is_equal_to!(*version))
}
pub fn version_is_deprecated(&self, version: &RoomVersionId) -> bool {
DEPRECATED_ROOM_VERSIONS
.iter()
.cloned()
.any(is_equal_to!(*version))
}
#[inline]
pub fn supported_room_versions(&self) -> impl Iterator<Item = RoomVersionId> + '_ {
Self::available_room_versions()
@@ -52,10 +69,15 @@ pub fn available_room_versions() -> impl Iterator<Item = RoomVersion> {
.iter()
.cloned()
.zip(once(RoomVersionStability::Unstable).cycle());
let deprecated_room_versions = DEPRECATED_ROOM_VERSIONS
.iter()
.cloned()
.zip(once(RoomVersionStability::Deprecated).cycle());
STABLE_ROOM_VERSIONS
.iter()
.cloned()
.zip(once(RoomVersionStability::Stable).cycle())
.chain(unstable_room_versions)
.chain(deprecated_room_versions)
}
+2 -2
View File
@@ -1,4 +1,4 @@
use std::{borrow::Borrow, collections::BTreeSet};
use std::collections::BTreeSet;
use futures::{
Future,
@@ -824,7 +824,7 @@ where
let prev_event_is_create_event = prev_events
.next()
.is_some_and(|event_id| event_id.borrow() == create_room.event_id().borrow());
.is_some_and(|event_id| event_id == create_room.event_id());
let no_more_prev_events = prev_events.next().is_none();
if prev_event_is_create_event && no_more_prev_events {