feat(push): Add MSC4174 web push #2122

Merged
nex merged 1 commit from eleboucher/continuwuity:feat/msc4174-webpush into main 2026-09-21 23:35:22 +00:00
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
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
Dismissed
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
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
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 requested changes 2026-08-23 00:12:37 +00:00
Dismissed
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
Aranjedeath approved these changes 2026-08-25 14:01:16 +00:00
Dismissed
eleboucher force-pushed feat/msc4174-webpush from 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
to d08a5e2f65
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 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m18s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 4m32s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
2026-08-25 17:32:26 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from d08a5e2f65
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 5s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m18s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 4m32s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
to ab100561bd
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
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Check changed files (pull_request) Successful in 18s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m18s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 10m44s
2026-08-25 18:15:41 +00:00
Compare
Henry-Hiles approved these changes 2026-08-25 23:52:20 +00:00
Dismissed
Henry-Hiles left a comment

I have a minimal implementation going in Nexus (currently just printing out events when you get a notif), seems to work perfectly including VAPID/encryption!

I have a minimal implementation going in Nexus (currently just printing out events when you get a notif), seems to work perfectly including VAPID/encryption!
eleboucher force-pushed feat/msc4174-webpush from ab100561bd
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
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Check changed files (pull_request) Successful in 18s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m18s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 10m44s
to e5ac66defc
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Pre-commit & Formatting (pull_request) Failing after 1m32s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 6m39s
2026-09-07 17:06:14 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from e5ac66defc
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 7s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Pre-commit & Formatting (pull_request) Failing after 1m32s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 6m39s
to 4b61d98072
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Failing after 1m12s
Update flake hashes / update-flake-hashes (pull_request) Successful in 2m0s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m2s
2026-09-07 18:14:18 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from 4b61d98072
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Pre-commit & Formatting (pull_request) Failing after 1m12s
Update flake hashes / update-flake-hashes (pull_request) Successful in 2m0s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 9m2s
to 64f5a236e1
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 / Changelog / Check changelog is added (pull_request_target) Successful in 10s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m12s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m50s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m23s
2026-09-08 08:40:36 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from 64f5a236e1
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 / Changelog / Check changelog is added (pull_request_target) Successful in 10s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m12s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m50s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 8m23s
to 0fcab89136
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 1m10s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m53s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 12m58s
2026-09-08 14:57:48 +00:00
Compare
Henry-Hiles approved these changes 2026-09-11 14:22:31 +00:00
Dismissed
Member

Hi, this has merge conflicts, could it be rebased?

Hi, this has merge conflicts, could it be rebased?
eleboucher force-pushed feat/msc4174-webpush from 25aadb1c00
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 9s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m12s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m23s
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
to 89b9ef7a49
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 1m20s
Update flake hashes / update-flake-hashes (pull_request) Successful in 2m13s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 10m35s
2026-09-14 15:54:27 +00:00
Compare
nex approved these changes 2026-09-16 20:21:06 +00:00
nex left a comment

Looks fine to me, there's some stuff I'd improve (like unifying the backoff system with server health tracking in some way) but to prevent this PR being blocked any longer I'm fine with merging as-is and picking up another time.

Looks fine to me, there's some stuff I'd improve (like unifying the backoff system with server health tracking in some way) but to prevent this PR being blocked any longer I'm fine with merging as-is and picking up another time.
eleboucher force-pushed feat/msc4174-webpush from 89b9ef7a49
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 1m20s
Update flake hashes / update-flake-hashes (pull_request) Successful in 2m13s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 10m35s
to 7d0dbe3dca
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m25s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 9m55s
2026-09-17 07:38:54 +00:00
Compare
eleboucher force-pushed feat/msc4174-webpush from 7d0dbe3dca
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Has been skipped
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m14s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m25s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 9m55s
to bb5af28e2d
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 7s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m18s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m38s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 10m13s
2026-09-18 16:10:53 +00:00
Compare
Member

Hi, I think you messed up a rebase, there are two seperate commits in here of the same name.

Hi, I think you messed up a rebase, there are two seperate commits in here of the same name.
eleboucher force-pushed feat/msc4174-webpush from 90252e4008
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 / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m18s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m47s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 10m24s
to 4d704ab26f
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 / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m27s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 2m18s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 10m37s
2026-09-20 20:32:14 +00:00
Compare
nex force-pushed feat/msc4174-webpush from 4d704ab26f
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 / Changelog / Check changelog is added (pull_request_target) Successful in 8s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m27s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 2m18s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 10m37s
to ed1e634579
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 8s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m27s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m49s
Documentation / Build and Deploy Documentation (push) Successful in 1m32s
Checks / Prek / Check changed files (push) Successful in 9s
Checks / Prek / Pre-commit & Formatting (push) Successful in 2m15s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 10m4s
Checks / Prek / Clippy and Cargo Tests (push) Successful in 9m56s
Release Docker Image / Build linux-arm64 (release) (push) Successful in 19m14s
Release Docker Image / Build linux-amd64 (release) (push) Successful in 19m34s
Release Docker Image / Create Multi-arch Release Manifest (push) Successful in 15s
Release Docker Image / Create Max-Perf Manifest (push) Has been cancelled
Release Docker Image / Release Binaries (push) Has been cancelled
Release Docker Image / Mirror Images (push) Has been cancelled
Release Docker Image / Build linux-arm64 (max-perf) (push) Has been cancelled
Release Docker Image / Build linux-amd64 (max-perf) (push) Has been cancelled
2026-09-21 23:35:06 +00:00
Compare
nex merged commit ed1e634579 into main 2026-09-21 23:35:22 +00:00
nex deleted branch feat/msc4174-webpush 2026-09-21 23:35:22 +00:00
Sign in to join this conversation.
No reviewers
No milestone
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.