Skip to content

v0.9-dev to master#407

Merged
pauldelucia merged 0 commit into
masterfrom
v0.9-dev
Jul 14, 2025
Merged

v0.9-dev to master#407
pauldelucia merged 0 commit into
masterfrom
v0.9-dev

Conversation

@pauldelucia
Copy link
Copy Markdown
Member

@pauldelucia pauldelucia commented Jul 14, 2025

Summary by CodeRabbit

  • New Features

    • Added support for multiple network environments and standardized environment variable naming in the example configuration.
    • Introduced a GitHub Actions workflow for automated Rust linting.
    • Added comprehensive onboarding and architecture documentation for contributors and code assistants.
  • Improvements

    • Upgraded Rust edition and dependencies, increased minimum Rust version, and updated build configurations.
    • Enhanced release workflow with updated runner environments and streamlined setup steps.
    • Expanded .gitignore to cover new build artifacts and environment files.
  • Documentation

    • Added detailed README and license files for Noto Sans font families in various languages/scripts.
    • Included a new CLAUDE.md for contributor and AI assistant guidance.

@pauldelucia pauldelucia changed the title v0.9 dev to master v0.9-dev to master Jul 14, 2025
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jul 14, 2025

Walkthrough

This update introduces new font asset documentation and license files for multiple Noto Sans font families, restructures and expands .env.example with standardized naming and new network environments, upgrades dependencies and Rust edition in Cargo.toml, adds Clippy CI, updates build/release workflows, and provides detailed project documentation in CLAUDE.md.

Changes

File(s) Change Summary
.env.example Restructured, standardized variable names, added DEVNET and LOCAL environments, updated addresses, and introduced new flags.
.gitignore Added ignores for new build artifacts, test files, and logs; commented out Cargo.lock; formatting adjustments.
.cargo/config.toml New file specifying Rust compiler flags for three target platforms.
.github/workflows/clippy.yml Added new GitHub Actions workflow to run Clippy linter with strict settings and system dependencies.
.github/workflows/release.yml Updated runner environments, removed some copy steps, and adjusted ARM platform detection in release workflow.
Cargo.toml Bumped version and Rust edition, updated dependencies, removed build script/flags, added new utilities and dev-dependencies.
CLAUDE.md New detailed documentation for contributors and code assistants, covering architecture, build, testing, and patterns.
assets/Fonts/Noto_Sans*/OFL.txt
assets/Fonts/Noto_Sans_*/OFL.txt
Added SIL Open Font License (OFL) text files for each Noto Sans font family.
assets/Fonts/Noto_Sans*/README.txt
assets/Fonts/Noto_Sans_*/README.txt
Added README documentation for each Noto Sans font family, listing files, usage, installation, and licensing info.

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
Loading

Possibly related PRs

Suggested reviewers

  • QuantumExplorer

Poem

In the warren of code, new fonts hop in line,
Licenses and READMEs, all tidy and fine.
The envs are expanded, the workflows now neat,
Dependencies freshened, the build can’t be beat!
With CLAUDE.md guidance, and Clippy on guard—
This bunny’s quite proud of a repo unmarred.
🐇✨


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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need 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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 6

♻️ Duplicate comments (2)
assets/Fonts/Noto_Sans_Thai/README.txt (1)

75-78: Same stale Edge “testdrive” link as other READMEs

Replication 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 over

The 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-wide build.rustflags

The 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 file

The README tells users to read OFL.txt but 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 layout

The 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 with assets/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.ttf
assets/Fonts/Noto_Sans_Hebrew/OFL.txt (1)

1-10: CR-LF line endings – please normalise

This 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.txt
assets/Fonts/Noto_Sans/OFL.txt (1)

1-10: Same CR-LF issue as other OFL files

Normalise 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 browsing

As 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.ttf
assets/Fonts/Noto_Sans_KR/README.txt (1)

1-72: Minor duplication concern

Each 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 dead

The https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts URL 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 URL

The 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 listings

Listing 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 text

The 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 gigantic MAINNET_dapi_addresses value 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.mainnet file would be far easier to maintain.

.gitignore (2)

5-9: .snap is 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_Store patterns.

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 name to linux-windows-cross to 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-sdk is a git rev, bincode = "=2.0.0-rc.3", and serde_yaml = 0.9.34-deprecated.
The first two are unavoidable today, but the deprecated serde_yaml variant can disappear once the DashPlatformProtocol schema 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 policy

CI treats warnings as errors, but we globally allow the uninlined_format_args lint.
If this lint is actually noisy in generated code (e.g. from tracing! 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 mapping

The 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 explicitly

The 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

📥 Commits

Reviewing files that changed from the base of the PR and between 15ad443 and 4d4a0a9.

⛔ Files ignored due to path filters (273)
  • Cargo.lock is excluded by !**/*.lock
  • assets/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/NotoSans-VariableFont.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-Italic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/NotoSansArabic-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_Condensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_ExtraCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Arabic/static/NotoSansArabic_SemiCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/NotoSansDevanagari-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_Condensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_ExtraCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Devanagari/static/NotoSansDevanagari_SemiCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/NotoSansHebrew-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_Condensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_ExtraCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Hebrew/static/NotoSansHebrew_SemiCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/NotoSansJP-VariableFont_wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_JP/static/NotoSansJP-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/NotoSansKR-VariableFont_wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_KR/static/NotoSansKR-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/NotoSansKhmer-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_Condensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_ExtraCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Khmer/static/NotoSansKhmer_SemiCondensed-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/NotoSansSC-VariableFont_wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_SC/static/NotoSansSC-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/NotoSansTC-VariableFont_wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_TC/static/NotoSansTC-Thin.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/NotoSansThai-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Black.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Bold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-ExtraBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-ExtraLight.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Light.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Medium.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Regular.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-SemiBold.ttf is excluded by !**/*.ttf
  • assets/Fonts/Noto_Sans_Thai/static/NotoSansThai-Thin.ttf is 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-static flips 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 good

Full SIL OFL 1.1 included; nothing to fix.

assets/Fonts/Noto_Sans_SC/OFL.txt (1)

1-94: License text looks good

Same comments as JP – no issues.

assets/Fonts/Noto_Sans_KR/OFL.txt (1)

1-94: License text looks good

No problems spotted.

assets/Fonts/Noto_Sans_Khmer/README.txt (1)

16-51: Consider auto-generating the exhaustive static-font list

Manually enumerating 35+ static TTF names will drift the next time Google updates the family.
A small script in the release pipeline could scan static/ 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 good

The 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 good

Identical wording to upstream OFL v1.1. No concerns.

assets/Fonts/Noto_Sans_Khmer/OFL.txt (1)

1-94: ✔ Standard OFL license – looks good

Matches canonical text; distribution requirements satisfied.

assets/Fonts/Noto_Sans_Arabic/OFL.txt (1)

1-94: ✔ Standard OFL license – looks good

No deviations detected.

assets/Fonts/Noto_Sans_KR/README.txt (1)

62-71: LGTM for documentation quality

Clear 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 references Noto_Sans_Devanagari/… (no assets/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 uses arm64-linux but matrix sets platform: "arm64-linux". 👍

Good catch updating the condition after renaming.


29-36: ubuntu-22.04-arm runner name is unrecognised.

GitHub currently exposes ubuntu-22.04 (x86) and ubuntu-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 in rust-toolchain.toml and CI matrix

edition = "2024" together with rust-version = "1.88" will silently break every downstream CI/build environment still pinned to 1.81 / 2021.
Please double-check that

  1. rust-toolchain.toml (and Docker/Cross images) are already bumped to 1.88, and
  2. the GitHub Actions matrix isn’t hard-coded to an older toolchain.

Otherwise the next push to main will fail to compile.


10-20: Tokio / tokio-util version pairing

tokio-util = 0.7.15 requires tokio >=1.33, while we pin tokio = 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.

Comment thread .env.example
Comment on lines +4 to +5
MAINNET_core_rpc_user=dashrpc
MAINNET_core_rpc_password=password
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

Comment thread .env.example
Comment on lines +6 to 8
MAINNET_show_in_ui=true
MAINNET_developer_mode=true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

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.

Comment thread .gitignore
Comment on lines +21 to 22
# Cargo.lock

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

Comment on lines +55 to +60
- name: Run Clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets -- -D warnings
name: Clippy Report
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

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

Comment on lines +34 to +40
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
override: true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

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

Comment thread CLAUDE.md
Comment on lines +28 to +32
- **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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

@pauldelucia pauldelucia merged commit 4d4a0a9 into master Jul 14, 2025
7 checks passed
@pauldelucia pauldelucia deleted the v0.9-dev branch July 14, 2025 16:50
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