refactor(maestro): flatten web UI to a single host

Session tree nests by working directory only; the daemon chips in the
header become a session tally, and the spawn form loses its host picker.
API calls move from /api/daemons/:id/* to /api/dirs, /api/recent-dirs,
/api/gitroot, and /api/info.
This commit is contained in:
Miguel Palhas
2026-08-22 10:14:10 +01:00
parent 6790f41652
commit 1bb464be4b
14 changed files with 155 additions and 467 deletions
+5 -75
View File
@@ -625,7 +625,7 @@ textarea {
box-shadow: 0 0 0 3px var(--accent-tint);
}
/* ---------- daemon / status bar ---------- */
/* ---------- status bar ---------- */
.statusbar {
display: flex;
@@ -645,28 +645,14 @@ textarea {
min-width: var(--sp-2);
}
.daemons {
display: inline-flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: var(--sp-2);
align-items: center;
min-width: 0;
}
.daemon-chip {
.session-tally {
display: inline-flex;
align-items: center;
gap: 6px;
background: var(--surface-2);
border: 1px solid var(--border);
border-radius: var(--r-pill);
padding: 3px var(--sp-2) 3px var(--sp-2);
font-size: var(--fs-12);
color: var(--ink);
gap: 7px;
font-variant-numeric: tabular-nums;
}
.daemon-chip::before {
.session-tally::before {
content: "";
width: 6px;
height: 6px;
@@ -675,42 +661,6 @@ textarea {
box-shadow: 0 0 5px var(--live-glow);
}
/* Green session count baked into each host chip (replaces the global tally). */
.daemon-count {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 17px;
height: 17px;
padding: 0 5px;
border-radius: var(--r-pill);
font-size: var(--fs-11);
font-weight: 600;
font-variant-numeric: tabular-nums;
color: var(--live);
background: color-mix(in srgb, var(--live) 16%, transparent);
}
.daemon-count.is-empty {
color: var(--muted);
background: var(--surface-2);
}
.daemon-empty {
display: inline-flex;
align-items: center;
gap: 7px;
color: var(--muted);
}
.daemon-empty::before {
content: "";
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--warn);
}
/* ---------- session tree ---------- */
.tree {
@@ -863,16 +813,6 @@ textarea {
gap: var(--sp-2);
}
.leaf-daemon {
color: var(--faint);
flex: 0 0 auto;
}
.leaf-daemon::before {
content: "@";
opacity: 0.6;
}
.leaf-cmd {
color: var(--muted);
overflow: hidden;
@@ -995,11 +935,6 @@ textarea {
margin-top: var(--sp-2);
}
.empty.connecting .empty-glyph {
color: var(--warn);
animation: pulse 1.6s var(--ease-out) infinite;
}
/* ---------- attach view ---------- */
.attach {
@@ -1803,14 +1738,9 @@ textarea {
max-width: none;
order: -1;
}
/* daemons drop to their own full-width wrapped line; no side overflow */
.statusbar .spacer {
display: none;
}
.daemons {
flex: 1 1 100%;
justify-content: flex-start;
}
.tree-leaf .leaf-actions {
opacity: 1;
}