Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c68814030 | ||
|
|
0c68396d5b |
@@ -4,6 +4,14 @@ One line per change, grouped by the release that shipped it. Newest
|
|||||||
first. A release is a Cargo.toml bump plus a `v<version>` tag; the
|
first. A release is a Cargo.toml bump plus a `v<version>` tag; the
|
||||||
content repos pin the tag they run (see the end of this file).
|
content repos pin the tag they run (see the end of this file).
|
||||||
|
|
||||||
|
## 0.3.45 (2026-09-23)
|
||||||
|
|
||||||
|
- A mail stream that cannot be created at boot (subjects owned by an older stream) is a warning, not a failed start; 0.3.44 took the kasse sites down for two minutes on the rename.
|
||||||
|
|
||||||
|
## 0.3.44 (2026-09-23)
|
||||||
|
|
||||||
|
- The mail stream is named `mail` (was `WORMHOLE`); gdo 0.1.2 matches. Delete the old stream on each NATS after upgrading both.
|
||||||
|
|
||||||
## 0.3.43 (2026-09-23)
|
## 0.3.43 (2026-09-23)
|
||||||
|
|
||||||
- Mail is content: `mail: { to, subject, body }` on a state in aggregates.yaml sends when a record enters that state (`to: submitter` or one address; `{field}`, `{site}`, `{chain}`, `{email}` in the templates), and an invite mails its one-time link built in; `site.yaml` gains `mail: { from, reply_to, invite }`. Portal renders and publishes on `portal.mail.send` in the `WORMHOLE` stream; uhhm/gdo delivers. The lint requires a required `email` field on every form recording into a bucket that mails the submitter.
|
- Mail is content: `mail: { to, subject, body }` on a state in aggregates.yaml sends when a record enters that state (`to: submitter` or one address; `{field}`, `{site}`, `{chain}`, `{email}` in the templates), and an invite mails its one-time link built in; `site.yaml` gains `mail: { from, reply_to, invite }`. Portal renders and publishes on `portal.mail.send` in the `WORMHOLE` stream; uhhm/gdo delivers. The lint requires a required `email` field on every form recording into a bucket that mails the submitter.
|
||||||
|
|||||||
Generated
+1
-1
@@ -3265,7 +3265,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "portal"
|
name = "portal"
|
||||||
version = "0.3.43"
|
version = "0.3.45"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "portal"
|
name = "portal"
|
||||||
version = "0.3.43"
|
version = "0.3.45"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ use std::time::Duration;
|
|||||||
|
|
||||||
/// The stream both sides create on boot, with the same config, so
|
/// The stream both sides create on boot, with the same config, so
|
||||||
/// whichever starts first owns nothing the other lacks.
|
/// whichever starts first owns nothing the other lacks.
|
||||||
pub const STREAM: &str = "WORMHOLE";
|
pub const STREAM: &str = "mail";
|
||||||
pub const SUBJECTS: &str = "portal.mail.>";
|
pub const SUBJECTS: &str = "portal.mail.>";
|
||||||
pub const SUBJECT: &str = "portal.mail.send";
|
pub const SUBJECT: &str = "portal.mail.send";
|
||||||
/// Bumped when `Outgoing` changes shape; gdo refuses what it does not
|
/// Bumped when `Outgoing` changes shape; gdo refuses what it does not
|
||||||
|
|||||||
+6
-1
@@ -62,7 +62,12 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
portal::events::store::ensure_stream(&jetstream).await?;
|
portal::events::store::ensure_stream(&jetstream).await?;
|
||||||
// Outgoing mail waits here for gdo; a mail is never lost to gdo
|
// Outgoing mail waits here for gdo; a mail is never lost to gdo
|
||||||
// being down, and never sent by portal itself.
|
// being down, and never sent by portal itself.
|
||||||
portal::mail::ensure_stream(&jetstream).await?;
|
// Best-effort: a stream that already owns these subjects under an
|
||||||
|
// older name (a rename mid-upgrade) must not keep a site from
|
||||||
|
// booting; mail waits until the old stream is removed.
|
||||||
|
if let Err(e) = portal::mail::ensure_stream(&jetstream).await {
|
||||||
|
tracing::warn!("the mail stream could not be created: {e} - outgoing mail is off until a stream owns portal.mail.>");
|
||||||
|
}
|
||||||
|
|
||||||
let oidc_state = Arc::new(oidc::Oidc::from_env().await?);
|
let oidc_state = Arc::new(oidc::Oidc::from_env().await?);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user