Release history

Changelog

Version history from the repo CHANGELOG.md — evidence-named releases, not marketing blurbs. Full notes live under GitHub.

  1. v1.9.0

    Lane K: kernel + coordination backend

    • **`@dweb/transport-contracts`** — `TransportPort` + semantic community control events.
    • **Nostr transport adapter** — sealed control mapper; `pnpm transport:boundaries:check` + feature allowlist.
    • **ClientGateway** — `communityTransport` per `profileId`.
    • **`CommunityMembershipPort`** — single write path for join/leave/expel/disband.
    • **`community-membership-port-owner`** — reducer + terminal cache persistence API.
    • **`use-sealed-community`** — membership mutations via port only.
    • **Coordination worker** — membership head + signed delta API.
    • **Client sync** — poll/publish + cursor; leave publishes coordination delta.
    • **Settings** — Community membership sync mode panel (Relays tab).
    • **Evidence chips** — relay hint vs directory vs provisional copy by sync mode.
    • **Create flow** — sovereign + public-relay honesty notices.
    • **Copy audit** — [v1.9.3-copy-audit.md](docs/program/v1.9.3-copy-audit.md).
    Release notes (docs)
  2. v1.8.14

    batch exit: P13 + B2 + Wave 3 trust

    • **`botTriggers`** descriptor contract — keyword / mention / schedule triggers on managed workspaces.
    • **`scripts/community-inbound-bot.mjs`** — subscribe, match, reply via sealed publish; crypto decrypt tests.
    • **Steward UX** — enable/disable triggers per bot in Manage hub.
    • **Runbook** — [community-inbound-bot.md](docs/messaging/community-inbound-bot.md) with rate-limit copy.
    • **Status strip** — suppress restore/sync/relay notices during account load; scope mismatch still shown.
    • **Conversation row** — timestamp centered beside preview; direction-aware invitation previews; sidebar formats structured invite/response JSON at render time with peer name and correct recency.
    • **Composer** — removed amber relay queue / cooling-down footer banners.
    • **Message list** — mobile action dock below bubble; sustained touch (~420ms) shows dock like hover.
    • **Dialog / ui-kit** — Tailwind v4 scan fix so modal content stays in viewport; overlay z-index aligned.
    • **Group management + community home** — light/dark contrast pairs on panels and bento cards.
    • **Network profile** — full-width connection status stack; hero online badge; NIP-05 inline in public identity.
    • **Community invite cards** — light-theme historical cards; community avatar in card + details dialog.
    Release notes (docs)
  3. v1.8.13

    Date not recorded
    • **Obscur Full Release** — `workflow_dispatch` can rebuild without a new tag; optional `release_tag` for publish from `main`.
    • **Preflight** — removed duplicate `release:test-pack` (already gated on `main` via `reliability-gates`).
    • **Verify** — single step: artifact matrix + version parity (AAB binary fallback when bundle metadata rows missing).
    • **P12** — Manual UX checklist + unlock smoke on emulator (see demo matrix).
    • **`pnpm p12:android-smoke`** — prerequisites, optional `--build`, adb install + cold start; prints maintainer record block.
    • **`pnpm dev:mobile-shell:online`** — hot-reload mobile shell in browser (avoid full APK loop for JS/relay fixes).
    • **Demo matrix** — P12 UX checklist + record table in [v1.8.12 demo](docs/assets/demo/v1.8.12/README.md).
    • **Relay primary selection** — runtime failover now uses the same reconcile path as health hints; 4s cooldown blocks non-emergency flip-flops that caused React #185 on emulator.
    • **Bottom tab bar** — visible on mobile-shell chat list and secondary routes (Settings, Network, Search, Vault); hidden only inside an active DM/group thread.
    • **Invite JSON previews** — sidebar shows human labels (`Community invite: …`, `Accepted community invite`) instead of raw `community-invite-response` JSON.
    • **Post-build desktop verify** — each `build-desktop` matrix job runs `verify-desktop-bundle-filenames.mjs` before upload (rejects stale `Obscur_1.8.10_*` on a `1.8.12` tag).
    • **Blocking full parity** — `verify-artifacts` runs desktop + Android `release:artifact-version-parity` (no `--skip-android`, no `continue-on-error`).
    Release notes (docs)
  4. v1.8.11

    B1 outbound bot + desktop online

    • **`botPubkeys`** on `GroupMetadata` — sealed descriptor updates + kind 39000 relay hints.
    • **Policy** — `community-bot-policy`, `community-bot-message-policy` (managed-workspace ingest gate).
    • **Steward UI** — Register bots under Manage → General (managed workspace).
    • **CI** — `ci:community-bot-descriptor-smoke` in reliability-gates.
    • **`scripts/community-outbound-bot.mjs`** — sidecar publish (kind 10105 / inner kind 9).
    • **`pnpm community-outbound-bot`** — env-driven CLI with `--dry-run` and allowlist check.
    • **CI reliability-gates** — `pnpm install` before B1 smokes; outbound bot crypto uses `@noble/curves/secp256k1` via apps/pwa (fixes `nostr-tools` missing + `ERR_REQUIRE_ESM` on `@noble/secp256k1`).
    • **Release workflow** — desktop Cargo cache key includes `tauri.conf.json` / product version; stale `bundle/` cleared before `tauri build`; publish renames installers to tag semver.
    • **Outbound bots UI** — visible on managed workspaces with member-vote governance; `botPubkeys` in governance proposals.
    • **Desktop online reliability** — coordination directory refresh throttle; DM display-cache LRU + coalesced hydrate; relay primary failover + faster standby probes ([desktop-online-reliability-2026-05.md](docs/program/desktop-online-reliability-2026-05.md)).
    • Automated: `test:community-bot-descriptor`, `test:community-outbound-bot`, maintainer `dev:desktop:online` soak.
    • **Deferred:** Manual Test B1 (operator live bot announcement).
    Release notes (docs)
  5. v1.8.10

    D2 compaction + Android install smoke

    • **Relay-gateway** — Global hide registry with opt-in JSON persist (`OBSCUR_RELAY_HIDE_PERSIST`, `OBSCUR_RELAY_HIDE_REGISTRY_PATH`).
    • **Compaction** — `scripts/operator-relay-storage-compact.mjs` + [operator-relay-compaction.md](infra/nostr/operator-relay-compaction.md).
    • **CI** — D2 persist + SQL contract smokes in reliability-gates.
    • Community home — clearer CTA hierarchy; governance banner opens Governance tab.
    • Shared management-control primitives for community home + connection profile.
    • Settings search — group + tab labels instead of raw tab ids.
    • Android install + cold-start smoke — [demo matrix](docs/assets/demo/v1.8.10/README.md).
    Release notes (docs)
  6. v1.8.9

    Operator-relay deletion + managed workspace ship

    • **D1** — `community-relay-hide-suppress`: kind 5 hide index; suppresses hidden message `EVENT` frames on operator workspace relays ([`enhanced-relay-pool.ts`](apps/pwa/app/features/relays/hooks/enhanced-relay-pool.ts), [`apps/relay-gateway`](apps/relay-gateway/src/index.ts)).
    • **D3** — “Remove from this workspace” in group message menu, batch mode, and toasts ([`strict-managed-workspace.ts`](apps/pwa/app/features/groups/services/strict-managed-workspace.ts)).
    • **Docs** — [managed-workspace-relay-deletion.md](docs/messaging/managed-workspace-relay-deletion.md); optional `pnpm dev:relay:gateway:docker`.
    • **CI** — `pnpm ci:community-relay-hide-smoke` in reliability-gates.
    Release notes (docs)
  7. v1.8.8

    Managed workspace — Test 8

    • **Group chat header** — Member count, online count (presence evidence), and last activity under the group title ([`chat-header.tsx`](apps/pwa/app/features/messaging/components/chat-header.tsx)).
    • **Group message hydration** — `loadPersistedSealedGroupMessages` on community chat open (Tauri SQLite when available, else scoped `chatStateStore` per profile) ([`sealed-group-message-persistence.ts`](apps/pwa/app/features/groups/services/sealed-group-message-persistence.ts), [`use-sealed-community.ts`](apps/pwa/app/features/groups/hooks/use-sealed-community.ts)).
    • **Post-release roadmap** — [v1.8.9+ managed workspace](docs/program/v1.8.9-plus-managed-workspace-roadmap.md): operator-relay end-to-end deletion, group bots.
    • **Relay dev genesis** — Open relay in `infra/nostr/nostr-rs-relay.toml` (empty `pubkey_whitelist` blocks all publishes on `nostr-rs-relay`).
    • **Tauri loopback relay** — Browser WebSocket for localhost relays; alias-aware pool; ephemeral publish fallback; socket-open publish fallback.
    • **Coordination CORS** — OPTIONS preflight no longer returns body on 204 (wrangler 500).
    • **Create/join copy** — No false “relay optional / coordination-only” when `localhost:7000` is configured; genesis-required banner instead.
    • **Leave / member count** — Terminal membership cache events; header uses live CRDT minus left/expelled; `group-provider` stops stale `Math.max` member count after leave.
    • **Build** — `sealed-group-message-persistence.ts` generic close typo (`}>): void`).
    • **Community workspace activation** — Richer publish errors in toasts; ephemeral WebSocket fallback in publisher.
    • **Participants vs header** — Terminal LEFT/EXCLUDED in modal; chat header reacts to `COMMUNITY_TERMINAL_MEMBERSHIP_UPDATED_EVENT`.
    • v1.8.8 scope, gate, demo matrix, release notes, handoff, and release-train synced.
    Release notes (docs)
  8. v1.8.7

    Transport-hard evidence + membership consistency

    • **T7-1** — Expanded `community-invite-relay-join.test.ts`: transient retry success, manual retry terminal transitions, retry visibility guards.
    • **T7-2** — Membership surface consistency tests: `invite-to-group-dialog`, `network-dashboard`, `chat-view` → `chat-header` member-count forwarding.
    • Release confidence docs explicitly separate **proven automation** vs **environment-bound manual soak**.
    • Full staging/public-relay two-client soak remains environment-bound ([v1.8.8 demo](docs/assets/demo/v1.8.8/README.md) closes local managed-workspace lane).
    Release notes (docs)