v1.8.2
Overview
Hardened Security Headers
- Production responses now ship a locked-down Content Security Policy with per-request nonces for
script-srcandstyle-src, replacing'unsafe-inline'. A new index-html middleware templates the nonce into the Angular shell before serving. Cross-Origin-Opener-Policy: same-originandCross-Origin-Resource-Policy: same-originare now set, severingwindow.openerfrom cross-origin tabs and blocking no-cors embedding of Orchard responses on other origins.connect-srcis tightened to'self',img-srcallows remotehttp/httpssources, andbase-uri/form-actionare pinned to'self'.- Dev continues to emit report-only CSP with
'unsafe-inline'so the Angular dev server keeps working unmodified.
Per-Purpose Crypto Keys
- Orchard now derives three distinct keys from the root secret — one for init, one for settings encryption, and one for JWT signing — instead of reusing a single key across all three purposes.
- Encrypted settings are no longer round-tripped through forms; they surface as flagged hints in the new richer settings metadata objects, which also improves form validation and flow.
Important
Existing deployments will derive new keys from the same root secret on first boot. Settings already encrypted with the prior key will be re-encrypted under the new settings key automatically.
GraphQL-WS Subscriptions
- Subscriptions are rebuilt on the modern
graphql-wsclient on both ends of the pipe, replacing the legacyrxjs WebSocketSubject+subscriptions-transport-wshandshake. AI chat and Bitcoin streams are rewritten against the newclient.subscribe()API. - Subscription auth now rides on
connectionParamsand is validated centrally byGqlAuthenticationGuard, dropping the per-queryauthargument and the@NoHeaders()escape hatch. - The GraphQL WebSocket URL derives its scheme from
window.location.protocol, so HTTPS deployments correctly negotiatewss://instead of being blocked as mixed content.
Explicit Dev Auth Bypass
- Dev-only auth bypass is now a named, explicit mode rather than an implicit side-effect, and the client is aware of it so the auth flow pivots accordingly.
Mint Quote TTL & Number Inputs
- Mint quote TTL values are now treated as seconds throughout, fixing the prior millisecond miscalculation that shortened quote validity. Config language has been updated to describe the control directly — quote TTL governs both bolt11 mint quotes and melt quotes stepping in front of payment.
- The locale-aware number input directive has been rebuilt; grouping separators, decimal handling, and edit behavior now respect locale instead of leaning on the previous lazy implementation.
Schema Generation Hardening
- Init lifecycle hooks are guarded so schema-only boot paths skip runtime setup, schema generation now catches and rethrows errors cleanly, and the process exits reliably when generation completes.
Build & Developer Experience
- Angular framework packages bumped to 21.2.9, Angular Material / CDK / Material-Luxon to 21.2.7,
@nestjs/graphqlrefreshed, and transitive lockfile bumps forhonoandprotobufjs. npm audit fixapplied, and AGENTS.md now documents Orchard's self-hosted FOSS deployment context so future contributors frame fixes, defaults, and error messages around operator-run reality.
Bug Fixes
- Custom AI tool jobs now refresh the tool GUI when users make changes instead of appearing frozen.
- Missing chart provider on the index section is now registered, so dashboard charts render on first load.
- Main mint dashboard container always grows to full width, eliminating the layout snap that occurred at load.
What's Changed
- chore: bump version by @orangeshyguy21 in #164
- fix: Separate Tool Subs by @orangeshyguy21 in #165
- Fix: Quote TTL in seconds by @orangeshyguy21 in #166
- Feat: Dev Auth Bypass by @orangeshyguy21 in #167
- Fix: Build Optimize by @orangeshyguy21 in #168
- Feat: Crypto Keys by @orangeshyguy21 in #169
- Feat: Security Headers by @orangeshyguy21 in #170
- chore: Websockets Upgraded by @orangeshyguy21 in #171
- chore: April 2026 Updates by @orangeshyguy21 in #172
Full Changelog: v1.8.1...v1.8.2