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:
@@ -7,7 +7,7 @@ main { width:min(1180px, calc(100vw - 32px)); margin:0 auto; padding:38px 0 56px
|
||||
.hero-shell { display:grid; grid-template-columns:1.35fr .85fr; gap:22px; align-items:stretch; }
|
||||
.hero-copy, .hero-panel, .command-card, .board-card, .glass-card, .topology { border:1px solid var(--line); background:linear-gradient(145deg, rgba(255,255,255,.14), rgba(255,255,255,.055)); box-shadow:0 24px 90px rgba(0,0,0,.36), inset 0 1px 0 rgba(255,255,255,.12); backdrop-filter: blur(22px) saturate(145%); border-radius:28px; }
|
||||
.hero-copy { padding:34px; overflow:hidden; position:relative; }
|
||||
.hero-copy::after { content:"slhx"; position:absolute; right:-18px; bottom:8px; font-size:86px; font-weight:900; color:rgba(255,255,255,.045); }
|
||||
.hero-copy::after { content:"hemx"; position:absolute; right:-18px; bottom:8px; font-size:86px; font-weight:900; color:rgba(255,255,255,.045); }
|
||||
.eyebrow { color:var(--cyan); text-transform:uppercase; letter-spacing:.2em; font-weight:800; font-size:12px; }
|
||||
h1 { font-size:clamp(42px, 7vw, 84px); line-height:.88; letter-spacing:-.075em; margin:12px 0 18px; max-width:900px; text-wrap:balance; overflow-wrap:anywhere; }
|
||||
h2 { margin:0 0 16px; letter-spacing:-.035em; }
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>slhx Techdemo</title>
|
||||
<script src="/slhx.js" defer></script>
|
||||
<title>hemx Techdemo</title>
|
||||
<script src="/hemx.js" defer></script>
|
||||
<script src="/island.js" defer></script>
|
||||
<link rel="stylesheet" href="/app.css">
|
||||
<link rel="stylesheet" href="/control_center.css">
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<main data-slhx-root="techdemo" data-slhx-sse="/events">
|
||||
<main data-hemx-root="techdemo" data-hemx-sse="/events">
|
||||
<section class="hero-shell">
|
||||
<div class="hero-copy">
|
||||
<p class="eyebrow">slhx Control Plane</p>
|
||||
<p class="eyebrow">hemx Control Plane</p>
|
||||
<h1>A Linear-class work system without a frontend framework.</h1>
|
||||
<p class="lede">Create, inspect, advance, and stream work through native HTML, generated typed resources, and compact update batches. The UI feels app-grade; the model stays server-owned and boring.</p>
|
||||
</div>
|
||||
<div class="hero-panel" data-slhx-slot="hero_metrics">{+= self.hero =+}</div>
|
||||
<div class="hero-panel" data-hemx-slot="hero_metrics">{+= self.hero =+}</div>
|
||||
</section>
|
||||
|
||||
<nav class="topology" data-slhx-slot="nav">
|
||||
<a href="/" data-slhx-nav="">Live system</a>
|
||||
<a href="/architecture" data-slhx-nav="">Architecture</a>
|
||||
<nav class="topology" data-hemx-slot="nav">
|
||||
<a href="/" data-hemx-nav="">Live system</a>
|
||||
<a href="/architecture" data-hemx-nav="">Architecture</a>
|
||||
</nav>
|
||||
|
||||
<section class="workspace">
|
||||
<aside class="command-card">
|
||||
<h2>Create an issue</h2>
|
||||
<form id="launch-work" method="post" data-slhx-handle="launch_work" data-slhx-form="launch_work" data-slhx-disable-while-pending>
|
||||
<form id="launch-work" method="post" data-hemx-handle="launch_work" data-hemx-form="launch_work" data-hemx-disable-while-pending>
|
||||
<label>Title <input name="title" required="required" value="Ship typed updates"></label>
|
||||
<label>Lane
|
||||
<select name="lane" required="required">
|
||||
@@ -26,13 +26,13 @@
|
||||
</select>
|
||||
</label>
|
||||
<label>Impact <input name="impact" type="number" min="1" max="9" value="7"></label>
|
||||
<button class="primary-action" type="button" form="launch-work" data-slhx-handle="launch_work">Create issue</button>
|
||||
<button class="primary-action" type="button" form="launch-work" data-hemx-handle="launch_work">Create issue</button>
|
||||
</form>
|
||||
<div class="quick-actions">
|
||||
<button type="button" data-slhx-handle="simulate_push">Simulate server push</button>
|
||||
<button type="button" data-slhx-handle="reset_demo">Reset demo</button>
|
||||
<button type="button" data-hemx-handle="simulate_push">Simulate server push</button>
|
||||
<button type="button" data-hemx-handle="reset_demo">Reset demo</button>
|
||||
</div>
|
||||
<p data-slhx-slot="notice" class="notice">Every control posts through a generated handle and receives typed updates.</p>
|
||||
<p data-hemx-slot="notice" class="notice">Every control posts through a generated handle and receives typed updates.</p>
|
||||
</aside>
|
||||
|
||||
<section class="board-card">
|
||||
@@ -40,27 +40,27 @@
|
||||
<span>Generated slots + keyed cards</span>
|
||||
<strong>generated resources, no selectors</strong>
|
||||
</div>
|
||||
<div data-slhx-slot="board">{+= self.board =+}</div>
|
||||
<div data-hemx-slot="board">{+= self.board =+}</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section class="insight-grid">
|
||||
<article class="glass-card">
|
||||
<h2>Update inspector</h2>
|
||||
<div data-slhx-slot="inspector" class="inspector-slot">{+= self.inspector =+}</div>
|
||||
<div data-hemx-slot="inspector" class="inspector-slot">{+= self.inspector =+}</div>
|
||||
</article>
|
||||
<article class="glass-card island-card" data-slhx-island="orbit" +data-island-snapshot="self.island_snapshot">
|
||||
<article class="glass-card island-card" data-hemx-island="orbit" +data-island-snapshot="self.island_snapshot">
|
||||
<h2>Opaque island bridge</h2>
|
||||
<canvas width="360" height="180" aria-label="Animated island orbit"></canvas>
|
||||
<p data-island-readout="">Waiting for Rust snapshot…</p>
|
||||
</article>
|
||||
<article class="glass-card">
|
||||
<h2>Activity stream</h2>
|
||||
<div data-slhx-slot="activity">{+= self.activity =+}</div>
|
||||
<div data-hemx-slot="activity">{+= self.activity =+}</div>
|
||||
</article>
|
||||
<article class="glass-card glow">
|
||||
<h2>Server push</h2>
|
||||
<div data-slhx-slot="live_feed" class="live-feed">Waiting for SSE heartbeat…</div>
|
||||
<div data-hemx-slot="live_feed" class="live-feed">Waiting for SSE heartbeat…</div>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Opaque leaf-widget island. slhx talks to it only with native CustomEvent payloads.
|
||||
// Opaque leaf-widget island. hemx talks to it only with native CustomEvent payloads.
|
||||
// req: interop/001 req: examples/001
|
||||
(() => {
|
||||
const roots = new WeakMap();
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
function rootOf(node) {
|
||||
for (let el = node; el; el = el.parentElement) {
|
||||
if (el.hasAttribute && el.hasAttribute("data-slhx-root")) return el;
|
||||
if (el.hasAttribute && el.hasAttribute("data-hemx-root")) return el;
|
||||
}
|
||||
return document.documentElement;
|
||||
}
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
ctx.fillStyle = "#fff";
|
||||
ctx.font = "700 16px system-ui, sans-serif";
|
||||
ctx.fillText("slhx island", 18, 30);
|
||||
ctx.fillText("hemx island", 18, 30);
|
||||
ctx.font = "12px system-ui, sans-serif";
|
||||
ctx.fillStyle = "rgba(255,255,255,.74)";
|
||||
ctx.fillText(`cards ${state.snapshot.cards} · impact ${state.snapshot.impact} · boost ${state.snapshot.power}`, 18, 50);
|
||||
@@ -85,11 +85,11 @@
|
||||
state.snapshot = parseSnapshot(event.detail);
|
||||
island.setAttribute("data-island-snapshot", event.detail);
|
||||
};
|
||||
root.addEventListener("slhx:island-orbit", update);
|
||||
root.addEventListener("hemx:island-orbit", update);
|
||||
|
||||
function tick() {
|
||||
if (!document.contains(island)) {
|
||||
root.removeEventListener("slhx:island-orbit", update);
|
||||
root.removeEventListener("hemx:island-orbit", update);
|
||||
return;
|
||||
}
|
||||
state.frame += 1;
|
||||
@@ -101,7 +101,7 @@
|
||||
|
||||
function scan() {
|
||||
forEachElement(document, (el) => {
|
||||
if (el.hasAttribute("data-slhx-island")) boot(el);
|
||||
if (el.hasAttribute("data-hemx-island")) boot(el);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<ol class="activity">
|
||||
<li>Clicked a real anchor</li>
|
||||
<li>Fetched HTML with X-SLHX-Partial</li>
|
||||
<li>Fetched HTML with X-HEMX-Partial</li>
|
||||
<li>Preserved native fallback semantics</li>
|
||||
</ol>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="lanes">
|
||||
<section class="lane"><h3>hemplate</h3><p>Owns syntax and Surface facts.</p></section>
|
||||
<section class="lane"><h3>slhx-build</h3><p>Generates resources and lowering tables.</p></section>
|
||||
<section class="lane"><h3>hemx-build</h3><p>Generates resources and lowering tables.</p></section>
|
||||
<section class="lane"><h3>runtime</h3><p>Executes compact typed DOM ops.</p></section>
|
||||
</div>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<header><strong>{+ self.title +}</strong><span class="pill">{+ self.stage +}</span></header>
|
||||
<div class="impact"><i +style="self.impact_style"></i></div>
|
||||
<div class="card-actions">
|
||||
<button type="button" data-slhx-handle="spotlight_work" +data-work-id="self.id" name="work_id" +value="self.id">Inspect</button>
|
||||
<button type="button" data-slhx-handle="advance_work" +data-work-id="self.id" name="work_id" +value="self.id">Advance</button>
|
||||
<button type="button" data-slhx-handle="delete_work" +data-work-id="self.id" name="work_id" +value="self.id">Delete</button>
|
||||
<button type="button" data-hemx-handle="spotlight_work" +data-work-id="self.id" name="work_id" +value="self.id">Inspect</button>
|
||||
<button type="button" data-hemx-handle="advance_work" +data-work-id="self.id" name="work_id" +value="self.id">Advance</button>
|
||||
<button type="button" data-hemx-handle="delete_work" +data-work-id="self.id" name="work_id" +value="self.id">Delete</button>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<section +class="self.class" +data-lane="self.lane_id" data-slhx-handle="move_to_lane" data-slhx-on="drop">
|
||||
<section +class="self.class" +data-lane="self.lane_id" data-hemx-handle="move_to_lane" data-hemx-on="drop">
|
||||
<h3>{+ self.title +}</h3>
|
||||
<p>{+ self.description +}</p>
|
||||
<template h-for="card in &self.cards">
|
||||
|
||||
Reference in New Issue
Block a user