Skip to content

v0.28.0

Choose a tag to compare

@ya-luotao ya-luotao released this 31 Jul 12:48
· 552 commits to main since this release

Fixes from a dual-reviewer adversarial audit (Claude Fable + Codex gpt-5.6-sol, independent passes) of the v0.25.0–v0.27.0 releases (issue #47 phases 1–3). No high-severity defects were found; the gaps below are closed.

Changed

  • callback_wrapper now composes around timeout-bounded SessionStore adapter dispatch (mirror-batcher appends and every resume-materialization store call), inside the timeout bound — on the worker thread in the default thread-hop mode, inside the cooperative timeout for inline-declared adapters. A Rails executor.wrap wrapper therefore covers an ActiveRecord-backed store adapter too: connections check out and back in per call instead of stranding on the throwaway thread. The bound itself is unchanged (JoinTimeout semantics, no-retry-on-timeout); a wrapper-raised error is treated like a store error (retryable on the batcher path). Previously the timeout path silently ignored the wrapper.

Fixed

  • SdkMcpServer#callback_scheduling= / #callback_wrapper= now validate like their ClaudeAgentOptions counterparts: the String form ("inline") is coerced to the Symbol, and invalid values raise ArgumentError at set time. Previously the bare accessors accepted anything, and a String or typo silently degraded to the thread hop — the opposite of what an inline host asked for.
  • The once-per-process :inline-under-isolation_level = :thread warning is now emitted under a mutex, closing a benign race where two concurrently connecting sessions could both warn.
  • CHANGELOG 0.27.0 wording: a store declaration that itself raises propagates its own exception at construction (only invalid returned values raise ArgumentError).

Internal refactors (no behavior change): SchedulingScope → CallbackDispatchScope (it carries the (scheduling mode, wrapper) dispatch pair), and the cooperative-timeout/cancellation pattern extracted into FiberBoundary.with_cooperative_timeout.

What's changed

  • #51 Rename SchedulingScope -> CallbackDispatchScope, SCHEDULING_KEY -> DISPATCH_KEY — @ya-luotao
  • #52 Extract cooperative-cancellation pattern into FiberBoundary.with_cooperative_timeout — @ya-luotao

Full Changelog: v0.27.0...v0.28.0


gem install claude-agent-sdk -v 0.28.0