Skip to content

Conversation

@QuantumExplorer
Copy link
Member

@QuantumExplorer QuantumExplorer commented Jan 22, 2026

Version 3.0 release

Summary by CodeRabbit

  • Chores
    • Released 3.0.0 as the stable final release across packages.
    • Pinned several dependencies to specific tagged releases for improved stability and reproducible builds.
  • New Features
    • Consolidated 3.0.0 configuration migration: ZMQ defaults, rsDAPI/gateway config propagation, upstreams migration, and LetsEncrypt provider adjustments.
  • Behavior
    • Wallet birth-height is now required (no longer optional); integrations may need adjustments.

✏️ Tip: You can customize this high-level summary in your review settings.

@github-actions github-actions bot added this to the v3.0.0 milestone Jan 22, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 22, 2026

📝 Walkthrough

Walkthrough

Bumps many package and workspace manifest versions to final releases, replaces several Git rev pins with tag-based dependencies, consolidates dashmate config migrations into a single 3.0.0 migration (ZMQ, rsDapi metrics/timeouts, gateway upstreams, Letsencrypt), and updates a wallet API/signature and example.

Changes

Cohort / File(s) Summary
Workspace & Root Manifests
Cargo.toml, package.json
Bump workspace/root versions from 3.0.0-rc.33.0.0.
Package Version Bumps (many packages)
packages/*/package.json — e.g. packages/dapi/package.json, packages/dapi-grpc/package.json, packages/dashmate/package.json, packages/dash-spv/package.json, packages/js-dash-sdk/package.json, packages/wallet-lib/package.json, packages/...
Update numerous package version fields (mostly 3.0.0-rc.33.0.0; js-dash-sdk6.0.0, wallet-lib10.0.0). No other metadata or behavioral changes.
Dashmate config migrations
packages/dashmate/configs/getConfigFileMigrationsFactory.js
Replace previous blocks with a centralized 3.0.0 migration: initialize/clone core.zmq, normalize zmq ports (remap 29998 → 49998/39998 for local/testnet), guard on options.platform?.dapi, ensure rsDapi.metrics and propagate waitForStResultTimeout from api to rsDapi, migrate gateway upstreams to rsDapi.maxRequests and remove legacy upstream keys, add letsencrypt providerConfig entry if missing.
Rust dependency pinning — Dashcore & related
packages/rs-dapi/Cargo.toml, packages/rs-dpp/Cargo.toml, packages/rs-platform-wallet/Cargo.toml, packages/rs-sdk-ffi/Cargo.toml
Replace git rev references with tag-based pins (e.g., tag = "v0.41.0") for dashcore, dashcore-rpc, dash-spv, key-wallet, key-wallet-manager, dash-spv-ffi, preserving features and optional flags.
Rust dependency pinning — Grovedb family
packages/rs-drive/Cargo.toml, packages/rs-platform-version/Cargo.toml
Replace multiple grovedb git rev references with unified tag = "v4.1.0" across grovedb-related dependencies.
API & Examples (rs-platform-wallet)
packages/rs-platform-wallet/src/lib.rs, packages/rs-platform-wallet/examples/basic_usage.rs
Change birth_height getter/setter signatures from Option<u32>/Option<u32>u32/u32 (removing optionality) and update example to call WalletManager::<PlatformWalletInfo>::new(network).

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

Suggested reviewers

  • shumkov
  • pauldelucia

Poem

🐇 A tag and a hop, the release bells chime,

SHAs turned to tags, neat as thyme.
Migrations tidy, ports set straight,
Wallets updated, examples state,
The warren cheers — it's release time!

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: updating versions for Dash Core and GroveDB dependencies, and releasing version 3.0 across the workspace.

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

✨ Finishing touches
  • 📝 Generate docstrings

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@packages/dashmate/configs/getConfigFileMigrationsFactory.js`:
- Around line 1292-1294: The early `return` that checks `if
(!options.platform?.dapi) { return; }` short-circuits all subsequent 3.0.0
migrations; instead, remove that global return and wrap only the DAPI-specific
migration code in a conditional (e.g., `if (options.platform?.dapi) { /*
dapi-only migrations */ }`) so gateway/drive/quorumList/core RPC and other
non‑DAPI migrations still run; update the block in the
getConfigFileMigrationsFactory migration sequence to scope the guard to DAPI
logic rather than exiting the whole function.
🧹 Nitpick comments (1)
packages/dashmate/configs/getConfigFileMigrationsFactory.js (1)

1300-1313: Default rsDapi.metrics.host when absent.

If a config already has metrics but lacks host, it stays undefined. To keep parity with earlier migrations, consider defaulting host too.

♻️ Suggested patch
             if (typeof options.platform.dapi.rsDapi.metrics.enabled === 'undefined') {
               options.platform.dapi.rsDapi.metrics.enabled = defaultMetrics.enabled;
             }

+            if (typeof options.platform.dapi.rsDapi.metrics.host === 'undefined') {
+              options.platform.dapi.rsDapi.metrics.host = defaultMetrics.host;
+            }
+
             if (typeof options.platform.dapi.rsDapi.metrics.port === 'undefined') {
               options.platform.dapi.rsDapi.metrics.port = defaultMetrics.port;
             }

Comment on lines +1292 to +1294
if (!options.platform?.dapi) {
return;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Avoid short‑circuiting non‑DAPI migrations.

If a config omits platform.dapi, the early return skips later 3.0.0 migrations (gateway/drive/quorumList/core RPC), leaving those configs stale. Consider guarding only the DAPI‑specific block while still running the rest.

🔧 Proposed fix (scope DAPI-only logic)
-            if (!options.platform?.dapi) {
-              return;
-            }
-
-            if (!options.platform.dapi.rsDapi) {
-              options.platform.dapi.rsDapi = lodash.cloneDeep(defaultConfig.get('platform.dapi.rsDapi'));
-            }
-
-            const defaultMetrics = defaultConfig.get('platform.dapi.rsDapi.metrics');
-            ...
-            if (options.platform?.dapi?.deprecated) {
-              delete options.platform.dapi.deprecated;
-            }
+            if (!options.platform) {
+              return;
+            }
+
+            if (options.platform.dapi) {
+              if (!options.platform.dapi.rsDapi) {
+                options.platform.dapi.rsDapi = lodash.cloneDeep(defaultConfig.get('platform.dapi.rsDapi'));
+              }
+
+              const defaultMetrics = defaultConfig.get('platform.dapi.rsDapi.metrics');
+              ...
+              if (options.platform.dapi.deprecated) {
+                delete options.platform.dapi.deprecated;
+              }
+            }
🤖 Prompt for AI Agents
In `@packages/dashmate/configs/getConfigFileMigrationsFactory.js` around lines
1292 - 1294, The early `return` that checks `if (!options.platform?.dapi) {
return; }` short-circuits all subsequent 3.0.0 migrations; instead, remove that
global return and wrap only the DAPI-specific migration code in a conditional
(e.g., `if (options.platform?.dapi) { /* dapi-only migrations */ }`) so
gateway/drive/quorumList/core RPC and other non‑DAPI migrations still run;
update the block in the getConfigFileMigrationsFactory migration sequence to
scope the guard to DAPI logic rather than exiting the whole function.

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.

2 participants