Skip to content

release: 0.1.0#1

Open
stainless-app[bot] wants to merge 50 commits into
mainfrom
release-please--branches--main--changes--next
Open

release: 0.1.0#1
stainless-app[bot] wants to merge 50 commits into
mainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app
Copy link
Copy Markdown

@stainless-app stainless-app Bot commented May 7, 2026

Automated Release PR

0.1.0 (2026-05-14)

Full Changelog: v0.0.1...v0.1.0

Features

  • api: api update (b7efbbc)
  • api: api update (43c983a)
  • api: manual updates (cc4c2cd)
  • authorization: add JwtExchangeService with HPKE encryption (#12) (318b652)
  • authorization: add user_jwts support to AuthorizationContext (#16) (dfedc4e)
  • authorization: P-256 signing, RFC 8785 canonicalization, prepare helper (#5) (8a7255f)
  • client: add authorization_key_cache_max_capacity option (#45) (3369bc7)
  • client: Privy::PrivyClient wraps generated Privy::Client (#4) (7ffbbc6)
  • key_quorums: add create convenience wrapper with kwargs interface (#27) (ff985f6)
  • key_quorums: add delete convenience wrapper with authorization support (#29) (cce679b)
  • key_quorums: add update convenience wrapper with authorization support (#28) (4a472e1)
  • key_quorums: request_expiry kwarg on update/delete (#38) (50aebac)
  • policies: add create convenience wrapper with idempotency support (#21) (4fb79c0)
  • policies: add create_rule convenience wrapper with authorization support (#24) (87d1511)
  • policies: add delete convenience wrapper with authorization support (#23) (7cfc41b)
  • policies: add delete_rule convenience wrapper with authorization support (#26) (88b4f02)
  • policies: add update convenience wrapper with authorization support (#22) (94da7b6)
  • policies: add update_rule convenience wrapper with authorization support (#25) (39ee81d)
  • policies: request_expiry kwarg on update/delete/*_rule (#37) (0966ac3)
  • public_api: add PrivyRequestExpiryOptions config struct (#34) (df65372)
  • public_api: PrivyClient#compute_request_expiry resolver (#35) (19ac733)
  • services: wallets create/update/rpc auto-inject auth + idempotency headers (#10) (d03a736)
  • users: add create convenience wrapper with kwargs interface (#33) (f93e451)
  • wallets: add raw_sign and transfer convenience wrappers (#18) (b4f1d1c)
  • wallets: request_expiry kwarg on update/rpc/raw_sign/transfer (#36) (f8e1074)

Bug Fixes

  • classes resulting from intersections cannot have union parents (1abe573)
  • client: elide content type header on requests without body (6741307)
  • gen: resolve lint errors in generated models (#2) (5ed45a4)
  • integration-tests: isolate user data per test run (#41) (a6ae14b)
  • rename gem to privy_ruby (#44) (b27c0dd)

Chores

  • test: print test names via TESTOPTS=-v in scripts/test (#3) (6dcc2eb)

Documentation

  • add CLAUDE.md with repo conventions and pitfalls (#9) (ace5249)
  • document request-expiry configuration; (#40) (e5b543b)

Refactors

  • consolidate Privy::Authorization::Crypto into Privy::Cryptography (#14) (8f096f7)
  • move signed_url and merge_prepared_headers to Authorization module (#20) (f789358)
  • public_api: drop content-type workarounds now obsolete (#42) (afd9886)
  • rename authorization methods for cross-SDK consistency (#15) (0ee0513)
  • rename prepare → prepare_request, align with Node SDK (#17) (0fef5d2)
  • wallets: convert create/update/rpc to explicit kwargs interface (#19) (575ccf4)

This pull request is managed by Stainless's GitHub App.

The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.

For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.

🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions

@stainless-app
Copy link
Copy Markdown
Author

stainless-app Bot commented May 7, 2026

🧪 Testing

To try out this version of the SDK:

bundle remove privy_ruby && bundle add privy_ruby --source 'https://pkg.stainless.com/s/privy-api-client-ruby/3369bc7503f3e50bed56e8d74a034698c4c65671'

Expires at: Sat, 13 Jun 2026 19:42:53 GMT
Updated at: Thu, 14 May 2026 19:42:53 GMT

@stainless-app
Copy link
Copy Markdown
Author

stainless-app Bot commented May 7, 2026

🧪 Testing

To try out this version of the SDK:

bundle remove privy && bundle add privy --source 'https://pkg.stainless.com/s/privy-api-client-ruby/cc4c2cdc156e9a175310f0e508fb58073431fce1'

Expires at: Sat, 06 Jun 2026 19:37:20 GMT
Updated at: Thu, 07 May 2026 19:37:20 GMT

@socket-security
Copy link
Copy Markdown

socket-security Bot commented May 7, 2026

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 68d3f00 to 759ea11 Compare May 8, 2026 15:24
Add missing `Status` enum to `BridgeFiatCustomerResponse` and
`BridgeSandboxFiatCustomerResponse` (referenced but undefined), and
replace the broken `Transaction::Details` subclass in
`Wallets::TransactionGetResponse` — which tried to inherit from the
`TransactionDetail` union module — with a direct union reference.

**Do not merge:** should be fixed as part of generation.

Co-Authored-By: Claude Opus 4.7 [noreply@anthropic.com](mailto:noreply@anthropic.com)
Committed-By-Agent: claude
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 759ea11 to 4f6dab2 Compare May 9, 2026 00:48
Thread TESTOPTS through the rake test task so Minitest receives it as
ARGV, and default scripts/test to -v so each test name prints as it runs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Committed-By-Agent: claude
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 4f6dab2 to e5466bf Compare May 9, 2026 00:50
## Summary

Sets up the basic `Privy::PrivyClient`, wrapping the generated `Privy::Client`, along with services like Wallets, Users, Policies and KeyQuorums

Committed-By-Agent: claude
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from e5466bf to 1d6ebb7 Compare May 9, 2026 00:52
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 1d6ebb7 to 4331504 Compare May 9, 2026 00:54
…#6)

## Summary

Covers Wallet creation and minimal RPC **for an ownerless wallet**.

More importantly: sets up integration e2e testing



Committed-By-Agent: claude
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 4331504 to 9d8138a Compare May 9, 2026 00:56
## Summary

The generated SDK lacks logging support.

While it is built, this adds minimal **test only** logs for the http calls

Committed-By-Agent: claude
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9d8138a to e7db13a Compare May 9, 2026 00:58
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from e7db13a to 7dc20ee Compare May 9, 2026 01:00
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 7dc20ee to eccbcb3 Compare May 9, 2026 01:02
…ncy headers (#10)

Override Privy::Services::Wallets#create/update/rpc to translate the public
idempotency_key: and authorization_context: kwargs into the generated
privy-* header params. Signing routes through Privy::Authorization.prepare
with the server-matching URL; idempotency-key header is included in the
signed payload when both are present. Unit tests cover header presence and
signature verification; migrate existing P-256 integration tests onto the
new API and add an end-to-end sign_fns test.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from eccbcb3 to f6257c1 Compare May 9, 2026 01:04
Adds an `integration` job that runs `bundle exec rake test:integration` on
pull_request events (non-fork heads only) and on pushes to `main` and `next`.
TEST_APP_ID, TEST_APP_SECRET, JWT_AUTH_SK, and TEST_APP_TEST_ACCOUNT_OTP are
injected from repository secrets. Forks are skipped because secrets are not
available there.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from f6257c1 to b68f22b Compare May 9, 2026 01:06
* feat(jwt-exchange): add JwtExchangeService with HPKE decryption and caching

Implements JWT-to-authorization-key exchange matching the Node SDK pattern.
Uses shared HpkeRecipient (P-256/HKDF-SHA256/ChaCha20-Poly1305) per service
instance with an LRU cache (TTL-based eviction from server's expires_at).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Committed-By-Agent: claude

* fix(test): handle empty JWT_AUTH_SK in CI and normalize PEM whitespace

The GitHub secret may be unset (empty string) or contain \r characters.
Guard against both to prevent RSA parse errors in CI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Committed-By-Agent: claude

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from b68f22b to 80c6133 Compare May 13, 2026 17:58
Port two CI guardrails from the go-sdk:

- branch-target.yml fails any PR that targets `main` (with a sticky
  comment explaining how to retarget to `next`), and exempts the
  Stainless release bot.
- pr-title.yml enforces conventional-commit style on PR titles.

Committed-By-Agent: claude
stainless-app Bot and others added 4 commits May 14, 2026 16:49
Pin all GitHub Actions referenced in generated workflows (both
first-party `actions/*` and third-party) to immutable commit SHAs.
Updating pinned actions is now a deliberate codegen-side bump rather
than implicit on every workflow run.
Mirrors the kwargs-style create wrappers in wallets, policies, and
key_quorums. Includes an integration test against staging that exercises
a custom-auth linked account plus a pregenerated Ethereum wallet, modeled
on the Go SDK's TestUsers/New/WithCustomAuthAndWallet.

Committed-By-Agent: claude
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9b254ab to e7aa38f Compare May 14, 2026 17:43
## Summary
- Generate a unique custom-auth subject per test instance instead of reusing a static `JWT_AUTH_SUBJECT` (default `java-sdk-sub-id`)
- Add `jwt_auth_user` helper that lazily creates a fresh Privy user via `users.create` with a `custom_auth` linked account
- `generate_test_jwt` now ensures the user exists before signing, since downstream endpoints (e.g. `/wallets/authenticate`) reject JWTs for unknown subjects
- JWT exchange tests provision a wallet for the user upfront — `/wallets/authenticate` requires the user to own a wallet; the old shared user worked only because it had wallets accumulated from past runs

## Why
Each integration run added wallets under the same shared user, eventually tripping the per-user wallet limit (e.g. `User has reached a maximum limit of 100 tron wallets`). A fresh user per test means every run starts clean.

## Test plan
- [x] `bundle exec rake test:integration` passes twice in succession (verifies fresh data per run)
- [x] `bundle exec rake test` passes
- [x] `bundle exec rake lint` passes
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from e7aa38f to 6910732 Compare May 14, 2026 17:45
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 6910732 to 23c25cd Compare May 14, 2026 17:58
Align the gem name with staging/generated, which uses `privy_ruby` instead of `privy`. The Ruby module/file name (`require "privy"`) is unchanged — only the published gem name.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 23c25cd to 68e4195 Compare May 14, 2026 18:23
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 68e4195 to 437aa75 Compare May 14, 2026 18:27
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 437aa75 to 39a9fdd Compare May 14, 2026 18:28
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 39a9fdd to 0d814df Compare May 14, 2026 18:30
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 0d814df to 4e59ef3 Compare May 14, 2026 18:32
The Stainless-generated transport now elides the Content-Type header
on bodyless requests (commit 6741307), so the hand-rolled
`extra_headers: {"Content-Type" => nil}` overrides in
`policies.delete`, `policies.delete_rule`, and `key_quorums.delete`
are redundant.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 2 times, most recently from 272d4f4 to 6d85fdf Compare May 14, 2026 18:34
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 6d85fdf to a2ef497 Compare May 14, 2026 18:36
README: add "Configuring request expiry" section under Usage describing
the 11 authorized methods that auto-set privy-request-expiry, plus how
to override the default, disable it, or override per-call.

Committed-By-Agent: claude
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from a2ef497 to a826ea2 Compare May 14, 2026 18:38
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from a826ea2 to 49a71ec Compare May 14, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants