diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml
index d59050a9..a6429aeb 100644
--- a/.github/workflows/mirror.yml
+++ b/.github/workflows/mirror.yml
@@ -36,7 +36,7 @@ jobs:
echo "::error::GITEE_TOKEN secret is missing"; exit 1
fi
git remote remove gitee 2>/dev/null || true
- git remote add gitee "https://eastspire:${GITEE_TOKEN}@gitee.com/eastspire/${REPO_NAME}.git"
+ git remote add gitee "https://vshengbro:${GITEE_TOKEN}@gitee.com/vshengbro/${REPO_NAME}.git"
attempt=0
max_retries=8
while [ $attempt -le $max_retries ]; do
@@ -65,7 +65,7 @@ jobs:
echo "::error::GITCODE_TOKEN secret is missing"; exit 1
fi
git remote remove gitcode 2>/dev/null || true
- git remote add gitcode "https://oauth2:${GITCODE_TOKEN}@gitcode.com/eastspire/${REPO_NAME}.git"
+ git remote add gitcode "https://oauth2:${GITCODE_TOKEN}@gitcode.com/vshengbro/${REPO_NAME}.git"
attempt=0
max_retries=8
while [ $attempt -le $max_retries ]; do
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index 321f3d0a..7a9dfc45 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -159,7 +159,7 @@ jobs:
- name: Configure git
if: steps.check_branch.outputs.skip == 'false'
run: |
- git config user.name "eastspire"
+ git config user.name "vshengbro"
git config user.email "root@ltpp.vip"
- name: Sync workspace versions
if: steps.check_branch.outputs.skip == 'false'
diff --git a/Cargo.toml b/Cargo.toml
index 5ece623f..ca2beaf9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ categories = ["network-programming", "web-programming"]
exclude.workspace = true
[workspace.package]
-version = "0.28.9"
+version = "0.28.12"
readme = "README.md"
edition = "2024"
authors = ["root@ltpp.vip"]
@@ -38,13 +38,13 @@ resolver = "3"
crate-type = ["rlib"]
[workspace.dependencies]
-euv = { path = ".", version = "0.28.9" }
-euv-ui = { path = "ui", version = "0.28.9" }
-euv-cli = { path = "cli", version = "0.28.9" }
-euv-core = { path = "core", version = "0.28.9" }
-euv-engine = { path = "engine", version = "0.28.9" }
-euv-macros = { path = "macros", version = "0.28.9" }
-euv-example = { path = "example", version = "0.28.9" }
+euv = { path = ".", version = "0.28.10" }
+euv-ui = { path = "ui", version = "0.28.10" }
+euv-cli = { path = "cli", version = "0.28.10" }
+euv-core = { path = "core", version = "0.28.10" }
+euv-engine = { path = "engine", version = "0.28.10" }
+euv-macros = { path = "macros", version = "0.28.10" }
+euv-example = { path = "example", version = "0.28.10" }
log = "0.4.33"
toml = "0.9.12"
@@ -53,15 +53,15 @@ chrono = "0.4.45"
ignore = "0.4.31"
js-sys = "0.3.103"
if-addrs = "0.15.0"
-hyperlane = "21.9.1"
serde_json = "1.0.151"
color-output = "10.2.2"
proc-macro2 = "1.0.107"
-hyperlane-cli = "21.9.1"
+hyperlane-cli = "21.9.0"
lombok-macros = "10.2.2"
wasm-bindgen = "0.2.126"
alloc-no-stdlib = "3.0.0"
compare_version = "10.2.2"
+hyperlane-core = "=21.9.0"
bin-encode-decode = "1.2.6"
serde-wasm-bindgen = "0.6.5"
wasm-bindgen-test = "0.3.76"
@@ -82,6 +82,9 @@ tokio = { version = "1.53.1", features = [
"process",
"rt-multi-thread",
] }
+hyperlane = "21.9.0"
+# hyperlane-core 21.11.0 changed Server::route to take two generic
+# arguments; pin the transitive dependency until euv-cli migrates.
web-sys = { version = "0.3.103", features = [
"Gpu",
"Blob",
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 0f965479..abe14afd 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -31,3 +31,8 @@ proc-macro2 = { workspace = true }
color-output = { workspace = true }
hyperlane-cli = { workspace = true }
lombok-macros = { workspace = true }
+hyperlane-core = { workspace = true }
+
+[dev-dependencies]
+clap = { workspace = true }
+tokio = { workspace = true }
diff --git a/cli/src/build/const.rs b/cli/src/build/const.rs
index 1616bbaf..d8a16551 100644
--- a/cli/src/build/const.rs
+++ b/cli/src/build/const.rs
@@ -1,12 +1,22 @@
+/// The default output subdirectory name for wasm-pack artifacts.
+pub(crate) const PKG_DIR_NAME: &str = "pkg";
+
+/// The index HTML file name.
+pub(crate) const INDEX_HTML_FILE_NAME: &str = "index.html";
+
+/// The hyphen character used when normalizing crate names to wasm-pack's
+/// underscore output convention.
+pub(crate) const STR_HYPHEN: &str = "-";
+
/// Placeholder token used in HTML templates for the JS import path.
///
/// Replaced at runtime with the resolved import path relative to the www directory.
-pub const IMPORT_PATH_PLACEHOLDER: &str = "__IMPORT_PATH__";
+pub(crate) const IMPORT_PATH_PLACEHOLDER: &str = "__IMPORT_PATH__";
/// Placeholder token used in HTML templates for the reload endpoint URL.
///
/// Replaced at runtime with the actual reload route path.
-pub const RELOAD_ROUTE_PLACEHOLDER: &str = "__RELOAD_ROUTE__";
+pub(crate) const RELOAD_ROUTE_PLACEHOLDER: &str = "__RELOAD_ROUTE__";
/// Placeholder token used in HTML templates for the inlined wasm-bindgen JS bridge.
///
@@ -15,7 +25,7 @@ pub const RELOAD_ROUTE_PLACEHOLDER: &str = "__RELOAD_ROUTE__";
/// wrapped in a synchronous IIFE that fetches the wasm module and calls
/// `main()`. This eliminates the separate HTTP request for the JS bridge file
/// and skips ES module graph parsing on the critical path.
-pub const INLINE_JS_PLACEHOLDER: &str = "__EUV_INLINE_JS__";
+pub(crate) const INLINE_JS_PLACEHOLDER: &str = "__EUV_INLINE_JS__";
/// Placeholder token used in HTML templates for the `` tag.
///
@@ -25,104 +35,91 @@ pub const INLINE_JS_PLACEHOLDER: &str = "__EUV_INLINE_JS__";
/// resource the HTML references — against the euv serving root rather
/// than the page URL. This makes the dev server robust to users landing
/// on `http://host:port/` instead of `http://host:port/www/`.
-pub const BASE_HREF_PLACEHOLDER: &str = "__EUV_BASE_HREF_TAG__";
+pub(crate) const BASE_HREF_PLACEHOLDER: &str = "__EUV_BASE_HREF_TAG__";
/// Environment variable to disable JS bridge inlining and fall back to the
/// classic `