Skip to content

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:10
· 10 commits to main since this release

MirrorProxy v1.7.0

MirrorProxy v1.7.0 delivers a rebuilt Web console, an instance-bound AI Agent
setup workflow, and an opt-in authenticated download channel. Existing package
and source proxy routes remain available.

Highlights

Native Ant Design Pro administration and a refined public portal

  • Administration now uses Umi 4, Ant Design 6 and native Pro layout, forms,
    cards, statistics and tables. User summaries and audit records are paginated;
    user management actions expand from their table row.
  • Improve mirror health statistics, IP database status and rule forms, SMTP and
    invitation actions, third-party login policy notices, security forms and
    advanced configuration. Make help text readable and keep card spacing,
    checkbox sizes, icon alignment and keyboard focus consistent.
  • Add a password-change entry to the administrator avatar menu. The home action
    opens the public site in a separate tab. Keep one sign-out entry and its
    existing confirmation. Footers follow content and reach the viewport bottom
    on short pages without covering the interface.
  • Public home, login, invitation registration and account pages use a separately
    scoped Apple-style theme. Align homepage sections on a common responsive
    wide-screen grid; refine source cards, configuration dialogs and copy feedback.
  • Highlight copyable Shell/PowerShell commands. Present installation platforms
    in one column and provide a one-line PowerShell installer command without
    changing the execution policy. Introduce the supplied browser, touch and
    maskable app icons while retaining custom site icons and /favicon.svg.
  • Preserve Chinese/English UI, light/dark themes, browser session handling,
    invitations, quotas and existing public/admin route contracts.

One-command client, Skill and MCP setup

  • Add mirrorproxy setup --base-url https://YOUR-INSTANCE for Codex, Claude Code
    and Cursor. The wizard asks for installation scope, strongly recommends the
    current user's global scope by default, and supports selecting multiple Agents.
  • Generate an instance-bound Skill and native MCP stdio configuration, verify
    the live client/MCP handshake and instance catalog, and preserve unmanaged
    configuration through the existing merge, backup and rollback protections.
  • Add mirrorproxy mcp discovery tools and mirrorproxy agent JSON queries for
    enabled sources, adapters and public policy. Discovery remains bounded and
    read-only; this does not create an unrestricted forward proxy.
  • The Web console serves matching /install.sh and /install.ps1 installers.
    They download stable release assets, verify their checksum and check for
    setup support before replacing an existing client. The existing-client setup
    command remains available. Restart the Agent after configuration and retain
    its normal workspace trust and MCP approval checks.
  • Handle Windows CRLF Skill templates correctly and report invalid embedded
    templates without panicking.

Opt-in authenticated public HTTPS downloads

  • Add a separate download channel with explicit user/group grants and scoped,
    revocable download-only tokens. It is disabled by default and does not
    grant administration access, forward browser credentials, upload artifacts,
    or reuse shared package caches/configurable mirror-upstream proxies.
  • Validate public HTTPS targets, pin approved DNS resolutions, enforce redirect
    checks and domain blocks, and retain TLS verification and SSRF protections.
    Apply per-file/per-day limits, existing global/user/group monthly quotas,
    per-chunk accounting, rate limits, deadlines and concurrency controls.
  • Add domain/entry-host statistics, blocking and active-download cancellation,
    plus client/MCP integration. Keep download credentials local: never place
    tokens in Skill files or send them to an Agent.
  • New unsaved policy defaults: 10 GiB/file, 20 GiB/user/day (UTC), 16 concurrent
    instance downloads, 5 per user, 300 requests/user/minute, a 1800-second deadline
    and shared 100 MiB/s output bandwidth. Explicitly saved policies are preserved.
  • Billing-group quotas retain their existing semantics: leave blank for unlimited;
    0 is a zero-byte allowance, not unlimited.

Security and dependency maintenance

  • Update Vitest and @vitest/mocker to 5.0.5, including fixes for
    manual mock-registration code injection
    and Windows redirect-allowlist traversal.
    These are development tools, not a new server endpoint.
  • Update Tokio to 1.53.3 for the
    AsyncFd I/O safety advisory.
    This is a targeted runtime patch; it does not add an advisory exception.
  • Use Umi core instead of the unused Max lint/DVA/legacy internationalization
    bundle. Keep Ant Design Pro components and existing application providers.
    Replace deprecated SVG, TypeScript runner, coverage and cleanup dependency
    chains with maintained versions and real API compatibility tests.
  • Reduce clean-install deprecated-package warnings from 20 to 3. Remaining
    upstream development-tool dependencies are @stagewise/toolbar,
    @floating-ui/react-dom-interactions and node-domexception; their warnings
    remain visible. npm audit reports no findings for the locked frontend tree.
  • Preserve authentication, authorization, audience-specific cookie/CSRF checks,
    Argon2 password hashing, TLS verification, path/symlink protection, rate limits,
    quotas and audit controls. No security alert is manually dismissed.
  • Retain the documented verification-only RustSec exceptions for
    RUSTSEC-2023-0071 and RUSTSEC-2026-0387: the OIDC paths use public-key verification,
    not the affected private-key/secret-integer operations. Other advisories remain
    blocking. See SECURITY.md.

Build and test reliability

  • ./build.sh reuses dependencies and frontend output only when their input
    fingerprints and output digests agree. Changed, missing or unexpected outputs
    invalidate the cache. GeoIP checksums and locked Cargo builds still run; server
    and client build together. Use ./build.sh --force to refresh dependencies and
    frontend output, or explicitly set BUILD_TIME in release automation.
  • Keep native build timestamps and binary hashes stable for unchanged local
    inputs. Stage timings make network/install, frontend and Rust costs observable.
    The measured one-second warm rebuild is a local cached result, not a promise
    about first builds or all machines.
  • Isolate Windows download test directories with an atomic sequence in addition
    to timestamps. A deterministic identical-clock-tick regression ensures that
    one fixture cannot delete another fixture's output. Existing output-file,
    digest, symlink and credential protections are retained.

Upgrade, verification and rollback

  • Upgrade the server and client together to use the one-command setup workflow.
    Preserve TOML configuration, SQLite data, cache, GeoIP databases and any
    encryption master key. Publishing this release does not replace a running
    production installation.
  • The first server start applies the additive SQLite schema-5 controlled-
    download migration. Existing users, proxy configuration and usage data are
    retained. Before upgrading, make a recoverable database/configuration backup.
  • For rollback to v1.6.0, stop the service and restore the pre-upgrade database
    and compatible configuration with the previous binary. Do not assume an older
    binary understands schema 5 or new runtime settings. Agent/client setup has
    separate recorded rollback; preserve those records for client rollback.
  • Verify release archives against SHA256SUMS, unpack them and check --version.
    For an installed server, verify /healthz, /version, actual package payloads
    and the changed Web/CLI paths. A successful HTTP status alone is not complete
    protocol acceptance.
  • Existing ecosystem limitations remain. Docker registry-mirrors applies to
    Docker Hub; other OCI registries require explicit image-host rewriting. The
    source catalog is not proof that every distribution/version/architecture has
    been tested in an authentic environment.

Validation and distribution

Local acceptance covers frontend unit tests, toolchain API and build-cache
contracts, Chromium behavior in both languages/themes and responsive layouts,
locked all-feature Rust tests, strict Clippy/formatting, dependency audits,
real administration API/session/CSRF and HTTP/HTTPS browser smoke, and native
server/client builds. CI and CodeQL are required for the exact version commit
before the annotated stable tag is published. Platform release jobs build Linux,
macOS and Windows clients plus Linux server archives/native packages.

After publication, verify the Release name/tag/latest state, curated notes,
checksums, required assets and representative unpacked client/server versions.
APT, Homebrew, Scoop and WinGet distribution metadata follow the existing release
pipeline. Optional WinGet submission requires its existing automation setting.
Docker build/signing is independent and may still run after native assets are
ready; its status is reported separately.

Container packaging follow-up

The initial tag-triggered Docker job failed because the Rust build stage did not
copy the two embedded installer scripts. Native release archives and the running
server are unaffected. A packaging-only follow-up on main adds these inputs and
a build-context regression check; the published v1.7.0 tag remains immutable.
When building containers from source, use the corrected
Dockerfile on main.
The repaired image publication is tracked separately from this native release.

Full comparison: v1.6.0...v1.7.0