|
5 | 5 | ### Fixes |
6 | 6 |
|
7 | 7 |
|
| 8 | +## v0.4.0 (2026-07-31) |
| 9 | + |
| 10 | +### Changes |
| 11 | + |
| 12 | +- feat(durable-functions): restore worker-side callHttp ([#333](https://github.com/microsoft/durabletask-js/pull/333), fixes [#318](https://github.com/microsoft/durabletask-js/issues/318)) |
| 13 | +- [copilot-finds] Bug: Entity getState() produces unhelpful SyntaxError for corrupted state ([#309](https://github.com/microsoft/durabletask-js/pull/309)) |
| 14 | +- fix: prevent infinite loop in suspend/resume event buffer iteration ([#306](https://github.com/microsoft/durabletask-js/pull/306)) |
| 15 | +- fix: clear stale in-memory purge queue entries ([#285](https://github.com/microsoft/durabletask-js/pull/285)) |
| 16 | +- fix: preserve error cause chains in failure details ([#310](https://github.com/microsoft/durabletask-js/pull/310)) |
| 17 | +- fix: treat empty entity operation input as no input ([#283](https://github.com/microsoft/durabletask-js/pull/283)) |
| 18 | +- fix: use getValue() instead of toString() on protobuf StringValue in activity execution ([#280](https://github.com/microsoft/durabletask-js/pull/280)) |
| 19 | +- fix: clean up orchestration history streams ([#314](https://github.com/microsoft/durabletask-js/pull/314)) |
| 20 | +- fix: make raiseIfFailed honor failed runtime status ([#308](https://github.com/microsoft/durabletask-js/pull/308)) |
| 21 | +- fix: prevent test worker crash during completion error handling ([#305](https://github.com/microsoft/durabletask-js/pull/305)) |
| 22 | +- Add `durable-functions@4.0.0` — Azure Functions Durable provider on the gRPC core (+ core host helpers, E2E CI, and release pipeline) ([#282](https://github.com/microsoft/durabletask-js/pull/282)) |
| 23 | +- fix: use failure details for failed orchestration span messages ([#290](https://github.com/microsoft/durabletask-js/pull/290)) |
| 24 | +- Fix #301: WhenAll wait-all + aggregate-exception semantics (root cause of rewind deadlock) ([#302](https://github.com/microsoft/durabletask-js/pull/302)) |
| 25 | +- Add rewind support ([#296](https://github.com/microsoft/durabletask-js/pull/296)) |
| 26 | +- Fix #292: align core Task/TimerTask public shape (result/isCompleted/isFaulted, cancellable TimerTask) ([#293](https://github.com/microsoft/durabletask-js/pull/293)) |
| 27 | +- test: add missing RetryableTask coverage for non-retriable, remaining-timeout, and complete() override ([#289](https://github.com/microsoft/durabletask-js/pull/289)) |
| 28 | +- Fix #291: accept EVENTSENT/EVENTRAISED confirmation for entity calls on classic (Azure Storage) backend ([#294](https://github.com/microsoft/durabletask-js/pull/294)) |
| 29 | +- fix: normalize entity query prefix in client.getEntities() ([#286](https://github.com/microsoft/durabletask-js/pull/286)) |
| 30 | +- fix: validate invalid createTimer inputs ([#288](https://github.com/microsoft/durabletask-js/pull/288)) |
| 31 | +- fix: preserve EntityOperationFailedException details ([#277](https://github.com/microsoft/durabletask-js/pull/277)) |
| 32 | +- fix: exclude initializeState from TaskEntity method dispatch ([#278](https://github.com/microsoft/durabletask-js/pull/278)) |
| 33 | +- fix: preserve V2 entity operation info for index zero ([#279](https://github.com/microsoft/durabletask-js/pull/279)) |
| 34 | +- Add input validation for empty event names in waitForExternalEvent() and sendEvent() ([#276](https://github.com/microsoft/durabletask-js/pull/276)) |
| 35 | +- fix: reject non-finite retry policy values ([#274](https://github.com/microsoft/durabletask-js/pull/274)) |
| 36 | +- fix: use ordinal string comparison for deterministic ordering ([#273](https://github.com/microsoft/durabletask-js/pull/273)) |
| 37 | +- test: add Task and CompletableTask coverage ([#272](https://github.com/microsoft/durabletask-js/pull/272)) |
| 38 | +- fix: add missing action types to non-determinism method names ([#271](https://github.com/microsoft/durabletask-js/pull/271)) |
| 39 | +- fix: preserve continue-as-new carryover event ordering ([#269](https://github.com/microsoft/durabletask-js/pull/269)) |
| 40 | +- Fix: Handle EntityUnlockSent events in orchestration executor replay ([#268](https://github.com/microsoft/durabletask-js/pull/268)) |
| 41 | +- fix: Update instance status on suspend/resume in InMemoryOrchestrationBackend ([#176](https://github.com/microsoft/durabletask-js/pull/176)) |
| 42 | +- fix: prevent duplicate completion actions when setFailed() is called after setComplete() ([#267](https://github.com/microsoft/durabletask-js/pull/267)) |
| 43 | +- fix: use epoch fallback for entity lastModifiedTime ([#265](https://github.com/microsoft/durabletask-js/pull/265)) |
| 44 | +- fix: handle EventSent replay events ([#264](https://github.com/microsoft/durabletask-js/pull/264)) |
| 45 | +- fix: propagate parent instance info in in-memory backend ([#263](https://github.com/microsoft/durabletask-js/pull/263)) |
| 46 | +- fix: avoid wildcard names for anonymous generator functions ([#262](https://github.com/microsoft/durabletask-js/pull/262)) |
| 47 | +- fix: use epoch fallback for missing orchestration timestamps ([#261](https://github.com/microsoft/durabletask-js/pull/261)) |
| 48 | +- fix: add UNKNOWN fallback in getNewEventSummary for unrecognized event types ([#260](https://github.com/microsoft/durabletask-js/pull/260)) |
| 49 | +- [copilot-finds] Improve: withTimeout() input validation and remove dead sleepWithAbort ([#258](https://github.com/microsoft/durabletask-js/pull/258)) |
| 50 | +- fix: prevent unhandled rejections in worker execution wrappers ([#257](https://github.com/microsoft/durabletask-js/pull/257)) |
| 51 | +- build(deps): bump @grpc/grpc-js ([#259](https://github.com/microsoft/durabletask-js/pull/259)) |
| 52 | +- fix: use toLowerCase() instead of toLocaleLowerCase() for event name matching ([#180](https://github.com/microsoft/durabletask-js/pull/180)) |
| 53 | +- fix: track entity execution in pendingWorkItems for graceful shutdown ([#179](https://github.com/microsoft/durabletask-js/pull/179)) |
| 54 | +- fix: move activity input JSON.parse inside try-catch for proper error handling ([#181](https://github.com/microsoft/durabletask-js/pull/181)) |
| 55 | +- fix: Validate first yielded value in orchestrator run() method ([#164](https://github.com/microsoft/durabletask-js/pull/164)) |
| 56 | +- fix: Sub-orchestration watcher uses unintended 30s default timeout in InMemoryOrchestrationBackend ([#156](https://github.com/microsoft/durabletask-js/pull/156)) |
| 57 | +- fix: serialize custom status eagerly to prevent executor crash ([#195](https://github.com/microsoft/durabletask-js/pull/195)) |
| 58 | +- fix: cancel pending timers when purging orchestration instances ([#197](https://github.com/microsoft/durabletask-js/pull/197)) |
| 59 | +- [copilot-finds] Bug: Fix TestOrchestrationClient null serialization divergence from real client ([#199](https://github.com/microsoft/durabletask-js/pull/199)) |
| 60 | +- [copilot-finds] Bug: newOrchestrationState drops failure details when error message or type is empty string ([#198](https://github.com/microsoft/durabletask-js/pull/198)) |
| 61 | +- fix: Preserve original gRPC error cause in rewindInstance and restartOrchestration ([#200](https://github.com/microsoft/durabletask-js/pull/200)) |
| 62 | +- fix: Catch exceptions from user-provided retry handlers to prevent orchestration crash ([#193](https://github.com/microsoft/durabletask-js/pull/193)) |
| 63 | +- feat: Implement work item filters ([#168](https://github.com/microsoft/durabletask-js/pull/168)) |
| 64 | +- fix: Add guard clause to handleSubOrchestrationCompleted to prevent unconditional resume ([#183](https://github.com/microsoft/durabletask-js/pull/183)) |
| 65 | +- fix: Add stream cleanup and retry logic to gRPC error handler ([#182](https://github.com/microsoft/durabletask-js/pull/182)) |
| 66 | +- fix: Use strict undefined check for taskId in completion event handlers ([#157](https://github.com/microsoft/durabletask-js/pull/157)) |
| 67 | +- Add comprehensive unit tests for WhenAnyTask ([#162](https://github.com/microsoft/durabletask-js/pull/162)) |
| 68 | +- fix: Add missing non-Task validation in generator failure recovery path ([#163](https://github.com/microsoft/durabletask-js/pull/163)) |
| 69 | +- fix: Entity StateShim.setState() corrupts cache on serialization failure ([#151](https://github.com/microsoft/durabletask-js/pull/151)) |
| 70 | +- fix: clear customStatus on continue-as-new in InMemoryOrchestrationBackend ([#155](https://github.com/microsoft/durabletask-js/pull/155)) |
| 71 | +- fix: propagate parent notification from composite tasks (WhenAllTask/WhenAnyTask) ([#150](https://github.com/microsoft/durabletask-js/pull/150)) |
| 72 | +- fix: use deterministic time in createTimer instead of Date.now() ([#146](https://github.com/microsoft/durabletask-js/pull/146)) |
| 73 | +- Fix WhenAllTask constructor resetting _completedTasks counter ([#143](https://github.com/microsoft/durabletask-js/pull/143)) |
| 74 | +- Fix retry handler treating undefined/null/NaN/Infinity as retry signal ([#142](https://github.com/microsoft/durabletask-js/pull/142)) |
| 75 | +- Release v0.3.0 ([#147](https://github.com/microsoft/durabletask-js/pull/147)) |
| 76 | + |
8 | 77 | ## v0.3.0 (2026-03-06) |
9 | 78 |
|
10 | 79 | ### Changes |
|
0 commit comments