refactor!: rename slhx to hemx

Rename the tracked product identity, crate/package names, Rust paths/macros, generated artifacts, runtime files, public attributes, examples, docs, requirements, and tests from slhx to hemx without compatibility shims.

Verified with cargo run -p hemx-xtask -- test, cargo test -p hemx-derive --test compile_fail, cargo test -p hemx-js, cargo test -p hemx-axum, cargo test -p hemx-v0-examples, cargo check --workspace, redgate list, redgate refs, redgate health --strict, git diff --check, and git grep/ls-files legacy-name audits.

req: misc/001

req: codegen/001

req: component/004

req: runtime/001
This commit is contained in:
slhx agent
2026-06-05 06:52:37 +02:00
parent d4e865ef92
commit c33500440e
69 changed files with 1415 additions and 1415 deletions
+6 -6
View File
@@ -1,4 +1,4 @@
#[slhx::surface]
#[hemx::surface]
pub mod ui {}
#[cfg(test)]
@@ -7,8 +7,8 @@ mod tests {
use super::ui::issue_card::advance_work;
use super::ui::issue_lane::events as lane_events;
use hemplate::Hemplate;
use slhx::IntoEffect;
use slhx_test::inspect;
use hemx::IntoEffect;
use hemx_test::inspect;
#[derive(Hemplate)]
#[hemplate = "partials"]
@@ -18,7 +18,7 @@ mod tests {
#[allow(dead_code)]
#[derive(Clone, Debug)]
#[slhx::form("launch_work")]
#[hemx::form("launch_work")]
struct LaunchWork {
title: String,
lane: String,
@@ -43,8 +43,8 @@ mod tests {
// req: examples/001 req: form/001 req: form/004 req: form/006 req: derive_handler/003
#[test]
fn techdemo_form_handler_is_checked_against_hemplate_form() {
#[slhx::handler]
fn launch_work(_form: slhx::Form<LaunchWork>) -> impl IntoEffect {
#[hemx::handler]
fn launch_work(_form: hemx::Form<LaunchWork>) -> impl IntoEffect {
notice.text("queued")
}
+16 -16
View File
@@ -5,14 +5,14 @@ use axum::routing::get;
use axum::Router;
use futures_util::{stream, StreamExt};
use hemplate::Hemplate;
use slhx::{CssClass, CssClasses, EventName, Html, IntoEffect};
use slhx_axum::{
use hemx::{CssClass, CssClasses, EventName, Html, IntoEffect};
use hemx_axum::{
interactions, runtime_js, sse, DispatchRegistry, DispatchRejection, EffectResponse,
InteractionRequest, PageRequest,
};
use slhx_techdemo::ui;
use slhx_techdemo::ui::control_center::{self as control, classes};
use slhx_techdemo::ui::{issue_card as card_control, issue_lane as lane_control};
use hemx_techdemo::ui;
use hemx_techdemo::ui::control_center::{self as control, classes};
use hemx_techdemo::ui::{issue_card as card_control, issue_lane as lane_control};
use std::collections::{BTreeMap, VecDeque};
use std::convert::Infallible;
use std::net::SocketAddr;
@@ -24,7 +24,7 @@ const LANES: [(&str, &str, &str); 3] = [
("runtime", "Runtime", "typed updates → DOM"),
("product", "Product", "Native UX, zero app JS"),
];
const ISLAND_ORBIT: EventName = EventName::new("slhx:island-orbit");
const ISLAND_ORBIT: EventName = EventName::new("hemx:island-orbit");
#[derive(Clone)]
struct WorkItem {
@@ -226,18 +226,18 @@ async fn main() {
.route("/architecture", get(architecture))
.route("/events", get(events))
.route("/favicon.ico", get(favicon))
.route("/slhx.js", get(runtime))
.route("/hemx.js", get(runtime))
.route("/app.css", get(app_css))
.route("/control_center.css", get(control_center_css))
.route("/island.js", get(island_js))
.with_state(state);
let addr = std::env::var("SLHX_TECHDEMO_ADDR")
let addr = std::env::var("HEMX_TECHDEMO_ADDR")
.ok()
.and_then(|addr| addr.parse().ok())
.unwrap_or_else(|| SocketAddr::from(([127, 0, 0, 1], 3002)));
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
println!("slhx techdemo: http://{addr}");
println!("hemx techdemo: http://{addr}");
axum::serve(listener, app).await.unwrap();
}
@@ -246,7 +246,7 @@ async fn home(State(state): State<Arc<Shared>>, request: PageRequest) -> impl In
let demo = state.demo.lock().unwrap().clone();
request
.page_html(page_html(&demo), shell)
.title("slhx Techdemo")
.title("hemx Techdemo")
.fingerprint(ui::BUILD_FINGERPRINT)
}
@@ -261,7 +261,7 @@ async fn architecture(request: PageRequest) -> impl IntoResponse {
});
request
.page_html(body, shell)
.title("slhx Architecture")
.title("hemx Architecture")
.fingerprint(ui::BUILD_FINGERPRINT)
}
@@ -659,11 +659,11 @@ mod tests {
.select(&selector("title"))
.next()
.map(|title| title.text().collect::<String>()),
Some("slhx Techdemo".to_owned())
Some("hemx Techdemo".to_owned())
);
assert_eq!(
document
.select(&selector("script[src=\"/slhx.js\"]"))
.select(&selector("script[src=\"/hemx.js\"]"))
.count(),
1
);
@@ -687,7 +687,7 @@ mod tests {
);
assert_eq!(
document
.select(&selector("main[data-slhx-root=\"techdemo\"]"))
.select(&selector("main[data-hemx-root=\"techdemo\"]"))
.count(),
1
);
@@ -706,7 +706,7 @@ mod tests {
let document = Html::parse_fragment(html.as_str());
assert_eq!(
document
.select(&selector("[data-slhx-root=\"techdemo\"]"))
.select(&selector("[data-hemx-root=\"techdemo\"]"))
.count(),
1
);
@@ -853,7 +853,7 @@ mod tests {
assert_eq!(items.len(), 3);
assert_eq!(
items[1].text().collect::<String>(),
"Fetched HTML with X-SLHX-Partial"
"Fetched HTML with X-HEMX-Partial"
);
}