nothumanallowed 13.5.14 → 13.5.16

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "13.5.14",
3
+ "version": "13.5.16",
4
4
  "description": "NotHumanAllowed — 38 AI agents, 80 tools, Studio (visual agentic workflows). Email, calendar, browser automation, screen capture, canvas, cron/heartbeat, Alexandria E2E messaging, GitHub, Notion, Slack, voice chat, free AI (Liara), 28 languages. Zero-dependency CLI.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/constants.mjs CHANGED
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'url';
5
5
  const __filename = fileURLToPath(import.meta.url);
6
6
  const __dirname = path.dirname(__filename);
7
7
 
8
- export const VERSION = '13.5.14';
8
+ export const VERSION = '13.5.16';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -3813,7 +3813,7 @@ function isoCharSvg(opts) {
3813
3813
  : \x27\x27);
3814
3814
  var ringStyle = isActive
3815
3815
  ? (\x27outline:2.5px solid \x27+accentColor+\x27;box-shadow:0 0 16px \x27+accentColor+\x27AA\x27)
3816
- : (isDone ? \x27outline:2px solid #22c55e88\x27 : \x27outline:none\x27);
3816
+ : (isDone ? \x27outline:2px solid rgba(0,0,0,.2)\x27 : \x27outline:none\x27);
3817
3817
  var animClass = isActive ? \x27 prl-head\x27 : \x27\x27;
3818
3818
  return \x27<div class="iso-char-wrap\x27+animClass+\x27" style="position:relative;display:inline-flex;align-items:center;justify-content:center;width:\x27+sz+\x27px;height:\x27+sz+\x27px;border-radius:50%;background:rgba(255,255,255,.15);\x27+ringStyle+\x27;\x27+glowFilter+\x27;transition:all .3s">\x27+
3819
3819
  \x27<span style="font-size:\x27+Math.round(36*scale)+\x27px;line-height:1;user-select:none">\x27+emoji+\x27</span>\x27+
@@ -3824,14 +3824,13 @@ function isoCharSvg(opts) {
3824
3824
  function isoOrchSvg(hasActive, doneRatio) {
3825
3825
  void doneRatio;
3826
3826
  var orchEmoji = String.fromCodePoint(0x1F9D1, 0x200D, 0x1F4BC); // person in suit
3827
- var glowColor = hasActive ? \x27#818cf8\x27 : \x27#22c55e\x27;
3827
+ var glowColor = hasActive ? \x27#818cf8\x27 : \x27#374151\x27;
3828
3828
  var animClass = hasActive ? \x27 prl-head\x27 : \x27\x27;
3829
3829
  var crown = String.fromCodePoint(0x1F451); // crown emoji above
3830
- return \x27<div class="iso-orch-wrap\x27+animClass+\x27" style="position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:2px">\x27+
3831
- \x27<span style="font-size:18px;line-height:1">\x27+crown+\x27</span>\x27+
3832
- \x27<div style="position:relative;display:flex;align-items:center;justify-content:center;width:68px;height:68px;border-radius:50%;background:rgba(99,102,241,.15);outline:3px solid \x27+glowColor+\x27;box-shadow:0 0 20px \x27+glowColor+\x27AA">\x27+
3833
- \x27<span style="font-size:42px;line-height:1;user-select:none">\x27+orchEmoji+\x27</span>\x27+
3834
- \x27</div>\x27+
3830
+ var glowFilter = hasActive ? \x27filter:drop-shadow(0 0 12px #818cf8AA)\x27 : \x27filter:drop-shadow(0 0 6px rgba(0,0,0,.3))\x27;
3831
+ return \x27<div class="iso-orch-wrap\x27+animClass+\x27" style="position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:0">\x27+
3832
+ \x27<span style="font-size:18px;line-height:1;display:block;text-align:center">\x27+crown+\x27</span>\x27+
3833
+ \x27<span style="font-size:52px;line-height:1;user-select:none;display:block;\x27+glowFilter+\x27">\x27+orchEmoji+\x27</span>\x27+
3835
3834
  \x27</div>\x27;
3836
3835
  }
3837
3836
 
@@ -3962,7 +3961,7 @@ function renderStudioNodes() {
3962
3961
  // monitor on desk
3963
3962
  \x27<div class="iso-monitor" style="border-color:\x27+accentColor+\x2777"><div class="iso-monitor-screen">\x27+monScreen+\x27</div></div>\x27+
3964
3963
  // name
3965
- \x27<div class="iso-name" style="color:\x27+nameColor+\x27;background:\x27+nameBg+\x27">\x27+(isOrch?\x27\u2666\xA0\x27:\x27\x27)+esc(label.slice(0,16))+\x27</div>\x27+
3964
+ \x27<div class="iso-name" style="color:\x27+nameColor+\x27;background:\x27+nameBg+\x27">\x27+(isOrch?\x27\u2666\xA0\x27:\x27\x27)+esc(label)+\x27</div>\x27+
3966
3965
  \x27</div>\x27;
3967
3966
  }
3968
3967
 
@@ -5366,8 +5365,10 @@ async function runStudio() {
5366
5365
  flyingDocHtml += \x27</div>\x27;
5367
5366
  }
5368
5367
 
5369
- // Persist across tab navigations (snapshot animations won\x27t replay but structure is preserved)
5370
- if (pb.innerHTML && pb.innerHTML.length < 60000) { _parlPersistHtml = pb.innerHTML; }
5368
+ // Persist across tab navigations — stamp version to invalidate stale HTML on update
5369
+ if (pb.innerHTML && pb.innerHTML.length < 60000) {
5370
+ _parlPersistHtml = \x27<!-- nha-v13.5.16 -->\x27 + pb.innerHTML;
5371
+ }
5371
5372
 
5372
5373
  }
5373
5374
 
@@ -5535,7 +5536,7 @@ async function runStudio() {
5535
5536
  }
5536
5537
  }
5537
5538
  if (parlFinal && parlFinal.style.display !== 'none' && parlFinal.innerHTML) {
5538
- _parlPersistHtml = parlFinal.innerHTML; // persist so tab nav doesn't lose it
5539
+ _parlPersistHtml = \x27<!-- nha-v13.5.16 -->\x27 + parlFinal.innerHTML; // persist so tab nav doesn't lose it
5539
5540
  doScroll(parlFinal);
5540
5541
  setTimeout(function(){ doScroll(resEl); }, 2200);
5541
5542
  } else if (resEl) {
@@ -5909,8 +5910,9 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
5909
5910
  function renderStudio(el) {
5910
5911
  // Persist parliament block across tab navigations
5911
5912
  var existingParl = document.getElementById('studioParliamentBlock');
5912
- if (existingParl && existingParl.innerHTML.trim()) {
5913
- _parlPersistHtml = existingParl.innerHTML;
5913
+ if (existingParl && existingParl.innerHTML.trim() && _parlPersistHtml === null) {
5914
+ // Only snapshot if not already persisted (avoid overwriting stamped version with un-stamped)
5915
+ _parlPersistHtml = \x27<!-- nha-v13.5.16 -->\x27 + existingParl.innerHTML;
5914
5916
  }
5915
5917
 
5916
5918
  var examplesHtml = STUDIO_EXAMPLES.map(function(ex) {
@@ -6082,12 +6084,14 @@ function renderStudio(el) {
6082
6084
  // Restore pipeline from state
6083
6085
  renderBuilderPipeline();
6084
6086
  // Restore parliament block if it was visible before tab navigation
6085
- if (_parlPersistHtml) {
6086
- var parlRestoreEl = document.getElementById('studioParliamentBlock');
6087
+ if (_parlPersistHtml && _parlPersistHtml.indexOf(\x27<!-- nha-v13.5.16 -->\x27) === 0) {
6088
+ var parlRestoreEl = document.getElementById(\x27studioParliamentBlock\x27);
6087
6089
  if (parlRestoreEl) {
6088
- parlRestoreEl.innerHTML = _parlPersistHtml;
6089
- parlRestoreEl.style.display = 'block';
6090
+ parlRestoreEl.innerHTML = _parlPersistHtml.slice(\x27<!-- nha-v13.5.16 -->\x27.length);
6091
+ parlRestoreEl.style.display = \x27block\x27;
6090
6092
  }
6093
+ } else {
6094
+ _parlPersistHtml = null; // stale — discard
6091
6095
  }
6092
6096
  }
6093
6097
 
@@ -6736,11 +6740,11 @@ input:focus,textarea:focus{border-color:var(--green3)}
6736
6740
  .iso-orch-wrap{transition:transform .2s}
6737
6741
  .iso-orch-wrap.prl-head{animation:isoCharBob 1.4s ease-in-out infinite}
6738
6742
  /* Thought bubble / speech bubble above character */
6739
- .iso-bubble{font-size:9px;font-family:var(--mono);padding:3px 9px;border-radius:12px;border:1px solid #ccc;background:rgba(255,255,255,.9);color:#6b7280;white-space:nowrap;max-width:130px;overflow:hidden;text-overflow:ellipsis;line-height:1.5;transition:all .25s;pointer-events:none;backdrop-filter:blur(6px);text-align:center}
6740
- .iso-bubble--active{background:rgba(30,20,60,.9);border-color:#6366f1;color:#a5b4fc;animation:isoBubblePop .35s ease;white-space:normal;max-width:110px;word-break:break-word;line-height:1.35}
6743
+ .iso-bubble{font-size:9px;font-family:var(--mono);padding:3px 9px;border-radius:12px;border:1px solid #ccc;background:rgba(255,255,255,.9);color:#6b7280;white-space:normal;word-break:break-word;max-width:160px;line-height:1.4;transition:all .25s;pointer-events:none;backdrop-filter:blur(6px);text-align:center}
6744
+ .iso-bubble--active{background:rgba(30,20,60,.9);border-color:#6366f1;color:#a5b4fc;animation:isoBubblePop .35s ease;white-space:normal;max-width:160px;word-break:break-word;line-height:1.35}
6741
6745
  .iso-bubble--orch{font-size:9px;padding:3px 9px;border-radius:12px;border-color:#818cf8;color:#a5b4fc;background:rgba(20,15,50,.9)}
6742
6746
  @keyframes isoBubblePop{0%{transform:scale(.8) translateY(4px);opacity:.4}100%{transform:scale(1) translateY(0);opacity:1}}
6743
- .iso-name{font-size:10px;font-family:var(--mono);font-weight:700;letter-spacing:.3px;text-align:center;max-width:90px;white-space:normal;word-break:break-word;line-height:1.3;background:rgba(255,255,255,.85);border-radius:6px;padding:2px 6px;pointer-events:none;backdrop-filter:blur(4px)}
6747
+ .iso-name{font-size:10px;font-family:var(--mono);font-weight:700;letter-spacing:.3px;text-align:center;max-width:160px;white-space:normal;word-break:break-word;line-height:1.3;background:rgba(255,255,255,.85);border-radius:6px;padding:2px 6px;pointer-events:none;backdrop-filter:blur(4px)}
6744
6748
  /* Desks row — kept for boardroom compat */
6745
6749
  .prl-desks-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;position:relative;z-index:2;padding-bottom:8px}
6746
6750
  .prl-desk{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 6px 4px;border-radius:12px;background:#1a1535;border:1.5px solid #3a3060;transition:border-color .4s,background .4s,box-shadow .4s;position:relative;min-width:80px;box-shadow:0 2px 8px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.06)}