From de2352fc0601669d541e168d8ea00cc28e56462d Mon Sep 17 00:00:00 2001 From: eareimu Date: Fri, 17 Jul 2026 23:36:44 +0800 Subject: [PATCH 1/3] feat(dhttp): expose netwatcher feature --- Cargo.toml | 1 + dhttp/Cargo.toml | 3 +++ dhttp/src/lib.rs | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 513cb5c..087dcc8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,6 +43,7 @@ tracing-subscriber = { version = "0.3", default-features = false, features = ["f # identity types with h3x/ddns in the formal release graph. dhttp-identity = "0.3.0-beta.1" dhttp-home = { path = "home", version = "0.5.0-beta.1" } +dquic = { version = "0.7.0-beta.4", default-features = false } ddns = { package = "dyns", version = "0.7.0-beta.2", features = [ "resolvers", "publishers", diff --git a/dhttp/Cargo.toml b/dhttp/Cargo.toml index 46012e3..0ffbe94 100644 --- a/dhttp/Cargo.toml +++ b/dhttp/Cargo.toml @@ -16,6 +16,8 @@ access-http = ["dhttp-access/http"] access-orm = ["dhttp-access/orm"] access-migration = ["access-orm", "dhttp-access/migration"] access-peg-trace = ["dhttp-access/peg-trace"] +# Enables automatic monitoring of local network-interface changes. +netwatcher = ["dquic/netwatcher"] [dependencies] bon = { workspace = true } @@ -32,6 +34,7 @@ dhttp-identity = { workspace = true } dhttp-home = { workspace = true } dhttp-access = { workspace = true } dhttp-log = { workspace = true } +dquic = { workspace = true } ddns = { workspace = true } h3x = { workspace = true } diff --git a/dhttp/src/lib.rs b/dhttp/src/lib.rs index ac130f2..e779bfb 100644 --- a/dhttp/src/lib.rs +++ b/dhttp/src/lib.rs @@ -51,7 +51,7 @@ mod tests { } #[test] - fn facade_declares_access_feature_forwarding() { + fn facade_declares_feature_forwarding() { let manifest = include_str!("../Cargo.toml"); for feature in [ @@ -60,6 +60,7 @@ mod tests { "access-orm = [\"dhttp-access/orm\"]", "access-migration = [\"access-orm\", \"dhttp-access/migration\"]", "access-peg-trace = [\"dhttp-access/peg-trace\"]", + "netwatcher = [\"dquic/netwatcher\"]", ] { assert!( manifest.contains(feature), From 1628bfa437708d1950fa7e4f70d2d56b1bf8ddd1 Mon Sep 17 00:00:00 2001 From: eareimu Date: Fri, 17 Jul 2026 23:37:38 +0800 Subject: [PATCH 2/3] chore: prepare dhttp v0.6.0-beta.5 --- Cargo.toml | 4 ++-- api/package-lock.json | 4 ++-- api/package.json | 2 +- api/tests/package_versions.rs | 24 ++++++++++++++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 api/tests/package_versions.rs diff --git a/Cargo.toml b/Cargo.toml index 087dcc8..7dcf2e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "3" members = ["dhttp", "identity", "home", "api", "access", "log"] [workspace.package] -version = "0.6.0-beta.4" +version = "0.6.0-beta.5" edition = "2024" license = "Apache-2.0" repository = "https://github.com/genmeta/dhttp" @@ -55,6 +55,6 @@ ddns = { package = "dyns", version = "0.7.0-beta.2", features = [ h3x = { version = "0.6.0-beta.4", features = [ "dquic", ] } -dhttp = { path = "dhttp", version = "0.6.0-beta.4" } +dhttp = { path = "dhttp", version = "0.6.0-beta.5" } dhttp-access = { path = "access", version = "0.4.0-beta.2" } dhttp-log = { path = "log", version = "0.1.0-beta.1" } diff --git a/api/package-lock.json b/api/package-lock.json index 4d4c517..3be1460 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -1,12 +1,12 @@ { "name": "@genmeta/dhttp", - "version": "0.6.0-beta.1", + "version": "0.6.0-beta.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@genmeta/dhttp", - "version": "0.6.0-beta.1", + "version": "0.6.0-beta.5", "devDependencies": { "@napi-rs/cli": "^3.3.5" } diff --git a/api/package.json b/api/package.json index dc63cea..10c6b1a 100644 --- a/api/package.json +++ b/api/package.json @@ -1,6 +1,6 @@ { "name": "@genmeta/dhttp", - "version": "0.6.0-beta.4", + "version": "0.6.0-beta.5", "description": "The True Internet", "license": "Apache-2.0", "homepage": "https://dhttp.net/", diff --git a/api/tests/package_versions.rs b/api/tests/package_versions.rs new file mode 100644 index 0000000..0f440d5 --- /dev/null +++ b/api/tests/package_versions.rs @@ -0,0 +1,24 @@ +use std::{fs, path::PathBuf}; + +fn api_dir() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")) +} + +#[test] +fn package_versions_match_cargo_release_version() { + let expected = format!("\"version\": \"{}\"", env!("CARGO_PKG_VERSION")); + let package_json = fs::read_to_string(api_dir().join("package.json")) + .expect("package.json should be readable"); + let package_lock = fs::read_to_string(api_dir().join("package-lock.json")) + .expect("package-lock.json should be readable"); + + assert!( + package_json.contains(&expected), + "package.json should contain {expected}" + ); + assert_eq!( + package_lock.matches(&expected).count(), + 2, + "package-lock.json should align its root package versions with Cargo" + ); +} From 0050ced377a0f0c969db67d6f1c9be6b8ea18a43 Mon Sep 17 00:00:00 2001 From: eareimu Date: Fri, 17 Jul 2026 23:38:33 +0800 Subject: [PATCH 3/3] docs(dhttp): document netwatcher feature --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c69202..bcf1b45 100644 --- a/README.md +++ b/README.md @@ -37,9 +37,18 @@ Add the published crate to your Cargo manifest: ```toml [dependencies] -dhttp = "0.2.0" +dhttp = "0.6.0-beta.5" ``` +Automatic monitoring of local network-interface changes is opt-in: + +```toml +[dependencies] +dhttp = { version = "0.6.0-beta.5", features = ["netwatcher"] } +``` + +The feature activates dquic's interface watcher; it is not part of dhttp's default feature set. + ### Build an endpoint ```rust,no_run