feat: ship HTTP dashboard and harden daemon/API flows

Add the static HTTP dashboard example and wire in the recent daemon/API polish:
CORS-aware API routing, service-install behavior cleanup, safer systemd unit
ExecStart quoting, and friendly-name validation for path-safe targeting.

Also refresh README/API/roadmap docs, remove the temporary claude observations
file, and include the related tests for API/status and daemon validation.
This commit is contained in:
44r0n7
2026-04-18 16:45:12 -04:00
parent 795aa2f713
commit 000d97fdeb
16 changed files with 998 additions and 726 deletions
+120
View File
@@ -0,0 +1,120 @@
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: "IBM Plex Sans", "Segoe UI", sans-serif;
background: linear-gradient(180deg, #eef4ff 0%, #f8fbff 100%);
color: #1b2a41;
}
header {
padding: 1.2rem 1.4rem;
background: #0b3954;
color: #f3f7fb;
}
h1 {
margin: 0 0 0.4rem 0;
font-size: 1.4rem;
}
main {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 0.8rem;
padding: 0.8rem;
}
.panel {
background: #ffffff;
border: 1px solid #c6d6eb;
border-radius: 10px;
padding: 0.8rem;
box-shadow: 0 2px 8px rgba(15, 35, 55, 0.06);
}
.panel-wide {
grid-column: 1 / -1;
}
.panel-wide:nth-last-of-type(2) {
order: 100;
}
.panel-wide:last-of-type {
order: 101;
}
.panel h2 {
margin-top: 0;
font-size: 1rem;
}
label {
display: block;
margin: 0.4rem 0;
font-size: 0.9rem;
}
input,
select,
button {
width: 100%;
margin-top: 0.25rem;
border: 1px solid #9db3cf;
border-radius: 6px;
font-size: 0.9rem;
}
input,
select {
padding: 0.45rem;
background: #fbfdff;
}
button {
padding: 0.55rem;
cursor: pointer;
background: #1d6fa5;
color: #ffffff;
font-weight: 600;
}
button.warn {
background: #af6d1d;
}
button.danger {
background: #a12626;
}
.row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 0.45rem;
margin-top: 0.5rem;
}
.hint {
font-size: 0.8rem;
color: #425b7a;
}
textarea[readonly] {
width: 100%;
min-height: 220px;
max-height: 70vh;
resize: both;
overflow: auto;
margin: 0;
padding: 0.6rem;
border: 1px solid #2f4b66;
border-radius: 6px;
background: #0f1720;
color: #d9ecff;
font-size: 0.8rem;
font-family: "IBM Plex Mono", "Cascadia Code", monospace;
white-space: pre;
}