v0.9-dev to master#407
Conversation
WalkthroughThis update introduces new font asset documentation and license files for multiple Noto Sans font families, restructures and expands Changes
Sequence Diagram(s)sequenceDiagram
participant Developer
participant CI
participant Cargo
participant GitHub
participant Docs
Developer->>Cargo: Update dependencies, edition, and config
Developer->>Docs: Add CLAUDE.md and font READMEs/licenses
Developer->>GitHub: Push changes
GitHub->>CI: Trigger Clippy and Release workflows
CI->>Cargo: Run linter, build, and tests
CI->>GitHub: Report status
Possibly related PRs
Suggested reviewers
Poem
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 6
♻️ Duplicate comments (2)
assets/Fonts/Noto_Sans_Thai/README.txt (1)
75-78: Same stale Edge “testdrive” link as other READMEsReplication of the obsolete Edge TestDrive URL here too. Recommend validating and updating across all font READMEs to avoid a proliferation of broken links.
assets/Fonts/Noto_Sans_Arabic/README.txt (1)
75-78: Obsolete URL carried overThe Edge TestDrive demo link appears to be discontinued. Please update or drop the reference to avoid 404s.
🧹 Nitpick comments (20)
.cargo/config.toml (1)
4-8: Minor duplication ‑ candidate for workspace-widebuild.rustflagsThe two x86_64 target stanzas are identical. If no per-target divergence is expected, you can de-duplicate by:
[build] rustflags = ["-C", "target-cpu=x86-64", "-C", "target-feature=-crt-static"]and remove the repeated blocks (or keep only the musl-specific one).
assets/Fonts/Noto_Sans_TC/README.txt (1)
62-71: Consider adding a direct link to the OFL fileThe README tells users to read
OFL.txtbut doesn’t hyperlink it.
A tiny quality-of-life tweak:-Please read the full license text (OFL.txt) to understand ... +Please read the full license text ([OFL.txt](OFL.txt)) to understand ...assets/Fonts/Noto_Sans_SC/README.txt (1)
9-16: Path references are misleading relative to repo layoutThe font file paths (
Noto_Sans_SC/...) are correct upstream but will be wrong for anyone navigating inside this repo (assets/Fonts/Noto_Sans_SC/...).
Consider prefixing them withassets/Fonts/or./so the README works when browsed from GitHub.- Noto_Sans_SC/NotoSansSC-VariableFont_wght.ttf + assets/Fonts/Noto_Sans_SC/NotoSansSC-VariableFont_wght.ttfassets/Fonts/Noto_Sans_Hebrew/OFL.txt (1)
1-10: CR-LF line endings – please normaliseThis file is committed with Windows line endings (
\r\n).
For consistency across platforms and to avoid noisy diffs later, re-encode to LF only.# one-liner dos2unix assets/Fonts/Noto_Sans_Hebrew/OFL.txtassets/Fonts/Noto_Sans/OFL.txt (1)
1-10: Same CR-LF issue as other OFL filesNormalise line endings to LF to match repo style.
(See earlier comment on Hebrew license.)assets/Fonts/Noto_Sans_JP/README.txt (1)
9-16: Update path prefixes for in-repo browsingAs with the SC README, prepend the repository sub-directory so links are clickable in GitHub UI.
- Noto_Sans_JP/NotoSansJP-VariableFont_wght.ttf + assets/Fonts/Noto_Sans_JP/NotoSansJP-VariableFont_wght.ttfassets/Fonts/Noto_Sans_KR/README.txt (1)
1-72: Minor duplication concernEach font directory ships its own README+OFL copy. Consider centralising the identical OFL text and linking from READMEs to reduce repo bloat (~600 KB per duplicate). Not blocking.
assets/Fonts/Noto_Sans_Hebrew/README.txt (1)
75-78: Verify external links; Edge “testdrive” likely deadThe
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fontsURL has been offline for a while and now redirects nowhere.
Dead links quickly date documentation—consider pruning it or replacing with an updated Microsoft Edge resource.assets/Fonts/Noto_Sans/README.txt (2)
110-115: Outdated Edge variable-font demo URLThe Microsoft Edge TestDrive link is no longer maintained. Re-check all external references to keep documentation fresh.
14-52: Consider de-duplicating exhaustive static-font listingsListing every static style inflates the README to >130 lines and is duplicated across multiple script-specific READMEs.
A single shared table or a link to Google Fonts (which enumerates the same files) would keep docs leaner and easier to maintain.assets/Fonts/Noto_Sans_TC/OFL.txt (1)
1-6: Use LF line endings for license textThe presence of carriage-return characters (
\r, visible in diff) suggests CRLF endings.
Mixed line endings can cause noisy diffs and tooling friction in Unix environments. Convert this file (and other OFL.txt copies) to LF for consistency..env.example (1)
1-1: Consider splitting the giganticMAINNET_dapi_addressesvalue across lines.The single-line list is 1 000+ characters long, painful to diff and invites merge conflicts.
A\-escaped continuation or a separate.env.mainnetfile would be far easier to maintain..gitignore (2)
5-9:.snapis very generic.If the intention is to ignore Snapcraft build artefacts, consider
*.snap*or a comment; otherwise you may hide unrelated binary blobs that happen to share the extension.
28-31: Duplicate.DS_Storepatterns.Lines 28 and 30 ignore the same file; keep only one to reduce noise.
.github/workflows/release.yml (1)
45-47: Cross-compiling Windows binaries on Linux is fine, but the runner label “Windows” is misleading.Consider renaming
nametolinux-windows-crossto avoid conflating host and target..github/workflows/clippy.yml (1)
41-52: Protoc install logic duplicates release workflow – consider composite action.Single source of truth reduces drift (version bumps, checksum verification, etc.).
Cargo.toml (2)
21-28: Still using RC crates – plan a follow-up to shed them
dash-sdkis a git rev,bincode = "=2.0.0-rc.3", andserde_yaml = 0.9.34-deprecated.
The first two are unavoidable today, but the deprecatedserde_yamlvariant can disappear once theDashPlatformProtocolschema PR is merged upstream. Consider tracking this in an issue so we do not forget to remove the “+deprecated” suffix.
74-76: Lint suppression fights the new Clippy CI policyCI treats warnings as errors, but we globally
allowtheuninlined_format_argslint.
If this lint is actually noisy in generated code (e.g. fromtracing!macros), prefer a narrow#[allow(...)]at call-sites instead of a blanket crate-wide exemption.CLAUDE.md (2)
71-76: Document the actual ZMQ port mappingThe bullet mentions “different ports per network” but doesn’t list them.
New contributors will inevitably grep the code; consider adding a small table (Mainnet = 28332, Testnet = 28332, etc.) here for quick reference.
97-99: Call out the missing automated tests more explicitlyThe doc states “No dedicated test suite currently – integration testing via manual workflows”.
Given the rising surface area (SDK, encryption, DB), please open a tracking ticket to introduce at least smoke tests so the new Clippy workflow isn’t our only safety net.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (273)
Cargo.lockis excluded by!**/*.lockassets/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/NotoSans-VariableFont.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-Italic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/NotoSansArabic-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/NotoSansDevanagari-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/NotoSansHebrew-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/NotoSansJP-VariableFont_wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_JP/static/NotoSansJP-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/NotoSansKR-VariableFont_wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_KR/static/NotoSansKR-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/NotoSansKhmer-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/NotoSansSC-VariableFont_wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_SC/static/NotoSansSC-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/NotoSansTC-VariableFont_wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_TC/static/NotoSansTC-Thin.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/NotoSansThai-VariableFont_wdth,wght.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Black.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Bold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-ExtraBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-ExtraLight.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Light.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Medium.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Regular.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-SemiBold.ttfis excluded by!**/*.ttfassets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Thin.ttfis excluded by!**/*.ttf
📒 Files selected for processing (27)
.cargo/config.toml(1 hunks).env.example(1 hunks).github/workflows/clippy.yml(1 hunks).github/workflows/release.yml(3 hunks).gitignore(2 hunks)CLAUDE.md(1 hunks)Cargo.toml(1 hunks)assets/Fonts/Noto_Sans/OFL.txt(1 hunks)assets/Fonts/Noto_Sans/README.txt(1 hunks)assets/Fonts/Noto_Sans_Arabic/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_Arabic/README.txt(1 hunks)assets/Fonts/Noto_Sans_Devanagari/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_Devanagari/README.txt(1 hunks)assets/Fonts/Noto_Sans_Hebrew/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_Hebrew/README.txt(1 hunks)assets/Fonts/Noto_Sans_JP/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_JP/README.txt(1 hunks)assets/Fonts/Noto_Sans_KR/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_KR/README.txt(1 hunks)assets/Fonts/Noto_Sans_Khmer/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_Khmer/README.txt(1 hunks)assets/Fonts/Noto_Sans_SC/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_SC/README.txt(1 hunks)assets/Fonts/Noto_Sans_TC/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_TC/README.txt(1 hunks)assets/Fonts/Noto_Sans_Thai/OFL.txt(1 hunks)assets/Fonts/Noto_Sans_Thai/README.txt(1 hunks)
🧰 Additional context used
🧠 Learnings (6)
.gitignore (2)
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to src/backend_task/**/*.rs : Create new backend tasks in the 'src/backend_task/' directory
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to src/database/**/*.rs : Update the database schema in the 'src/database/' directory when making schema changes
.env.example (4)
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to dash_core_configs/** : Store mainnet and testnet configurations in the 'dash_core_configs/' directory
Learnt from: lklimek
PR: dashpay/dash-evo-tool#264
File: src/database/wallet.rs:469-493
Timestamp: 2025-05-12T08:38:06.423Z
Learning: For devnets, `require_network` in the Dash SDK accepts testnet addresses for legacy compatibility. However, it may still be necessary to update the network information on the address object itself with `Address::new()` to ensure the correct network is associated with the address.
Learnt from: lklimek
PR: dashpay/dash-evo-tool#264
File: src/database/wallet.rs:469-493
Timestamp: 2025-05-12T08:38:06.423Z
Learning: In the Dash SDK, `require_network` accepts Testnet addresses for Devnet networks for legacy compatibility reasons. However, the network field on the address itself still needs to be corrected using `Address::new()` after validation to ensure the correct network is associated with the address.
Learnt from: lklimek
PR: dashpay/dash-evo-tool#264
File: src/database/wallet.rs:469-493
Timestamp: 2025-05-12T08:38:06.423Z
Learning: In the Dash SDK, `require_network` accepts Testnet addresses for Devnet networks for legacy compatibility reasons. However, the network field on the address itself still needs to be corrected using `Address::new()` after validation to ensure the correct network is associated with the address.
.github/workflows/release.yml (3)
Learnt from: lklimek
PR: dashpay/dash-evo-tool#312
File: .github/workflows/release.yml:56-56
Timestamp: 2025-06-02T12:21:14.886Z
Learning: Ubuntu 20.04 LTS GitHub Actions hosted runners were retired on 2025-04-15. Current available Ubuntu runners are ubuntu-latest, ubuntu-24.04, ubuntu-22.04 for x86_64 and ubuntu-24.04-arm, ubuntu-22.04-arm for ARM64. This affects build strategies that rely on ubuntu-20.04 runners for GLIBC 2.31 compatibility.
Learnt from: lklimek
PR: dashpay/dash-evo-tool#312
File: .github/workflows/release.yml:56-56
Timestamp: 2025-06-02T12:21:14.886Z
Learning: Ubuntu 20.04 LTS GitHub Actions hosted runners were retired on 2025-04-15. This affects build strategies that rely on ubuntu-20.04 and ubuntu-20.04-arm runners for GLIBC 2.31 compatibility targeting older Linux distributions.
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to Cross.toml : Configure cross-compilation in 'Cross.toml'
.cargo/config.toml (1)
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to Cross.toml : Configure cross-compilation in 'Cross.toml'
CLAUDE.md (2)
Learnt from: lklimek
PR: dashpay/dash-evo-tool#264
File: src/database/wallet.rs:95-99
Timestamp: 2025-05-13T06:55:34.019Z
Learning: Error handling refactoring is needed across the Dash-EVO-Tool (DET) codebase, particularly to avoid panics with `.expect()` and instead propagate errors properly using the `?` operator.
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to src/sdk_wrapper.rs : Implement custom provider for Dash SDK integration in 'src/sdk_wrapper.rs'
Cargo.toml (5)
Learnt from: ogabrielides
PR: dashpay/dash-evo-tool#22
File: Cargo.toml:47-47
Timestamp: 2024-10-29T09:24:57.158Z
Learning: In `Cargo.toml`, the `serde_yaml` dependency is intentionally set to `"0.9.34+deprecated"`, and updating it is not necessary unless specifically required.
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to src/sdk_wrapper.rs : Implement custom provider for Dash SDK integration in 'src/sdk_wrapper.rs'
Learnt from: ogabrielides
PR: dashpay/dash-evo-tool#73
File: src/backend_task/core/start_dash_qt.rs:17-18
Timestamp: 2024-11-18T14:40:33.353Z
Learning: In `src/backend_task/core/start_dash_qt.rs`, the `start_dash_qt` function verifies the existence of `dash_qt_path` using `dash_qt_path.exists()`, which the team considers sufficient validation for `custom_dash_qt` provided by the user.
Learnt from: lklimek
PR: dashpay/dash-evo-tool#264
File: src/database/wallet.rs:95-99
Timestamp: 2025-05-13T06:55:34.019Z
Learning: Error handling refactoring is needed across the Dash-EVO-Tool (DET) codebase, particularly to avoid panics with `.expect()` and instead propagate errors properly using the `?` operator.
Learnt from: CR
PR: dashpay/dash-evo-tool#0
File: CLAUDE.md:0-0
Timestamp: 2025-07-10T12:49:27.256Z
Learning: Applies to Cross.toml : Configure cross-compilation in 'Cross.toml'
🪛 actionlint (1.7.7)
.github/workflows/clippy.yml
35-35: the runner of "actions-rs/toolchain@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue
(action)
56-56: the runner of "actions-rs/clippy-check@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue
(action)
🔇 Additional comments (17)
.cargo/config.toml (1)
1-8: Confirm you really want musl binaries to be dynamically-linked
target-feature=-crt-staticflips the default behaviour of the musl targets from static to dynamic linking.
That means the produced binaries will depend on a musl libc being present on the target machine, which can be surprising and breaks the usual “ship-once, run anywhere” promise of musl. If the intent was merely to avoid very large static artifacts, consider providing both flavours or moving this flag behind a feature gate.assets/Fonts/Noto_Sans_JP/OFL.txt (1)
1-94: License text looks goodFull SIL OFL 1.1 included; nothing to fix.
assets/Fonts/Noto_Sans_SC/OFL.txt (1)
1-94: License text looks goodSame comments as JP – no issues.
assets/Fonts/Noto_Sans_KR/OFL.txt (1)
1-94: License text looks goodNo problems spotted.
assets/Fonts/Noto_Sans_Khmer/README.txt (1)
16-51: Consider auto-generating the exhaustive static-font listManually enumerating 35+ static TTF names will drift the next time Google updates the family.
A small script in the release pipeline could scanstatic/and inject the list into the README, reducing maintenance cost.[ suggest_optional_refactor ]
assets/Fonts/Noto_Sans_Devanagari/OFL.txt (1)
1-94: ✔ Standard OFL license – looks goodThe full, unmodified SIL Open Font License v1.1 is provided. No issues.
assets/Fonts/Noto_Sans_Thai/OFL.txt (1)
1-94: ✔ Standard OFL license – looks goodIdentical wording to upstream OFL v1.1. No concerns.
assets/Fonts/Noto_Sans_Khmer/OFL.txt (1)
1-94: ✔ Standard OFL license – looks goodMatches canonical text; distribution requirements satisfied.
assets/Fonts/Noto_Sans_Arabic/OFL.txt (1)
1-94: ✔ Standard OFL license – looks goodNo deviations detected.
assets/Fonts/Noto_Sans_KR/README.txt (1)
62-71: LGTM for documentation qualityClear installation & licensing instructions; no issues.
.env.example (1)
28-34: LOCAL_ variables mix hard-coded ports with localhost.*Confirm these ports (2443/2543/2643/20302/3001) don’t collide with the default Dash Masternode stack; otherwise newcomers will run into binding errors.
assets/Fonts/Noto_Sans_Devanagari/README.txt (2)
10-17: Path prefix may be wrong.The repo path is
assets/Fonts/Noto_Sans_Devanagari/…, but the README referencesNoto_Sans_Devanagari/…(noassets/Fonts/).
If the tree is copied verbatim, these relative paths will 404 when viewed on GitHub.
90-99: Licensing section is clear – nice addition.Good to see OFL usage explicitly called out and linked.
.github/workflows/release.yml (2)
84-86: Condition usesarm64-linuxbut matrix setsplatform: "arm64-linux". 👍Good catch updating the condition after renaming.
29-36:ubuntu-22.04-armrunner name is unrecognised.GitHub currently exposes
ubuntu-22.04(x86) andubuntu-22.04-arm64.
Using the wrong label will make the job sit in the queue forever.- runs-on: "ubuntu-22.04-arm" + runs-on: "ubuntu-22.04-arm64"⛔ Skipped due to learnings
Learnt from: lklimek PR: dashpay/dash-evo-tool#312 File: .github/workflows/release.yml:56-56 Timestamp: 2025-06-02T12:21:14.886Z Learning: Ubuntu 20.04 LTS GitHub Actions hosted runners were retired on 2025-04-15. Current available Ubuntu runners are ubuntu-latest, ubuntu-24.04, ubuntu-22.04 for x86_64 and ubuntu-24.04-arm, ubuntu-22.04-arm for ARM64. This affects build strategies that rely on ubuntu-20.04 runners for GLIBC 2.31 compatibility.Learnt from: lklimek PR: dashpay/dash-evo-tool#312 File: .github/workflows/release.yml:56-56 Timestamp: 2025-06-02T12:21:14.886Z Learning: Ubuntu 20.04 LTS GitHub Actions hosted runners were retired on 2025-04-15. This affects build strategies that rely on ubuntu-20.04 and ubuntu-20.04-arm runners for GLIBC 2.31 compatibility targeting older Linux distributions.Cargo.toml (2)
3-8: Confirm edition/MSRV bump is reflected inrust-toolchain.tomland CI matrix
edition = "2024"together withrust-version = "1.88"will silently break every downstream CI/build environment still pinned to 1.81 / 2021.
Please double-check that
rust-toolchain.toml(and Docker/Cross images) are already bumped to 1.88, and- the GitHub Actions matrix isn’t hard-coded to an older toolchain.
Otherwise the next push to
mainwill fail to compile.
10-20: Tokio / tokio-util version pairing
tokio-util = 0.7.15requirestokio >=1.33, while we pintokio = 1.45.1.
That combination is safe, but please keep the rule-of-thumb “tokio-util minor = tokio minor” in mind for future bumps to avoid subtle trait-impl mismatches.
| MAINNET_core_rpc_user=dashrpc | ||
| MAINNET_core_rpc_password=password |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Replace real-looking credentials with explicit placeholders.
Using dashrpc/password in the example encourages copy-pasting insecure defaults into live deployments.
Prefer <RPC_USER> / <RPC_PASSWORD> or leave them blank.
Also applies to: 12-14, 22-23, 31-32
🤖 Prompt for AI Agents
In the .env.example file around lines 4 to 5, replace the real-looking
credentials 'dashrpc' and 'password' with explicit placeholders like
'<RPC_USER>' and '<RPC_PASSWORD>' or leave them blank to avoid encouraging
insecure defaults. Apply the same change to lines 12-14, 22-23, and 31-32 as
well.
| MAINNET_show_in_ui=true | ||
| MAINNET_developer_mode=true | ||
|
|
There was a problem hiding this comment.
developer_mode=true on MAINNET looks dangerous.
Accidentally running prod with dev flags can bypass safety checks.
Recommend defaulting to false and letting power-users opt in locally.
🤖 Prompt for AI Agents
In the .env.example file around lines 6 to 8, the MAINNET_developer_mode is set
to true by default, which is risky for production environments. Change the
default value of MAINNET_developer_mode to false to prevent accidental enabling
of developer mode in production. Users who need developer mode can override this
setting locally in their own environment files.
| # Cargo.lock | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
Re-evaluate ignoring Cargo.lock.
This repo builds a CLI binary; committing Cargo.lock gives reproducible releases and is the current Rust recommendation for applications.
🤖 Prompt for AI Agents
In the .gitignore file around lines 21 to 22, the Cargo.lock file is currently
ignored, but since this repo builds a CLI binary, you should stop ignoring
Cargo.lock to ensure reproducible builds. Remove the line ignoring Cargo.lock
from .gitignore so that Cargo.lock is committed to the repository as recommended
for Rust applications.
| - name: Run Clippy | ||
| uses: actions-rs/clippy-check@v1 | ||
| with: | ||
| token: ${{ secrets.GITHUB_TOKEN }} | ||
| args: --all-features --all-targets -- -D warnings | ||
| name: Clippy Report |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Ditto for actions-rs/clippy-check@v1.
Update to a Node-20 compatible release (v1.0.7 at time of writing).
- uses: actions-rs/clippy-check@v1
+ uses: actions-rs/clippy-check@v1.0.7📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - name: Run Clippy | |
| uses: actions-rs/clippy-check@v1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| args: --all-features --all-targets -- -D warnings | |
| name: Clippy Report | |
| - name: Run Clippy | |
| - uses: actions-rs/clippy-check@v1 | |
| + uses: actions-rs/clippy-check@v1.0.7 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| args: --all-features --all-targets -- -D warnings | |
| name: Clippy Report |
🧰 Tools
🪛 actionlint (1.7.7)
56-56: the runner of "actions-rs/clippy-check@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue
(action)
🤖 Prompt for AI Agents
In .github/workflows/clippy.yml around lines 55 to 60, the action version for
actions-rs/clippy-check is outdated and not compatible with Node-20. Update the
uses line to specify version v1.0.7 instead of v1 to ensure compatibility with
Node-20.
| - name: Install Rust toolchain | ||
| uses: actions-rs/toolchain@v1 | ||
| with: | ||
| toolchain: stable | ||
| components: clippy | ||
| override: true | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
actions-rs/toolchain@v1 is deprecated for Node-20 runners.
Switch to the maintained fork or pin a newer tag (e.g. actions-rs/toolchain@v1.0.6) to avoid job failures.
- uses: actions-rs/toolchain@v1
+ uses: actions-rs/toolchain@v1.0.6📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - name: Install Rust toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| components: clippy | |
| override: true | |
| - name: Install Rust toolchain | |
| uses: actions-rs/toolchain@v1.0.6 | |
| with: | |
| toolchain: stable | |
| components: clippy | |
| override: true |
🧰 Tools
🪛 actionlint (1.7.7)
35-35: the runner of "actions-rs/toolchain@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue
(action)
🤖 Prompt for AI Agents
In .github/workflows/clippy.yml around lines 34 to 40, the usage of
actions-rs/toolchain@v1 is deprecated for Node-20 runners. Update the action to
use a maintained fork or pin a newer tag such as actions-rs/toolchain@v1.0.6 to
ensure compatibility and prevent job failures.
| - **Entry Point**: `src/main.rs` - Sets up Tokio runtime (40 worker threads), loads fonts, and launches egui app | ||
| - **App State Manager**: `src/app.rs` - Central state with screen management, network switching, and backend task coordination | ||
| - **Context System**: `src/context.rs` and `src/context_provider.rs` - Network-specific app contexts with SDK integration | ||
| - **Configuration**: `src/config.rs` - Environment and network configuration management | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
40-thread Tokio runtime sounds excessive
Hard-wiring worker_threads = 40 can waste cores on laptops/CI runners and hamper scheduling on 8-core machines.
Recommend switching to num_cpus::get().saturating_sub(1) or making the count configurable via .env.
🤖 Prompt for AI Agents
In CLAUDE.md around lines 28 to 32, the description hard-codes the Tokio runtime
worker threads to 40, which may be excessive for many environments. Update the
documentation to recommend using a dynamic thread count based on available CPU
cores, such as using num_cpus::get().saturating_sub(1), or making the thread
count configurable via environment variables like .env files, to optimize
resource usage across different machines.
Summary by CodeRabbit
New Features
Improvements
.gitignoreto cover new build artifacts and environment files.Documentation