feat(push): Add MSC4174 web push #2122

Open
eleboucher wants to merge 1 commit from eleboucher/continuwuity:feat/msc4174-webpush into main
Contributor

This pull request implement the MSC4174, tested e2e with complement

Fixes: #1849

Pull request checklist:

  • This pull request targets the main branch, and the branch is named something other than
    main.
  • I have written an appropriate pull request title and my description is clear.
  • I understand I am responsible for the contents of this pull request.
  • I have followed the contributing guidelines:
<!-- In order to help reviewers know what your pull request does at a glance, you should ensure that 1. Your PR title is a short, single sentence describing what you changed 2. You have described in more detail what you have changed, why you have changed it, what the intended effect is, and why you think this will be beneficial to the project. If you have made any potentially strange/questionable design choices, but didn't feel they'd benefit from code comments, please don't mention them here - after opening your pull request, go to "files changed", and click on the "+" symbol in the line number gutter, and attach comments to the lines that you think would benefit from some clarification. --> This pull request implement the MSC4174, tested e2e with complement <!-- Example: This pull request allows us to warp through time and space ten times faster than before by double-inverting the warp drive with hyperheated jump fluid, both making the drive faster and more efficient. This resolves the common issue where we have to wait more than 10 milliseconds to engage, use, and disengage the warp drive when travelling between galaxies. --> <!-- Closes: #... --> Fixes: #1849 <!-- Uncomment the above line(s) if your pull request fixes an issue or closes another pull request by superseding it. Replace `#...` with the issue/pr number, such as `#123`. --> **Pull request checklist:** <!-- You need to complete these before your PR can be considered. If you aren't sure about some, feel free to ask for clarification in #dev:continuwuity.org. --> - [x] This pull request targets the `main` branch, and the branch is named something other than `main`. - [x] I have written an appropriate pull request title and my description is clear. - [x] I understand I am responsible for the contents of this pull request. - I have followed the [contributing guidelines][c1]: - [x] My contribution follows the [code style][c2], if applicable. - [x] I ran [pre-commit checks][c1pc] before opening/drafting this pull request. - [x] I have [tested my contribution][c1t] (or proof-read it for documentation-only changes) myself, if applicable. This includes ensuring code compiles. - [x] My commit messages follow the [commit message format][c1cm] and are descriptive. <!-- Notes on these requirements: - While not required, we encourage you to sign your commits with GPG or SSH to attest the authenticity of your changes. - While we allow LLM-assisted contributions, we do not appreciate contributions that are low quality, which is typical of machine-generated contributions that have not had a lot of love and care from a human. Please do not open a PR if all you have done is asked ChatGPT to tidy up the codebase with a +-100,000 diff. - In the case of code style violations, reviewers may leave review comments/change requests indicating what the ideal change would look like. For example, a reviewer may suggest you lower a log level, or use `match` instead of `if/else` etc. - In the case of code style violations, pre-commit check failures, minor things like typos/spelling errors, and in some cases commit format violations, reviewers may modify your branch directly, typically by making changes and adding a commit. Particularly in the latter case, a reviewer may rebase your commits to squash "spammy" ones (like "fix", "fix", "actually fix"), and reword commit messages that don't satisfy the format. - Pull requests MUST pass the `Checks` CI workflows to be capable of being merged. This can only be bypassed in exceptional circumstances. If your CI flakes, let us know in matrix:r/dev:continuwuity.org. - Pull requests have to be based on the latest `main` commit before being merged. If the main branch changes while you're making your changes, you should make sure you rebase on main before opening a PR. Your branch will be rebased on main before it is merged if it has fallen behind. - We typically only do fast-forward merges, so your entire commit log will be included. Once in main, it's difficult to get out cleanly, so put on your best dress, smile for the cameras! --> [c1]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md [c2]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/docs/development/code_style.mdx [c1pc]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md#pre-commit-checks [c1t]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md#running-tests-locally [c1cm]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md#commit-messages
feat(push): Add MSC4174 web push
All checks were successful
Auto Labeler / Apply labels based on changed files (pull_request_target) Successful in 3s
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m13s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m23s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
5a2f881a26
Member

Re: Requested for review

I haven't the Rust knowledge to confidently say the code is good, but it seems alright.

I've spun up a Continuwuity on localhost, but haven't actually tested web push yet. I'll need to implement it in Nexus for this, and that means waiting for Tulir to implement needed stuff on Gomuks too, so it may take a little time.

Re: Requested for review I haven't the Rust knowledge to confidently say the code is good, but it seems alright. I've spun up a Continuwuity on localhost, but haven't actually tested web push yet. I'll need to implement it in Nexus for this, and that means waiting for Tulir to implement needed stuff on Gomuks too, so it may take a little time.
Owner

I requested your review because you mentioned you were going to test this locally ahead of merge, so any issues you find will be valuable to hear as part of the code review process itself :)

I requested your review because you mentioned you were going to test this locally ahead of merge, so any issues you find will be valuable to hear as part of the code review process itself :)
Author
Contributor

i will also try to implement the part on sable

i will also try to implement the part on sable
nex requested changes 2026-08-11 14:25:28 +00:00
nex left a comment

Mostly just code style concerns, I don't see anything functionally wrong here (checks out with passing complement tests)

Mostly just code style concerns, I don't see anything functionally wrong here (checks out with passing complement tests)
@ -484,0 +530,4 @@
Err!(Request(NotFound("No pusher with this app ID exists.")))
},
| ActivationOutcome::UnknownToken =>
Err(activation_token_error(&UNKNOWN_ACTIVATION_TOKEN, "Unknown activation token.")),
Owner

Couldn't this just be inlined into an Err!() macro call? rather than calling an entire function?

Couldn't this just be inlined into an `Err!()` macro call? rather than calling an entire function?
eleboucher marked this conversation as resolved
@ -484,0 +531,4 @@
},
| ActivationOutcome::UnknownToken =>
Err(activation_token_error(&UNKNOWN_ACTIVATION_TOKEN, "Unknown activation token.")),
| ActivationOutcome::Expired => Err(activation_token_error(
Owner

Same here

Same here
Member

I see this was marked as resolved, but I don't see a new commit? Same goes for the other resolved conversations.

I see this was marked as resolved, but I don't see a new commit? Same goes for the other resolved conversations.
Author
Contributor

damn i must be blind or stupid

damn i must be blind or stupid
Henry-Hiles marked this conversation as resolved
@ -484,0 +539,4 @@
}
static EXPIRED_ACTIVATION_TOKEN: LazyLock<ErrorKind> =
LazyLock::new(|| custom_error_kind("M_EXPIRED_ACTIVATION_TOKEN"));
Owner

Shouldn't the unstable prefix be used in these error codes?

Shouldn't the unstable prefix be used in these error codes?
Author
Contributor

i'm following the spec here

i'm following the spec here
Henry-Hiles marked this conversation as resolved
@ -484,0 +543,4 @@
static UNKNOWN_ACTIVATION_TOKEN: LazyLock<ErrorKind> =
LazyLock::new(|| custom_error_kind("M_UNKNOWN_ACTIVATION_TOKEN"));
fn custom_error_kind(errcode: &str) -> ErrorKind {
Owner

This seems like an odd way to define the custom error, any reason not to just add it to the ErrorKind enum itself?

This seems like an odd way to define the custom error, any reason not to just add it to the `ErrorKind` enum itself?
eleboucher marked this conversation as resolved
@ -1582,1 +1582,4 @@
/// Allow encrypted Web Push pushers (MSC4174).
#[serde(default)]
pub allow_webpush: bool,
Owner

Since webpush_vapid_contact has to be set to enable the feature, and it defaults to unset, I think this allow flag might be redundant in this case

Since `webpush_vapid_contact` has to be set to enable the feature, and it defaults to unset, I think this allow flag might be redundant in this case
eleboucher marked this conversation as resolved
@ -0,0 +1,36 @@
pub mod v3 {
Owner

nit: Should be unstable instead of v3 until the proposal is stable

nit: Should be `unstable` instead of `v3` until the proposal is stable
eleboucher marked this conversation as resolved
@ -0,0 +1,614 @@
use std::{collections::HashMap, sync::Arc, time::Duration};
Owner

This file is rather quite large/dense, it might be worth splitting the Vapid impl, Service impl, and utilities (funcs and consts) into separate files for easier maintainability.
I'd also recommend attaching docstrings to the function defs and ideally some comments dotted around to explain what the server is doing to help someone who might be looking at this code having never seen actual webpush stuff (e.g. me) to understand what is going on

This file is rather quite large/dense, it might be worth splitting the `Vapid` impl, `Service` impl, and utilities (funcs and consts) into separate files for easier maintainability. I'd also recommend attaching docstrings to the function defs and ideally some comments dotted around to explain what the server is doing to help someone who might be looking at this code having never seen actual webpush stuff (e.g. me) to understand what is going on
eleboucher marked this conversation as resolved
eleboucher requested review from nex 2026-08-12 17:06:05 +00:00
Member
Blocked on https://github.com/matrix-org/matrix-spec-proposals/pull/4174#discussion_r3761648776.
eleboucher force-pushed feat/msc4174-webpush from 5a2f881a26
All checks were successful
Auto Labeler / Apply labels based on changed files (pull_request_target) Successful in 3s
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m13s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m23s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
to 877b7d71a6
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 8s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m20s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m40s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m50s
2026-08-13 15:08:23 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from 877b7d71a6
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 8s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m20s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m40s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m50s
to c6c7587955
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Failing after 1m13s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m21s
2026-08-13 15:30:15 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from c6c7587955
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Failing after 1m13s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m21s
to c234f001f7
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m13s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 10s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m17s
2026-08-13 15:49:11 +00:00
Compare
Member

Could this follow https://github.com/matrix-org/matrix-spec-proposals/pull/4174#discussion_r3786568663 for now? Until it's written into the MSC, or until the MSC is in spec and therefore using stable identifiers?

Could this follow https://github.com/matrix-org/matrix-spec-proposals/pull/4174#discussion_r3786568663 for now? Until it's written into the MSC, or until the MSC is in spec and therefore using stable identifiers?
Author
Contributor

@Henry-Hiles wrote in #2122 (comment):

Could this follow https://github.com/matrix-org/matrix-spec-proposals/pull/4174#discussion_r3786568663 for now? Until it's written into the MSC, or until the MSC is in spec and therefore using stable identifiers?

Done let's get this merge now :D

@Henry-Hiles wrote in https://forgejo.ellis.link/continuwuation/continuwuity/pulls/2122#issuecomment-34168: > Could this follow https://github.com/matrix-org/matrix-spec-proposals/pull/4174#discussion_r3786568663 for now? Until it's written into the MSC, or until the MSC is in spec and therefore using stable identifiers? Done let's get this merge now :D
eleboucher force-pushed feat/msc4174-webpush from c234f001f7
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m13s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 10s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m17s
to 1833c6b35e
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m11s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m26s
2026-08-14 19:58:28 +00:00
Compare
Member

TBH i'm not certain it'd get merged until the MSC itself is updated to have unstable prefixes, but I can at least test this now :)

I'll try to get an impl going in Nexus sometime soon.

TBH i'm not certain it'd get merged until the MSC itself is updated to have unstable prefixes, but I can at least test this now :) I'll try to get an impl going in Nexus sometime soon.
eleboucher force-pushed feat/msc4174-webpush from 1833c6b35e
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m11s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m26s
to 9fc2bbe0e7
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 2m7s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m53s
2026-08-14 21:49:49 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from 9fc2bbe0e7
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 2m7s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m53s
to abc6101a2f
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m12s
Update flake hashes / update-flake-hashes (pull_request) Failing after 4m53s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m19s
2026-08-17 15:35:22 +00:00
Compare
Member
Once https://github.com/matrix-org/matrix-spec-proposals/pull/4174/changes#r3800536083 is applied to the MSC, this can be unblocked.
eleboucher force-pushed feat/msc4174-webpush from abc6101a2f
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m12s
Update flake hashes / update-flake-hashes (pull_request) Failing after 4m53s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m19s
to d7236bb279
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 6s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 5m16s
2026-08-18 09:12:51 +00:00
Compare
Member

Hi, the MSC now has an unstable prefix, so it should be ready to be implemented.

Does this PR already follow https://github.com/matrix-org/matrix-spec-proposals/pull/4174/changes#diff-b2f2ad49aabe11774709efbdd9f7d3537ed2ed223b0a868d69e9db814dd18887R219?

EDIT: It appears to.

Hi, the MSC now has an unstable prefix, so it should be ready to be implemented. Does this PR already follow https://github.com/matrix-org/matrix-spec-proposals/pull/4174/changes#diff-b2f2ad49aabe11774709efbdd9f7d3537ed2ed223b0a868d69e9db814dd18887R219? EDIT: It appears to.
eleboucher force-pushed feat/msc4174-webpush from d7236bb279
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 6s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 5m16s
to c4adfb3e76
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m13s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m22s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m17s
2026-08-18 18:38:37 +00:00
Compare
@ -1333,1 +1333,4 @@
# Allow encrypted Web Push pushers (MSC4174).
# VAPID contact URI (mailto: or https:).
#webpush_vapid_contact =
Owner

we have built-in contact page, so this can be automatic! :>

we have built-in contact page, so this can be automatic! :>
Author
Contributor

done

done
eleboucher marked this conversation as resolved
refactor(config): Reuse support_email for web push VAPID contact
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 6s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m28s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 2m4s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m16s
b5d6177d5e
Owner

What no, we meant the "about" web page that displays support contacts - email isn't set by default

What no, we meant the "about" web page that displays support contacts - email isn't set by default
refactor(config): Fall back to support page for web push VAPID contact
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 6s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
Checks / Prek / Pre-commit & Formatting (pull_request) Has been cancelled
Update flake hashes / update-flake-hashes (pull_request) Has been cancelled
5ecbdf201c
eleboucher force-pushed feat/msc4174-webpush from 5ecbdf201c
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 6s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
Checks / Prek / Pre-commit & Formatting (pull_request) Has been cancelled
Update flake hashes / update-flake-hashes (pull_request) Has been cancelled
to bbddc2b22f
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 54s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m14s
2026-08-19 20:35:25 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from bbddc2b22f
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 54s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m14s
to 84aae2b5c0
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m19s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m15s
2026-08-22 18:56:27 +00:00
Compare
Henry-Hiles left a comment

Vapid info is not returned on capabilities request:

{
    "capabilities": {
        "m.room_versions": {
            "default": "12",
            "available": {
                "10": "stable",
                "11": "stable",
                "12": "stable",
                "3": "unstable",
                "4": "unstable",
                "5": "unstable",
                "6": "stable",
                "7": "stable",
                "8": "stable",
                "9": "stable"
            }
        },
        "m.3pid_changes": { "enabled": false },
        "m.get_login_token": { "enabled": true },
        "m.profile_fields": { "enabled": true, "disallowed": [] },
        "m.forget_forced_upon_leave": { "enabled": true },
        "m.account_moderation": { "suspend": true, "lock": true }
    }
}
Vapid info is not returned on capabilities request: ```json { "capabilities": { "m.room_versions": { "default": "12", "available": { "10": "stable", "11": "stable", "12": "stable", "3": "unstable", "4": "unstable", "5": "unstable", "6": "stable", "7": "stable", "8": "stable", "9": "stable" } }, "m.3pid_changes": { "enabled": false }, "m.get_login_token": { "enabled": true }, "m.profile_fields": { "enabled": true, "disallowed": [] }, "m.forget_forced_upon_leave": { "enabled": true }, "m.account_moderation": { "suspend": true, "lock": true } } } ```
eleboucher force-pushed feat/msc4174-webpush from 84aae2b5c0
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m19s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m15s
to 57888e15f5
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 11s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m19s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m31s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m48s
2026-08-23 09:01:45 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from 57888e15f5
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 11s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m19s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m31s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m48s
to fcaf1a2130
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m15s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m24s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
2026-08-23 13:45:15 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from fcaf1a2130
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m15s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m24s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
to 7ca69e9311
All checks were successful
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 9s
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m15s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m21s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m20s
2026-08-23 13:47:54 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from 7ca69e9311
All checks were successful
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 9s
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m15s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m21s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m20s
to fd70f57f23
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m24s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m15s
2026-08-23 14:07:34 +00:00
Compare
All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Required
Details
Checks / Prek / Check changed files (pull_request) Successful in 7s
Required
Details
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Required
Details
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m24s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m15s
Required
Details
This pull request is blocked because it's outdated.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u feat/msc4174-webpush:eleboucher-feat/msc4174-webpush
git switch eleboucher-feat/msc4174-webpush
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
5 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
continuwuation/continuwuity!2122
No description provided.