Skip to content

Commit db14ddc

Browse files
chore: release nostream@3.8.0, nostream-website@1.3.3
1 parent 694bba7 commit db14ddc

10 files changed

Lines changed: 91 additions & 71 deletions

‎.changeset/admin-moderation-634.md‎

Lines changed: 0 additions & 7 deletions
This file was deleted.

‎.changeset/brotli-patched-node.md‎

Lines changed: 0 additions & 11 deletions
This file was deleted.

‎.changeset/ewma-key-namespace.md‎

Lines changed: 0 additions & 12 deletions
This file was deleted.

‎.changeset/legal-release-image-tags.md‎

Lines changed: 0 additions & 21 deletions
This file was deleted.

‎.changeset/release-dispatch-rerun.md‎

Lines changed: 0 additions & 16 deletions
This file was deleted.

‎.changeset/repository-unit-tests.md‎

Lines changed: 0 additions & 2 deletions
This file was deleted.

‎CHANGELOG.md‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,61 @@
11
# nostream
22

3+
## 3.8.0
4+
5+
### Minor Changes
6+
7+
- [#941](https://github.com/cameri/nostream/pull/941) [`42ed39e`](https://github.com/cameri/nostream/commit/42ed39edf61ef6e8091e2fa32cad8e76823bb67d) Thanks [@Ferryx349](https://github.com/Ferryx349)! - feat(admin): moderation tools for pubkey, kind, and IP limits (closes [#634](https://github.com/cameri/nostream/issues/634))
8+
9+
Adds admin API and console view to read and update event pubkey/kind lists, rate-limit bypass lists, quick ban/unban actions, and activity stats for top publishers, client IPs, and rate-limit hits.
10+
11+
### Patch Changes
12+
13+
- [#968](https://github.com/cameri/nostream/pull/968) [`98bd234`](https://github.com/cameri/nostream/commit/98bd2340af5bfd79deaa83bcd3a145550e269343) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - chore(deps): build and test on Node 24.22.1, which patches the Brotli decoder
14+
15+
CVE-2026-111497 is an out-of-bounds write in every Brotli decoder up to 1.2.0,
16+
reachable by anything that decodes a `br` stream. Node bundles its own decoder,
17+
so the fix is the Node release: 24.22.1 on the 24 line. `.nvmrc` and both
18+
Dockerfile stages move from floating `node:24-alpine` to a pinned
19+
`node:24.22.1-alpine`.
20+
21+
- [#945](https://github.com/cameri/nostream/pull/945) [`062ee00`](https://github.com/cameri/nostream/commit/062ee007d150b7c4d0daff5032be3ad71de7773e) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - Namespace EWMA rate-limiter keys so they cannot collide with sliding-window keys
22+
23+
The two strategies store different Redis types under the same key name: a sliding
24+
window keeps a sorted set, EWMA keeps a hash. A cache volume carried over from 2.x,
25+
or an operator switching `limits.rateLimiter.strategy`, therefore left EWMA reading a
26+
sorted set as a hash — a `WRONGTYPE` error on every connection and message until the
27+
old key expired. EWMA now writes under an `ewma:` prefix, which also keeps both
28+
strategies' windows intact if the strategy is switched back.
29+
30+
- [#965](https://github.com/cameri/nostream/pull/965) [`ee65257`](https://github.com/cameri/nostream/commit/ee652577236a2a2da6499f3a58f98e0ed3e581c4) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - fix(ci): publish legal image tags and keep `latest` off prereleases
31+
32+
A changesets relay release is tagged `nostream@3.7.0`, and `@` is not legal in a
33+
Docker tag, so the `type=ref,event=tag` rule handed buildx a tag it refused: the
34+
first live run of the Release workflow failed with `invalid tag ...: invalid
35+
reference format` and published no image for the release ([#964](https://github.com/cameri/nostream/issues/964)).
36+
37+
The tags are now computed by a shell step, so every tag is a value this
38+
repository chose and can check: the bare version, `vX.Y.Z` as well beside it for
39+
a legacy tag, and `latest` only when the release is not a prerelease. Each tag is
40+
validated against Docker's grammar before the build, so an illegal one fails by
41+
name at that step instead of at buildx.
42+
43+
`docs/CI-MIGRATION.md`, `docs/DEPLOYMENT.md` and `docs/DEPLOY-RUNBOOK.md` no
44+
longer promise `nostream@X.Y.Z` as a pinnable image tag, and the runbook now
45+
names the receiver change that subscribing to `release` events depends on.
46+
47+
- [#967](https://github.com/cameri/nostream/pull/967) [`9c736c8`](https://github.com/cameri/nostream/commit/9c736c83d7ea116cd9492c619c7a2f7a156c20ba) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - ci(release): allow the image build to be dispatched for an existing tag
48+
49+
A published release is immutable, so when the image build fails while publishing
50+
it, the release cannot be re-published to retry: GitHub refuses the round trip
51+
with `immutable cannot be changed when release is immutable`. That left [#964](https://github.com/cameri/nostream/issues/964)'s
52+
release with no image and no way to build one.
53+
54+
`release.yml` now accepts `workflow_dispatch` with a `tag` input, and refuses a
55+
tag that is not a relay release, since the event carries no tag of its own. With
56+
no release flags present the prerelease is read from the version, so a dispatch
57+
of `nostream@3.8.0-rc.1` still leaves `latest` where it is.
58+
359
## 3.7.0
460

561
### Minor Changes

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nostream",
3-
"version": "3.7.0",
3+
"version": "3.8.0",
44
"packageManager": "pnpm@10.33.0",
55
"private": true,
66
"description": "A Nostr relay written in Typescript.",

‎website/site/CHANGELOG.md‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,38 @@
11
# nostream-website
22

3+
## 1.3.3
4+
5+
### Patch Changes
6+
7+
- [#965](https://github.com/cameri/nostream/pull/965) [`ee65257`](https://github.com/cameri/nostream/commit/ee652577236a2a2da6499f3a58f98e0ed3e581c4) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - fix(ci): publish legal image tags and keep `latest` off prereleases
8+
9+
A changesets relay release is tagged `nostream@3.7.0`, and `@` is not legal in a
10+
Docker tag, so the `type=ref,event=tag` rule handed buildx a tag it refused: the
11+
first live run of the Release workflow failed with `invalid tag ...: invalid
12+
reference format` and published no image for the release ([#964](https://github.com/cameri/nostream/issues/964)).
13+
14+
The tags are now computed by a shell step, so every tag is a value this
15+
repository chose and can check: the bare version, `vX.Y.Z` as well beside it for
16+
a legacy tag, and `latest` only when the release is not a prerelease. Each tag is
17+
validated against Docker's grammar before the build, so an illegal one fails by
18+
name at that step instead of at buildx.
19+
20+
`docs/CI-MIGRATION.md`, `docs/DEPLOYMENT.md` and `docs/DEPLOY-RUNBOOK.md` no
21+
longer promise `nostream@X.Y.Z` as a pinnable image tag, and the runbook now
22+
names the receiver change that subscribing to `release` events depends on.
23+
24+
- [#967](https://github.com/cameri/nostream/pull/967) [`9c736c8`](https://github.com/cameri/nostream/commit/9c736c83d7ea116cd9492c619c7a2f7a156c20ba) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - ci(release): allow the image build to be dispatched for an existing tag
25+
26+
A published release is immutable, so when the image build fails while publishing
27+
it, the release cannot be re-published to retry: GitHub refuses the round trip
28+
with `immutable cannot be changed when release is immutable`. That left [#964](https://github.com/cameri/nostream/issues/964)'s
29+
release with no image and no way to build one.
30+
31+
`release.yml` now accepts `workflow_dispatch` with a `tag` input, and refuses a
32+
tag that is not a relay release, since the event carries no tag of its own. With
33+
no release flags present the prerelease is read from the version, so a dispatch
34+
of `nostream@3.8.0-rc.1` still leaves `latest` where it is.
35+
336
## 1.3.2
437

538
### Patch Changes

‎website/site/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nostream-website",
3-
"version": "1.3.2",
3+
"version": "1.3.3",
44
"private": true,
55
"type": "module",
66
"description": "nostream.dev landing page and docs, built with Astro",

0 commit comments

Comments
 (0)