Skip to content

chore: release v0.12.0#96

Merged
coji merged 1 commit into
mainfrom
chore/release-v0.12.0
Mar 7, 2026
Merged

chore: release v0.12.0#96
coji merged 1 commit into
mainfrom
chore/release-v0.12.0

Conversation

@coji
Copy link
Copy Markdown
Owner

@coji coji commented Mar 7, 2026

Summary

Release v0.12.0 — version bump and changelog.

Breaking Changes

  • retry()retrigger() (new run ID, returns Promise<Run>)
  • run:retry event removed, RunRetryEvent type removed
  • cleanupSteps: true by default (step data auto-deleted on terminal state)
  • HTTP endpoint POST /retryPOST /retrigger

Added

  • cleanupSteps option
  • jobRegistry check in retrigger()
  • Internal: getRunOrThrow(), executeAction() helpers

Changes since v0.11.0

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Breaking Changes

    • retry() renamed to retrigger() and now returns the new run ID instead of void.
    • run:retry event replaced by run:trigger.
    • HTTP endpoint renamed from POST /retry to POST /retrigger (returns { success: true, runId }).
    • retrigger() now throws "Unknown job" immediately if the job is unregistered.
  • New Features

    • Step cleanup enabled by default; disable with cleanupSteps: false.
    • Added deleteSteps() for manual step cleanup.
    • Client hook retrigger now returns the new run ID.

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 7, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
durably-demo Ready Ready Preview Mar 7, 2026 6:25am

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 7, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 88c1f7ab-3610-4f13-adb4-6da1c03b6376

📥 Commits

Reviewing files that changed from the base of the PR and between 4242b4b and 8480222.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • packages/durably-react/package.json
  • packages/durably/package.json

📝 Walkthrough

Walkthrough

The PR renames the public retry API to retrigger(), changes its return type to return the new Run/runId, updates emitted events to run:trigger, enables automatic step cleanup by default via cleanupSteps, adds deleteSteps() to Storage, renames the HTTP endpoint from /retry to /retrigger, and adds immediate validation that throws "Unknown job" for unregistered jobs.

Changes

Cohort / File(s) Summary
Version Updates
packages/durably/package.json, packages/durably-react/package.json
Bump package versions from 0.11.0 to 0.12.0.
Changelog / Release Notes
CHANGELOG.md
Add 0.12.0 release section documenting breaking changes (retrigger, event and HTTP renames, cleanupSteps default).
Core API & Types
src/durably.ts, src/types.ts
Rename retryretrigger; change return to new Run (and runId surface); add cleanupSteps?: boolean (default true) to createDurably options; add deleteSteps() to Storage interface; add getRunOrThrow() validation that throws "Unknown job".
Event Model
src/events.ts
Remove run:retry event and RunRetryEvent type; retrigger() now emits run:trigger for the newly created run.
React Hook / Client
src/useRunActions.ts, packages/durably-react/...
useRunActions().retrigger(runId) now returns the new run's ID (Promise<string>) instead of Promise<void>; extract executeAction() to deduplicate logic.
HTTP Server / API
src/server.ts
Rename endpoint POST /retryPOST /retrigger; response now { success: true, runId: string }.
Internal Refactors
src/...
Extract helpers (getRunOrThrow, executeAction) to deduplicate logic; minor internal adjustments around retrigger flow and cleanup scheduling.

Sequence Diagram

sequenceDiagram
    participant Client as Client
    participant Server as Server
    participant JobRegistry as JobRegistry
    participant RunFactory as RunFactory
    participant Storage as Storage

    Client->>Server: POST /retrigger { runId }
    Server->>JobRegistry: validate job for runId
    alt job not registered
        JobRegistry-->>Server: throw "Unknown job"
        Server-->>Client: Error
    else job registered
        JobRegistry-->>Server: OK
        Server->>RunFactory: create new Run from previous run
        RunFactory->>Storage: save new Run
        RunFactory->>Storage: request delete of previous run steps (cleanupSteps)
        Storage-->>RunFactory: ack
        RunFactory-->>Server: new runId
        Server-->>Client: { success: true, runId }
        Server->>Server: emit `run:trigger` for new run
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 I nudged the old retry away,
Retrigger hops in bright as day.
New run IDs shiny and neat,
Steps cleaned up — a tidy feat.
Unknown jobs we catch with care,
Fresh runs sprout everywhere!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title "chore: release v0.12.0" is vague and generic. While it technically refers to a version bump that exists in the changeset, it does not describe the meaningful content of the release (breaking API changes, renamed methods, default behavior changes). Consider using a more descriptive title that highlights the main breaking changes, such as "feat: rename retry to retrigger and auto-enable cleanupSteps" to better convey the significance of this release.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/release-v0.12.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
CHANGELOG.md (1)

21-21: Consider clarifying event replacement behavior.

The documentation states run:retry event is removed and retrigger() now emits run:trigger, but it might be worth noting explicitly that the emitted event represents the new run being triggered (since retrigger() creates a fresh run with a new ID), not a retry of the original run. This distinction helps users understand why the event model changed.

📝 Suggested clarification
-- **Remove `run:retry` event**: `retrigger()` now emits `run:trigger` instead. `RunRetryEvent` type removed (`#91`)
+- **Remove `run:retry` event**: `retrigger()` now emits `run:trigger` for the new run it creates (since it generates a fresh run ID). `RunRetryEvent` type removed (`#91`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CHANGELOG.md` at line 21, Update the CHANGELOG entry to explicitly state that
the old run:retry event was removed because retrigger() now creates a fresh run
with a new ID and emits run:trigger for that new run (not a retry of the
original); mention that RunRetryEvent type was removed and that consumers should
listen for run:trigger and use the new run ID from the emitted payload to track
the retriggered execution.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@CHANGELOG.md`:
- Line 21: Update the CHANGELOG entry to explicitly state that the old run:retry
event was removed because retrigger() now creates a fresh run with a new ID and
emits run:trigger for that new run (not a retry of the original); mention that
RunRetryEvent type was removed and that consumers should listen for run:trigger
and use the new run ID from the emitted payload to track the retriggered
execution.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 74e216f8-aec8-42b5-bc7e-3903147ea68a

📥 Commits

Reviewing files that changed from the base of the PR and between 7cb4905 and 4242b4b.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • packages/durably-react/package.json
  • packages/durably/package.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coji coji force-pushed the chore/release-v0.12.0 branch from 4242b4b to 8480222 Compare March 7, 2026 06:24
@coji coji merged commit 56943e7 into main Mar 7, 2026
4 checks passed
@coji coji deleted the chore/release-v0.12.0 branch March 7, 2026 06:26
@coderabbitai coderabbitai Bot mentioned this pull request Mar 16, 2026
2 tasks
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