walletkit 0.23.0

Reference implementation for World ID clients.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.23.0]https://github.com/worldcoin/walletkit/compare/v0.22.0...v0.23.0 - 2026-09-16

### Fixed

- correct open_encrypted call arity and address RUSTSEC-2026-0285 ([#543]https://github.com/worldcoin/walletkit/pull/543)
- *(sqlite)* isolate native engine and encrypt plaintext stores ([#537]https://github.com/worldcoin/walletkit/pull/537)

### Other

- Adds support for an app_identifier ([#538]https://github.com/worldcoin/walletkit/pull/538)

## [0.22.0]https://github.com/worldcoin/walletkit/compare/v0.21.4...v0.22.0 - 2026-09-08

### Added

- *(flamingo)* [**breaking**] add fluent matcher configuration ([#517]https://github.com/worldcoin/walletkit/pull/517)
- integrate flamingo into walletkit-core ([#508]https://github.com/worldcoin/walletkit/pull/508)
- minor improvements to activity history ([#506]https://github.com/worldcoin/walletkit/pull/506)
- persist encrypted WASM SQLite in OPFS ([#493]https://github.com/worldcoin/walletkit/pull/493)

### Fixed

- cache session seed keyed by rpId ([#511]https://github.com/worldcoin/walletkit/pull/511)

### Other

- split walletkit-sqlite from walletkit-db ([#489]https://github.com/worldcoin/walletkit/pull/489)
- Introduce Credential Activity History Store ([#481]https://github.com/worldcoin/walletkit/pull/481)
- Update worldchain URLs to the ones in worldchain domain. ([#505]https://github.com/worldcoin/walletkit/pull/505)

## [0.21.4]https://github.com/worldcoin/walletkit/compare/v0.21.3...v0.21.4 - 2026-08-31

### Added

- expose credential claims accessors and a stored-credential fetch ([#490]https://github.com/worldcoin/walletkit/pull/490)

## [0.21.3]https://github.com/worldcoin/walletkit/compare/v0.21.2...v0.21.3 - 2026-08-28

### Other

- Update World ID Protocol crates to 0.14 ([#485]https://github.com/worldcoin/walletkit/pull/485)

## [0.21.2]https://github.com/worldcoin/walletkit/compare/v0.21.1...v0.21.2 - 2026-08-19

### Other

- update Cargo.toml dependencies
- bump uniffi to 0.32.0 ([#475]https://github.com/worldcoin/walletkit/pull/475)

## [0.21.1]https://github.com/worldcoin/walletkit/compare/v0.21.0...v0.21.1 - 2026-08-14

### Added

- WIP-104 Expose authenticator account operations over the UniFFI surface ([#473]https://github.com/worldcoin/walletkit/pull/473)

### Other

- Pin the byte-stability of plaintext vault exports ([#471]https://github.com/worldcoin/walletkit/pull/471)

## [0.21.0]https://github.com/worldcoin/walletkit/compare/v0.20.4...v0.21.0 - 2026-08-07

### Added

- WIP-102 update/revert recovery agent ([#381]https://github.com/worldcoin/walletkit/pull/381)

### Other

- Update WalletKit to use `ZkArtifactSource` trait ([#458]https://github.com/worldcoin/walletkit/pull/458)
- *(swift)* replace build scripts with xtask ([#455]https://github.com/worldcoin/walletkit/pull/455)
- Split recovery binding 404 into distinct eligibility errors ([#462]https://github.com/worldcoin/walletkit/pull/462)
- Expose caching ZK artifacts as an artifact source ([#463]https://github.com/worldcoin/walletkit/pull/463)

## [0.20.4]https://github.com/worldcoin/walletkit/compare/v0.20.3...v0.20.4 - 2026-07-27

### Other

- remove broken readme ([#452]https://github.com/worldcoin/walletkit/pull/452)

## [0.20.3]https://github.com/worldcoin/walletkit/compare/v0.20.2...v0.20.3 - 2026-07-24

### Other

- *(kotlin)* replace build scripts with xtask ([#442]https://github.com/worldcoin/walletkit/pull/442)
- use walletkit-testkit for core proof-generation integration tests ([#449]https://github.com/worldcoin/walletkit/pull/449)
- disable sqlite3mc download in docs.rs ([#451]https://github.com/worldcoin/walletkit/pull/451)

## [0.20.2]https://github.com/worldcoin/walletkit/compare/v0.20.1...v0.20.2 - 2026-07-15

### Other

- bump release version to republish Swift and Kotlin FFI artifacts

## [0.20.1]https://github.com/worldcoin/walletkit/compare/v0.20.0...v0.20.1 - 2026-07-15

### Other

- move Rust crates into crates/ directory ([#443]https://github.com/worldcoin/walletkit/pull/443)
- replace android cross-rs cross compilation setup with a nix based one ([#434]https://github.com/worldcoin/walletkit/pull/434)

## [0.20.0]https://github.com/worldcoin/walletkit/compare/v0.19.1...v0.20.0 - 2026-06-10

### Other

- introduce walletkit-db storage primitives crate ([#400]https://github.com/worldcoin/walletkit/pull/400)
- V4.0 credential registration diagram ([#395]https://github.com/worldcoin/walletkit/pull/395)
- make vault listener notification test deterministic ([#418]https://github.com/worldcoin/walletkit/pull/418)

## [0.19.1]https://github.com/worldcoin/walletkit/compare/v0.19.0...v0.19.1 - 2026-06-01

### Other

- [POP-3811] support World ID walletkit user agents ([#416]https://github.com/worldcoin/walletkit/pull/416)

## [0.19.0]https://github.com/worldcoin/walletkit/compare/v0.18.0...v0.19.0 - 2026-05-21

### Added

- support core session proofs ([#412]https://github.com/worldcoin/walletkit/pull/412)

### Other

- default Authenticator to direct service endpoints, add OHTTP opt-in constructors ([#408]https://github.com/worldcoin/walletkit/pull/408)
- bump world-id-protocol to v0.11.0 ([#406]https://github.com/worldcoin/walletkit/pull/406)

## [0.18.0]https://github.com/worldcoin/walletkit/compare/v0.17.1...v0.18.0 - 2026-05-15

### Other

- add credential pre-flight check against proof requests ([#404]https://github.com/worldcoin/walletkit/pull/404)

## [0.17.1]https://github.com/worldcoin/walletkit/compare/v0.17.0...v0.17.1 - 2026-05-08

### Fixed

- ffi builds embedding keys ([#401]https://github.com/worldcoin/walletkit/pull/401)

## [0.17.0]https://github.com/worldcoin/walletkit/compare/v0.16.1...v0.17.0 - 2026-05-04

### Added

- enable WASM compilation for walletkit ([#362]https://github.com/worldcoin/walletkit/pull/362)

## [0.16.1]https://github.com/worldcoin/walletkit/compare/v0.16.0...v0.16.1 - 2026-05-03

### Added

- expose credential sub proving for issuers ([#382]https://github.com/worldcoin/walletkit/pull/382)

### Fixed

- use cfg(target_os = "android") for sha2 force-soft ([#389]https://github.com/worldcoin/walletkit/pull/389)

### Other

- Make RecoveryBinding public ([#385]https://github.com/worldcoin/walletkit/pull/385)

## [0.16.0]https://github.com/worldcoin/walletkit/compare/v0.15.2...v0.16.0 - 2026-04-29

### Other

- bump to new world id core, proof and alloy v2 ([#379]https://github.com/worldcoin/walletkit/pull/379)
- pop 3767 check with app crypto teams on walletkit useragent header ([#366]https://github.com/worldcoin/walletkit/pull/366)

## [0.15.2]https://github.com/worldcoin/walletkit/compare/v0.15.1...v0.15.2 - 2026-04-28

### Other

- bump release version to republish Swift and Kotlin FFI artifacts

## [0.15.1]https://github.com/worldcoin/walletkit/compare/v0.15.0...v0.15.1 - 2026-04-28

### Fixed

- expose RP proof request errors ([#367]https://github.com/worldcoin/walletkit/pull/367)

### Other

- Bump to world-id-* 0.10 ([#370]https://github.com/worldcoin/walletkit/pull/370)

## [0.15.0]https://github.com/worldcoin/walletkit/compare/v0.14.0...v0.15.0 - 2026-04-21

### Fixed

- route OHTTP gateway traffic through US relay regardless of region ([#360]https://github.com/worldcoin/walletkit/pull/360)

### Other

- remove protobuf compiler from prerequisites ([#363]https://github.com/worldcoin/walletkit/pull/363)
- Handle missing debug report ([#357]https://github.com/worldcoin/walletkit/pull/357)

## [0.14.0]https://github.com/worldcoin/walletkit/compare/v0.13.0...v0.14.0 - 2026-04-17

### Added

- ohttp key rotation flow ([#358]https://github.com/worldcoin/walletkit/pull/358)
- integrate ohttp client ([#356]https://github.com/worldcoin/walletkit/pull/356)

### Other

- adapt to world-id-protocol authenticator refactor ([#352]https://github.com/worldcoin/walletkit/pull/352)
- Update the  endpoint to the ([#331]https://github.com/worldcoin/walletkit/pull/331)

## [0.13.0]https://github.com/worldcoin/walletkit/compare/v0.12.0...v0.13.0 - 2026-04-09

### Added

- session proofs support ([#347]https://github.com/worldcoin/walletkit/pull/347)
- improve intermediate key handling ([#328]https://github.com/worldcoin/walletkit/pull/328)

### Other

- update Cargo.toml dependencies
- Adjust get recovery agent method to return pending update ([#350]https://github.com/worldcoin/walletkit/pull/350)
- Register recovery agent from the signup service ([#349]https://github.com/worldcoin/walletkit/pull/349)
- Add function to check recovery bindings status ([#332]https://github.com/worldcoin/walletkit/pull/332)

## [0.12.0]https://github.com/worldcoin/walletkit/compare/v0.11.3...v0.12.0 - 2026-04-02

### Added

- do not trigger backups on `delete_storage()` ([#343]https://github.com/worldcoin/walletkit/pull/343)
- add danger_sign_initiate_recovery_agent_update to Authenticator (PROTO-4477) ([#333]https://github.com/worldcoin/walletkit/pull/333)

### Other

- NFC non-retryable migration errors ([#345]https://github.com/worldcoin/walletkit/pull/345)

## [0.11.3]https://github.com/worldcoin/walletkit/compare/v0.11.2...v0.11.3 - 2026-04-01

### Added

- add account recovery mechanisms ([#330]https://github.com/worldcoin/walletkit/pull/330)

### Other

- bump world-id-protocol crates 0.7 → 0.8 and taceo-oprf 0.8 → 0.11 ([#337]https://github.com/worldcoin/walletkit/pull/337)

## [0.11.2]https://github.com/worldcoin/walletkit/compare/v0.11.1...v0.11.2 - 2026-03-26

### Added

- expose initiateRecoveryAgentUpdate and executeRecoveryAgentUpdate ([#320]https://github.com/worldcoin/walletkit/pull/320)
- walletkit cli  ([#294]https://github.com/worldcoin/walletkit/pull/294)
- add destroy credential storage method ([#322]https://github.com/worldcoin/walletkit/pull/322)

### Other

- Walletkit register recovery bindings ([#327]https://github.com/worldcoin/walletkit/pull/327)
- bump world-id-core 0.6 → 0.7 ([#325]https://github.com/worldcoin/walletkit/pull/325)

## [0.11.1]https://github.com/worldcoin/walletkit/compare/v0.11.0...v0.11.1 - 2026-03-24

### Added

- expose danger_sign_challenge ([#298]https://github.com/worldcoin/walletkit/pull/298)

### Fixed

- *(walletkit-db)* patch sqlite3mc_cipher_name to eliminate thread-safety race ([#301]https://github.com/worldcoin/walletkit/pull/301)

### Other

- `notify_vault_changed` when credential vault mutated ([#317]https://github.com/worldcoin/walletkit/pull/317)

## [0.11.0]https://github.com/worldcoin/walletkit/compare/v0.10.0...v0.11.0 - 2026-03-19

### Added

- [**breaking**] version bump to 0.6 with new RP signature ([#308]https://github.com/worldcoin/walletkit/pull/308)
- export credential store as raw bytes ([#307]https://github.com/worldcoin/walletkit/pull/307)
- expose TFH recovery agent address in defaults ([#299]https://github.com/worldcoin/walletkit/pull/299)
- production defaults ([#305]https://github.com/worldcoin/walletkit/pull/305)

### Fixed

- *(walletkit-core)* fix flaky test_session_cache_ttl TTL off-by-one ([#303]https://github.com/worldcoin/walletkit/pull/303)

## [0.10.0]https://github.com/worldcoin/walletkit/compare/v0.9.1...v0.10.0 - 2026-03-12

### Added

- notify host on vault mutations for backup sync ([#292]https://github.com/worldcoin/walletkit/pull/292)

### Other

- expose associated_data_hash ([#297]https://github.com/worldcoin/walletkit/pull/297)
- include expired credentials in list + add delete by ID ([#273]https://github.com/worldcoin/walletkit/pull/273)

## [0.9.1]https://github.com/worldcoin/walletkit/compare/v0.9.0...v0.9.1 - 2026-03-11

### Other

- pass explicit `dest_dir` for vault backup export ([#282]https://github.com/worldcoin/walletkit/pull/282). this API breaking change is for a feature not yet in production.
- add `BigInt` dep to swift ([#290]https://github.com/worldcoin/walletkit/pull/290).

## [0.9.0]https://github.com/worldcoin/walletkit/compare/v0.8.0...v0.9.0 - 2026-03-11

### Added

- use ruint-uniffi for numbers ([#283]https://github.com/worldcoin/walletkit/pull/283)