publish-shade.sh used to call `bun run publish:all`, which in turn was
wired to call publish-shade.sh (after the V4.0 cleanup). Point it
directly at scripts/publish-all.ts so the interactive flow runs the
TS publisher without re-entering itself.
Verified: dry-run from publish-shade.sh now packs all 24 @shade/*@4.0.0
packages cleanly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>
publish-shade.sh's PACKAGES list was missing shade-streams, shade-transfer,
and shade-files — so the conflict-check + auto-bump loop silently skipped
those three packages. The final `bun run publish:all` step still picked
them up (via scripts/publish-all.ts), but a re-publish on a version that
already existed in the registry would not have bumped the missing
packages, leaving a workspace-wide version mismatch.
Also un-gitignore both publish scripts. publish-all.ts was already tracked
(git overrides ignore for tracked files), and publish-shade.sh contains
no secrets at rest — GITEA_TOKEN is read interactively and stored in
~/.bashrc by the script itself.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>