Skip to content

chore: upgrade to Evo SDK 4.0.0-rc.2 across tutorials and example apps#96

Merged
thephez merged 12 commits into
mainfrom
chore/v4.0-rc
Jun 17, 2026
Merged

chore: upgrade to Evo SDK 4.0.0-rc.2 across tutorials and example apps#96
thephez merged 12 commits into
mainfrom
chore/v4.0-rc

Conversation

@thephez

@thephez thephez commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Moves the tutorials and all example apps onto @dashevo/evo-sdk 4.0.0-rc.2, pins the Node toolchain repo-wide so local and CI builds match, and hardens the example-app e2e suites that the upgrade shook loose.

SDK bump → 4.0.0-rc.2

  • Root tutorials: package.json / package-lock.json.
  • Example apps (dashmint-lab, dashproof-lab, dashnote, dashnote-starter): each pinned in its own package.json / lockfile.
  • Zero-build companion pages (dashmint-lite.html, dashproof-lite.html, dashnote-lite.html): esm.sh imports aligned to the same version as their React app.
  • Lockfile transitives refreshed across the example apps.

Node toolchain pinning

  • New repo-root .nvmrc pinning Node to 22.22.
  • engines.node range (>=22.22.0 <22.23.0) added to the root and every example-app package.json.
  • All CI workflows now read node-version-file: .nvmrc instead of a hardcoded version, and log node/npm versions for diagnostics.

Test hardening

  • dashmint-lab — the e2e auth flow selects a purchasable listing by its "Buy" button instead of owner-chip string matching, which broke once the test identity had a DPNS name.
  • dashnote — the Playwright suite is resilient to lingering sonner toasts intercepting navigation, to the create→"Save" button transition lagging behind testnet eventual consistency, and is no longer coupled to a specific fixture title in the delete-flow test.

Other

  • identity-withdraw-credits.mjs: raise the withdrawal amount to the protocol minimum (1,000,000 credits).

Summary by CodeRabbit

  • New Features
    • Updated Evo SDK to 4.0.0-rc.2 across the example apps and browser demos.
  • Bug Fixes
    • Adjusted the example identity withdrawal credits amount to better match the intended test scenario.
  • Tests
    • Improved end-to-end test stability by refining UI timing/waits and strengthening dialog/button handling.
  • Chores
    • Standardized CI/tutorial Node setup to use .nvmrc, and added/updated Node version engine constraints to match.

thephez and others added 7 commits June 16, 2026 16:46
Raise the credit withdrawal amount to 1000000 to meet the protocol minimum.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Align the dashmint-lite.html esm.sh import with the React app's pinned version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…uth flow

Owner-chip string matching broke when the test identity has a DPNS name (the chip shows "@username" instead of the truncated identity id). Detect a buyable listing via its "Buy" button instead, and accept the disabled "Insufficient credits" state as a valid mounted-modal outcome.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Align the dashproof-lite.html esm.sh import with the React app's pinned version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Align the dashnote-lite.html esm.sh import with the React app's pinned version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, and fixture coupling

- returnToList best-effort waits for sonner toasts to clear before clicking "Back to notes", since a lingering success toast overlays the header and intercepts the click.
- waitForSaveComplete matches both "Save" and "Create note", because the button only flips to "Save" once the post-create reload re-selects the note by id, which can lag behind testnet eventual consistency.
- deleteNoteByTitle waits for the confirmation dialog to close after confirming the delete.
- The mobile delete-flow test opens whichever note is listed first, scoped to a note-row container so it can't latch onto the sidebar hamburger, instead of coupling to a specific fixture title.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

@dashevo/evo-sdk is bumped from 4.0.0-rc.1 to 4.0.0-rc.2 across all package.json files and CDN HTML imports with engines constraints pinning Node.js to 22.22. Node.js version setup is migrated from hardcoded values to reading from .nvmrc across all CI workflows. The identity tutorial withdrawal amount is raised from 190000n to 1000000n. E2E tests in dashmint-lab and dashnote are updated to use more resilient UI selectors and add explicit waits for toasts, save-state label variants, and deletion dialog dismissal.

Changes

Node.js Version Pinning and SDK Upgrade

Layer / File(s) Summary
Node.js version pinning and workflow configuration
.nvmrc, .github/workflows/dashnote-e2e.yml, .github/workflows/dependency-update.yml, .github/workflows/deploy-example-apps.yml, .github/workflows/test-tutorials.yml
.nvmrc pinned to Node.js 22.22; all CI workflows updated to read Node version from .nvmrc instead of hardcoded values, with explicit version output steps added.
SDK version bump and engines constraints in packages
package.json, example-apps/dashmint-lab/package.json, example-apps/dashnote-starter/package.json, example-apps/dashnote/package.json, example-apps/dashproof-lab/package.json
@dashevo/evo-sdk bumped from 4.0.0-rc.1 to 4.0.0-rc.2 in all packages; engines.node constraint added to each specifying >=22.22.0 <22.23.0.
SDK version bump in CDN HTML imports
example-apps/dashmint-lab/public/dashmint-lite.html, example-apps/dashnote/public/dashnote-lite.html, example-apps/dashproof-lab/public/dashproof-lite.html
Evo SDK CDN imports updated to 4.0.0-rc.2 from earlier development versions.

Tutorial and E2E Test Updates

Layer / File(s) Summary
Identity tutorial withdrawal amount increase
1-Identities-and-Names/identity-withdraw-credits.mjs
The amount constant is raised from 190000n to 1000000n.
E2E test stability improvements
example-apps/dashmint-lab/test/e2e/auth.spec.ts, example-apps/dashnote/test/e2e/fixtures.ts, example-apps/dashnote/test/e2e/notes.spec.ts
Dashmint-lab listing selection picks by visible Buy button instead of identity-id prefix; modal assertion accepts "Insufficient credits". Dashnote fixtures add toast-clearing before navigation, accept both Save/Create-note labels, and wait for delete-confirmation dismissal. Mobile delete test opens first available note and scopes click to avoid hamburger overlap.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • dashpay/platform-tutorials#81: Introduces the Dashnote Playwright E2E scaffolding and helpers (returnToList, waitForSaveComplete, deleteNoteByTitle) that are directly stabilized in this PR.
  • dashpay/platform-tutorials#82: Adds the DeleteNoteModal confirmation UX in Dashnote, directly tied to the deleteNoteByTitle dialog-hidden wait improvements here.
  • dashpay/platform-tutorials#95: Overlaps on repo-wide @dashevo/evo-sdk upgrade and CI workflow Node.js runtime configuration changes in .github/workflows/deploy-example-apps.yml.

Poem

🐇 Hop, hop, hooray for rc.2!
The credits now flow with a million or two,
No more flaky toasts blocking the way,
Buy buttons and dialogs work come what may.
A cleaner test suite, a shinier dep —
This bunny approves every confident step! 🌟

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The PR title clearly summarizes the main objective: upgrading Evo SDK to version 4.0.0-rc.2 across tutorials and example apps, which is reflected in the file changes.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/v4.0-rc

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.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🧹 Nitpick comments (1)
example-apps/dashmint-lab/public/dashmint-lite.html (1)

134-139: ⚡ Quick win

Update the workaround note and re-verify the protocol override for rc.2.

The comment still says the override is for “evo-sdk dev.6”, but the import on Line 122 is now 4.0.0-rc.2. Please update the note to match reality and verify whether forcing { version: 11 } is still required.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@example-apps/dashmint-lab/public/dashmint-lite.html` around lines 134 - 139,
The workaround comment in the connectSdk function references evo-sdk dev.6, but
the actual SDK import on line 122 shows version 4.0.0-rc.2. Update the comment
to accurately reflect the current SDK version, and then verify whether the
protocol version override (the { version: 11 } parameter in the
EvoSDK.testnetTrusted call) is still necessary for this newer SDK release. If
the override is no longer required, remove it along with the associated
workaround comment; if it is still needed, update the comment to explain why it
remains necessary for rc.2.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@example-apps/dashnote/test/e2e/notes.spec.ts`:
- Around line 231-240: The test currently hard-fails with a timeout when no
notes exist for the current identity instead of skipping cleanly. Before
attempting to select the first note row using the locator pattern
`[data-testid^="note-row-foreground-"]`, add a check to count the number of note
rows available. If zero note rows are present, call the test skip function
(typically `test.skip()` or `this.skip()` depending on your test framework) to
skip the test deterministically rather than waiting for the timeout to occur.

---

Nitpick comments:
In `@example-apps/dashmint-lab/public/dashmint-lite.html`:
- Around line 134-139: The workaround comment in the connectSdk function
references evo-sdk dev.6, but the actual SDK import on line 122 shows version
4.0.0-rc.2. Update the comment to accurately reflect the current SDK version,
and then verify whether the protocol version override (the { version: 11 }
parameter in the EvoSDK.testnetTrusted call) is still necessary for this newer
SDK release. If the override is no longer required, remove it along with the
associated workaround comment; if it is still needed, update the comment to
explain why it remains necessary for rc.2.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b82f5bfe-d186-4c3d-908d-c38a2edad67e

📥 Commits

Reviewing files that changed from the base of the PR and between d255c85 and 5541a1c.

⛔ Files ignored due to path filters (5)
  • example-apps/dashmint-lab/package-lock.json is excluded by !**/package-lock.json
  • example-apps/dashnote-starter/package-lock.json is excluded by !**/package-lock.json
  • example-apps/dashnote/package-lock.json is excluded by !**/package-lock.json
  • example-apps/dashproof-lab/package-lock.json is excluded by !**/package-lock.json
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (12)
  • 1-Identities-and-Names/identity-withdraw-credits.mjs
  • example-apps/dashmint-lab/package.json
  • example-apps/dashmint-lab/public/dashmint-lite.html
  • example-apps/dashmint-lab/test/e2e/auth.spec.ts
  • example-apps/dashnote-starter/package.json
  • example-apps/dashnote/package.json
  • example-apps/dashnote/public/dashnote-lite.html
  • example-apps/dashnote/test/e2e/fixtures.ts
  • example-apps/dashnote/test/e2e/notes.spec.ts
  • example-apps/dashproof-lab/package.json
  • example-apps/dashproof-lab/public/dashproof-lite.html
  • package.json

Comment thread example-apps/dashnote/test/e2e/notes.spec.ts
thephez and others added 5 commits June 16, 2026 17:06
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a repo-root .nvmrc and an engines.node range (>=22.22.0 <22.23.0) to the root and every example-app package.json, then point all CI workflows at node-version-file: .nvmrc instead of a hardcoded version so local and CI toolchains stay in lockstep. Each workflow also logs node/npm versions for diagnostics.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Point the remaining workflows at node-version-file: .nvmrc instead of a hardcoded version so all CI runs on the repo-pinned Node, and log node/npm versions for diagnostics.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@thephez thephez merged commit 0461c70 into main Jun 17, 2026
5 checks passed
@thephez thephez deleted the chore/v4.0-rc branch June 17, 2026 14:14
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