You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
nostream@3.11.0
Minor Changes
#10309b585db Thanks @Ferryx349! - feat(peering): authenticate peer relays with NIP-42 using the relay keypair
Adds the peering identity layer: a configured peering.peers trust list keyed
by relay pubkey (hex or npub), outbound NIP-42 AUTH signed with the relay's own
keypair, and inbound recognition of a verified peer pubkey on the connection
state. Peer status is tied to the NIP-42 session, so it expires or clears with
the socket; a valid AUTH from an unconfigured pubkey stays an ordinary client.
peering.peers[].relayUrl is the outbound address only — identity is always the
verified pubkey, never the URL. Relay key storage and the AUTH exchange are
documented in docs/PEERING.md, and the new fields are validated with the rest
of the settings document.
Patch Changes
#1024eb304b8 Thanks @chappie-daemon! - fix(deps): bump knex to 3.2.9 for the search_path SQL injection (AIKIDO-2026-10469)
knex 0.0.1–3.2.8 interpolates values passed to searchPath for the Postgres
dialect into generated SQL without validating or escaping them, so a value an
attacker can influence becomes an injected identifier. 3.2.9 escapes the double
quotes (#6411); this repository declares knex 2.4.2 on both the default branch
and rewrite/main.
nostream never sets searchPath — grep -rn "search_path" src/ finds nothing —
so the reachable path is not exercised today, and the bump is taken to remove a
vulnerable dependency from the image, not to close a reachable hole.
knex 3.0.0 drops Node < 16, which the repo already requires (>=24.14.1), and 3.2.0
tightens RawBinding. The one compile error that surfaced, src/scripts/benchmark-queries.ts passing bindings as readonly unknown[] to db.raw(), is fixed by dropping the assertion: toSQL().bindings is already the
accepted type. The emitted JavaScript is byte-identical with and without the
assertion.
Summary by CodeRabbit
New Features
Release 3.11.0 includes updates to peer identity and NIP-42 authentication.
Bug Fixes
The release notes include a Knex update related to PostgreSQL search_path escaping and a cleanup to a benchmark query.
Release Information
Updated the package version to 3.11.0 and added the corresponding changelog entries.
No actionable comments were generated in the recent review.
Recent review info
Automatic approval policy
Commit: 601c98ac0aac.
Setting
Effective value
Source
Automatic approvals
Enabled
Global configuration
Merge risk
Minimal
Global configuration
Security risk
Not set
Global configuration
Not set means no limit was configured after inheritance. Use @coderabbitai configuration to inspect the resolved settings and their sources.
Run configuration
Source mode: Auto
Repository: Unavailable
Branch: Unavailable
File: No configuration file from this repository applied
Commit: Unavailable
Layers: Organization UI
Review profile: CHILL
Plan: Advanced
Run ID: fb411e79-f584-4ce3-8a69-cfbf5b4f9806
Commits
Reviewing files that changed from the base of the PR and between 82f7b25 and 601c98a.
Files selected for processing: 2
.changeset/knex-3-2-9-security.md
CHANGELOG.md
Files with no reviewable changes: 1
.changeset/knex-3-2-9-security.md
Files skipped from review as they are similar to previous changes: 1
CHANGELOG.md
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
Walkthrough
The package version changes from 3.10.2 to 3.11.0. The changelog records peer-relay authentication and Knex updates. The corresponding changesets are removed.
The changelog records the Knex 3.2.9 update and benchmark-script type assertion removal. It also notes that the repository does not use searchPath. The related changeset is deleted.
cameri/nostream#1030: This PR records the peer-authentication behavior from #1030 in the 3.11.0 changelog and removes its changeset.
cameri/nostream#1024: This PR records the Knex update and benchmark-query adjustment from #1024 in the changelog and removes its changeset.
cameri/nostream#1034: This PR records the authenticated peer identity that #1034 uses for peer-specific feed limits.
Merge Risk: Minimal · up to 601c9
No actionable issue is identified in the reviewed release metadata; it is mergeable after normal checks.
Architecture risk: Low · up to 82f7b
The change affects 2 systems.
Changed systems:CHANGELOG.md, package.json
Architecture concerns
No architecture-level concerns identified.
Review details
Systems and components
observed — CHANGELOG.md (service) was modified; 1 changed file maps to changed impact.
observed — package.json (service) was modified; 1 changed file maps to changed impact.
Before / after behavior
observed — Modified behavior in CHANGELOG.md: Adds the 3.11.0 changelog entry describing NIP-42 peer authentication, peer identity and session behavior, relayUrl semantics, and related documentation and settings validation.
observed — Modified behavior in package.json: The package version changes from 3.10.2 to 3.11.0.
observed — Modified behavior in .changeset/peering-peer-auth.md: The changeset declaring a minor nostream release and describing NIP-42 peer-relay authentication was removed.
Pre-merge checks: 5
Check name
Status
Explanation
Description Check
Check skipped - CodeRabbit’s high-level summary is enabled.
Title check
The title clearly identifies the primary change as a new version release. It is concise and related to the nostream@3.11.0 release, although it does not include the specific version.
Docstring Coverage
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check
Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check
Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)
Finishing Touches
Generate unit tests (beta)
Commit to this branch
Create a new PR
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
A rabbit reads the changelog by moonlit light Three-eleven hops into the night Peer keys meet AUTH, notes fall in place Knex gets its patch in the release race The rabbit thumps: “All entries trace!”
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
nostream@3.11.0
Minor Changes
#1030
9b585dbThanks @Ferryx349! - feat(peering): authenticate peer relays with NIP-42 using the relay keypairAdds the peering identity layer: a configured
peering.peerstrust list keyedby relay pubkey (hex or
npub), outbound NIP-42 AUTH signed with the relay's ownkeypair, and inbound recognition of a verified peer pubkey on the connection
state. Peer status is tied to the NIP-42 session, so it expires or clears with
the socket; a valid AUTH from an unconfigured pubkey stays an ordinary client.
peering.peers[].relayUrlis the outbound address only — identity is always theverified pubkey, never the URL. Relay key storage and the AUTH exchange are
documented in
docs/PEERING.md, and the new fields are validated with the restof the settings document.
Patch Changes
#1024
eb304b8Thanks @chappie-daemon! - fix(deps): bump knex to 3.2.9 for the search_path SQL injection (AIKIDO-2026-10469)knex 0.0.1–3.2.8 interpolates values passed to
searchPathfor the Postgresdialect into generated SQL without validating or escaping them, so a value an
attacker can influence becomes an injected identifier. 3.2.9 escapes the double
quotes (#6411); this repository declares
knex2.4.2 on both the default branchand
rewrite/main.nostream never sets
searchPath—grep -rn "search_path" src/finds nothing —so the reachable path is not exercised today, and the bump is taken to remove a
vulnerable dependency from the image, not to close a reachable hole.
knex 3.0.0 drops Node < 16, which the repo already requires (>=24.14.1), and 3.2.0
tightens
RawBinding. The one compile error that surfaced,src/scripts/benchmark-queries.tspassingbindings as readonly unknown[]todb.raw(), is fixed by dropping the assertion:toSQL().bindingsis already theaccepted type. The emitted JavaScript is byte-identical with and without the
assertion.
Summary by CodeRabbit
search_pathescaping and a cleanup to a benchmark query.