nothumanallowed 13.5.86 → 13.5.87

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.86",
3
+ "version": "13.5.87",
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": {
@@ -6565,31 +6565,68 @@ var WC_DEFAULT_FILES = [
6565
6565
  function wcEsc(s){return s?String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'):''}
6566
6566
 
6567
6567
  function renderWebCraft(el) {
6568
- var fileTabsHtml = wcState.generatedFiles.length > 0
6569
- ? '<div id="wcFileTabsRow" style="display:flex;gap:0;overflow-x:auto;border-bottom:1px solid var(--border);margin-bottom:0;flex-shrink:0;scrollbar-width:none">' +
6568
+ // File sidebar replaces horizontal tabs
6569
+ var _activeFile = wcState.generatedFiles[wcState.activeFile];
6570
+
6571
+ function wcFileSizeLabel(content) {
6572
+ if (!content) return '0 B';
6573
+ var bytes = new TextEncoder().encode(content).length;
6574
+ if (bytes < 1024) return bytes + ' B';
6575
+ if (bytes < 1024*1024) return (bytes/1024).toFixed(1) + ' KB';
6576
+ return (bytes/(1024*1024)).toFixed(2) + ' MB';
6577
+ }
6578
+
6579
+ var fileSidebarHtml = wcState.generatedFiles.length > 0
6580
+ ? '<div style="width:190px;flex-shrink:0;border-left:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column">' +
6581
+ '<div style="padding:8px 10px;border-bottom:1px solid var(--border);font-size:9px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px;flex-shrink:0">'+wcState.generatedFiles.length+' file</div>' +
6570
6582
  wcState.generatedFiles.map(function(f,i){
6571
6583
  var active = i === wcState.activeFile;
6572
6584
  var hasErr = !!f._error || !!f._syntaxError;
6573
6585
  var isPending = !!f._pending;
6574
- var tabColor = hasErr ? (active ? '#f87171' : '#7f4040') : isPending ? (active ? '#9ca3af' : '#4b5563') : (active ? 'var(--green)' : 'var(--dim)');
6575
- var tabBorder = hasErr ? (active ? '#f87171' : 'transparent') : (active ? 'var(--green3)' : 'transparent');
6576
- var tabPrefix = hasErr ? '&#9888; ' : isPending ? '&#8987; ' : '';
6577
- return '<button id="wcTab'+i+'" onclick="wcSetFile('+i+')" style="padding:6px 14px;font-size:11px;font-family:var(--mono);font-weight:'+(active?'700':'400')+';background:'+(active?'var(--bg3)':'transparent')+';border:none;border-bottom:2px solid '+tabBorder+';color:'+tabColor+';cursor:pointer;white-space:nowrap;flex-shrink:0">'+tabPrefix+wcEsc(f.name)+'</button>';
6586
+ var lines = isPending ? 0 : (f.content || '').split(String.fromCharCode(10)).length;
6587
+ var sizeLabel = isPending ? '...' : wcFileSizeLabel(f.content || '');
6588
+ var nameColor = hasErr ? '#f87171' : isPending ? '#4b5563' : active ? 'var(--text)' : 'var(--dim)';
6589
+ var bg = active ? 'var(--bg3)' : 'transparent';
6590
+ var borderLeft = hasErr ? '2px solid #f87171' : active ? '2px solid var(--green3)' : '2px solid transparent';
6591
+ var icon = isPending ? '&#8987;' : hasErr ? '&#9888;' : wcFileIcon(f.name);
6592
+ return '<button id="wcTab'+i+'" onclick="wcSetFile('+i+')" style="width:100%;text-align:left;padding:7px 10px 7px 10px;background:'+bg+';border:none;border-left:'+borderLeft+';cursor:pointer;display:flex;flex-direction:column;gap:2px;flex-shrink:0">' +
6593
+ '<span style="display:flex;align-items:center;gap:5px">' +
6594
+ '<span style="font-size:12px;flex-shrink:0">'+icon+'</span>' +
6595
+ '<span style="font-size:11px;font-family:var(--mono);color:'+nameColor+';overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1" title="'+wcEsc(f.name)+'">'+wcEsc(f.name.split('/').pop())+'</span>' +
6596
+ '</span>' +
6597
+ (f.name.includes('/') ? '<span style="font-size:9px;color:#4b5563;font-family:var(--mono);padding-left:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">'+wcEsc(f.name.split('/').slice(0,-1).join('/'))+'</span>' : '') +
6598
+ (!isPending ? '<span style="font-size:9px;color:#4b5563;font-family:var(--mono);padding-left:17px">'+lines+' righe &nbsp;&#183;&nbsp; '+sizeLabel+'</span>' : '') +
6599
+ '</button>';
6578
6600
  }).join('') +
6579
6601
  '</div>'
6580
6602
  : '';
6581
6603
 
6582
- var _activeFile = wcState.generatedFiles[wcState.activeFile];
6583
6604
  var codeHtml = wcState.generatedFiles.length > 0 && _activeFile
6584
- ? '<div id="wcCodeWrap" style="flex:1;overflow:auto;background:var(--bg3);border-radius:0 0 8px 8px">' +
6585
- (_activeFile._error ? '<div style="padding:8px 14px;background:rgba(239,68,68,0.12);border-bottom:1px solid rgba(239,68,68,0.3);font-size:11px;color:#f87171;display:flex;align-items:center;gap:6px">&#9888; Generazione fallita — chiedi al modello di rigenerare questo file</div>' : (_activeFile._syntaxError ? '<div style="padding:8px 14px;background:rgba(234,179,8,0.1);border-bottom:1px solid rgba(234,179,8,0.3);font-size:11px;color:#facc15;display:flex;align-items:center;gap:6px">&#9888; Syntax error: '+wcEsc(_activeFile._syntaxError)+'</div>' : '')) +
6586
- '<pre style="margin:0;padding:14px 16px;font-size:11px;line-height:1.6;color:'+(_activeFile._error?'#f87171':_activeFile._syntaxError?'#fde68a':'var(--text)')+';font-family:var(--mono);white-space:pre-wrap;word-break:break-all">'+wcEsc(_activeFile.content)+'</pre>' +
6605
+ ? '<div style="flex:1;display:flex;flex-direction:row;min-height:0;overflow:hidden">' +
6606
+ '<div id="wcCodeWrap" style="flex:1;overflow:auto;background:var(--bg3)">' +
6607
+ '<div style="padding:8px 14px;border-bottom:1px solid var(--border2);font-size:10px;color:var(--dim);font-family:var(--mono);display:flex;align-items:center;gap:8px;background:var(--bg2)">' +
6608
+ '<span style="font-size:13px">'+wcFileIcon(_activeFile.name)+'</span>' +
6609
+ '<span style="color:var(--text)">'+wcEsc(_activeFile.name)+'</span>' +
6610
+ (!_activeFile._pending && !_activeFile._error ? '<span style="margin-left:auto;color:#4b5563">'+(_activeFile.content||'').split(String.fromCharCode(10)).length+' righe &nbsp;&#183;&nbsp; '+wcFileSizeLabel(_activeFile.content||'')+'</span>' : '') +
6611
+ '</div>' +
6612
+ (_activeFile._error ? '<div style="padding:8px 14px;background:rgba(239,68,68,0.12);border-bottom:1px solid rgba(239,68,68,0.3);font-size:11px;color:#f87171;display:flex;align-items:center;gap:6px">&#9888; Generazione fallita — chiedi al modello di rigenerare questo file</div>' :
6613
+ _activeFile._syntaxError ? '<div style="padding:8px 14px;background:rgba(234,179,8,0.1);border-bottom:1px solid rgba(234,179,8,0.3);font-size:11px;color:#facc15;display:flex;align-items:center;gap:6px">&#9888; Syntax error: '+wcEsc(_activeFile._syntaxError)+'</div>' : '') +
6614
+ (_activeFile._pending ? '<div style="display:flex;align-items:center;justify-content:center;height:120px;color:var(--dim);font-size:12px;gap:8px">&#8987; In generazione...</div>' :
6615
+ '<pre style="margin:0;padding:14px 16px;font-size:11px;line-height:1.6;color:'+(_activeFile._error?'#f87171':_activeFile._syntaxError?'#fde68a':'var(--text)')+';font-family:var(--mono);white-space:pre-wrap;word-break:break-all">'+wcEsc(_activeFile.content)+'</pre>') +
6616
+ '</div>' +
6617
+ fileSidebarHtml +
6587
6618
  '</div>'
6588
6619
  : '<div style="flex:1;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:12px;flex-direction:column;gap:8px">' +
6589
6620
  '<span style="font-size:36px;opacity:.25">&#128736;</span>' +
6590
6621
  '<span>'+t('wc_no_files')+'</span>' +
6591
6622
  '</div>';
6592
6623
 
6624
+ function wcFileIcon(name) {
6625
+ var ext = name.split('.').pop().toLowerCase();
6626
+ var icons = { js:'&#128196;', ts:'&#128196;', css:'&#127912;', html:'&#127760;', json:'&#123;', md:'&#128209;', sql:'&#128450;', env:'&#128272;', conf:'&#9881;', lock:'&#128274;' };
6627
+ return icons[ext] || '&#128196;';
6628
+ }
6629
+
6593
6630
  var authFieldsHtml = wcState.authFields.map(function(f,i){
6594
6631
  return '<div style="display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--bg3);border-radius:6px;margin-bottom:4px;overflow:hidden">' +
6595
6632
  '<input value="'+wcEsc(f.label)+'" onchange="wcUpdateField('+i+',this.value)" style="flex:1;min-width:0;background:transparent;border:none;color:var(--text);font-size:11px;font-family:var(--mono);width:0" />' +
@@ -6695,7 +6732,7 @@ function renderWebCraft(el) {
6695
6732
  '<button onclick="wcTabFiles()" style="padding:8px 16px;background:'+(wcRightTab==='preview'?'transparent':'var(--bg3)')+';border:none;border-right:1px solid var(--border);color:'+(wcRightTab==='preview'?'var(--dim)':'var(--text)')+';font-size:11px;font-weight:600;cursor:pointer">&#128196; File</button>' +
6696
6733
  '<button onclick="wcTabPreview()" style="padding:8px 16px;background:'+(wcRightTab==='preview'?'var(--bg3)':'transparent')+';border:none;color:'+(wcRightTab==='preview'?'var(--text)':'var(--dim)')+';font-size:11px;font-weight:600;cursor:pointer">&#127760; Sandbox</button>' +
6697
6734
  '</div>' +
6698
- (wcRightTab === 'preview' ? wcSandboxPanelHtml() : (fileTabsHtml + codeHtml)) +
6735
+ (wcRightTab === 'preview' ? wcSandboxPanelHtml() : codeHtml) +
6699
6736
  '</div>' +
6700
6737
  '</div>' +
6701
6738
  '</div>';