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
6 changed files with 52 additions and 17 deletions
Generated
+11 -11
View File
@@ -4174,7 +4174,7 @@ dependencies = [
[[package]]
name = "ruma"
version = "0.15.1"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"assign",
"js_int",
@@ -4193,7 +4193,7 @@ dependencies = [
[[package]]
name = "ruma-appservice-api"
version = "0.15.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"ruma-common",
@@ -4205,7 +4205,7 @@ dependencies = [
[[package]]
name = "ruma-client-api"
version = "0.23.1"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"assign",
@@ -4227,7 +4227,7 @@ dependencies = [
[[package]]
name = "ruma-common"
version = "0.18.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"base64 0.22.1",
@@ -4260,7 +4260,7 @@ dependencies = [
[[package]]
name = "ruma-events"
version = "0.33.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"indexmap",
@@ -4281,7 +4281,7 @@ dependencies = [
[[package]]
name = "ruma-federation-api"
version = "0.14.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"bytes",
"headers",
@@ -4304,7 +4304,7 @@ dependencies = [
[[package]]
name = "ruma-identifiers-validation"
version = "0.12.1"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"thiserror",
@@ -4313,7 +4313,7 @@ dependencies = [
[[package]]
name = "ruma-macros"
version = "0.18.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"as_variant",
"cfg-if",
@@ -4329,7 +4329,7 @@ dependencies = [
[[package]]
name = "ruma-push-gateway-api"
version = "0.14.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"ruma-common",
@@ -4341,7 +4341,7 @@ dependencies = [
[[package]]
name = "ruma-signatures"
version = "0.20.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"base64 0.22.1",
"ed25519-dalek",
@@ -4357,7 +4357,7 @@ dependencies = [
[[package]]
name = "ruma-state-res"
version = "0.16.0"
source = "git+https://github.com/ruma/ruma.git?rev=9c9dccc93f054bbd28f23f630223fffa6289ecbc#9c9dccc93f054bbd28f23f630223fffa6289ecbc"
source = "git+https://github.com/timedoutuk/ruma.git?rev=9679644f410bf19fe71ec2ad55bce7faeee3de0f#9679644f410bf19fe71ec2ad55bce7faeee3de0f"
dependencies = [
"js_int",
"ruma-common",
+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 = "9c9dccc93f054bbd28f23f630223fffa6289ecbc"
#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(
+22
View File
@@ -21,6 +21,16 @@
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 @@ pub fn supported_room_version(&self, version: &RoomVersionId) -> bool {
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 @@ struct GetThirdPartyInvite {
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 {