Support and maturity
Softchat is pre-1.0 software. Repository-built artifacts are tested as release candidates, but they are not yet promised as stable public-registry releases. Minor versions may refine source APIs; wire compatibility remains governed by the accepted architecture and executable capability catalog.
Swift and iOS deferred
Swift source, cookbook examples, and the historical performance record remain
in the repository, but automated Swift smoke tests, DocC generation,
XCFramework packaging, and Swift performance audits are temporarily disabled.
The /swift/ route is therefore a status page rather than a current generated
reference, and no iOS-ready release claim is made while this gate is deferred.
Set the repository variable SOFTCHAT_ENABLE_SWIFT_CI=true only after the
self-hosted [self-hosted, macOS, x64] runner is available. Swift, package,
DocC, and performance checks must then pass before Apple distribution work is
treated as active again.
Tested surfaces
| Surface | Tested contract |
|---|---|
| Rust | Rust 1.97 or newer on targets continuously checked by CI |
| Android | API 33 or newer on arm64-v8a and x86_64 |
| Swift | Source facade retained; automated macOS/iOS verification deferred |
| JavaScript | Node.js 22 CommonJS and ESM, browser, and dedicated Worker Wasm loaders |
Android ABIs, Apple deployment targets, JavaScript runtimes, and other distribution shapes become supported only after their packed external-consumer test is green and the release names them explicitly. Artifacts from different Softchat revisions must not be mixed.
Compatibility guarantees
- Stable error codes are additive. Include an unknown-code fallback and never branch on display text.
- Unknown Nostr event kinds remain representable. A capability-specific reader rejects unsupported shapes at its typed boundary.
- Canonical writers change only with an accepted architecture update, fixture updates, cross-language tests, and a changelog entry.
- Compatibility readers are removed only after their documented released-client window expires.
- Platform effects—secure storage, HTTP, attachment files, background work, notifications, and UI—remain application-owned. Android protocol/use-case SQLite and the optional native managed relay transport are the documented Rust-owned exceptions; custom hosts can retain their own sockets through the low-level API.
Remaining release gates
The executable capability matrix records implementation, interoperability-evidence, and release status independently. The main cross-cutting gates are:
- physical iOS package validation and archive/dSYM measurements;
- a second physical production-build Android device audit beyond the current one-device performance audit;
- production Android endpoint, offline/reconnect, redirect, tamper, timeout, process-kill, and storage-exhaustion fault evidence;
- released Android/iOS client and Softrelay round trips;
- package signing, checksums, SBOM, provenance, and registry policy; and
- the Swift account facade, App Group/extension-safe SQLite ownership, and a reversible iOS application cutover.
The performance analysis makes the current latency and evidence gaps visible. Its exact measurement contract and calibration policy remain in the performance methodology. Performance measurements are descriptive until stable runners and device classes have been calibrated.
Security and maintenance
Report security issues privately to the repository maintainers. Supported releases receive fixes for authentication bypasses, key exposure, memory-safety defects, denial-of-service bounds, and wire-format regressions.
A supported release requires green correctness checks, install tests from packed artifacts, generated API documentation, checksums, dependency review, and the performance evidence required for the affected surface.