chore: re-release Command Line SDK 21.0.0#316
Conversation
Greptile SummaryThis PR updates the Appwrite CLI SDK to version 21.0.0, hardening the GitHub Actions supply chain by pinning all action references to specific commit SHAs, adding minimum release age guards for both npm and Bun, and simplifying the
Confidence Score: 3/5The publish pipeline can now ship unsigned Windows binaries to all distribution channels without the release job failing — this warrants a second look before merging. The supply-chain hardening additions (SHA-pinned actions, minimum release age) are solid improvements. However, the Windows signature verification step now exits 0 even when osslsigncode reports failure — meaning a release triggered while signing infrastructure is unavailable will push unsigned .exe files to npm, GitHub Releases, and the Homebrew tap without any pipeline gate. The inline comment suggests this is intentional and temporary, but there is no automated tripwire to re-enable the check once signing is ready. publish.yml — specifically the Verify Windows signatures step and the overall publish gate around unsigned binaries.
|
| Filename | Overview |
|---|---|
| .github/workflows/ci.yml | GitHub Actions pinned from floating version tags to specific commit SHAs — good supply-chain hardening with no functional changes. |
| .github/workflows/publish.yml | Actions pinned to commit SHAs (good), but Windows signature verification is downgraded to a warning — unsigned binaries can now be published without blocking the release pipeline. |
| .npmrc | Adds min-release-age=7 (days) supply-chain guard for npm; valid with npm ≥ 11.10.0 which is explicitly pinned in the publish workflow. |
| bunfig.toml | Adds minimumReleaseAge = 604800 (7 days in seconds) to Bun's install config — mirrors the npm .npmrc setting consistently. |
| lib/config.ts | Removes readonly from Config.path and the usePath() cast workaround; simplifies the code but leaves the field publicly mutable where it was previously read-only from outside the class. |
Reviews (1): Last reviewed commit: "chore: update Command Line SDK to 21.0.0" | Re-trigger Greptile
| if [ "$rc" -ne 0 ] || ! grep -Fq "Succeeded" <<< "$output"; then | ||
| echo "::error::$file signature verification failed" | ||
| return 1 | ||
| echo "::warning::$file signature verification failed; continuing while Windows signing policy is being enabled" | ||
| fi | ||
| } | ||
|
|
||
| final=0 | ||
| verify_signature build/appwrite-cli-win-x64.exe || final=1 | ||
| verify_signature build/appwrite-cli-win-arm64.exe || final=1 | ||
| exit "$final" | ||
| verify_signature build/appwrite-cli-win-x64.exe | ||
| verify_signature build/appwrite-cli-win-arm64.exe |
There was a problem hiding this comment.
Signature verification failure now silently permits unsigned releases
The verification step previously exited non-zero when a signature check failed, blocking the publish job. With the new code, any failure only emits a ::warning:: and the step exits 0 — so a release can proceed and reach npm/GitHub Releases/Homebrew with unsigned (or malformed-signature) Windows binaries. If the Windows signing infrastructure is not yet ready, the safer option is to gate publishing on signing being available rather than silently shipping unsigned artifacts to end users who may be relying on Authenticode trust for security decisions.
|
|
||
| class Config<T extends ConfigData = ConfigData> { | ||
| readonly path: string; | ||
| path: string; |
There was a problem hiding this comment.
Removing readonly allows any caller holding a Config instance to silently overwrite path at any time (e.g., localConfig.path = '/tmp/evil'). The usePath() cast workaround was intentional to keep the field immutable from the outside while still allowing controlled internal updates. If the goal is to allow the useCwdConfig method (within the same class) to reassign the field, keeping readonly and using the existing cast (or making the field protected with a public getter) preserves the external immutability contract without the ugly workaround.
Re-releasing Command Line SDK 21.0.0 since the previous release pipeline failed. No version bump or changelog changes — same 21.0.0 release with regenerated SDK content from upstream specs.
Regenerated using:
appwrite/sdk-generator1.29.3Notable diffs vs current
dev.npmrcwithmin-release-age=7bunfig.toml: added[install] minimumReleaseAge = 604800(7d)lib/config.ts: minor refactor — removedusePathhelper, madepathwritable directly