-
DcRouter v32.2.0
StableRelease / build-and-release (push) Successful in 18m43sreleased this
2026-09-23 00:26:48 +00:00 | 37 commits to main since this release2026-09-23 - 32.2.0
Features
- Add
@serve.zone/dcrouter-apiclient, a package that carries the client half of dcrouter, the API client and the shared contracts, without the server. This release defines the package; publishing it is a separate step, described in the last point below.ts_apiclient/tspublish.jsonnow names the package and ownsts_interfacesthroughfolders, exporting the client at.and the contracts at./interfaces;ts_interfaceskeeps its build order and is still compiled first. A consumer that only calls the OpsServer API —gitzone testing, custom CLIs, integration suites, anything that speaks/typedrequest— declares 8 dependencies instead of the runtime package's 48, and resolves a production closure of 184 packages instead of 579. Gone from that closure: the nativeargon2build,mongodb,@lossless.org/client,@design.estate/dees-catalog,@push.rocks/smartdataand@push.rocks/smartbucket.@serve.zone/dcrouterkeeps its./interfacesand./apiclientsubpath exports unchanged, so existing consumers migrate when it suits them.- The two folders ship as one package rather than two, because
@git.zone/tspublishrequires sibling packages to import each other through their published names. That bare specifier would land indist_ts_apiclient/*.d.ts, which the runtime package also ships, and would force@serve.zone/dcrouterto declare a same-version dependency on a package cut from the same release. Owningts_interfacesthroughfolderskeeps the existing relative import valid inside the published tarball and leaves the runtime package's exports self-contained. - What the new package does not shed:
@push.rocks/smartproxy,@push.rocks/smartmtaand@push.rocks/smartnetworkstay runtime dependencies, because contract members are typed against them (IRouteConfig,IUnifiedEmailServerOptions,IIpIntelligenceResult, andIRouteChallengeConfigfrom@push.rocks/smartchallenge; the gateway contracts come from@serve.zone/interfaces). A type-only import still has to resolve for a consumer's type check, so the three Rust payloads — each tarball carrying both the amd64 and the arm64 binary — are installed exactly as before, and so is@push.rocks/smartlog3.2.2, reachable through@api.global/typedsocket,@push.rocks/smartmta,@push.rocks/smartproxyand@serve.zone/interfacesalike. The 1.1 MB figure this package is worth quoting is its own packed payload, not its install footprint. - Because
@push.rocks/smartmtadeclaresos: ["linux"]andcpu: ["x64", "arm64"], the new package installs on Linux x64 and arm64 only, exactly like@serve.zone/dcrouteritself. The readmes say so at the install step. This is not a dcrouter-side choice and no dcrouter change lifts it: it goes away when@push.rocks/smartproxy,@push.rocks/smartmtaand@push.rocks/smartnetworkmove their Rust payloads into per-platform optional packages. pnpm run publish:packagesrunstspublishover the repository after a release and publishes the package at the released version;@git.zone/tspublishis a dev dependency so the descriptor can also be planned and prepared locally.gitzone releasekeeps publishing the runtime package and qualifying the Docker images unchanged — it cannot carry a tspublish module and a Docker target in the same release.
- The two folders ship as one package rather than two, because
Maintenance
- Build, test and release tooling on its current line: pnpm 12.4.2,
@git.zone/tsbuild4.5.1,@git.zone/tsbundle2.14.0,@git.zone/tsdocker3.8.1 and@git.zone/tstest6.1.4. tsbundle 2.14.0 bundles the web UI with dcrouter's own tsconfig instead of the packaged one; the lockfile keeps one copy of each tool. - Git and the Docker build context ignore
.envand.env.*files, so a local environment file cannot reach a commit or an image.
Downloads
- Add