Skip to content

Fix 0.21 release review findings - #453

Merged
domenkozar merged 10 commits into
mainfrom
fix/0.21-release-review
Sep 23, 2026
Merged

domenkozar merged 10 commits into
mainfrom
fix/0.21-release-review

Conversation

@domenkozar

@domenkozar domenkozar commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

Fixes found during a pre-release review of everything since v0.20.0.

Release blockers

  • publish.yml publishes secretspec-ipc before secretspec. It has never been on crates.io, so its first publish must be done by hand with a token before tagging 0.21 (see RELEASE.md).
  • libsecretspec accepts inline spec v1 again, so 0.20 SDKs keep working against a 0.21 library.

Fixes (each commit is one slice)

  • C resolver: oversized prompt answers leave the prompt open; close/initialize prompt handling; prompts arriving during shutdown are declined; zeroing yyjson allocator with an MSVC-compatible alignment header; CMake .pc absolute dirs; MSVC static/import lib name clash; Windows PATH-only discovery. Generated private keys no longer escape zeroization.
  • Bitwarden / Claude / gopass: import collisions ignore case and UUID spelling, and the vault is listed once; an unknown UUID ref fails instead of creating an item; claude login and the helper resolve the same provider; the gopass binary fallback only applies to base64 entries.
  • HTTP providers: connect and request timeouts for every reqwest-based provider; Setec IPv6 and delete without the info grant; Doppler retries when Retry-After exceeds the cap; dead code warnings gated; CI checks more features on their own.
  • External providers: brokered credentials scoped by configured URI; endpoints get a base environment plus declared variables only; no locks held across credential prompts; Drop is safe on a current_thread runtime; planning no longer launches the endpoint.
  • IPC crate: cancel-safe frame reads; SSH works on OpenSSH before 8.7; launched children die with their session; Debug output redacts secrets; no pending entry leak on cancelled starts.
  • Changelog/docs: a new Changed section covers breaking changes (cache v4, generator output, get newline, Rust API); fixes to unreleased features are folded into their entries; the misfiled 0.20.0 entries are fixed; serve anchor and Doppler landing label corrected. SDK documentation labels inline schema v2 as requiring SecretSpec 0.21+.

Not fixed / needs attention

  • Client in-flight permit is released before the server frees its slot (needs a protocol decision on cancel acknowledgments).
  • The SSH fallback was not tested against a real OpenSSH older than 8.7.

Testing

cargo test --all passes (2027 tests), C resolver tests pass under Meson and CMake (including ASan/UBSan), and clippy and rustfmt passed on the earlier Rust commits. The follow-ups passed all five CMake C tests, the docs build, and git diff --check. Native Windows CI passed both cargo test and the standalone C build and tests after the allocator fix.

This PR was created by Claude Code; see cli/cli#13904.

The shutdown, inline-schema, and MSVC follow-up commits were prepared with Codex.

🤖 Generated with Claude Code

domenkozar and others added 7 commits September 22, 2026 18:23
secretspec now depends on secretspec-ipc, which was never published, so the
release workflow publishes it first and the release docs cover its manual
first publish. libsecretspec accepts inline spec v1 again so 0.20 SDKs keep
working against a 0.21 library; SDK docs now describe v2.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Oversized prompt answers leave the prompt open, close no longer reports
PROMPT_PENDING for its own shutdown, prompts parented on initialize are
protocol errors, yyjson documents use a zeroing allocator, the CMake pc file
handles absolute install dirs, MSVC static and import libraries no longer
collide, and Windows discovery searches only absolute PATH entries.
Generated private keys no longer escape zeroization.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Import collision checks fold case and UUID spelling and list the vault once.
Unknown UUID refs fail instead of creating items. Single reads agree with
batch reads for non-ASCII names. claude login and the helper ignore the
ambient SECRETSPEC_PROVIDER so they resolve the same store. gopass only
uses the binary cat fallback for base64 entries.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
All reqwest based providers use connect and request timeouts. Setec IPv6
hosts are bracketed once and delete works without the info grant. Doppler
retries at the capped delay when Retry-After exceeds it. Dead code warnings
under reduced feature sets are gated, and CI checks more features alone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brokered keyring credentials include the configured URI, endpoints receive
a base environment plus variables their claim declares, credential prompts
hold no provider lock and get the interactive deadline, Drop no longer
panics on a current_thread runtime, and cache planning does not launch the
endpoint.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Frame reads keep partial frames across cancellation, SSH tolerates OpenSSH
before 8.7, launched children die with their session, Debug output redacts
secret values, cancelled starts leave no pending entries, and buffers grow
without leaving unwiped copies.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Adds a Changed section for breaking changes, folds fixes to unreleased
features into their entries, moves the project default provider chain entry
out of the released 0.20.0 section, and restores the INI extract label. Fixes
the serve anchor and the Doppler landing label, and gates a CLI-only helper.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
secretspec 6385021 Commit Preview URL

Branch Preview URL
Sep 23 2026, 12:12 AM

@domenkozar
domenkozar merged commit 3fe2025 into main Sep 23, 2026
130 checks passed
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.

1 participant