Notable Changes
Added
-
Nexus links now convert to and from
Link.Callbackinstead of raisingNotImplementedError. -
Add an experimental Google Cloud Storage external payload storage driver with an optional async
gcloud-aio-storageadapter. -
Add experimental notification service models in
temporalio.nexus.notifications. The SDK does not currently use these models. -
Worker now warns when an activity method is registered from the class instead of from an instance (i.e. its first parameter is an unbound
self). -
Add experimental
versioning_overridetoworkflow.start_child_workflowandworkflow.execute_child_workflowto override inherited parent versioning, andcommon.OneTimeVersioningOverrideto route an execution to a deployment version until its first completed workflow task. Child overrides require Temporal Server 1.32 or newer; invalid child overrides raiseexceptions.InvalidVersioningOverrideError. -
Workers and clients can now read external storage reference payloads that were encoded with the configured payload codec and marked with
__temporal_external_storage_referencemetadata. This release does not write encoded references yet; a later release will, so upgrade all workers before then. -
WorkflowEnvironment.start_time_skipping_v2()starts a Temporal CLI dev server with per-workflow virtual-clock time skipping, the eventual replacement to the global-clock Java test server returned bystart_time_skipping(). -
TimeSkipper(client, config=TimeSkippingConfig(...))fromtemporalio.testingwraps an existingClientwith per-workflow time skipping for use outside the test environment. -
Core: Child workflow commands, including those submitted through the C bridge, support pinned, auto-upgrade, and one-time worker deployment versioning overrides on Temporal Server 1.32.0 or later. Child-start resolutions distinguish invalid versioning overrides and missing namespaces from other start failures.
-
Expose
connect_timeoutonClient.connectandConnectConfigto bound TCP connection attempts independently of RPC timeouts. The default remains unset. -
workflow.new_random()accepts an optionalnamethat is mixed into the seed, so differently named generators, andworkflow.random(), produce different sequences. -
Add startup timeout options to
WorkflowEnvironment.start_localandWorkflowEnvironment.start_time_skippingto configure how long to wait for the server to become ready after spawning.
Stabilized
- Removed experimental labels from the core plugin APIs.
Changed
- Payload converters exposed by data converters and workflow/activity accessors retain transfer type conversion, so direct use behaves consistently with SDK serialization.
💥 Breaking Changes
-
SchedulePolicy.catchup_windownow defaults toNone. An unspecified window will use the server configured default. -
Experimental: Nexus Workflow Updates now require
wait_for_stageto be explicitly set toACCEPTED. -
The Deep Agents, Google ADK, Google GenAI, LangGraph, LangSmith, and Strands Agents integrations have moved to independently versioned packages in
temporalio/ai-integrations. The existing SDK extras install the corresponding standalone packages and publictemporalio.contribimports forward their APIs; new code should depend on the standalone packages and use theirtemporalio.<integration>imports directly. -
The OpenAI Agents integration has moved to the independently versioned
temporalio-openai-agentspackage. The existingtemporalio[openai-agents]extra now installs that package, and the old publictemporalio.contrib.openai_agentsimports remain available at runtime and retain their static type information. New code should depend ontemporalio-openai-agentsdirectly and importtemporalio.openai_agents. -
temporalio.contrib.google_adk_agents: ADK-generated ids and retry jitter now draw from a workflow-private deterministic stream (aworkflow.new_random()per run) instead ofworkflow.random(). A workflow started under 1.34.0 that generated ADK ids or jitter (for example one waiting on a HITL response) may not replay deterministically across this upgrade; drain such workflows or use worker versioning. -
Decorating an
async deffunction with@update_method.validatoror passing one asvalidatortoworkflow.set_update_handler/set_dynamic_update_handlernow raisesValueError. Previously the validator was silently never run, so every update was accepted. -
temporalio.contrib.opentelemetry: removedTemporalIdGenerator.seed_span_id()andseed_trace_id().
Fixed
-
Fix
contrib.opentelemetryReplaySafeLoggerProvider.get_logger()raisingTypeErrorwith opentelemetry-api 1.45, whereLogger.enabledbecame abstract.enabled()now returnsFalsewhile replaying history events, matchingemit(). -
contrib.google_adk_agents: agents with anoutput_schemano longer fail every workflow task when calling the model. The schema type is now sent to the model activity as its JSON schema. Custom Pydantic schema generation is preserved. Integer-valued output enums are normalized to strings to match Google GenAI. -
Core: Worker heartbeats now report correct task-slot and poller counts when using buffered or custom metrics backends, including the Python SDK's
MetricBuffer. Previously these counts could remain0because heartbeat accounting depended on reading labels from backend-owned attributes. -
Decode enums that mix in
strorint(for exampleclass Color(str, Enum)) to the enum instead of a list of characters or an error, and decodedictkeys typed as anintenum. -
System Nexus operations without an operation-specific serialization context no longer give custom payload and failure converters the calling workflow's context.
-
temporalio.contrib.strandsactivity and MCP tools now give the model the Activity's failure message and expose its exception to after-tool hooks. -
Cancelling a workflow, or the task awaiting
ExternalWorkflowHandle.cancel(), before the external cancel request resolves no longer fails every following workflow task withInvalidStateError. -
Preserve the result of augmented assignments such as
path /= "child"in the workflow sandbox, while retaining restrictions on replacement objects. -
Fixed Pydantic constraints being silently ignored inside or outside workflow sandboxes by passing through
annotated_typesby default. -
Fix S3 external storage object names by preserving empty namespace segments and using namespace-scoped hash keys when names exceed 1,024 bytes. Document the read and bucket-listing permissions required for uploads.
-
Encoding a datetime search attribute without a timezone now raises
ValueError("Timezone must be present on all search attribute dates")on the typed path, matching the deprecated untyped encoder, instead of sending a naive ISO string that the server rejects withBadSearchAttributes. -
Core: A workflow task that arrives while a workflow waits on a local activity, such as a legacy query, now waits until the current workflow task is reported. Previously it replaced that workflow task ("Trying to send a new WFT for a run which already has one!"), which then timed out on the server and could leave the workflow stuck on a nondeterminism error.
-
Activity heartbeats are now recorded in the order they were sent. With a payload codec that is slow to encode, an older heartbeat could be recorded after a newer one, so a retried activity resumed from stale heartbeat details.
-
Fix
Worker.shutdown()andasync with Worker(...)hanging forever when worker validation fails, for example on a namespace that does not exist.async withnow raises the validation error. -
Exiting
async with Worker(...)now waits for the code that plugins run after the Worker stops inrun_worker, up to the newplugin_shutdown_timeoutWorker option, instead of cancelling the task that entered the block. -
A deserialized
ApplicationErrorwithout a next retry delay now hasnext_retry_delayset toNoneinstead of a zerotimedelta. -
Core: Workers now replay workflows paused before a scheduled task starts, allowing those workflows to make progress after unpause.
-
temporalio.contrib.opentelemetry:TracingInterceptorandOpenTelemetryInterceptorno longer logFailed to detach contextwhen a context is torn down on a different thread while OpenTelemetry's threading instrumentation (enabled by strands, among others) is active; a context is now detached exactly when its token is still valid in the currentcontextvars.Context, which it stays when a workflow resumes on another pool thread. -
Reject unsupported
InterpreterPoolExecutoractivity executors when creating a worker instead of failing during activity execution. -
Setting
Worker.clientno longer raises "New client is not on the same runtime as the existing client" when both clients connected without aruntime, since both use the default runtime. The check now compares the runtime each client actually connected with. -
Heartbeating an async activity through a task-token
AsyncActivityHandlenow raisesAsyncActivityCancelledErrorwithreset=Truewhen the activity was reset, as handles created from IDs already did. -
Keep whole-number
Doublevalues in typed search attributes returned bylist_workflows()and other visibility results, instead of silently dropping them. -
Stop
SandboxImportNotificationPolicy.WARN_ON_UNINTENTIONAL_PASSTHROUGHandRAISE_ON_UNINTENTIONAL_PASSTHROUGHfrom flagging the module that defines the workflow, which the sandbox reloads on purpose. -
Experimental Workflow Streams background publishing now retries transient signal delivery failures without delaying payload conversion errors.
-
Workflow wait conditions are no longer evaluated in a workflow task that only delivers updates and rejects all of them.
-
Preserve retained Workflow Stream items after workflow completion, failure, cancellation, termination, or timeout by draining them through read-only queries before subscriptions finish.
-
Preserve the original Workflow Streams poll error when the follow-up execution description fails with an RPC error.
-
Prevent pending Nexus operations from logging "Task was destroyed but it is pending!" when a worker stops or evicts a workflow.
-
Cancelling a workflow or local activity while the local activity waits on its retry backoff timer now cancels the timer, instead of failing every workflow task with a
Missing associated machine for LocalActivitynondeterminism error. -
WorkflowStreamClient.subscribenow propagates task cancellation instead of ending the subscription normally. -
Fix worker shutdown hanging when a Nexus task is cancelled while its failure is still being encoded.
-
Dropping a client or worker no longer stops log forwarding for the other clients and workers that share its
Runtime. -
If enabled, time skipping is applied to workflows started through
Client.start_update_with_start_workflow()orClient.execute_update_with_start_workflow(). -
ActivityHandle.describe()now returnsNoneas theexpiration_timeof a Standalone Activity that has no schedule-to-close timeout, instead of a naivedatetime.min. -
Send a request ID when terminating a standalone activity, so a retried
ActivityHandle.terminate()call no longer fails after the first attempt already terminated the activity. -
Evicting a workflow while an activity or local activity cancellation is still unresolved no longer leaves the eviction retrying forever and worker shutdown hung, a regression in 1.33.0.
-
Fix Nexus worker shutdown hanging forever, and the task slot never being released, when a Nexus handler failure can not be converted or encoded, for example when the payload codec raises or the error details are not serializable. The worker now completes the task with an internal handler error.
-
A cancel that arrives while an activity's result or failure is still being encoded no longer interrupts the reporting, so the completion is still sent.
-
GoogleAdkPlugin's deterministic providers now work in read-only contexts (query handlers, update validators), returning the workflow's deterministic time and fresh entropy without touching the workflow's random state. -
Decoding a dataclass with
field(init=False)fields no longer raisesTypeError; those fields are left out of the constructor call and their serialized values are restored afterwards, including on frozen dataclasses.
Security
-
Updated Rust bridge dependencies, including
rustlsto 0.23.45 andringbufto 0.5.2 to address RUSTSEC-2026-0285 and RUSTSEC-2026-0293. -
Core: Ephemeral server downloads now use
zip9.0 for ZIP extraction, replacing the 8.x dependency yanked upstream for security issues.
SDK Core Commits
d24904cbAdd workflow versioning overrides (#1624)281807a5[fix] Havestart_updaterepeatedly poll forAccepted(#1611)bfc66f7dAdd shared changelog fragment tooling (#1625)26ed8876chore(ci): use resolver 3 to fix msrv (#1628)f701746dFix non-determinism in FSM codegen (#1633)c1670481Import Core changelog entries when updating SDK submodules (#1634)20085a01feat(sdk): add OpenTelemetry tracing integration (#1591)8fe478eechore: bump versions for 1.1.0 release (#1632)01d7c918Prefix imported Core changelog entries (#1636)38f83151Recognize v-prefixed SDK release tags (#1638)472f94eeFix labelled heartbeat metrics reporting 0 with a buffered meter (#1593)958f13b2Fix client name issue in cloud CI (#1647)8e988713Detect Nexus operation changes during replay (#1645)9cb90f5aDeliver local activity cancels before evicting a run (#1620)aefe3059Add Worker::run_until to the Rust SDK (#1637)877c33e8Update Upstream Protos for Nexus Handler Callbacks (#1652)212e8150Buffer a new workflow task while the run already has one (#1640)7064ea83build(deps): update dirs requirement from 6.0 to 7.0 (#1617)b5391812Fix replay after workflow pause before task start (#1618)3313345fAdd exponential histogram option to OTLP metrics exporter (#1654)165a0e60feat: external storage foundation types (#1630)56fa82ecAdd experimental Event Groups support (#1521)951fd672fix(visitor): classify Any fields in payload limits generator (#1641)2c1ee2dechore: bump zip (#1666)3f01ba1ebuild(deps): bump hoverkraft-tech/compose-action from 3.1.0 to 3.2.0 (#1631)e6b2df75Skip workflow cache scan when no tasks are buffered (#1667)e322b0fechore: remove anithesis (#1669)0a838469build(deps): update wit-bindgen requirement from 0.61.1 to 0.62.0 (#1655)d1fbb204chore: upgrade to syn 3 (#1668)c8d91918feat: allow customizing test server startup timeout
What's Changed
- Automate release preparation by @tconley1428 in #1692
- Mark breaking change headers by @tconley1428 in #1694
- Fix flake in test_started_workflow_has_link_to_standalone_nexus_operation by @VegetarianOrc in #1696
- feat(extstore): Add support for Nexus task handling by @jmaeagle99 in #1676
- fix: revert testmodule proto gen to mypy-protobuf 3.3.0 format by @jmaeagle99 in #1699
- test: run integration suite against Cloud by @tconley1428 in #1687
- refactor: move workflow task duration logging to core by @jmaeagle99 in #1698
- chore: update uv lockfile by @tconley1428 in #1700
- test: unskip unfinished update handler cases on time-skipping server by @Sakshamm-Goyal in #1697
- Ensure unique workflow IDs in deployment config test by @VegetarianOrc in #1705
- Add pytest marker to skip nexus extstore tests by @VegetarianOrc in #1702
- Add SAA TemporalNexusOperation handling by @VegetarianOrc in #1689
- Bump OpenAI Agents failure-propagation test timeout by @THardy98 in #1711
- fix: preserve restricted proxies after in-place operations by @Sakshamm-Goyal in #1706
- revert: restore Python workflow task duration logging by @tconley1428 in #1720
- Forward MCP server config through GeminiTestServer.plugin() by @brianstrauch in #1721
- Updating Temporal API protos by @JoshuaFrenchwood in #1719
- fix(contrib): pool and idle-evict MCP connections in google_adk_agents by @wankhede04 in #1664
- Fix duplicate links for Nexus backing SAA by @VegetarianOrc in #1725
- Test Strands with unique task queues by @tconley1428 in #1729
- fix(contrib/pydantic): reuse TypeAdapters across payloads by @nathan-gage in #1703
- Fix race in nexus double start test by @VegetarianOrc in #1728
- Wait for deployment ramp propagation by @tconley1428 in #1730
- test: provision Cloud namespace per CI run by @tconley1428 in #1731
- test: tolerate trace start-run ordering by @tconley1428 in #1714
- Test LangSmith built-in query filtering by @tconley1428 in #1727
- [AI-163] google_adk_agents: support ToolContext session state in activity_tool by @DABH in #1683
- Add mcp dependency to google-adk extra by @DABH in #1736
- contrib/google_adk_agents: rename activity_tool to activity_as_tool by @DABH in #1735
- Accept dict run_config in openai_agents Temporal runner by @DABH in #1739
- docs: clarify AI contribution expectations by @tconley1428 in #1737
- [AI-250] Add Deep Agents plugin by @DABH in #1644
- chore: update sdk-core submodule to latest by @jmaeagle99 in #1738
- Add workflow.uuid7() by @ribhavjain in #1733
- docs: clarify OpenAI Agents tool execution by @jaeyoung0509 in #1741
- chore: update sdk-core submodule to latest by @jmaeagle99 in #1742
- Add missing changelog entry for Nexus invoked SAA by @VegetarianOrc in #1746
- Remove stale references to Python 3.9 by @mjameswh in #1740
- feat: expose runtime environment info option by @tconley1428 in #1747
- Fix OpenInference trace patch lifecycle by @tconley1428 in #1726
- Add SDK Core changelog release notes by @tconley1428 in #1744
- refactor: move workflow task duration logging to core by @jmaeagle99 in #1749
- feat: Add optional FIPS support- #466 by @christiandcucco in #1743
- Expose Core console log format by @Sushisource in #1750
- [SDK Sentinel] Fix concurrent OpenTelemetry ID seed isolation by @sdk-sentinel-bot in #1758
- test: support standalone activity cancellation status change by @tconley1428 in #1762
- Expose failure converter to system Nexus conversion by @VegetarianOrc in #1760
- AI-382: keep hosted tool credentials out of workflow history by @xumaple in #1752
- Report non-retryable PayloadValidationError as BAD_REQUEST by @bergundy in #1756
- Set request ID for SAA by @Quinn-With-Two-Ns in #1761
- Use target serialization context for system Nexus signal-with-start by @tconley1428 in #1672
- Fix the sandbox examples in the OpenAI Agents README by @brianstrauch in #1764
- [AI-383] Add replay-safe OpenTelemetry meter and logger providers by @DABH in #1710
- AI-382: keep sandbox credentials out of workflow history by @xumaple in #1745
- Move Nexus start workflow logic into the Nexus package. by @VegetarianOrc in #1765
- Add payload validation error factory by @bergundy in #1766
- Fix shared header encoding for update-with-start by @tconley1428 in #1770
- Omit null payload validation details by @bergundy in #1774
- Move Nexus workflow update and signal logic into the Nexus package. by @VegetarianOrc in #1771
- Decode system Nexus worker payloads by @VegetarianOrc in #1775
- Prepare release 1.32.0 by @tconley1428 in #1779
- Adding QueryWorkflowResponse Link for Nexus by @JoshuaFrenchwood in #1723
- Fix release changelog verification by @tconley1428 in #1780
- Add SDK Sentinel PR responder by @Sushisource in #1781
- fix: fail task when update handler continues as new by @Sakshamm-Goyal in #1708
- Update sdk-core by @tconley1428 in #1786
- [SDK Sentinel] Fix Nexus TRY_CANCEL cancellation test race by @sdk-sentinel-bot in #1785
- Support payload-free system Nexus roots by @JoshuaFrenchwood in #1783
- Update bridge lockfile security fixes by @tconley1428 in #1789
- Use shared changelog workflow by @Sushisource in #1790
- Fix tests with latest dependencies by @brianstrauch in #1798
- [SDK Sentinel] Stabilize immediate schedule trigger test by @sdk-sentinel-bot in #1802
- fix: only set Nexus start on_conflict_options when there's something to attach by @tekkaya in #1799
- 💥 feat(extstore): pass a dedicated select context to the driver selector by @jmaeagle99 in #1794
- feat: add System Nexus operation interceptors by @tconley1428 in #1791
- Honor retry-after headers when OpenAI requests a retry by @1fanwang in #1796
- Disable Botocore retries for default Strands Bedrock model by @brianstrauch in #1797
- feat: restore generic System Nexus workflow interceptor by @tconley1428 in #1800
- [SDK Sentinel] Remove flaky Gemini replay workflow deadline by @sdk-sentinel-bot in #1816
- Fix duplicate activity cancellation commands by @tconley1428 in #1814
- fix(extstore): report wall-clock duration for storage metrics by @jmaeagle99 in #1815
- Support new API fields in ActivityHandle.describe by @maciejdudko in #1782
- [SDK Sentinel] Stabilize unfinished-handler cancellation test by @sdk-sentinel-bot in #1824
- Add GCP Cloud Run OpenTelemetry support by @seanbollin in #1767
- Add OpenTelemetry metrics exporter built on MetricBuffer by @harsh543 in #1701
- Pass pydantic_core through the workflow sandbox by default by @DABH in #1834
- Run google_genai MCP tests in-memory and close pooled connections by @DABH in #1836
- Remove redundant workflow deadlines from google_genai and openai_agents tests by @DABH in #1835
- Bound workflow task latency metric by wall-clock time in metrics test by @DABH in #1839
- Derive reset point from history in random seed test by @DABH in #1840
- Fix System Nexus payload converter serialization context by @tconley1428 in #1825
- Skip cloud tests for Dependabot by @tconley1428 in #1846
- Standalone Activities operator commands by @GregoryTravis in #1809
- deepagents: route string summarizer models through the durable seam by @DABH in #1843
- Bump aiohttp from 3.14.1 to 3.14.3 by @dependabot[bot] in #1827
- Bump cryptography from 49.0.0 to 50.0.0 by @dependabot[bot] in #1826
- Fix repeated Deep Agents tool calls with identical arguments by @1fanwang in #1806
- Fix OpenTelemetry exporter examples in the openai_agents README by @DABH in #1850
- Remove Experimental tag from Standalone Activities by @GregoryTravis in #1863
- Prepare release 1.33.0 by @tconley1428 in #1864
- [SDK Sentinel] Retry transport-cancelled worker deployment test RPCs by @sdk-sentinel-bot in #1857
- NexusSerializationContext for data/failure converters by @JoshuaFrenchwood in #1828
- Support google-genai 2.21 file downloads by @brianstrauch in #1865
- Add Google Cloud Run CloudRunIDPlugin by @seanbollin in #1776
- Rename CloudRunIDPlugin to CloudRunIdPlugin by @seanbollin in #1869
- Unwrap current payload converters by @tconley1428 in #1867
- Fix release changelog notes command by @tconley1428 in #1866
- Restore pickling of Pydantic data converters by @tconley1428 in #1877
- Replace traced readiness query polls with untraced waits by @DABH in #1848
- Keep DataConverter payload converters unwrapped by @tconley1428 in #1875
- Add durable Strands sandbox support by @brianstrauch in #1768
- Prevent duplicate Deep Agents messages after continue-as-new by @1fanwang in #1804
- Query completed workflows instead of polling traced queries in LangSmith tests by @DABH in #1830
- Improve behavior of NexusSerializationContext by @Evanthx in #1879
- Add experimental Event Groups support by @mjameswh in #1784
- [AI-303] google_adk_agents: graph workflows, dynamic workflows, and durable HITL (ADK v2) by @DABH in #1675
- Bump deepagents to 0.7 and mirror optional backend ops in TemporalBackend by @DABH in #1873
- Pass OpenTelemetry through Google ADK workflow sandbox by @brianstrauch in #1899
- Skip importlib for already-loaded modules in the workflow sandbox by @DABH in #1833
- Bump soupsieve from 2.8.4 to 2.9 by @dependabot[bot] in #1884
- [SDK Sentinel] Wait for workflow completion metric in custom metrics test by @sdk-sentinel-bot in #1819
- Restore frozensets when decoding typed JSON payloads by @LindseyZ1205 in #1898
- Add first run ID to workflow already started errors by @Quinn-With-Two-Ns in #1893
- Preserve DeepAgents model bind options with tools by @brianstrauch in #1901
- Update sdk-core by @tconley1428 in #1906
- Prepare release 1.34.0 by @tconley1428 in #1903
- Take activity tests off one-second clocks by @DABH in #1842
- Remove OpenAI Agents integration by @brianstrauch in #1868
- [SDK Sentinel] Avoid encoded payload test workflow timeout by @sdk-sentinel-bot in #1909
- Stop spurious
Failed to detach contexterrors from the OpenTelemetry interceptors by @DABH in #1911 - Restore wrapped public payload converters by @tconley1428 in #1913
- Raise ValueError for naive datetime search attributes by @KingLizard1020 in #1882
- Bump litellm from 1.91.0 to 1.91.5 by @dependabot[bot] in #1912
- Fix Strands activity tool error reporting by @brianstrauch in #1908
- Fix Google ADK agents with output_schema by @devjoinedthechat in #1887
- Require wait_for_stage parameter for Nexus Workflow Updates by @atol in #1883
- Bound full GC passes in tests to one test's allocations by @DABH in #1847
- Bump urllib3 from 2.7.0 to 2.8.0 by @dependabot[bot] in #1907
- Unified link converters by @Evanthx in #1885
- Isolate Google ADK's deterministic providers on a workflow-private random stream by @DABH in #1854
- Reject interpreter pool activity executors by @tconley1428 in #1915
- Fix Pydantic constraints in workflow sandboxes by @tconley1428 in #1914
- Decode enums that mix in str or int and int enum dict keys by @RaphaelFakhri in #1900
- Warn when activity method is registered without an instance by @vjymisal0 in #1918
- [SDK Sentinel] Allow delayed activity visibility in pause test by @sdk-sentinel-bot in #1916
- Remove
TemporalIdGenerator.seed_span_idandseed_trace_idby @DABH in #1891 - Keep Workflow Streams publishing after transient errors by @1fanwang in #1811
- 💥 fix(client): use server schedule catchup window default by @chris-olszewski in #1922
- Remove experimental language from core plugin APIs by @tconley1428 in #1928
- Migrate to category-folder changelog fragments by @tconley1428 in #1919
- Report an activity's outcome even when a cancel lands during encoding by @DABH in #1910
- Prevent workflow stream subscriptions from hiding cancellation by @1fanwang in #1805
- Update Rust bridge Cargo dependencies by @tconley1428 in #1930
- Bump multidict from 6.7.1 to 6.9.1 by @dependabot[bot] in #1932
- Bump langgraph-sdk from 0.4.2 to 0.4.4 by @dependabot[bot] in #1931
- Pin Core to its merged main history by @tconley1428 in #1935
- Fix Google GenAI streaming fixtures for latest dependencies by @brianstrauch in #1939
- Import Core notes during updates and share release-note generation by @tconley1428 in #1936
- fix: exempt workflow module from passthrough notifications (#1254) by @deximple in #1924
- Prefix Core changelog entries and synchronize bridge dependencies by @tconley1428 in #1940
- Remove bundled AI integrations by @brianstrauch in #1923
- Use context-free System Nexus fallback by @tconley1428 in #1945
- [SDK Sentinel] Handle update-not-found race in unfinished-handler test by @sdk-sentinel-bot in #1950
- Fix dataclass init=False field deserialization by @AmitKulkarni23 in #1942
- Fix eviction hang when an already-cancelled activity is cancelled again by @jtwillis92 in #1947
- Fix worker heartbeat counts with MetricBuffer by @Sushisource in #1952
- Update System Nexus generation for nexgen support packages by @VegetarianOrc in #1949
- Interim fix for flaky nexus update test by @mavemuri in #1943
- docs: import ClientConfig from temporalio.envconfig in README by @shaikn6 in #1955
- Allow replacing a worker's client when both use the default runtime by @wuchris-ch in #1953
- Add child workflow versioning overrides by @Quinn-With-Two-Ns in #1944
- Keep whole-number Double values in typed search attributes by @RaphaelFakhri in #1957
- Update system nexus generation to include notification service by @VegetarianOrc in #1925
- Update sdk-core to main (WFT buffering fix) by @THardy98 in #1964
- Expose TCP connection timeout in Python client by @dvir-cyber in #1963
- Fix pending Nexus task cleanup by @VegetarianOrc in #1962
- Fix connect timeout test against Temporal Cloud by @tconley1428 in #1968
- Fix cancelling a local activity during its retry backoff by @RachelWanggg in #1972
- [SDK Sentinel] Isolate unfinished-handler test task queues by @sdk-sentinel-bot in #1969
- Time Skipping V2 by @GregoryTravis in #1959
- Include max_session_skip_count when updating TimeSkippingConfig. by @GregoryTravis in #1973
- Fix cancelling the task that awaits an external workflow cancel by @RachelWanggg in #1975
- Mark standalone Nexus operations as Public Preview by @litlep-nibbyt in #1967
- [SDK Sentinel] Synchronize alternate ordering test with history by @sdk-sentinel-bot in #1981
- [SDK Sentinel] Fix cancellation-reason test time-skipping race by @sdk-sentinel-bot in #1982
- Update sdk-core for zip 9.0 by @tconley1428 in #1978
- feat: add timeout option for test server by @chris-olszewski in #1990
- Keep activity heartbeats in order when encoding is slow by @parbhatkapila4 in #1977
- Don't run the full test suite under the Java (V1) time skipping server by @GregoryTravis in #1992
- Clarify contributor restrictions on soliciting user information by @eamsden in #1985
- [SDK Sentinel] Extend eviction deadlock history timeout by @sdk-sentinel-bot in #1989
- Add Required PR Checks job to gate merges by @cconstable in #1999
- Add Nexus link converter for Callbacks by @atol in #1995
- Keep log forwarding running when one client or worker on a runtime is dropped by @parbhatkapila4 in #1998
- fix: annotate pydantic TypeAdapter cache for pydantic 2.14 by @jmaeagle99 in #2011
- fix: skip wait conditions when a task only rejects updates by @jmaeagle99 in #2010
- fix: await the Worker run task on exit instead of cancelling it by @moetemp in #2000
- test: wait for the Nexus update target to close before the update that must fail by @moetemp in #2012
- Reject async def update validators by @avanish-garg in #2005
- Raise on reset when heartbeating an async activity by task token by @LindseyZ1205 in #2015
- Preserve augmented-assignment results in the workflow sandbox by @JackyHsu-X in #2018
- Don't hang worker shutdown when a Nexus task is cancelled while encoding its failure by @parbhatkapila4 in #2020
- Don't hang worker shutdown when worker validation fails by @parbhatkapila4 in #2023
- Send a request ID when terminating a standalone activity by @RaphaelFakhri in #2009
- Return None for an unset expiration_time in ActivityHandle.describe() by @LindseyZ1205 in #2016
- [SDK Sentinel] Pin the UI port test server version by @sdk-sentinel-bot in #2024
- Refresh Python and Rust dependency locks by @tconley1428 in #2026
- Return None for an unset next_retry_delay on a deserialized ApplicationError by @JayPokale in #2028
- [SDK Sentinel] Fix time-skipping external cancel test race by @sdk-sentinel-bot in #2027
- Don't hang Nexus worker shutdown when a handler failure can't be encoded by @parbhatkapila4 in #2031
- Stamp the time-skipping config on update-with-start workflows by @LindseyZ1205 in #2017
- Keep ReplaySafeLoggerProvider working with opentelemetry-api 1.45 by @sangkyoonnam in #2030
- Preserve Workflow Streams after workflow closure by @brianstrauch in #1994
- feat(endode-extstore-refs): external storage references are now decoded by @cconstable in #1946
- Add Google Cloud Storage support for external payloads by @diwu-sf in #1980
- Fix S3 storage key limits and permission guidance by @diwu-sf in #2002
- Prepare release 1.35.0 by @tconley1428 in #2034
New Contributors
- @JoshuaFrenchwood made their first contribution in #1719
- @wankhede04 made their first contribution in #1664
- @nathan-gage made their first contribution in #1703
- @ribhavjain made their first contribution in #1733
- @jaeyoung0509 made their first contribution in #1741
- @christiandcucco made their first contribution in #1743
- @sdk-sentinel-bot made their first contribution in #1758
- @tekkaya made their first contribution in #1799
- @seanbollin made their first contribution in #1767
- @harsh543 made their first contribution in #1701
- @LindseyZ1205 made their first contribution in #1898
- @KingLizard1020 made their first contribution in #1882
- @devjoinedthechat made their first contribution in #1887
- @atol made their first contribution in #1883
- @RaphaelFakhri made their first contribution in #1900
- @vjymisal0 made their first contribution in #1918
- @deximple made their first contribution in #1924
- @AmitKulkarni23 made their first contribution in #1942
- @jtwillis92 made their first contribution in #1947
- @shaikn6 made their first contribution in #1955
- @wuchris-ch made their first contribution in #1953
- @dvir-cyber made their first contribution in #1963
- @RachelWanggg made their first contribution in #1972
- @litlep-nibbyt made their first contribution in #1967
- @parbhatkapila4 made their first contribution in #1977
- @moetemp made their first contribution in #2000
- @avanish-garg made their first contribution in #2005
- @JackyHsu-X made their first contribution in #2018
- @JayPokale made their first contribution in #2028
- @sangkyoonnam made their first contribution in #2030
- @diwu-sf made their first contribution in #1980
Full Changelog: 1.31.0...1.35.0