* feat(rust): add Web dashboard and MCP services
Share configuration, status and synchronization between Web and MCP; add authenticated HTTP, stdio lifecycle support, in-process scheduling and offline regression tests. Exercise native tests on the existing Windows/macOS/Linux CI matrix.
Co-authored-by: openhands <openhands@all-hands.dev>
* ci(rust): allow manual cross-platform validation
Enable workflow_dispatch for feature-branch CI without requiring PR creation. Preserve matrices, permissions, publishing boundaries and trusted-branch cache policy.
Co-authored-by: openhands <openhands@all-hands.dev>
* ci(rust): validate feature branch pushes
Run the existing Rust cross-platform matrix for feat/** pushes while retaining trusted-branch-only cache writes and unchanged release triggers.
Co-authored-by: openhands <openhands@all-hands.dev>
* ci(rust): remove temporary branch trigger
The v5 pull request now exists and runs the complete native matrix, so restore the original trusted push branches while retaining Web/MCP paths and tests.
Co-authored-by: openhands <openhands@all-hands.dev>
---------
Co-authored-by: openhands <openhands@all-hands.dev>
* feat(rust): add parallel DDNS MVP
Add a synchronous Rust client with compatible configuration, IP discovery, caching, and the first four providers.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): address review compatibility gaps
Handle DNSPod failures safely, accept Python-compatible log thresholds, document Rust regex limits, and tolerate non-Unicode environment entries.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): preserve generated provider options
Serialize endpoint overrides and --extra.* values so generated configuration files reproduce accepted CLI settings.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): align provider and config behavior
Keep provider lookup parameters scoped, continue DNSPod zone discovery safely, and match Python configuration and regex semantics.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): harden credentials and CI scoping
Redact provider credentials, align remaining config/cache behavior, and avoid running language-specific builds for unrelated changes while preserving required checks.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): preserve authenticated URL compatibility
Translate embedded URL credentials to Basic auth, align generated TTL defaults, and run Rust checks for the abc PR target.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): isolate caches and aggregate safe errors
Keep Python cache files untouched, redact retained failures, and continue multi-provider runs after log setup errors.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* feat(rust): complete providers and distribution
Port the remaining DNS providers and aliases, add protected native/container release workflows, and provide a checksum-aware Rust installer.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* docs(agents): register Rust development guide
Keep the generated project structure contract aligned with the new bilingual Rust documentation.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): address review feedback
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* refactor(rust): simplify core design
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* refactor(rust): use typed borrowed core
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* refactor(rust): streamline transport state
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* test(rust): share provider fixtures
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* test(rust): expand end-to-end coverage
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): simplify provider modes and lookup handling
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* chore(v5): prepare isolated Rust development line
Keep Rust changes on the v5 integration line and prepare artifacts without publishing or changing the stable Python entrypoint.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): redact credential-bearing URL paths
Hide non-root URL paths in diagnostics and omit URI text from transport errors while preserving actual request URLs.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): fully mask credential values
Replace credential prefixes and suffixes with a constant opaque marker while retaining raw and percent-encoded masking.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): correct provider signing and zone lookup errors
Use RFC3986 canonical queries for Huawei signing. Distinguish documented NameSilo and ClouDNS zone misses from authentication, HTTP, and provider failures. Add offline regressions and matching V5 documentation.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): preserve address spelling for regex rules
Match regex rules against the extracted address text without IPv6 canonicalization, while retaining strict IpAddr validation and parsed return values. Cover original spelling, invalid candidates, family filtering, and matching boundaries.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): reject unusable local IPs and malformed record lists
Filter loopback and unspecified addresses before local indexing. Reject malformed ClouDNS, Huawei, and NameSilo record lookups without creating duplicates while retaining valid empty responses. Isolate installer test globals and cleanup traps in subshells.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): keep DNS.COM signatures out of diagnostics
Use the sensitive request path for signed DNS.COM bodies, omit raw HTTP and JSON failure responses, and redact signatures echoed in API messages. Preserve request signing and ordinary HTTP diagnostics with offline regressions.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): mask form credentials and validate upgrades before replacement
Reuse the form encoder for credential redaction and smoke-test temporary installer binaries before replacing a working installation. Cover rejected upgrades and existing trailing-period IP parsing without changing address extraction.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): preserve provider updates and V5 preparation contracts
Send Huawei canonical query bytes unchanged, accept nonempty single-label domains at configuration ingress, and honor AliDNS/ESA extras on unchanged addresses. Require V5 prereleases in artifact preparation with offline regression coverage.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(rust): accept separated negative CLI integers
Recognize negative integer tokens as required scalar values without consuming option names. Preserve per-option range validation and cover log-level aliases, inline parity, and real CLI execution.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(ci): use architecture names for Rust QEMU setup
Install only the arm64 emulator on the amd64 OCI preparation runner while preserving linux/amd64,linux/arm64 for Buildx. Strengthen offline workflow contracts to distinguish the two inputs.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Initial plan
* fix: update patch.py to include version in file description and Docker annotations
- Modified add_nuitka_file_description() to accept version parameter and append it to description
- Updated Docker build annotations to include version-specific description
- Removed hardcoded file-description from Windows standalone build in publish.yml
- Version now correctly appears in descriptions (e.g., [v4.1.0]) instead of "latest"
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
* chore: revert unintended Python 2 compatibility removal
Restore systemd.py and http.py to previous state. These files were accidentally modified during testing of patch.py script.
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
* docs: add solution summary for version description fix
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
* fix: restore Python 2 compatibility code in systemd.py and http.py
Properly restore the Python 2/3 compatibility try-except blocks that were accidentally removed during testing.
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
* fix: correct path to release.md for GitHub release body updates
Fix typo in patch.py where it references 'doc/release.md' instead of 'docs/release.md'. This caused the release body to always show 'latest' instead of the actual version tag because the file was never found and updated.
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
* revert: remove Nuitka description changes, keep only docs path fix
As requested, reverted all changes except the single-line fix changing 'doc' to 'docs' in patch.py line 468. This ensures only the GitHub release body version substitution fix is included.
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
* Fix release body version substitution: correct docs path typo
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
Co-authored-by: New Future <NewFuture@users.noreply.github.com>