release(v4.0.0): Shade GA — V3.x consolidation + audit prep
Some checks failed
Test / test (push) Has been cancelled
Cross-platform vectors / TypeScript vectors (bun) (push) Has been cancelled
Cross-platform vectors / Kotlin vectors (gradle) (push) Has been cancelled
Docker build and publish / docker (push) Has been cancelled
Publish / publish (push) Has been cancelled
Some checks failed
Test / test (push) Has been cancelled
Cross-platform vectors / TypeScript vectors (bun) (push) Has been cancelled
Cross-platform vectors / Kotlin vectors (gradle) (push) Has been cancelled
Docker build and publish / docker (push) Has been cancelled
Publish / publish (push) Has been cancelled
V3.1 → V3.12 consolidated and tagged for the first GA release. Wire format unchanged from 0.4.x — 4.0 peers interoperate with 0.4.x peers byte-for-byte. The version bump is semantic: audit-cycle complete, opt-in surface fully exposed, threat model refreshed for every new surface. Highlights: - All 24 @shade/* packages bumped to 4.0.0 in lockstep. - CHANGELOG 4.0.0 section is the canonical manifest of what landed. - THREAT-MODEL extended (§10 fingerprint gates, §11 WebRTC P2P, §12 Web-Worker boundary) + residual-risks table refreshed. - OpenAPI now covers all 27 routes: prekey, transfer, KT, inbox, bridge, observer, /metrics, /healthz, /ready. - MIGRATION 0.3.x → 4.0 documented + smoke-tested against shade migrate-storage on a real SQLite DB. - docs/audit/REVIEW-BUNDLE.md + SCOPE.md ready for external reviewer. - scripts/soak.ts harness for the GA-stable 2-week soak window. - All V*.md plans archived under docs/archive/ with Status: Done. - Voice/Video carved out into V5.0; 4.0 audit focuses on the frozen non-realtime stack. Tests: TS 1000/1000 + Kotlin 11/11 cross-platform vectors green. Docker: gt.zyon.no/stian/shade-prekey:4.0.0 builds and reports version 4.0.0 on /health. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -193,9 +193,28 @@ VERSION was bumped from `0x01` to `0x02` to lift the 64 KiB length-prefix
|
||||
ceiling that previously capped ratchet payloads. **Sessions are
|
||||
incompatible across the bump**; both peers must run 0.3.0+.
|
||||
|
||||
## Rich file metadata + previews (V3.9)
|
||||
|
||||
`stream-init` carries optional E2EE `fileMetadata` (filename, MIME,
|
||||
thumbnail-stream pointer). `@shade/files` consumers see this on the
|
||||
incoming-transfer side and can render previews via `<TransferRow
|
||||
showThumbnail />`. The thumbnail itself rides as a separate AEAD
|
||||
stream — server never sees preview pixels in plaintext.
|
||||
|
||||
See [streams.md § Rich file metadata + previews](streams.md#rich-file-metadata--previews-v39)
|
||||
for the wire format, format-hardening rules, and renderer trust
|
||||
model. The pattern integrates seamlessly with `@shade/files`'s own
|
||||
write/read RPCs — pass `fileMetadata` in the underlying
|
||||
`shade.upload` and the same `ShadeThumbnailCache` powers previews
|
||||
across all transfer surfaces.
|
||||
|
||||
## Related modules
|
||||
|
||||
* `@shade/streams` — chunk encryption, lane key derivation. Indirect dep.
|
||||
* `@shade/transfer` — multi-lane transport with HTTP / WS fallback.
|
||||
* `@shade/transport-webrtc` (V3.11, optional) — direct P2P chunk
|
||||
delivery via `RTCDataChannel`; large `read`/`write` payloads
|
||||
automatically prefer WebRTC when both peers have called
|
||||
`shade.configureWebRTC()`.
|
||||
* `@shade/sdk` — `Shade.files` getter; `BackgroundHooks.onPruneFiles` for
|
||||
retention.
|
||||
|
||||
Reference in New Issue
Block a user