New Future and Future New
4e2b757f37
feat(branding): refresh DDNS logo and GitHub social cover ( #740 )
...
* feat(branding): refresh DDNS logo and social cover
* test(branding): pin reviewed asset exports
* test(branding): remove brand asset checks
* fix(cache): tolerate small filesystem clock skew
* docs(branding): correct cover license reference
---------
Co-authored-by: Future New (WEILAI LIU) <weilail@microsoft.com >
2026-09-13 22:38:36 +08:00
New Future and openhands
e9ad33e88b
Feat/v5 web mcp ( #745 )
...
* 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 >
2026-09-12 12:09:26 +08:00
93b79d2103
feat(v5): prepare the Rust DDNS development line ( #728 )
...
* 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 >
2026-09-12 00:39:34 +08:00
New Future and Future New
8e784f6976
ci: migrate issue replies to Copilot with the built-in Actions token ( #742 )
...
* test(ci): probe Copilot built-in token access
* test(ci): remove completed Copilot token probe
* ci: migrate issue replies to Copilot agentic workflow
---------
Co-authored-by: Future New (WEILAI LIU) <weilail@microsoft.com >
2026-09-08 18:44:17 +08:00
dependabot[bot]
fee4927e87
build(deps-dev): bump vitepress from 2.0.0-alpha.19 to 2.0.0-alpha.20 in /docs ( #741 )
...
build(deps-dev): bump vitepress in /docs
Bumps [vitepress](https://github.com/vuejs/vitepress ) from 2.0.0-alpha.19 to 2.0.0-alpha.20.
- [Release notes](https://github.com/vuejs/vitepress/releases )
- [Changelog](https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md )
- [Commits](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.19...v2.0.0-alpha.20 )
---
updated-dependencies:
- dependency-name: vitepress
dependency-version: 2.0.0-alpha.20
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-08 10:49:39 +08:00
27f0f1c0ac
fix: correct DNS sync results and configuration retention ( #739 )
...
* fix: correct DNS sync results and configuration retention
Keep address families independent, reject failed update responses, preserve complete IPv6 addresses, and retain Studio drafts and effective extra settings. Add offline regressions and wire Studio tests into documentation builds.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(provider): make disk cache regressions deterministic
Align the cache fixture wall clock and file mtime so Windows Python 3.12 clock granularity cannot turn a freshly saved cache into a future-dated file. Keep real disk reads, all cache assertions, production expiry policy and CI matrices unchanged.
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 >
v4.2.1-beta3
2026-09-06 12:45:46 +08:00
New Future and Copilot App
087b18bcdc
fix(ci): set GitHub release repository context ( #738 )
...
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
v4.2.1-beta2
2026-08-28 15:25:22 +08:00
8c42e248d6
ci(release): support immutable publishing ( #737 )
...
* ci(release): support immutable publishing
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): address release review feedback
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): validate release state before publishing
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): simplify release tag preparation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
---------
Co-authored-by: Future New (WEILAI LIU) <weilail@microsoft.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
v4.2.1-beta1
2026-08-27 20:33:10 +08:00
3c8578e9f4
feat(mcp): add Streamable HTTP transport ( #736 )
...
* feat(mcp): add Streamable HTTP transport
Add a modern MCP 2026-07-28 HTTP endpoint for standalone and Web modes, with shared listener configuration, authentication, schema, tests, and bilingual documentation.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(tests): support Python 2 HTTP assertions
Normalize response header names and call handler methods through their underlying functions so the HTTP tests behave consistently on Python 2.7 and Python 3.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): harden HTTP request handling
Validate mirrored request IDs, align Config Studio listener checks, bound socket reads, and accept the binary wrapper's documented SIGINT exit status.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): align HTTP negotiation validation
Reject unavailable Accept media types by quality and keep schema host validation consistent with runtime listener checks.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(tests): validate host schema behavior
Assert accepted and rejected host samples instead of comparing Unicode escape representations that differ on Python 2.7.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(tests): avoid cross-engine schema regex
Keep the schema pattern contract without executing its ECMA-262 Unicode escape through Python 2's incompatible regex engine.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): validate HTTP request boundaries
Reject empty tokens and malformed JSON-RPC request shapes, and keep Config Studio bracket validation aligned with runtime listener handling.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): tighten HTTP input validation
Reject legacy notifications, nested host brackets, and document the required JSON content type so validation remains consistent across runtime, schema, and Config Studio.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): validate Origin before method errors
Apply the existing Origin policy to non-POST MCP requests and return CORS headers for configured allowed origins.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* docs(mcp): clarify proxy Origin allowlist
Explain that browser clients behind TLS termination must allowlist the public HTTPS origin even when the public page appears same-origin.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* docs(mcp): add standalone server guide
Move MCP client setup, transports, tools, security, and protocol limits into dedicated Chinese and English pages with matching navigation and index links.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): reject duplicate routing headers
Reject repeated MCP protocol, method, and name headers before body consistency checks across Python 2 and Python 3.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): validate named request headers
Validate Mcp-Name for tools/call, prompts/get, and resources/read before dispatching unsupported methods.
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 >
v4.2.0
2026-08-23 21:36:26 +08:00
2501c4a1d8
ci(agent): add deterministic project checks ( #735 )
...
* feat(agent): define portable project development contract
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* ci(agent): add deterministic project checks
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): isolate agent contract concurrency
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): run complete agent contracts
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): cover generated docs and drift reports
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): close project contract coverage gaps
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): harden change discovery contracts
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): close final contract blind spots
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): validate active provider surfaces
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): enforce complete validation indexes
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): reject stale provider overview rows
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): validate all workflow changes
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): keep validation inputs deterministic
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): ignore deleted format targets
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(agent): ignore hidden provider inventories
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* perf(agent): deduplicate conservative checks
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 >
2026-08-21 16:58:28 +08:00
08837bbd09
feat(agent): define portable project development contract ( #734 )
...
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
2026-08-21 14:02:26 +08:00
90e04b70bd
test(http): handle wrapped network timeouts ( #733 )
...
* test(http): handle wrapped network timeouts
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(http): tighten network error classification
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 >
2026-08-21 01:05:32 +08:00
Copilot and NewFuture
6b12670cca
chore(ci): update Nuitka to 4.2 ( #732 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
v4.2.0-beta2
2026-08-19 21:15:53 +08:00
dependabot[bot]
e945f89c51
build(deps): bump actions/cache from 5 to 6 ( #731 )
...
Bumps [actions/cache](https://github.com/actions/cache ) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases )
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md )
- [Commits](https://github.com/actions/cache/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-18 09:36:57 +08:00
dd16df78b7
ci(build): persist incremental compiler caches ( #730 )
...
* ci(build): persist compiler caches
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* ci(build): restrict compiler cache writes
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 >
v4.2.0-beta1
2026-08-17 14:13:55 +08:00
06c0e912f4
test(e2e): expand binary coverage ( #727 )
...
* test(e2e): expand binary coverage
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* ci(e2e): cap binary jobs at 10 minutes
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(e2e): stabilize binary matrix tests
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): refresh cross-platform test images
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): defer ARMv6 emulation until tests
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(ci): keep ARMv6 job within timeout
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 >
2026-08-16 02:43:33 +08:00
6e3d3560c7
fix(http): bound external requests in CI tests ( #726 )
...
* fix(tests): handle endpoint timeouts in fallback
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(http): add configurable request timeout
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 >
2026-08-15 22:23:27 +08:00
Copilot and NewFuture
27fa7f478d
docs(agents): sync AGENTS.md structure with new ddns/mcp.py ( #725 )
...
* Initial plan
* docs(agents): sync AGENTS.md structure and metadata
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 >
2026-08-15 17:02:12 +08:00
Copilot and NewFuture
2e2daa50be
Fix dashboard cache reads with small Windows mtime skew ( #723 )
...
* Initial plan
* fix(web): tolerate small cache timestamp skew
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* fix(web): reject future cache timestamps
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* test(web): cover future cache timestamps
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* fix(web): tolerate small cache timestamp skew
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* fix(test_web): keep cache fixture unicode-safe on Python 2.7
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 >
2026-08-14 17:50:59 +08:00
c919f2c6af
feat(mcp): add dependency-free DDNS server ( #722 )
...
* feat(mcp): add dependency-free DDNS server
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): stop cancelled DDNS updates
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 >
2026-08-13 17:25:47 +08:00
a05bedf000
docs(agents): document embedded web package ( #721 )
...
docs(agents): update web directory structure
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
2026-08-12 17:42:56 +08:00
c30822bd33
test(e2e): cover source and binary workflows ( #719 )
...
* test(e2e): cover source and binary workflows
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(e2e): stop compiled process groups
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* ci(build): limit ARM BuildKit parallelism
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* revert: remove ARM BuildKit workaround
The builder image is being rebuilt to address the zstd allocation failure at its source.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(e2e): use OS-assigned dashboard port
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 >
2026-08-12 15:39:51 +08:00
d14594f14d
feat(web): add local management dashboard ( #718 )
...
* feat(web): add local management dashboard
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(web): address review and Python 2 compatibility
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* chore: remove design session artifacts
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(web): harden packaged resources and HTTP semantics
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(web): support Python 2 handler mocks
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(web): detect all external schedulers
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 >
2026-08-11 18:23:17 +00:00
dependabot[bot]
5ee2351854
Bump vitepress from 2.0.0-alpha.18 to 2.0.0-alpha.19 in /docs ( #717 )
...
Bumps [vitepress](https://github.com/vuejs/vitepress ) from 2.0.0-alpha.18 to 2.0.0-alpha.19.
- [Release notes](https://github.com/vuejs/vitepress/releases )
- [Changelog](https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md )
- [Commits](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.18...v2.0.0-alpha.19 )
---
updated-dependencies:
- dependency-name: vitepress
dependency-version: 2.0.0-alpha.19
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 10:07:56 +08:00
c4b6d4e0d8
docs(agents): separate Config Studio from LLM sources ( #716 )
...
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
2026-08-10 10:35:34 +08:00
1d04b4eb0f
feat(docs): redesign documentation experience ( #715 )
...
* feat(docs): redesign documentation experience
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docs): preserve Config Studio state
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docs): clarify credential diagnostics
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docs): address review feedback
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 >
2026-08-10 09:37:20 +08:00
e58daa0a80
feat(docs): add configuration studio ( #712 )
...
* feat(docs): add configuration studio
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(config): address PR review feedback
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docker): avoid 32-bit Nuitka compression OOM
Disable onefile compression only for 32-bit BuildKit targets, where zstd can exhaust the process address space.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* revert: restore compressed Linux binaries
The builder image has been rebuilt with the previous working toolchain.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* docs: remove English configuration studio
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* chore: remove product design artifact
Restore the English configuration studio that was removed by mistake.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docs): protect credentials in address sources
Treat URL userinfo in IPv4 and IPv6 detection sources as sensitive so previews, copies, downloads, and duplicated providers exclude it by default.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docs): preserve explicit empty tokens
Keep runtime-significant empty token fields in credential-free exports while continuing to omit non-empty secrets.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docs): export entered credentials
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* docs(config): clarify special source splitting
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 >
2026-08-08 11:09:51 +08:00
e102ce5039
fix(docker): prevent zombie process accumulation ( #711 )
...
* fix(docker): prevent zombie process accumulation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(docker): forward signals to startup processes
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 >
2026-08-08 01:05:22 +08:00
0a80f32fb8
test(util.http): remove external network flakiness ( #710 )
...
* test(util.http): remove external network flakiness
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(util.http): bypass proxies in loopback test
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(util.http): support Python 2 HTTP handler
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 >
2026-08-07 23:23:43 +08:00
06fceed0f7
feat(cache): add configurable cache max age ( #709 )
...
* feat(cache): add configurable cache max age
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(cache): cover cache max age integration paths
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(cache): fix portable regression test formatting
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* style(test): format cache max age run test
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
---------
Co-authored-by: Future New (WEILAI LIU) <weilail@microsoft.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
v4.1.5
2026-08-06 17:59:40 +08:00
Copilot and NewFuture
adc3d4fd40
Fix Nuitka onefile compression dependencies ( #707 )
...
fix(build): install Nuitka onefile dependencies
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
2026-08-05 20:15:12 +08:00
Copilot and NewFuture
9a260d17c4
Fix Docker ARM build failure from buggy patchelf ( #706 )
...
* Initial plan
* fix(docker): avoid buggy patchelf in alpine builder
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* chore(docker): use patchelf 0.19.1
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 >
2026-08-05 18:51:03 +08:00
iCasture and New Future
e61bc6b474
fix(ip): honor fallback order for index4/index6 rules ( #690 )
...
fix(ip): continue rule fallback when a resolver returns no result
Refactor get_ip() to evaluate one rule at a time and only stop when a
usable address is found.
This fixes index4/index6 fallback chains where resolvers such as url,
public, regex, cmd, or shell could return an empty result and prevent
later rules from running.
Update tests to cover fallback across multiple rule types for both IPv4
and IPv6.
Co-authored-by: New Future <NewFuture@users.noreply.github.com >
2026-08-05 15:42:02 +08:00
dependabot[bot] and New Future
024ba4a336
Bump actions/setup-node from 6 to 7 ( #703 )
...
Bumps [actions/setup-node](https://github.com/actions/setup-node ) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases )
- [Commits](https://github.com/actions/setup-node/compare/v6...v7 )
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: New Future <NewFuture@users.noreply.github.com >
2026-07-22 13:56:35 +08:00
dependabot[bot]
c0a5fb6c62
Bump actions/setup-python from 6 to 7 ( #704 )
...
Bumps [actions/setup-python](https://github.com/actions/setup-python ) from 6 to 7.
- [Release notes](https://github.com/actions/setup-python/releases )
- [Commits](https://github.com/actions/setup-python/compare/v6...v7 )
---
updated-dependencies:
- dependency-name: actions/setup-python
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 14:34:53 +08:00
dependabot[bot]
8507073431
Bump vitepress from 2.0.0-alpha.17 to 2.0.0-alpha.18 in /docs ( #702 )
...
Bumps [vitepress](https://github.com/vuejs/vitepress ) from 2.0.0-alpha.17 to 2.0.0-alpha.18.
- [Release notes](https://github.com/vuejs/vitepress/releases )
- [Changelog](https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md )
- [Commits](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.17...v2.0.0-alpha.18 )
---
updated-dependencies:
- dependency-name: vitepress
dependency-version: 2.0.0-alpha.18
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 17:00:07 +08:00
dependabot[bot]
e2e055ef6e
Bump actions/checkout from 6 to 7 ( #701 )
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v6...v7 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-24 10:26:25 +08:00
f8c098561d
Update AGENTS documentation structure and check ( #700 )
...
* Initial plan
* docs(agents): update documentation directory tree
* docs(llms): remove excessive English and schema links
* docs(agents): simplify English docs listing
* docs(llms): describe English doc link pattern
* fix(ci): support mirrored English docs in agents check
* fix(ci): clarify mirrored docs detection
* fix(ci): improve agents check readability
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
* docs(agents): clarify parse_agents_md docstring return values
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: New Future <NewFuture@users.noreply.github.com >
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-06-16 08:04:58 +08:00
New Future
96c4ba71ce
docs(agents): streamline agent guidance ( #698 )
2026-06-15 09:59:50 +08:00
Copilot and New Future
25d6075e37
docs(agents): sync AGENTS.md and llms.txt for west provider ( #696 )
...
* Initial plan
* docs(agents): update AGENTS.md and llms.txt for west provider
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: New Future <NewFuture@users.noreply.github.com >
2026-06-14 02:53:51 +00:00
Copilot
4fec62d95d
Remove Alibaba Cloud ESA promotional links ( #697 )
...
* docs(aliesa): remove Alibaba Cloud ESA promo links
* docs(readme): remove ESA footer sponsor image
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-06-14 10:43:37 +08:00
93d4698ff7
feat(provider.west): add West.cn DNS provider support ( #628 )
...
* Initial plan
* feat(provider.west): add West.cn DNS provider support
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* refactor(provider.west): address review feedback - remove LINE_MAPPING, implement domain fallback, update docs
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* fix(provider.west): improve logging format for root domain
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix(provider.west): correct comment about domain parsing order and clarify error code handling
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
* refactor(provider.west): simplify domain not found check to use code=404
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 >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-06-12 12:04:51 +00:00
Copilot
7490657d82
Use HTTP ipify URL in documentation examples ( #694 )
...
* fix(ip): remove unavailable ipify cn endpoint
* test(ip): avoid substring matching in fallback test
* fix(ip): remove unavailable ipw endpoints
* fix(ip): add ddnsip public endpoints
* docs: use http ipify URL in examples
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-06-12 19:51:59 +08:00
dependabot[bot]
9834fdea5e
Bump actions/upload-pages-artifact from 4 to 5 ( #689 )
...
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact ) from 4 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases )
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 14:56:26 +00:00
dependabot[bot]
343a01c521
Bump actions/deploy-pages from 4 to 5 ( #687 )
...
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages ) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases )
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/deploy-pages
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 22:44:14 +08:00
dependabot[bot]
bed287da2e
Bump actions/github-script from 8 to 9 ( #688 )
...
Bumps [actions/github-script](https://github.com/actions/github-script ) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases )
- [Commits](https://github.com/actions/github-script/compare/v8...v9 )
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '9'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-27 19:37:45 +08:00
dependabot[bot]
14b2d76fc0
Bump vitepress from 2.0.0-alpha.16 to 2.0.0-alpha.17 in /docs ( #686 )
...
Bumps [vitepress](https://github.com/vuejs/vitepress ) from 2.0.0-alpha.16 to 2.0.0-alpha.17.
- [Release notes](https://github.com/vuejs/vitepress/releases )
- [Changelog](https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md )
- [Commits](https://github.com/vuejs/vitepress/compare/v2.0.0-alpha.16...v2.0.0-alpha.17 )
---
updated-dependencies:
- dependency-name: vitepress
dependency-version: 2.0.0-alpha.17
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-26 19:50:09 +08:00
dependabot[bot]
78a81b9f3b
Bump docker/metadata-action from 5 to 6 ( #685 )
...
Bumps [docker/metadata-action](https://github.com/docker/metadata-action ) from 5 to 6.
- [Release notes](https://github.com/docker/metadata-action/releases )
- [Commits](https://github.com/docker/metadata-action/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: docker/metadata-action
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-23 15:35:25 +08:00
dependabot[bot]
3824ddc2d8
Bump docker/setup-qemu-action from 3 to 4 ( #684 )
...
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action ) from 3 to 4.
- [Release notes](https://github.com/docker/setup-qemu-action/releases )
- [Commits](https://github.com/docker/setup-qemu-action/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-17 16:11:59 +08:00
dependabot[bot]
f07a494bde
Bump docker/setup-buildx-action from 3 to 4 ( #681 )
2026-03-13 17:11:13 +08:00