@enigmax/dashboard 0.1.49 → 0.1.50

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/assets/index.html CHANGED
@@ -247,6 +247,7 @@
247
247
  .achip { display: inline-flex; align-items: center; justify-content: center; padding: 5px 8px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface2); color: var(--muted); cursor: pointer; text-decoration: none; transition: color .15s, background .15s, border-color .15s; }
248
248
  .achip:hover { border-color: #2f3744; color: var(--text); }
249
249
  .achip.on { background: var(--good); color: #06210f; border-color: var(--good); }
250
+ .achip:disabled { opacity: .35; cursor: not-allowed; }
250
251
  .achip svg { width: 14px; height: 14px; display: block; }
251
252
  /* Inline app icons in the "where deployed" tag (static, name in tooltip). */
252
253
  .aicons { display: inline-flex; gap: 5px; align-items: center; vertical-align: middle; margin-left: 6px; }
@@ -2787,9 +2788,13 @@ export {
2787
2788
  // Project scope: same row, but the per-app chips toggle deployment INTO this project
2788
2789
  // (data-pskill, handled by the scope delegate) and the global-only controls are hidden.
2789
2790
  if (skillScope === "project") {
2790
- const chips = (s.agentStates || []).map((a) =>
2791
- '<button type="button" class="achip' + (a.deployed ? " on" : "") + '" data-pskill="' + esc(s.name) + '" data-pagent="' + esc(a.name) + '" data-poff="' + (a.deployed ? 1 : 0) + '" aria-label="' + esc(a.label) + '" title="'
2792
- + (a.deployed ? esc(a.label) + " - deployed, click to remove" : esc(a.label) + " - not deployed, click to deploy") + '">' + (agentSvg(a.name) || esc(a.label)) + "</button>").join("");
2791
+ const chips = (s.agentStates || []).map((a) => {
2792
+ // An app that is not installed on this machine can't be a deploy target - show
2793
+ // its chip disabled rather than letting a click create a dir for an unused agent.
2794
+ if (a.installed === false) return '<button type="button" class="achip" disabled aria-label="' + esc(a.label) + '" title="' + esc(a.label) + ' - not installed">' + (agentSvg(a.name) || esc(a.label)) + "</button>";
2795
+ return '<button type="button" class="achip' + (a.deployed ? " on" : "") + '" data-pskill="' + esc(s.name) + '" data-pagent="' + esc(a.name) + '" data-poff="' + (a.deployed ? 1 : 0) + '" aria-label="' + esc(a.label) + '" title="'
2796
+ + (a.deployed ? esc(a.label) + " - deployed, click to remove" : esc(a.label) + " - not deployed, click to deploy") + '">' + (agentSvg(a.name) || esc(a.label)) + "</button>";
2797
+ }).join("");
2793
2798
  return '<div class="set-row"><div class="set-meta"><div class="set-name">' + esc(s.name) + ver + "</div>"
2794
2799
  + '<div class="set-hint">' + esc(s.description || "") + "</div>"
2795
2800
  + '<div class="set-agents">' + (chips || '<span class="tag">no agents</span>') + "</div></div></div>";
@@ -3376,7 +3381,7 @@ export {
3376
3381
  const agents = d.agents || [];
3377
3382
  const skills = (d.available || []).map((s) => ({
3378
3383
  name: s.name, description: s.description, source: "enigma",
3379
- agentStates: agents.map((a) => ({ name: a.name, label: a.label, deployed: (a.deployed || []).indexOf(s.name) !== -1 })),
3384
+ agentStates: agents.map((a) => ({ name: a.name, label: a.label, installed: a.installed, deployed: (a.deployed || []).indexOf(s.name) !== -1 })),
3380
3385
  }));
3381
3386
  renderSkills(skills);
3382
3387
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enigmax/dashboard",
3
- "version": "0.1.49",
3
+ "version": "0.1.50",
4
4
  "description": "Local browser dashboard UI for enigma: the static page and chart assets enigma serves on its loopback dashboard (savings, real tool usage, in-browser settings). Installed on demand by enigma-cli; not a runtime dependency.",
5
5
  "type": "module",
6
6
  "files": [