Releases
What changed in each LutraID release, newest first. One version number covers the whole product: the release named here is what LutraID Cloud runs and what a self-hosted customer installs.
Cloud is updated for you and needs nothing from you. Self-hosted installations pull the version by tag, which is immutable — it always resolves to the same digests — and Upgrades and air-gap covers moving between them. Security releases are published separately from feature releases, with advisories.
v0.34.201
22 October 2026
Fixes
- frontend: send a JSON body when turning on SCIM
v0.34.200
22 October 2026
Features
- sso: prefill the provider edit form with the stored non-secret config
- frontend: show SSO domain verification as a DNS record table
Fixes
- sso: return OIDC sign-in to the origin that holds the state cookie
- ci: size wallet PAR budgets for nightly OIDF conformance
- ci: accept the installer's current skip-verify message in the release smoke
v0.34.194
21 October 2026
Features
- selfhosted: self-hosted GA stack — licensing UI, SSO gate, registry defaults, retention parity, own Caddy image, zero-egress smoke, legal
Fixes
- deps: patch HIGH CVEs blocking the Trivy image gate
- remediate Security Cloud P2/P3 code paths
- remediate P1 security findings (mDoc, demo admin, key pool)
v0.34.190
20 October 2026
Fixes
- point help links at the renamed docs guides
- frontend: make three CI-flaky component tests deterministic
v0.34.187
19 October 2026
Breaking
- Self-hosted: the database migrations start from a new baseline. An installation on an earlier release cannot be upgraded in place: install this release on an empty database.
- api: bulk offer endpoints require a
batchId, a UUID you generate once per bulk send, and answer200with{ batchId, results }instead of201with an array. Each row reportscreated,invalidorfailed, and a request holds at most 50 rows. Sending a row again with the samebatchIdand entryidreturns its first offer, markedreplayedand withouttransactionCode, instead of creating a second one. - api: offer emails no longer contain the PIN.
transactionCodeis returned once, in the create response, and never on an idempotent replay. Give it to the holder another way, or setuserPinRequiredtofalsefor email offers. - api: a plan limit now answers
429withQUOTA_EXCEEDEDand the paramsmeterKey,billingClass,limitandresetsAt. Waiting does not help; the limit resets atresetsAtor after a plan change. Every429setsRetry-After. - email: account emails, invitations included, are sent from
AUTH_EMAIL_FROM, which defaults toEMAIL_FROM. Invitations usedEMAIL_FROMbefore; setAUTH_EMAIL_FROMonly if account mail needs a different sender. - Self-hosted: recording or withdrawing an organization's legal decision needs the
registrarpermission as well as superadmin. Grant it on the staff user page. - dashboard: pages were reorganized and renamed (Setup, Records, Team, Developers), and old page addresses are not redirected. Update bookmarks; the guides use the new names.
Features
- ui-ux-redesign
Fixes
- validate PID birthplace and display alternative-query inbox results
v0.34.183
15 October 2026
Fixes
- api: keep public docs limited to integration and wallet APIs
v0.34.182
14 October 2026
Maintenance only: no customer-facing changes.
v0.34.181
14 October 2026
Features
- ebwoid: promote the business ID document type to platform scope
- expose credential offer status to issuer API keys in SaaS
Fixes
- restore API reference entries behind proxy prefixes
- patch WAL-G HTTP/2 module for the Trivy gate
- repair icons, profile uploads, and resource deletion
- stabilize settings navigation and organization forms
- image CI downloads and patch backup-tool Go runtimes
v0.34.173
9 October 2026
Features
- frontend: unify UI patterns and clarify verifier registration
- record append-only security events for API keys and membership changes
Fixes
- publish unsigned issuer metadata when signing is disabled
- deps: patch Next.js image optimization SSRF
- drain rollout traffic and probe worker and relay liveness
- include public backend in edition type checks
- require tenant scope for key-service signing and ECDH
- raise light-theme text contrast to WCAG AA
- pin external document catalog sources
- remove browser credential schema compilation under CSP
- enable append-only persistence for Compose Valkey
- return 404 for missing scoped issuer certificates
- accept TS3 wallet certification information as a string
- force UTC on every database session
- align sandbox registration certificates with ETSI TS 119 475
- validate organization identifiers and correct legacy LEI bindings
- align WRPRC uploads with TS 119 475 validity and issuer coverage
- align WRPAC import validation with ETSI TS 119 411-8
- unify wallet protocol error responses across editions
- protect public testing routes and present safe backend errors
- frontend: preserve wizard state and retry failed lookups
- preserve reusable offer state after session failures
- frontend: show backend failures as errors with route error boundaries
- deliver intermediary wallet declines and suppress claims on failure
- enforce the reviewed Better Auth HTTP endpoint inventory
- make attribute-reference offers single-use
- require all ISO mDL mandatory elements
- enable self-hosted account deletion
- bound KMS and Vault requests with timeouts
- bound database advisory lock acquisition and bypass valid signing identities
- validate holder data and issuing country at offer creation
- report terminal email failures and deduplicate delivery retries
Performance
- index PAR credential offer issuer_state lookup
v0.34.127
7 October 2026
Features
- qes: add scrolling document reader with zoom
- qes: require PDF uploads with preview and 24-hour requests
- seed: lutraid lab wallet provider acceptance profile
- frontend: polish the Request QES flow for customers
Fixes
- block Better Auth SCIM management and impersonation endpoints
- enforce organization creation policy during onboarding
- require explicit opt-out of self-hosted release verification
- qes: use signed filenames for wallet results
- backend: bundle the wallet interop seed in the SaaS image
- frontend: keep the Request QES session in the URL
- config: check service secrets at process start, not in maintenance jobs
- issuance: keep authorization-code offers reusable and guard status transitions
- retention: erase verifier recipient emails in Intermediary mode
- issuance: require complete subjects and keep snapshots until token expiry
- assurance: require anchored wallet attestation trust in Production
- config: refuse mock secrets in production
- retention: erase the credential offer email with the recipient
- logging: never log or store SQL parameters
- verifier: reject repeated and race-losing wallet posts
- oidc4vci: bind upstream UserInfo claims to the ID token subject
- analytics: scrub tokens and emails from PostHog URLs
- queue: redact email bodies on renamed permanent failures
- issuance: issue only for the organization's own country
- honor lander language links on app entry
- public: classify the public PID and mDL types for certificate selection
v0.34.90
1 October 2026
Features
- keys: keep Sandbox keys as encrypted software keys
- pki: per-type issuer registration and issuer-side Intermediary (Plan F)
- operating-mode: deliver signed intermediary results to the sandbox inbox
- pki: prepare sandbox certificates and verifier registration automatically
- pki: upload production registration certificates
- pki: production verifier access certificate CSR (Plan B)
- pki: production certificates without trust sources and superadmin legal verification (Plan A)
- saas: add sandbox wallet-signing demo
- frontend: polish the issuer certificate page and summarize review fixes
- pki: gate production use on certificate eligibility
- pki: add provider enrollment and certificate onboarding
- pki: scope issuer signing and status lists to their certificates
- operating-mode: add deployment mode and relying-party enrollment revisions
- pki: scope sandbox CAs per organization and add the sandbox registrar
- pki: require trust validation before certificate assignment
- pki: store certificate versions and current assignments
- pki: versioned certificate profiles and conformance fixtures
- selfhosted: let the installer hand routing to a proxy the customer runs
Fixes
- soak: report the Sandbox key backend the fixture actually uses
- delete Sandbox issuers and verifiers with their certificates, never Production activity
- db: let organizations with published status lists be deleted
- seed: lutraid-demos seeds PID and mDL with their Sandbox certificates
- keys: stop creating signing keys that never get a certificate
- soak: prepare Sandbox certificates when provisioning the soak fixture
- pki: sandbox CA names, operator certificate blockers and registration breadcrumb
v0.34.59
28 September 2026
Fixes
- frontend: do not put a subscription paywall in an edition with no billing
- ui updates
v0.34.57
25 September 2026
Features
- add EUDI TS3 technical profile for ITB RP testing
Fixes
- selfhosted: let a superadmin change an organization member's role
- selfhosted: mount the rest of what this edition's frontend calls
- frontend: send onboarding to a page that exists
- selfhosted: let the installer's prompts be edited
v0.34.52
25 September 2026
Features
- selfhosted: one organization by default, more as a licensed entitlement
Fixes
- selfhosted: ask for the customer's own registry, and colour the installer output
v0.34.50
24 September 2026
Features
- release: publish the self-hosted images for arm64 as well as amd64
Fixes
- frontend: find sharp where pnpm actually puts it
- frontend: ship sharp for the architecture the image runs on
- release: push each self-hosted image as soon as its gate passes
- selfhosted: serve the routes this edition's own frontend calls
v0.34.45
24 September 2026
Features
- selfhosted: one command installs the bundle
- release: derive the released commit from the version
- release: publish public release notes for every release
Fixes
- ci: the smoke install skips verification on purpose
- include category B in public mDL issuance
- licensing: accept the request key Chronos actually sends
- issuer-trust: log why a trust evaluation was not trusted
- interop: publish initial workspace status list
- trust-validator: send the status token format for status signers
v0.34.33
22 September 2026
Features
- api: add stable API key integration routes
- selfhosted: customers receive a release only after it installs
- public-edition: trust-list test case families and flow information panel
- operations: pin several wallet provider roots for interop issuance
- selfhosted: fan every release out to entitled customers
- self-hosted edition — licensing, Helm and Compose packages, signed releases
- platform-ca: ISO 18013-5 certificate profile for trust-list interop
Fixes
- selfhosted: point customers at info+support@lutralabs.io
- issuer-trust: accept the mdl provider category
- selfhosted: clean the fan-out workspace as root, like every other workflow
- public-edition: make the trust-list cases enforce what they claim
- selfhosted: let
docker compose up --waitjudge the relays and the scheduler - selfhosted: make a fresh install actually come up
- selfhosted: version the Helm chart with the release
- selfhosted: publish the Helm chart pinned to the release's digests
- selfhosted: attest build provenance with cosign, not GitHub
- ci: install crane and syft pinned, verified and authenticated
- selfhosted: clear the release Trivy gate, and fix Compose's REGISTRY
- public-edition: seed only the cases whose profiles exist
- docker: drop npm and corepack from the runtime images
- ci: install crane and syft in the self-hosted release
- frontend: serve cosign.pub instead of 404ing it
- align EBWOID development assurance policy
- frontend: sidebar links 404ed outside an environment
- reset: the final sync no longer forces, and clears a stale force first
- soak: one journey at a time, because two break each other
- ci: start the v0.34 build series so staging can receive Freight again