@intentius/behold 0.29.9 → 0.29.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -21775,6 +21775,7 @@ function watchSource(projectDir, onChange, debounceMs = 200) {
21775
21775
  clearTimeout(timer);
21776
21776
  timer = setTimeout(onChange, debounceMs);
21777
21777
  });
21778
+ watcher.on("error", (e) => console.warn(`behold: watching ${dir}: ${e.message}`));
21778
21779
  return () => {
21779
21780
  clearTimeout(timer);
21780
21781
  watcher.close();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/behold",
3
- "version": "0.29.9",
3
+ "version": "0.29.10",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "description": "behold — a live control plane on chant. See your whole estate (every substrate in one graph), coloured by drift; act through delegated, gated Ops.",
package/web/kiosk.html CHANGED
@@ -137,6 +137,7 @@
137
137
  .k-box.k-more-below { -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 1.3em), transparent); mask-image: linear-gradient(to bottom, #000 calc(100% - 1.3em), transparent); }
138
138
  .k-box.k-more-above { -webkit-mask-image: linear-gradient(to top, #000 calc(100% - 1.3em), transparent); mask-image: linear-gradient(to top, #000 calc(100% - 1.3em), transparent); }
139
139
  .k-box.k-more-above.k-more-below { -webkit-mask-image: linear-gradient(to bottom, transparent, #000 1.3em, #000 calc(100% - 1.3em), transparent); mask-image: linear-gradient(to bottom, transparent, #000 1.3em, #000 calc(100% - 1.3em), transparent); }
140
+ .k-box-empty { background: transparent; }
140
141
  .k-box-title { background: transparent; padding: 0.1em 0.1em 0; overflow: hidden; }
141
142
  /* behold#571: between scenarios the card's box carries what the demo is about. */
142
143
  .k-intro { margin: 0; font-size: 1.12em; line-height: 1.4; color: var(--fg); }
@@ -217,6 +218,8 @@
217
218
  border-radius: 8px; box-shadow: 0 6px 24px color-mix(in srgb, var(--shadow) 70%, transparent); font-size: 1.15em; line-height: 1.45; }
218
219
  #k-what-pop[hidden] { display: none; }
219
220
  #k-what-pop p { margin: 0; }
221
+ #k-what-pop .k-what-more { margin-top: 0.5em; }
222
+ #k-what-pop a { color: var(--focus); }
220
223
  .k-menu summary { cursor: pointer; color: var(--muted); list-style: none; }
221
224
  .k-menu summary::-webkit-details-marker { display: none; }
222
225
  .k-menu summary::after { content: " ▾"; }
package/web/kiosk.js CHANGED
@@ -584,6 +584,8 @@ function drawBar(bar, s, now, foot) {
584
584
  if (panel.note) holdBox.appendChild(elRoots("p", "k-note", panel.note, s));
585
585
  else if (panel.stage === "pull-request") for (const u of unreviewedLines(s.answer)) holdBox.appendChild(elRoots("p", "k-note k-unknown", u, s));
586
586
  }
587
+ // behold#571: render what's present: an empty hold keeps its place (nothing moves when one comes) but draws no box.
588
+ if (!holdBox.children.length) holdBox.className += " k-box-empty";
587
589
  right.appendChild(holdBox);
588
590
  bar.appendChild(right);
589
591
 
@@ -691,8 +693,9 @@ export const LEDGER_POLL_MS = 10_000;
691
693
  /** behold#571: the approval panel's words for the approval the driver gives next, over its command. */
692
694
  export const DRIVER_SIGNS = "Next the driver plays a reviewer with no hand in the change and signs this plan with that reviewer's key:";
693
695
 
694
- /** behold#571: "What is this?" before demo.json says. */
695
- export const WHAT_FALLBACK = "A demo that runs a real infrastructure change through its pipeline in a loop, and shows each step as it happens.";
696
+ /** behold#571: "What is this?" says what behold is; the demo's own intro stays on the card between scenarios. */
697
+ export const WHAT_TEXT = "This is behold, a live view of infrastructure. It draws the setup as a graph and shows its pipeline runs, their logs and the approvals they wait for, as they happen. Here it watches a demo pipeline that runs one change through several Terraform states in a loop.";
698
+ export const WHAT_DOCS = { text: "behold's documentation", url: "https://intentius.io/behold/" };
696
699
 
697
700
  /** behold#571: a fade at a box's edge where its text goes on past it. */
698
701
  function fade(b) {
@@ -959,14 +962,16 @@ export function startKiosk({ bar, frame, foot, side, main, views, tools = null }
959
962
  };
960
963
  if (tools && tools.runsToggle) tools.runsToggle.addEventListener("click", () => setRunsOpen(!document.body.classList.contains("k-runs-open")));
961
964
 
962
- // behold#571: "What is this?" opens the intro over the page (no layout moves); a click elsewhere or Escape closes it.
965
+ // behold#571: "What is this?" opens what behold is over the page (no layout moves); a click elsewhere or Escape closes it.
963
966
  const whatText = () => {
964
- if (!tools || !tools.pop) return;
965
- const d = s.demo && s.demo.demo;
966
- const text = (d && introText(d)) || WHAT_FALLBACK;
967
- const p = tools.pop.firstElementChild;
968
- if (p && p.textContent === text) return;
969
- tools.pop.replaceChildren(el("p", null, text));
967
+ if (!tools || !tools.pop || tools.pop.firstElementChild) return;
968
+ const docs = el("a", null, WHAT_DOCS.text);
969
+ docs.href = WHAT_DOCS.url;
970
+ docs.target = "_blank";
971
+ docs.rel = "noopener";
972
+ const more = el("p", "k-what-more");
973
+ more.append(docs);
974
+ tools.pop.replaceChildren(el("p", null, WHAT_TEXT), more);
970
975
  };
971
976
  if (tools && tools.what && tools.pop) {
972
977
  const setWhat = (open) => {