Skip to content

chore: release new version 🚀 - #658

Open
cameri wants to merge 1 commit into
mainfrom
changeset-release/main
Open

chore: release new version 🚀#658
cameri wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@cameri

@camericameri commented Jun 28, 2026

Copy link
Copy Markdown
Owner

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.1.0

Minor Changes

  • #641837540b Thanks @Ferryx349! - feat: add disabled-by-default admin API with password auth, session, and health endpoints

  • #66644f3bb4 Thanks @Ferryx349! - feat: add admin observability dashboard with Grafana embed and provisioned metrics panels

  • #6538ab4825 Thanks @Ferryx349! - feat: add OpenTelemetry metrics bootstrap with OTLP export for Prometheus

  • #661237b1a4 Thanks @Ferryx349! - feat: instrument event and websocket handlers with OpenTelemetry metrics

  • #66236d95cc Thanks @Ferryx349! - feat: add Prometheus-backed admin metrics SSE endpoint

  • #690f70adf2 Thanks @Ferryx349! - feat: add authenticated admin settings API endpoints

  • #706841833f Thanks @Ferryx349! - feat: add settings editor tab to admin dashboard UI

  • #734fd7f56a Thanks @Priyanshubhartistm! - feat(dvm): dispatch pending DVM jobs to worker processes and publish kind 6000-6999 results back

  • #729275c30c Thanks @Priyanshubhartistm! - feat(dvm): trap NIP-90 job request events (kind 5000-5999) and record them via the job repository

  • #727d00eb42 Thanks @Priyanshubhartistm! - feat(dvm): add job persistence migration and repository for DVM job state

  • #72111ec673 Thanks @Priyanshubhartistm! - feat(dvm): add worker registry settings and dvm-orchestrator process topology

  • #58730fa252 Thanks @Anshumancanrock! - Add NIP-50 full-text search support with PostgreSQL tsvector/GIN indexing.

    Clients can now include a search field in REQ filter objects to perform full-text
    queries against event content. Results are ranked by relevance (ts_rank) instead
    of the usual created_at ordering, per the NIP-50 specification.

    Features:

    • New search filter field accepted in REQ messages
    • PostgreSQL GIN index on to_tsvector('simple', event_content) for fast full-text lookups
    • Configurable text-search language (defaults to simple, supports english, spanish, etc.)
    • Configurable max search query length for abuse prevention
    • NIP-50 listed in NIP-11 relay information document
    • Search can be combined with all existing filter fields (kinds, authors, tags, etc.)
  • #702e172cce Thanks @Anshumancanrock! - feat(nip42): enforce authentication on reads for restricted event kinds (encrypted DMs, gift wraps) across REQ, live broadcasts and COUNT

  • #7162f5a1c0 Thanks @Anshumancanrock! - feat(nip42): add session tracking with optional TTL and publish-time authRequired (NIP-11 restricted_writes)

  • #732d413bd6 Thanks @Anshumancanrock! - Add a CLI to mint NIP-43 invite codes (nostream invite create) so operators can issue a claim without SQL. New codes honor nip43.defaultMaxUses and nip43.inviteCodeExpirySeconds.

  • #6503461dfe Thanks @Anshumancanrock! - Add NIP-43 invite code foundation: InviteCodeRepository with atomic claimCode, invite_codes migration, and event kind/tag constants.

  • #6760bfa0b5 Thanks @Anshumancanrock! - Add NIP-43 join/leave request event strategies (kinds 28934/28936) with NIP-42 auth enforcement, created_at freshness validation, invite code claiming, and admission management. When nip43.enabled is set, publishing is restricted to admitted members even without payments enabled, and NIP-43 is advertised in the NIP-11 document (hidden when disabled). Join/leave update the admission cache so membership changes take effect immediately.

  • #6755a70839 Thanks @Ferryx349! - feat(nip66): add shared relay probe engine for DNS, TLS, WebSocket RTT, and NIP-11 checks

  • #724d14b1e9 Thanks @Ferryx349! - feat(nip66): add RelayMonitorWorker cluster worker and probe scheduler

  • #689e294a71 Thanks @Ferryx349! - Add NIP-66 relay monitor settings foundation with defaults for probe interval, timeouts, targets, monitor identity, and DNS cache TTL.

  • #6442f6d773 Thanks @Anshumancanrock! - feat: reject NIP-70 protected events and reposts embedding them

  • #730ef4123e Thanks @Anshumancanrock! - feat(admin): accept NIP-98 Authorization on protected admin API routes

  • #722cf5ea4f Thanks @Anshumancanrock! - feat(nip98): add Authorization header event verifier for HTTP auth (kind 27235)

  • #672595c0a6 Thanks @Ferryx349! - refactor: extract shared settings-config module and guided schema for admin settings editor foundation

Patch Changes

  • #714df1ed5d Thanks @Ferryx349! - fix(admin): update aria-expanded and label when mobile menu is toggled

  • #680f92eabe Thanks @Priyanshubhartistm! - fix: advertise NIP-13 (Proof of Work) support in supportedNips

  • #646eb64d8a Thanks @dependabot! - chore(deps): bump js-yaml from 4.1.1 to 4.2.0

  • #64768da3d4 Thanks @dependabot! - chore(deps): bump ws from 8.20.1 to 8.21.0

  • #70595a672e Thanks @dependabot! - chore(deps): bump axios from 1.16.0 to 1.18.0

  • #6947c4b728 Thanks @Priyanshubhartistm! - fix: de-duplicate events returned by generic tag-filter subscriptions

    EventRepository.findByFilters() left-joins event_tags for generic tag filters
    (#e, #p, etc.) without deduplicating the result. An event matching more than one
    tag row for the same filter (e.g. {"#p": ["a", "b"]} matching an event tagged with
    both) was returned once per matching event_tags row, so subscribers received the
    same EVENT message multiple times. The query now selects DISTINCT events.* for
    tag-filtered queries so each stored event is returned at most once. This also covers
    generic tag filters combined with a NIP-50 search term (e.g.
    {"search": "...", "#p": ["a", "b"]}), which take the search branch and are now
    de-duplicated as well.

  • #7037af0387 Thanks @Priyanshubhartistm! - Fix the Content-Security-Policy connect-src directive for relays served over plain ws://.

    The web app factory derived an HTTP(S) origin from the relay's WebSocket URL but mapped
    ws: to the invalid scheme ':', which the WHATWG URL API silently ignores. As a result the
    connect-src directive kept a ws://… entry instead of the intended http://… origin for
    local/dev, Tor, or reverse-proxied setups. The ws: protocol now correctly maps to http:.

    Adds regression test coverage for the protocol mapping (getWebProtocolForRelay, extracted from
    createWebApp so it can be unit tested directly), since this file previously had no test coverage
    at all.

  • #708a76d0b5 Thanks @Priyanshubhartistm! - fix: reject expiration timestamp 0 and millisecond-scale values, and accept safe-integer second-based timestamps up to the Postgres int4 max (2038-01-19T03:14:07Z) in getEventExpiration()

  • #735f0aab15 Thanks @Ferryx349! - fix: include event id in expired and rate-limited rejection logs

    Expired and rate-limited event rejections logged event %s rejected: ... without
    passing event.id, so operators saw a literal %s instead of the event id.

  • #7159361601 Thanks @Priyanshubhartistm! - fix: abort in-flight streaming queries when a subscription is cancelled

  • #7339fb1c10 Thanks @Ferryx349! - test(nip66): add integration tests for RelayMonitorWorker snapshot storage

  • #725849c3f7 Thanks @Anshumancanrock! - feat(http): build absolute request URL from relay_url

  • #7263d3848e Thanks @Anshumancanrock! - feat(redis): add setKeyIfNotExists for one-time claims

  • #640ca23be1 Thanks @Anshumancanrock! - test: optimize nip05.spec.ts & nip03.spec.ts resource management

    • Lift sinon stub to before/after in verifyNip05Identifier tests (create once, reset between tests)
    • Extract SSRF guard callback once in before instead of per-test beforeEach
    • Pre-build shared OTS buffers and attestations at module scope to eliminate redundant Buffer.concat calls
    • Add shared event factory for extractNip05FromEvent tests
  • #686cb7daf6 Thanks @Priyanshubhartistm! - fix: stop checking additional rate limit windows once a client is already rate-limited

    isRateLimited() in EventMessageHandler and WebSocketAdapter looped through every
    configured rate limit window even after one had already tripped, calling rateLimiter.hit()
    (a Redis write) for each remaining window. Both now return as soon as the first exceeded
    window is found, avoiding redundant Redis writes for clients that are already being limited.

  • #6843648954 Thanks @Priyanshubhartistm! - fix: await Redis EXISTS call in RedisAdapter.hasKey() so it reflects actual key presence instead of always returning true

  • #711220949d Thanks @Priyanshubhartistm! - fix: include the actual error message in replaceable event rejection responses

    ReplaceableEventStrategy.execute() sent clients a bare error: command result
    (with no message body) whenever eventRepository.upsert() failed for a reason other
    than a duplicate event id. The underlying error.message was caught but never
    included in the response, leaving clients with no actionable information about why
    the event was rejected. The command result now includes error.message.

  • #682dc78df5 Thanks @Priyanshubhartistm! - fix: prevent crash in NIP-11 relay information document when payments settings are absent

@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 5 times, most recently from 4ba75ee to 71ffce0CompareJuly 4, 2026 10:50
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 4 times, most recently from 43f217f to 7df692fCompareJuly 9, 2026 23:12
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 6 times, most recently from cc635f3 to bae0bd1CompareJuly 20, 2026 11:27
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 6 times, most recently from 89db1b9 to 9511a27CompareJuly 27, 2026 16:19
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from 9511a27 to d9159aeCompareJuly 27, 2026 19:32
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 2 times, most recently from 07d24e4 to 7a810dbCompareAugust 5, 2026 14:15
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 6 times, most recently from 26072d7 to 0be7237CompareAugust 13, 2026 00:55
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 9 times, most recently from 7c921ee to 1d823fcCompareAugust 19, 2026 09:11
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch 4 times, most recently from 4ab4128 to f9558ddCompareAugust 22, 2026 16:07
Releases:
nostream@3.1.0
[skip ci]
@github-actions
github-actionsBotforce-pushed the changeset-release/main branch from f9558dd to cca4c31CompareAugust 22, 2026 16:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@cameri