Cesar Rodas cesar

cesar pushed to feature/wallet-trait at cesar/cdk

  • f33b69f370 Introduce unified Wallet trait with multi-method mint_quote routing Add a new `Wallet` trait in cdk-common that provides a comprehensive interface for all wallet operations with associated types. This enables trait-based polymorphism for different wallet implementations, better FFI support, and cleaner separation between interface and implementation. The `mint_quote` method now accepts a `PaymentMethod` parameter and routes to Bolt11, Bolt12, or Custom payment backends — matching the existing `melt_quote` pattern. Key changes: - Define `Wallet` trait in cdk-common with associated types for Amount, Proofs, MintQuote, MeltQuote, Token, PaymentMethod, etc. - Implement the trait for the concrete `Wallet` struct in cdk - Route `mint_quote` by PaymentMethod (Bolt11/Bolt12/Custom) - Add wallet_trait.rs to cdk-ffi for FFI support - Update CLI, multi-mint wallet, examples, and integration tests - Refactor balance, keyset, and issue modules to use the trait
  • d0b9bd5c5f Prepare v0.15 (#1623) * chore: update changelog for 0.15.0 * docs: migrations for 0.15 docs * feat: Migration to melt docs * chore: bump version to 0.15.0
  • 64627a847e feat: aaga post mmw cleanup (#1622)
  • 03a5a914b8 feat: add grpc version header to ensure client and server match (#1617) This change adds a gprc injector that adds a version header to each grpc request. This is then checked by the server to make sure the client and server are compatible versions. When the grpc proto file is changed we **MUST** update the version used in the header.
  • b809131544 feat(wallet): remove multi mint wallet (#1582) * feat(wallet): replacing multi mint wallet with wallet repository
  • View comparison for these 23 commits »

5 days ago

cesar pushed to feature/ws-support-wasm at cesar/cdk

  • 0e24b8c50c Add WASM-compatible WebSocket client abstraction Move WebSocket dependency (tokio-tungstenite) from cdk to cdk-http-client and introduce a platform-agnostic ws module with native (tokio-tungstenite) and WASM (ws_stream_wasm) backends. This enables WebSocket subscriptions on WASM targets, which were previously gated behind cfg(not(wasm32)). Flatten wallet subscription module by merging ws.rs into subscription.rs now that the stream client is unconditionally compiled.
  • d0b9bd5c5f Prepare v0.15 (#1623) * chore: update changelog for 0.15.0 * docs: migrations for 0.15 docs * feat: Migration to melt docs * chore: bump version to 0.15.0
  • 64627a847e feat: aaga post mmw cleanup (#1622)
  • 03a5a914b8 feat: add grpc version header to ensure client and server match (#1617) This change adds a gprc injector that adds a version header to each grpc request. This is then checked by the server to make sure the client and server are compatible versions. When the grpc proto file is changed we **MUST** update the version used in the header.
  • b809131544 feat(wallet): remove multi mint wallet (#1582) * feat(wallet): replacing multi mint wallet with wallet repository

5 days ago

cesar created new branch feature/ws-support-wasm at cesar/cdk

5 days ago

cesar pushed to feature/wasm-prototype-native-crypto at cesar/cdk

  • 3e6df7e2be feat: use Web Crypto API for JWT verification on WASM targets Replace `jsonwebtoken` (which depends on `ring`, a C/ASM crypto lib that doesn't compile to WASM) with the browser's Web Crypto API on wasm32 targets. Native targets continue using `jsonwebtoken`. - Define own JWK/JwkSet types replacing `jsonwebtoken::jwk::*` - Add cross-platform `decode_jwt_header` (no crypto dependency) - cfg-gate `verify_jwt_signature`: native uses `jsonwebtoken::decode`, WASM uses `SubtleCrypto.importKey` + `SubtleCrypto.verify` - Build JWK JS objects manually via `Reflect::set` to avoid `serde_wasm_bindgen` producing Maps from `#[serde(flatten)]` - Add WASM browser tests (wasm-pack + Firefox headless) for RSA/EC signature verification, expiration, issuer, and error cases - Add `wasm-tests` CI job with dedicated Nix `wasm` devShell - Fix pre-existing `refresh_mint_quote_status` rename in cdk-wasm
  • 7863a0ed40 Wasm http client
  • bf93ed05b4 wasm
  • f0310669d9 chore: bump to 0.15.0 (#1652)
  • 89f9df168b chore: clean up logging of config (#1650)

5 days ago

cesar created new branch feature/wasm-prototype-native-crypto at cesar/cdk

5 days ago

cesar pushed to feature/wasm-prototype at cesar/cdk

  • 62e721f697 Add cdk-wasm crate with browser wallet support Introduce the cdk-wasm crate providing WebAssembly bindings for the CDK wallet. This enables running Cashu wallets directly in browsers and Node.js environments. Key components: - Wallet and WalletRepository wasm_bindgen bindings - LocalStorage-backed database with swappable storage backend - Token parsing, encoding, and inspection - Full WASM type system mirroring cdk-common types - HTTP client implementation for wasm32 (fetch API) - Demo pages (www/) for browser testing - CI workflow for wasm32 build checks Also adapts cdk-http-client to compile for wasm32 by gating native dependencies and adding a fetch-based transport behind the wasm32 target.
  • fde85986f4 feat: bump to 0.15.1 (#1658)
  • 6710a35a9b feat: limit checks (#1657) * feat: add limit checks to witness and secret. * feat: migrations to remove large witness and secret * feat: check input output limit for restore and check * feat: check limit for description
  • 963a620310 Weekly Meeting Agenda - 2026-02-18 (#1655) * chore: add weekly meeting agenda for 2026-02-18 * Update 2026-02-18-agenda.md --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: tsk <tsk@thesimplekid.com>
  • 9c040ad98e fix: build_with_seed with custom paths (#1654)

5 days ago

cesar created new branch feature/wasm-prototype at cesar/cdk

5 days ago

cesar pushed to bug/sqlite-connection-size-bug at cesar/cdk

  • 3136493a37 Correct SQLite connection pool size check The max_size method was checking `password.is_none()` to determine the pool size, but should check `path.is_none()` instead. An in-memory database (no path) needs a single connection to avoid data loss, while file-backed databases can use a larger pool. Fixes #1604
  • 3e6474bbd9 feat: mint connector http headers (#1602)
  • a8b83659d0 Abstract HTTP client with cdk-http crate (#1573) * Add cdk-http-client crate Extract HTTP client functionality from cdk-common into a dedicated crate to improve modularity and separation of concerns. Changes: - Create new cdk-http-client crate with HttpClient, HttpClientBuilder, RequestBuilder, RawResponse, and HttpError types - Move HTTP client code from cdk-common/src/http/ to the new crate - Add comprehensive test suite: - 20 unit tests for error handling, client/builder construction - 28 integration tests using mockito for HTTP mocking - Add proxy support with optional regex-based host matching (non-WASM) - Add TLS certificate validation bypass option (non-WASM) The new crate provides a clean abstraction over reqwest with: - Simple convenience methods (fetch, post_json, post_form, patch_json) - Raw response access for streaming/custom handling - Fluent RequestBuilder API for complex requests - Cross-platform support (native and WASM)
  • 1264a9f67b refactor: remove `auth` feature flag from codebase (#1599) * refactor: remove `auth` feature flag from codebase The `auth` feature was gating authentication code (NUT-21/NUT-22) behind a compile-time flag across the entire workspace. This removes the feature entirely, making auth code always compiled. This simplifies the build matrix and eliminates ~400 lines of dual code paths (`#[cfg(feature = "auth")]` / `#[cfg(not(feature = "auth"))]`). Changes across 43 files in 13 crates: - Remove `auth` feature definitions from all Cargo.toml files - Make `strum`, `strum_macros`, `regex` (cashu) and `jsonwebtoken` (cdk) unconditional dependencies - Remove all `#[cfg(feature = "auth")]` gates from source files - Merge dual code paths, keeping auth versions and deleting non-auth fallbacks - Simplify combined cfgs (e.g. `#[cfg(all(feature = "auth", feature = "postgres"))]` → `#[cfg(feature = "postgres")]`) - Remove auth-specific CI checks from flake.nix * Use currency unit to determine keyset fetch client in metadata cache Select the appropriate client based on `CurrencyUnit::Auth` rather than falling through client availability. Auth keysets are now explicitly fetched via the blind auth client, and all other keysets via the regular client, preventing incorrect client selection. The previous logic tried the regular client first and fell back to the auth client, which could use the wrong client for a given keyset. The fix makes the decision based on keyset_info.unit, which is the correct discriminant.
  • 825f9f65ab chore: add weekly meeting agenda for 2026-02-04 (#1601) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

5 days ago

cesar created new branch bug/sqlite-connection-size-bug at cesar/cdk

5 days ago

cesar pushed to add_bitreq_with_wasm at cesar/cdk

  • ac0fab4a0d Replace reqwest WASM backend with native fetch via web_sys Remove the reqwest dependency from cdk-http-client and replace it with a native WASM fetch backend using wasm_bindgen + web_sys. The bitreq backend remains for native targets but is no longer behind a feature flag — it is always compiled on non-WASM via target_arch cfg. - Add wasm_backend.rs: WasmRequestBuilder, HttpClient, and HttpClientBuilder using js_fetch + web_sys::Request - Move HttpClient and HttpClientBuilder into their respective backend files to eliminate cfg gates on shared types - Remove reqwest_backend.rs and the reqwest/bitreq feature flags - Use cfg(target_arch = "wasm32") / cfg(not(...)) instead of features - Remove reqwest from workspace dependencies - Update cdk, cdk-common, cdk-prometheus Cargo.toml references
  • b18db9d371 fix integration
  • 6d81301729 add docs and feature restriction
  • 091046e459 fix: fmt
  • 25538a9dc9 fix: test

5 days ago

cesar created new branch add_bitreq_with_wasm at cesar/cdk

5 days ago

cesar pushed to add_bitreq at cesar/cdk

5 days ago

cesar created new branch add_bitreq at cesar/cdk

5 days ago

cesar pushed to main at cesar/cdk

  • fde85986f4 feat: bump to 0.15.1 (#1658)
  • 6710a35a9b feat: limit checks (#1657) * feat: add limit checks to witness and secret. * feat: migrations to remove large witness and secret * feat: check input output limit for restore and check * feat: check limit for description
  • 963a620310 Weekly Meeting Agenda - 2026-02-18 (#1655) * chore: add weekly meeting agenda for 2026-02-18 * Update 2026-02-18-agenda.md --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: tsk <tsk@thesimplekid.com>
  • 9c040ad98e fix: build_with_seed with custom paths (#1654)
  • f0310669d9 chore: bump to 0.15.0 (#1652)
  • View comparison for these 44 commits »

5 days ago

cesar pushed to feauture/remove-wallet-feature-auth at cesar/cdk

  • 3e6474bbd9 feat: mint connector http headers (#1602)
  • a8b83659d0 Abstract HTTP client with cdk-http crate (#1573) * Add cdk-http-client crate Extract HTTP client functionality from cdk-common into a dedicated crate to improve modularity and separation of concerns. Changes: - Create new cdk-http-client crate with HttpClient, HttpClientBuilder, RequestBuilder, RawResponse, and HttpError types - Move HTTP client code from cdk-common/src/http/ to the new crate - Add comprehensive test suite: - 20 unit tests for error handling, client/builder construction - 28 integration tests using mockito for HTTP mocking - Add proxy support with optional regex-based host matching (non-WASM) - Add TLS certificate validation bypass option (non-WASM) The new crate provides a clean abstraction over reqwest with: - Simple convenience methods (fetch, post_json, post_form, patch_json) - Raw response access for streaming/custom handling - Fluent RequestBuilder API for complex requests - Cross-platform support (native and WASM)
  • 1264a9f67b refactor: remove `auth` feature flag from codebase (#1599) * refactor: remove `auth` feature flag from codebase The `auth` feature was gating authentication code (NUT-21/NUT-22) behind a compile-time flag across the entire workspace. This removes the feature entirely, making auth code always compiled. This simplifies the build matrix and eliminates ~400 lines of dual code paths (`#[cfg(feature = "auth")]` / `#[cfg(not(feature = "auth"))]`). Changes across 43 files in 13 crates: - Remove `auth` feature definitions from all Cargo.toml files - Make `strum`, `strum_macros`, `regex` (cashu) and `jsonwebtoken` (cdk) unconditional dependencies - Remove all `#[cfg(feature = "auth")]` gates from source files - Merge dual code paths, keeping auth versions and deleting non-auth fallbacks - Simplify combined cfgs (e.g. `#[cfg(all(feature = "auth", feature = "postgres"))]` → `#[cfg(feature = "postgres")]`) - Remove auth-specific CI checks from flake.nix * Use currency unit to determine keyset fetch client in metadata cache Select the appropriate client based on `CurrencyUnit::Auth` rather than falling through client availability. Auth keysets are now explicitly fetched via the blind auth client, and all other keysets via the regular client, preventing incorrect client selection. The previous logic tried the regular client first and fell back to the auth client, which could use the wrong client for a given keyset. The fix makes the decision based on keyset_info.unit, which is the correct discriminant.
  • 825f9f65ab chore: add weekly meeting agenda for 2026-02-04 (#1601) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • 085f7778ce feat: melt bolt12 ws sub (#1598)

2 weeks ago

cesar created new branch feauture/remove-wallet-feature-auth at cesar/cdk

2 weeks ago

cesar pushed to feauture/remove-wallet-auth at cesar/cdk

  • 47c7bd4ab4 feat: implement wallet sagas (#1524)
  • f2ba549be5 chore: add weekly meeting agenda for 2026-01-28 (#1584) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • e4fc4c301b chore: update stable rust to 1.93.0 (#1576)
  • d80b625b6b Remove unused wallet traits (#1574) * fix: remove unused wallet traits * refactor: move Acquired to the Mint where it is used
  • df19e2955d check mint quote for single wallet (#1561)

2 weeks ago

cesar created new branch feauture/remove-wallet-auth at cesar/cdk

2 weeks ago

cesar pushed to feature/update-http-readme at cesar/cdk

  • 6afefdf945 Minor change
  • 3e6474bbd9 feat: mint connector http headers (#1602)
  • a8b83659d0 Abstract HTTP client with cdk-http crate (#1573) * Add cdk-http-client crate Extract HTTP client functionality from cdk-common into a dedicated crate to improve modularity and separation of concerns. Changes: - Create new cdk-http-client crate with HttpClient, HttpClientBuilder, RequestBuilder, RawResponse, and HttpError types - Move HTTP client code from cdk-common/src/http/ to the new crate - Add comprehensive test suite: - 20 unit tests for error handling, client/builder construction - 28 integration tests using mockito for HTTP mocking - Add proxy support with optional regex-based host matching (non-WASM) - Add TLS certificate validation bypass option (non-WASM) The new crate provides a clean abstraction over reqwest with: - Simple convenience methods (fetch, post_json, post_form, patch_json) - Raw response access for streaming/custom handling - Fluent RequestBuilder API for complex requests - Cross-platform support (native and WASM)
  • 1264a9f67b refactor: remove `auth` feature flag from codebase (#1599) * refactor: remove `auth` feature flag from codebase The `auth` feature was gating authentication code (NUT-21/NUT-22) behind a compile-time flag across the entire workspace. This removes the feature entirely, making auth code always compiled. This simplifies the build matrix and eliminates ~400 lines of dual code paths (`#[cfg(feature = "auth")]` / `#[cfg(not(feature = "auth"))]`). Changes across 43 files in 13 crates: - Remove `auth` feature definitions from all Cargo.toml files - Make `strum`, `strum_macros`, `regex` (cashu) and `jsonwebtoken` (cdk) unconditional dependencies - Remove all `#[cfg(feature = "auth")]` gates from source files - Merge dual code paths, keeping auth versions and deleting non-auth fallbacks - Simplify combined cfgs (e.g. `#[cfg(all(feature = "auth", feature = "postgres"))]` → `#[cfg(feature = "postgres")]`) - Remove auth-specific CI checks from flake.nix * Use currency unit to determine keyset fetch client in metadata cache Select the appropriate client based on `CurrencyUnit::Auth` rather than falling through client availability. Auth keysets are now explicitly fetched via the blind auth client, and all other keysets via the regular client, preventing incorrect client selection. The previous logic tried the regular client first and fell back to the auth client, which could use the wrong client for a given keyset. The fix makes the decision based on keyset_info.unit, which is the correct discriminant.
  • 825f9f65ab chore: add weekly meeting agenda for 2026-02-04 (#1601) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

2 weeks ago

cesar created new branch feature/update-http-readme at cesar/cdk

2 weeks ago