Release history
Changelog
Version history from the repo CHANGELOG.md — evidence-named releases, not marketing blurbs. Full notes live under GitHub.
v1.9.6
Profile picker + session persistence
- **Chrome-style profile picker** — `/profiles` public on desktop; card grid; show-on-startup preference; `pnpm verify:profile-picker`.
- **Stay signed in (native)** — OS keychain consent flag, Lock vs Log out semantics, native session persist feedback.
- Cold-boot / F5 keychain restore — **cancelled on desktop** in v1.9.10 (feasibility gate).
v1.9.5
Trust, abuse resistance, security validation
- **SEC-F** — recipient-local DM trust assessment port; financial/cold-contact rule pack; thread banner; trust settings copy.
- **SEC-B** — B2 keyword flood rate limits; spam-shape signals; steward bot pause UX.
- **SEC-R** — operator trust bundle audit; relay trust scorer; stack hardening doc; publish honesty gate.
- **SEC-V** — programmatic security validation gates (`pnpm verify:sec-v1.9.5`, `pnpm verify:trust-v1.9.5`, `pnpm verify:relay-v1.9.5`).
v1.9.4
Platform + community verification
- **Phase C exit** — client community verification Pass; programmatic platform kernels green.
- **SQLite owner matrix** — documented in [obscur-native-sqlite-policy.md](docs/program/obscur-native-sqlite-policy.md).
- **Shell stability** — STAB-R @ `2a1badf7`; `pnpm verify:stability`.
v1.9.3
P3d: community SQLite authority
- **P3d** — Native group list + sealed messages authority in SQLite.
- **`group-list-authority.ts`** — SQLite resolves group list on native runtime.
- **`community-group-sqlite-store.ts`** — Hydrate merge from SQLite seeds.
- **`sealed-group-message-persistence.ts`** — Native read/write without chat-state mirror.
v1.9.2
Lane X: experience polish
- **X1** — Route warm-up skeleton with surface-aware stagger.
- **X2** — Page transition loading shell during sidebar navigation.
- **X3** — Voice call dock elapsed timer + ring pulse.
- **X4–X6** — Accepted via existing lightbox and media players.
v1.9.1
post-K trust convergence
- **REL-001** — Terminal membership rows beat stale `joined` on restore merge.
- **MEM-004** — Invite-response-only rows downgraded to `historical`.
- **MEM-006** — Re-hydrate when `createdGroups` empty but scope matches.
- **MEM-002 / MEM-003** — Cross-surface roster input builder + invite member pubkeys.
- **MED-001** — Restore media CAS relink after chat-state replace.
- **MED-002** — Ghost voice replay quarantine on restored signal rows.
- **REL-003** — Profile-scoped invite cache, sync state, and read-model listeners.
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).
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.