Skip to content

Dependency cleanup for 3.11 - #9122

Merged
sfmskywalker merged 2 commits into
mainfrom
cursor/dependency-cleanup-3-11-e80b
Oct 29, 2026
Merged

sfmskywalker merged 2 commits into
mainfrom
cursor/dependency-cleanup-3-11-e80b

Conversation

@sfmskywalker

@sfmskywalker sfmskywalker commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Purpose

Dependency bumps and cleanup for the 3.11 milestone.

Scope

  • Dependency / build update

Description

Problem

A 3.11 cleanup batch for lockfiles, unused root NuGet pins, an unused remotion source tree, and release-branch scanning.

Solution

  • core/.../Elsa.Expressions.JavaScript.Libraries/ClientLib: fast-uri now resolves to 3.1.9. Webpack rebuild left dist/lodash.js, dist/lodashFp.js, and dist/moment.js byte-identical.
  • studio/src/wrappers: the installed nx is 23.3.0, which pins undici 7.29.0 exactly, so a lerna/nx bump is not enough. npm overrides set nx.undici to ^7.30.1 and @storybook/addon-actions.uuid to ^11.1.1. vite build for @elsa-workflows/elsa-studio-wasm-react succeeded.
  • Reviewed Studio ClientLib lockfiles (designer, dom-interop, bpmn-shared): dev-tree resolutions now include vite >= 8.3.3, @vitest/mocker >= 4.1.12, undici >= 8.12.2, source-map-js >= 1.2.2, serialize-javascript >= 7.1.3, and fast-uri >= 3.1.9. Designer and BPMN shared ClientLib package.json files bump vitest from 4.1.11 to 4.1.12 so @vitest/mocker can match. Runtime dependency versions are unchanged. bpmn-js and bpmn-x6 locks do not contain those packages. scripts/integration-program/build_studio_clientlibs.sh still copies these reviewed locks into gitignored ClientLib/package-lock.json paths; the consolidated ClientLib build passed (designer tests, generated BPMN types, all 10 required assets).
  • Item 4: option (b). The reviewed locks keep non-standard names in one directory and are copied at build time. Renaming them to package-lock.json would either collide five files in that folder or move them next to each ClientLib (updating .gitignore, build_studio_clientlibs.sh, two workflows, and the DesignerHover README). The osv-scanner job lists those files with --lockfile=package-lock.json:....
  • Deleted design/video/elsa-readme-video only. design/video/exports is unchanged. The integration-program inventory snapshot still records the old path as historical evidence and was not rewritten.
  • Added .github/workflows/osv-scanner.yml: runs osv-scanner on pushes to release/* and on workflow_dispatch. It recursively scans lockfiles and explicitly includes the studio-clientlib lockfiles. The job is report-only (fail-on-vuln: false). The action is pinned by SHA. Directory.Packages.props coverage is out of scope.
  • Root Directory.Packages.props: AutoMapper, MailKit, and NuGet.Protocol had no root-graph PackageReference. Elsa.Email and Elsa.DropIns resolve through extensions/src/Directory.Packages.props. Removed the unused root pins. dotnet restore Elsa.Core.slnf and Elsa.Extensions.slnf succeeded; extensions still resolve MailKit 4.16.0 and NuGet.Protocol 7.0.3.

Verification

  1. JavaScript ClientLib: npm update fast-uri then npm run build; dist SHA-256 unchanged.
  2. Wrappers: npm ci --ignore-scripts (local wasm tarball substitution only for install), then npm run build --workspace=@elsa-workflows/elsa-studio-wasm-react.
  3. scripts/integration-program/build_studio_clientlibs.sh . — Studio ClientLib proof passed.
  4. dotnet restore Elsa.Core.slnf and dotnet restore Elsa.Extensions.slnf after removing the unused root pins.

Expected outcome: lockfile and pin cleanup only; no runtime package version changes in the Studio ClientLibs; wrappers and ClientLib builds still succeed.

Open in Web Open in Cursor 

Summary by CodeRabbit

  • Security
    • Added automated vulnerability scans for release branches, with manual runs also available.
  • Maintenance
    • Updated Studio testing and build-tool packages and refreshed related lockfiles.
    • Removed the standalone promotional video project, including its documentation and configuration.
    • Adjusted package overrides for selected dependencies.

Refresh npm lockfiles and Studio ClientLib reviewed locks, add an
osv-scanner workflow for release branches, remove unused root NuGet
pins, and drop the unused remotion source directory.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
@cursor

cursor Bot commented Oct 29, 2026

Copy link
Copy Markdown

@elsa-workflows-bot review

@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 322a914e-d5b9-4d4a-97ca-d49168ee82f8
Commits

Reviewing files that changed from the base of the PR and between 0052479 and b7c6266.

Files selected for processing: 1
  • .github/workflows/osv-scanner.yml

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

Walkthrough

This pull request adds an OSV-Scanner workflow for release branch pushes and manual runs, updates Studio ClientLib dependencies and lockfiles, removes three central NuGet version pins, and deletes the Elsa README Remotion video project.

Changes: OSV-Scanner workflow

Layer / File(s) Summary
Configure OSV-Scanner workflow
.github/workflows/osv-scanner.yml
Adds release-branch push and manual triggers. Calls a pinned OSV-Scanner reusable workflow with recursive scanning, specified ClientLib lockfiles, and vulnerability failures disabled.

Dependency updates

Layer / File(s) Summary
Update dependency declarations
Directory.Packages.props, studio/src/modules/Elsa.Studio.Bpmn/ClientLib/package.json, studio/src/modules/Elsa.Studio.Workflows.Designer/ClientLib/package.json, studio/src/wrappers/package.json
Removes the AutoMapper, MailKit, and NuGet.Protocol version pins. Updates Vitest declarations and adds undici and uuid overrides.
Refresh ClientLib lockfiles
scripts/integration-program/consolidated-build/studio-clientlib-lockfiles/*
Updates Vitest and related packages in the BPMN lockfile, refreshes Vitest, Vite, Rolldown, and other packages in the designer lockfile, and updates fast-uri in the DOM interop lockfile.

Elsa README video project removal

Layer / File(s) Summary
Remove video project and assets
design/video/elsa-readme-video/*, design/video/elsa-readme-video/src/*
Deletes the Remotion composition and entry point, project configuration, package manifest, TypeScript configuration, ignore rules, and README.

Priority: Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Possibly related issues

  • elsa-workflows/elsa-core#8636 — The PR updates ClientLib lockfiles and central package declarations, which overlap with dependency inputs covered by the issue. It does not change Dependabot configuration or establish discovery coverage.
  • elsa-workflows/elsa-core#8216 — The PR contains coordinated dependency changes, which overlap with the issue’s dependency-update scope.

Suggested labels: devops, .NET

Suggested reviewers: elsa-workflows-review-bot

Merge Risk: Minimal · up to b7c62

No actionable merge risk is established by the reviewed changes.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title is concise and accurately summarizes the pull request's primary dependency cleanup and maintenance work for the 3.11 milestone.
Description check Passed The description includes the purpose, dependency/build scope, problem, solution, verification steps, and expected outcome. It is detailed and consistent with the stated objectives. The template checkl…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description includes the purpose, dependency/build scope, problem, solution, verification steps, and expected outcome. It is detailed and consistent with the stated objectives. The template checklist and non-applicable screenshots section are omitted, but these are non-critical omissions.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@elsa-3-lead elsa-3-lead Bot added area:repo Quality loop area: repo dependencies Pull requests that update a dependency file elsa 3 This issue is specific to Elsa 3 maintenance This issue is about maintenance of the code base and related aspects prio medium labels Oct 29, 2026
@cursor

cursor Bot commented Oct 29, 2026

Copy link
Copy Markdown

@greptileai

@elsa-3-lead elsa-3-lead Bot added this to the 3.11 milestone Oct 29, 2026
@greptile-apps

greptile-apps Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] No blocking issues were identified; the changes are suitable to merge based on the available evidence. Builds and tests were not rerun.

Summary

Refreshes selected development dependencies, removes unused root NuGet pins and the unused video source project, and adds release-branch dependency scanning.

  • Release branches scan dependency lockfiles and report findings.
  • Studio ClientLib builds use refreshed development and test packages.
  • The wrappers workspace pins updated versions of two nested packages.
  • The JavaScript expression library locks fast-uri at version 3.1.9.
  • The root package list drops three unused NuGet version pins.
  • The standalone Remotion project for the README video is removed.

Reviews (2) · Last reviewed commit: "chore: make the release-branch osv-scann..." · Reviewed by Greptile

@elsa-workflows-review-bot elsa-workflows-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Elsa 3 Code Review: REQUEST_CHANGES + HIGH @ 0052479

Code Review, Round 1/6

The dependency bumps and housekeeping are clean. One thing in the new scan workflow needs a change before this lands, plus a small comment fix.

Blocking

1. The new scan check would be red on release branches from its first run, independent of the PR (.github/workflows/osv-scanner.yml:6-13, :21-31)

I ran osv-scanner 2.7.0 (the version this pin resolves to) locally on a clean export of this head with exactly these scan-args. It exits 1: the recursive pass picks up four reference packages.lock.json files under scripts/integration-program/secrets-sqlserver-bridge/ and scripts/integration-program/secrets-sqlserver-upgrade/, which pin old versions on purpose. The reusable workflow defaults fail-on-vuln to true, so:

  • every PR into release/* would carry a failing osv-scan check that has nothing to do with that PR, which stalls release picks that are otherwise green;
  • every push to release/* would put a failing run on the branch head;
  • on a fork PR into release/* the SARIF upload step also fails, because the token is read-only there.

Please make the run report-only, for example by passing fail-on-vuln: false in with: (the SARIF upload and artifact still happen). Also consider dropping the pull_request trigger so it runs on push to release/* plus workflow_dispatch, which matches the PR description. If a hard gate is wanted later, exclude the reference fixtures first, for example with an osv-scanner.toml next to them.

2. Header comment overstates NuGet coverage (.github/workflows/osv-scanner.yml:1)

The comment says the workflow scans Directory.Packages.props. In the same local run, every Directory.Packages.props in the repo (root, apps/, extensions/src, extensions/test, extensions/samples, studio/src, studio/test, studio/samples, studio/react/dotnet, templates/) reports found 0 packages. Core uses versionless PackageReference items, so the central pins are not read at all. Only packages.lock.json files and csproj files with explicit versions contribute. Please reword the comment so it doesn't promise coverage it doesn't give. Adding real coverage for the central pins can be a follow-up.

Non-blocking

  • osv-scanner.yml:15-18 repeats the job-level permissions at workflow level. The job block alone is enough; the top level could be permissions: {}. Optional.

Verified

  • Lockfiles, resolved trees. I diffed packages in each changed lockfile against 617a31d5. Every changed entry is dev, and no runtime entry was added, removed or re-versioned:
    • designer: vitest 4.1.11 to 4.1.12 and its family, vite 8.3.1 to 8.3.5, rolldown 1.2.11 to 1.2.15, postcss, nanoid, chai, tinyrainbow, undici 8.12.3, source-map-js 1.2.2, serialize-javascript 7.1.4, fast-uri 3.1.9. The @types/react*/csstype entries move from devOptional to dev, which is the same install set.
    • bpmn-shared: the vitest family and @types/estree.
    • dom-interop and the JS Libraries ClientLib: fast-uri only.
    • bpmn-js and bpmn-x6: unchanged.
  • Lock roots. The root packages[""] of all five reviewed Studio lockfiles matches the matching package.json, including the vitest 4.1.12 bumps in the Bpmn and Designer ClientLibs, so npm ci in build_studio_clientlibs.sh stays consistent.
  • JS Libraries dist. npm ci && npm run build in Elsa.Expressions.JavaScript.Libraries/ClientLib reproduces dist/lodash.js, dist/lodashFp.js and dist/moment.js byte for byte. fast-uri is only reached through schema-utils > ajv. No committed bundle changed in the PR, and the Studio browser assets are untracked build outputs.
  • Wrapper overrides. The nested override syntax is scoped correctly. The lock has exactly one top-level undici (7.30.1, used only by nx 23.3.0). The nested copies under node-gyp (8.x) and pacote/node-gyp (6.x) are untouched. The workspace's own uuid 14.0.3 is unaffected. In a scratch install with the same overrides, nx 23.3.0 runs, and @storybook/addon-actions 8.6.18 only calls v4 from uuid (import { v4 } / uuid.v4 in its dist), which uuid 11.1.1 exports under both CJS and ESM.
  • Workflow pin. b1d267aea5211fa648d9d442fa64b90dbdcbdd36 is the commit behind the annotated tag v2.7.0. The reusable workflow pins all of its own actions by SHA. There is no pull_request_target, no secrets: and no inherit, and checkout uses persist-credentials: false. The five --lockfile=package-lock.json:... arguments parse and each file is scanned (33 to 316 packages).
  • Deleted directory. Nothing in the README, docs, workflows, csproj or scripts refers to design/video/elsa-readme-video. The only hits are in docs/integration-program/inventory/inventory.json, a dated snapshot pinned to an older commit, which is fine to leave. design/video/exports/ stays.
  • Removed central pins. rg over every csproj, props and targets file shows that only extensions/src/email/Elsa.Email (MailKit) and extensions/src/dropins/Elsa.DropIns (NuGet.Protocol) reference these packages, and nothing references AutoMapper. Both projects sit under extensions/src/Directory.Packages.props, which is their nearest central file and does not import the root one. dotnet restore of Elsa.Core.slnf and Elsa.Extensions.slnf succeeds, project.assets.json resolves MailKit 4.16.0 and NuGet.Protocol 7.0.3, and both projects build with 0 errors. The consolidated source-integration.patch carries its own pins for a different layout, so it doesn't depend on the root lines.

Bot reviews

  • CodeRabbit and Greptile left no inline threads on this head. Greptile's summary reports no blocking issue, and it notes that no scan was run. The local run above is what surfaces item 1.
  • CodeRabbit's note that centrally pinned NuGet versions aren't covered matches item 2. Its suggestion to split the PR is non-blocking: each part is small and independently verified above.

— Code Review (Elsa 3), via Elsa Review

Keep the scan on push to release/* and workflow_dispatch, do not fail
the job on findings, and describe only the lockfiles that are scanned.

Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
Comment thread .github/workflows/osv-scanner.yml Resolved
Comment thread .github/workflows/osv-scanner.yml Resolved
Comment thread .github/workflows/osv-scanner.yml Resolved
Comment thread .github/workflows/osv-scanner.yml Resolved
@cursor

cursor Bot commented Oct 29, 2026

Copy link
Copy Markdown

@greptileai

@cursor

cursor Bot commented Oct 29, 2026

Copy link
Copy Markdown

@elsa-workflows-bot review

@elsa-workflows-review-bot elsa-workflows-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Elsa 3 Code Review: APPROVE + HIGH @ b7c6266

Code Review, Round 2/6

Both Round 1 items are resolved. The delta since 00524792 is one commit (b7c6266d) touching only .github/workflows/osv-scanner.yml (+6/-10). Nothing else changed.

Round 1 items

  1. Report-only run, fixed (osv-scanner.yml:7-11, :19). The pull_request trigger is gone, so the workflow runs on push to release/* and workflow_dispatch, and the job passes fail-on-vuln: false. I re-ran osv-scanner 2.7.0 locally on a clean export of this head with the same scan-args. The scan still exits 1 and writes a non-empty results.json, so the reusable workflow's "Check that the scan completed" step passes. I then ran osv-reporter from the pinned ghcr.io/google/osv-scanner-action:v2.7.0 image on that file with the exact arguments the reusable workflow builds. With --fail-on-vuln=false it exits 0 and writes the SARIF, and with true it exits 1. The job now reports without going red.
  2. Header comment, fixed (osv-scanner.yml:1-4). It no longer claims Directory.Packages.props coverage.

Permissions

The workflow level is now permissions: {}. The calling job (:28-31) keeps the same three grants as in Round 1 (actions and contents read, plus code-scanning write). That is exactly what the reusable workflow's osv-scan job requests, and the job-level grant is what the called workflow receives. So the checkout, artifact upload and SARIF upload to code scanning keep the access they need, and nothing else in the workflow gets a token.

Non-blocking

  • osv-scanner.yml:1 now says "npm lockfiles". The recursive pass also reads NuGet packages.lock.json files and csproj files with explicit versions; in fact, all current findings come from four NuGet lockfiles under scripts/integration-program/secrets-sqlserver-*. "lockfiles" alone would be more accurate. Wording only, no change needed for this PR.

Unchanged from Round 1

The dependency side is identical to 00524792: no lockfile, package.json, props or deleted-path file changed in the delta. The Round 1 checks still hold: dev-only lockfile changes with no runtime tree change, a byte-identical JS Libraries dist/, correctly scoped overrides (nx 23.3.0 with undici 7.30.1, addon-actions with uuid 11.1.1 using only v4), no remaining references to the deleted directory, and core plus extensions restoring and building without the three root pins.

Bot reviews

The four inline notes on osv-scanner.yml (lines 4, 11, 13 and 19) each describe a change that is in this head; they are answered and resolved. CodeRabbit's incremental pass over 00524792..b7c6266d produced no actionable comments, and Greptile's summary for this head reports no blocking issue.

CI

Every check on b7c6266d61e06b49acf5b0e4b55e2d21d4b6f530 is complete and green, including prove. run-affected-tests is skipped by design.

— Code Review (Elsa 3), via Elsa Review

@sfmskywalker
sfmskywalker merged commit 8ed4abd into main Oct 29, 2026
24 checks passed
@sfmskywalker
sfmskywalker deleted the cursor/dependency-cleanup-3-11-e80b branch October 29, 2026 15:00
@elsa-workflows-review-bot elsa-workflows-review-bot Bot mentioned this pull request Oct 29, 2026
7 of 12 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:repo Quality loop area: repo dependencies Pull requests that update a dependency file elsa 3 This issue is specific to Elsa 3 maintenance This issue is about maintenance of the code base and related aspects prio medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants