Skip to content

chore: weekly release 2026-03-27#225

Merged
Leechael merged 11 commits intomainfrom
chore/release-20260527
Mar 27, 2026
Merged

chore: weekly release 2026-03-27#225
Leechael merged 11 commits intomainfrom
chore/release-20260527

Conversation

@Leechael
Copy link
Copy Markdown
Collaborator

@Leechael Leechael commented Mar 27, 2026

Summary

Weekly release of all SDKs and CLI.

Releases

JS SDK — v0.2.6

feat

  • Add is-allowed API
  • Add structured error codes and idempotency support
  • Add webhook signature verification via @phala/cloud/webhook
  • Add patchCvm and confirmCvmPatch for unified PATCH /cvms/{id}
  • Add prepareOnly support to patchCvm and new commitCvmUpdate action
  • Add on-chain prerequisite checks and improve update flow
  • Display on-chain status in --prepare-only output

fix

  • Handle FormData Content-Type in post/put/patch methods
  • Send empty body in confirmCvmPatch instead of undefined
  • Add missing files and fix compose hash tx verification

Python SDK — v0.1.2

feat

  • Add webhook signature verification utilities
  • Add is-allowed API
  • Add structured error codes and idempotency support
  • Add patch_cvm and confirm_cvm_patch for unified PATCH endpoint

fix

  • Use AliasModel for request types with field aliases
  • Dispatch error subclasses in _to_api_error
  • Fix Pydantic alias models and CI format issues

Go SDK — v0.1.1

feat

  • Add webhook signature verification utilities
  • Add is-allowed API
  • Add structured error codes and idempotency support
  • Add ReplicateAppCVM for app-scoped replica creation
  • Add Region field to ProvisionCVMRequest
  • Add visibility and storage fields to ComposeFile struct
  • Enhance SDK types for Terraform provider integration

fix

  • Add timestamp freshness check to VerifyWebhookSignature
  • Preserve endpoint instance and error detail values
  • Make WatchCVMState MaxRetries default to unlimited

CLI — v1.1.14

feat

  • Add --prepare-only and --commit flags for multisig CVM updates
  • Show chain ID and block explorer URL in --prepare-only output
  • Add on-chain prerequisite checks and improve update flow
  • Add device management blockchain actions
  • Add phala envs encrypt and phala envs update commands
  • Add device allowlist commands (allow-devices, disallow-any, toggle-allow-any)
  • Add --fs option to deploy command for filesystem selection
  • Add --wait RPC verification for device allowlist ops
  • Add pagination flags to os-images command

fix

  • --commit mode no longer requires API key
  • Fix --prepare-only output formatting and indentation
  • Warn when --prepare-only used on non-on-chain KMS CVM

Other Changes

  • Migrate Python SDK release workflow from pip to uv
  • Update phala-docs changelogs for all released packages

@Leechael
Copy link
Copy Markdown
Collaborator Author

!release js patch

@github-actions
Copy link
Copy Markdown
Contributor

🚀 @Leechael release command accepted: js patch.

Target branch: chore/release-20260527 (open PR). Version commits will be pushed to this branch.
The release workflow is queued; results will be posted here.

@github-actions
Copy link
Copy Markdown
Contributor

🎉 Release completed: js v0.2.6

📦 Package Info

  • Package size: size: 166.8
  • Unpacked size: size: 1.5
  • Total files: files:
📄 Files included
11.4kB LICENSE
2.7kB README.md
5.8kB dist/actions/apps/check_app_cvms_is_allowed.d.ts
4.0kB dist/actions/apps/check_app_is_allowed.d.ts
34.5kB dist/actions/apps/get_app_attestation.d.ts
1.2kB dist/actions/apps/get_app_cvms.d.ts
3.8kB dist/actions/apps/get_app_device_allowlist.d.ts
1.6kB dist/actions/apps/get_app_filter_options.d.ts
1.2kB dist/actions/apps/get_app_info.d.ts
3.0kB dist/actions/apps/get_app_list.d.ts
1.9kB dist/actions/apps/get_app_revision_detail.d.ts
1.7kB dist/actions/apps/get_app_revisions.d.ts
3.4kB dist/actions/blockchains/abi/dstack_app.d.ts
2.6kB dist/actions/blockchains/add_compose_hash.d.ts
2.5kB dist/actions/blockchains/add_device.d.ts

@Leechael
Copy link
Copy Markdown
Collaborator Author

!release python patch

@github-actions
Copy link
Copy Markdown
Contributor

🚀 @Leechael release command accepted: python patch.

Target branch: chore/release-20260527 (open PR). Version commits will be pushed to this branch.
The release workflow is queued; results will be posted here.

@github-actions
Copy link
Copy Markdown
Contributor

@Leechael release failed: python 0.1.2

Branch: chore/release-20260527
Please review the workflow logs: https://github.com/Phala-Network/phala-cloud/actions/runs/23640162342

…ps for dev extras

CI runs `pip install -e ".[dev]"` which requires `[project.optional-dependencies]`,
not `[dependency-groups]` (PEP 735). This caused pytest to not be installed.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 27, 2026

📋 Check Results

✨ JS SDK - Code Formatting

Show format check results
✓ No formatting issues found

🔍 JS SDK - TypeScript Type Check

Show type check output
$ tsc --noEmit

🧪 JS SDK - Test Results

Show test output
$ vitest --run --exclude '**/*.e2e.test.ts'

�[7m�[1m�[36m RUN �[39m�[22m�[27m �[36mv1.6.1�[39m �[90m/home/runner/work/phala-cloud/phala-cloud/js�[39m

 �[32m✓�[39m src/client.test.ts �[2m (�[22m�[2m45 tests�[22m�[2m)�[22m�[90m 27�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/blockchains/deploy_app_auth.test.ts �[2m (�[22m�[2m27 tests�[22m�[2m)�[22m�[90m 35�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/blockchains/add_compose_hash.test.ts �[2m (�[22m�[2m34 tests�[22m�[2m)�[22m�[90m 127�[2mms�[22m�[39m
�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould add compose hash successfully with default parameters�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould handle custom timeout�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould use custom schema when provided�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould return raw data when schema is false�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould throw when custom schema validation fails�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould work with wallet client authentication�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould work with both clients provided�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould skip prerequisite checks when configured�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould use retry mechanism when enabled�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mStandard Version�[2m > �[22m�[2mshould handle progress callbacks�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSafe Version�[2m > �[22m�[2mshould return success result when operation succeeds�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSafe Version�[2m > �[22m�[2mshould work with custom schema�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSafe Version�[2m > �[22m�[2mshould return raw data when schema is false�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSafe Version�[2m > �[22m�[2mshould work without parameters�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSafe Version�[2m > �[22m�[2mshould work with empty parameters object�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSchema Flexibility�[2m > �[22m�[2mshould allow extra fields in transaction receipt for forward compatibility�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSchema Flexibility�[2m > �[22m�[2mshould handle ComposeHashAdded event when present�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mType Inference�[2m > �[22m�[2mshould infer correct types for default schema�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mType Inference�[2m > �[22m�[2mshould infer correct types for custom schema�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mType Inference�[2m > �[22m�[2mshould infer unknown type when schema is false�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSafe Version Type Inference�[2m > �[22m�[2mshould infer correct SafeResult types for default schema�[22m�[39m
[]

�[90mstdout�[2m | src/actions/blockchains/add_compose_hash.test.ts�[2m > �[22m�[2maddComposeHash�[2m > �[22m�[2mSafe Version Type Inference�[2m > �[22m�[2mshould infer correct SafeResult types for custom schema�[22m�[39m
[]

 �[32m✓�[39m src/utils/define-action.type.test.ts �[2m (�[22m�[2m20 tests�[22m�[2m)�[22m�[90m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/define-action.test.ts �[2m (�[22m�[2m24 tests�[22m�[2m)�[22m�[90m 21�[2mms�[22m�[39m
 �[32m✓�[39m src/types/cvm_id.test.ts �[2m (�[22m�[2m53 tests�[22m�[2m)�[22m�[90m 25�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/errors.test.ts �[2m (�[22m�[2m28 tests�[22m�[2m)�[22m�[90m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/hostname.test.ts �[2m (�[22m�[2m53 tests�[22m�[2m)�[22m�[90m 19�[2mms�[22m�[39m
 �[32m✓�[39m src/parse_dotenv.test.ts �[2m (�[22m�[2m71 tests�[22m�[2m)�[22m�[90m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/get_current_user.test.ts �[2m (�[22m�[2m14 tests�[22m�[2m)�[22m�[90m 14�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/provision_cvm_compose_file_update.test.ts �[2m (�[22m�[2m29 tests�[22m�[2m)�[22m�[90m 30�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/commit_cvm_compose_file_update.test.ts �[2m (�[22m�[2m12 tests�[22m�[2m)�[22m�[90m 21�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_info.test.ts �[2m (�[22m�[2m11 tests�[22m�[2m)�[22m�[90m 28�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/watch_cvm_state.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 54�[2mms�[22m�[39m
 �[32m✓�[39m src/version-inference.type.test.ts �[2m (�[22m�[2m17 tests�[22m�[2m)�[22m�[90m 100�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_compose_file.test.ts �[2m (�[22m�[2m10 tests�[22m�[2m)�[22m�[90m 23�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/provision_cvm.test.ts �[2m (�[22m�[2m14 tests�[22m�[2m)�[22m�[90m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/client.extend.type.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 6�[2mms�[22m�[39m
 �[32m✓�[39m src/version-inference.runtime.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_list.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 14�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/kms/get_app_env_encrypt_pubkey.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 13�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/patch_cvm.test.ts �[2m (�[22m�[2m10 tests�[22m�[2m)�[22m�[90m 22�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/kms/get_kms_list.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 22�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/commit_cvm_provision.test.ts �[2m (�[22m�[2m7 tests�[22m�[2m)�[22m�[90m 17�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/kms/get_kms_info.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 12�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_stats.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 20�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/verify-webhook.test.ts �[2m (�[22m�[2m11 tests�[22m�[2m)�[22m�[90m 9�[2mms�[22m�[39m
 �[32m✓�[39m src/client.extend.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 12�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/confirm_cvm_patch.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 20�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/validate-parameters.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 9�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/ssh_keys/create_ssh_key.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/get_available_nodes.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 28�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/shutdown_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 13�[2mms�[22m�[39m
 �[32m✓�[39m src/types/app_compose.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/start_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 10�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/restart_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 15�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/stop_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/ssh_keys/delete_ssh_key.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 14�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_containers_stats.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/ssh_keys/sync_github_ssh_keys.test.ts �[2m (�[22m�[2m6 tests�[22m�[2m)�[22m�[90m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/delete_cvm.test.ts �[2m (�[22m�[2m8 tests�[22m�[2m)�[22m�[90m 9�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/get_cvm_state.test.ts �[2m (�[22m�[2m4 tests�[22m�[2m)�[22m�[90m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/utils/as-hex.test.ts �[2m (�[22m�[2m9 tests�[22m�[2m)�[22m�[90m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/refresh_cvm_instance_ids.test.ts �[2m (�[22m�[2m2 tests�[22m�[2m)�[22m�[90m 8�[2mms�[22m�[39m
 �[32m✓�[39m src/actions/cvms/refresh_cvm_instance_id.test.ts �[2m (�[22m�[2m2 tests�[22m�[2m)�[22m�[90m 6�[2mms�[22m�[39m

�[2m Test Files �[22m �[1m�[32m45 passed�[39m�[22m�[90m (45)�[39m
�[2m      Tests �[22m �[1m�[32m677 passed�[39m�[22m�[90m (677)�[39m
�[2m   Start at �[22m 13:30:48
�[2m   Duration �[22m 7.74s�[2m (transform 1.09s, setup 6ms, collect 9.73s, tests 969ms, environment 10ms, prepare 4.95s)�[22m

📝 JS SDK - Lint Check

Show lint results
✓ No linting issues found

🌐 JS SDK - Browser Compatibility

Show browser test results

🌐 Browser Compatibility Report

Browser compatibility tests completed across:

  • ✓ Chromium
  • ✓ Firefox
  • ✓ WebKit (Safari)

The SDK has been verified to work in modern browser environments.


Check run: https://github.com/Phala-Network/phala-cloud/actions/runs/23648579135

Both `[project.optional-dependencies]` (for pip) and `[dependency-groups]`
(for uv) are needed since CI uses both tools.
Migrate release workflow from pip to uv, matching pr-checks workflow.
Remove duplicate [project.optional-dependencies] since uv uses
[dependency-groups] natively.
@Leechael
Copy link
Copy Markdown
Collaborator Author

!release python patch

@github-actions
Copy link
Copy Markdown
Contributor

🚀 @Leechael release command accepted: python patch.

Target branch: chore/release-20260527 (open PR). Version commits will be pushed to this branch.
The release workflow is queued; results will be posted here.

@github-actions
Copy link
Copy Markdown
Contributor

@Leechael release failed: python 0.1.2

Branch: chore/release-20260527
Please review the workflow logs: https://github.com/Phala-Network/phala-cloud/actions/runs/23644993583

…ompatibility

The release workflow runs from main branch and still uses pip, which
requires [project.optional-dependencies]. Keep both sections until the
uv workflow changes are merged to main.
@Leechael
Copy link
Copy Markdown
Collaborator Author

!release python patch

@github-actions
Copy link
Copy Markdown
Contributor

🚀 @Leechael release command accepted: python patch.

Target branch: chore/release-20260527 (open PR). Version commits will be pushed to this branch.
The release workflow is queued; results will be posted here.

@github-actions
Copy link
Copy Markdown
Contributor

🎉 Release completed: python v0.1.2

📦 Package Info

  • Wheel: phala_cloud-0.1.2-py3-none-any.whl (32K)
  • Source: phala_cloud-0.1.2.tar.gz (84K)

@Leechael
Copy link
Copy Markdown
Collaborator Author

!release go patch

@github-actions
Copy link
Copy Markdown
Contributor

🚀 @Leechael release command accepted: go patch.

Target branch: chore/release-20260527 (open PR). Version commits will be pushed to this branch.
The release workflow is queued; results will be posted here.

@github-actions
Copy link
Copy Markdown
Contributor

🎉 Release completed: go v0.1.1

📦 Install

go get github.com/Phala-Network/phala-cloud/sdks/go@v0.1.1

@Leechael
Copy link
Copy Markdown
Collaborator Author

!release cli patch

@github-actions
Copy link
Copy Markdown
Contributor

🚀 @Leechael release command accepted: cli patch.

Target branch: chore/release-20260527 (open PR). Version commits will be pushed to this branch.
The release workflow is queued; results will be posted here.

@github-actions
Copy link
Copy Markdown
Contributor

🎉 Release completed: cli v1.1.14

📦 Package Info

  • Package size: size: 138.4
  • Unpacked size: size: 516.1
  • Total files: files:
📄 Files included
11.4kB LICENSE
3.8kB README.md
29.7kB dist/api/index.d.ts
113.1kB dist/api/index.js
20B dist/index.d.ts
356.3kB dist/index.js
1.8kB package.json

@Leechael Leechael changed the title weekly release chore: weekly release 2026-03-27 Mar 27, 2026
@Leechael Leechael merged commit 22aca9d into main Mar 27, 2026
9 checks passed
@Leechael Leechael deleted the chore/release-20260527 branch March 27, 2026 14:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants