nothumanallowed 13.5.45 → 13.5.47

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.45",
3
+ "version": "13.5.47",
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": {
@@ -4075,17 +4075,17 @@ module.exports = { pool, query, transaction };
4075
4075
  try { pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); } catch(_) {}
4076
4076
  if (!pkg.dependencies) pkg.dependencies = {};
4077
4077
  delete pkg.dependencies.pg;
4078
- // Ensure essentials
4079
- pkg.dependencies.express = pkg.dependencies.express || '^4.19.0';
4080
- pkg.dependencies.bcryptjs = pkg.dependencies.bcryptjs || '^2.4.3';
4081
- pkg.dependencies.jsonwebtoken = pkg.dependencies.jsonwebtoken || '^9.0.0';
4082
- pkg.dependencies.helmet = pkg.dependencies.helmet || '^7.0.0';
4083
- pkg.dependencies['express-rate-limit'] = pkg.dependencies['express-rate-limit'] || '^7.0.0';
4084
- pkg.dependencies.cors = pkg.dependencies.cors || '^2.8.5';
4085
- pkg.dependencies.dotenv = pkg.dependencies.dotenv || '^16.0.0';
4086
- pkg.dependencies.nodemailer = pkg.dependencies.nodemailer || '^6.9.0';
4087
- pkg.dependencies['express-validator'] = pkg.dependencies['express-validator'] || '^7.0.0';
4088
4078
  delete pkg.dependencies.ioredis;
4079
+ // Force known-good versions — LLM often generates non-existent patch versions
4080
+ pkg.dependencies.express = '^4.19.0';
4081
+ pkg.dependencies.bcryptjs = '^2.4.3';
4082
+ pkg.dependencies.jsonwebtoken = '^9.0.0';
4083
+ pkg.dependencies.helmet = '^7.1.0';
4084
+ pkg.dependencies['express-rate-limit'] = '^7.2.0';
4085
+ pkg.dependencies.cors = '^2.8.5';
4086
+ pkg.dependencies.dotenv = '^16.4.0';
4087
+ pkg.dependencies.nodemailer = '^6.9.0';
4088
+ pkg.dependencies['express-validator'] = '^7.0.1';
4089
4089
  pkg.scripts = pkg.scripts || {};
4090
4090
  pkg.scripts.start = 'node server/index.js';
4091
4091
  fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), 'utf8');
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.45';
8
+ export const VERSION = '13.5.47';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -6268,9 +6268,9 @@ function renderWebCraft(el) {
6268
6268
  '</div>';
6269
6269
 
6270
6270
  var authFieldsHtml = wcState.authFields.map(function(f,i){
6271
- return '<div style="display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--bg3);border-radius:6px;margin-bottom:4px">' +
6272
- '<input value="'+wcEsc(f.label)+'" onchange="wcUpdateField('+i+',this.value)" style="flex:1;background:transparent;border:none;color:var(--text);font-size:11px;font-family:var(--mono)" />' +
6273
- '<select onchange="wcUpdateFieldType('+i+',this.value)" style="background:var(--bg2);border:1px solid var(--border);border-radius:4px;color:var(--dim);font-size:10px;padding:2px 4px;max-width:72px;flex-shrink:0">' +
6271
+ return '<div style="display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--bg3);border-radius:6px;margin-bottom:4px;overflow:hidden">' +
6272
+ '<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" />' +
6273
+ '<select onchange="wcUpdateFieldType('+i+',this.value)" style="background:var(--bg2);border:1px solid var(--border);border-radius:4px;color:var(--dim);font-size:10px;padding:2px 2px;width:68px;flex-shrink:0">' +
6274
6274
  ['text','email','password','tel','date','number'].map(function(t){return '<option value="'+t+'"'+(f.type===t?' selected':'')+'>'+t+'</option>'}).join('') +
6275
6275
  '</select>' +
6276
6276
  '<input type="checkbox"'+(f.required?' checked':'')+' onchange="wcToggleRequired('+i+',this.checked)" title="Required" style="accent-color:var(--green3)">' +
@@ -6336,7 +6336,7 @@ function renderWebCraft(el) {
6336
6336
  '<button id="wcRunBtn" onclick="wcGenerate()" style="width:100%;padding:12px;background:var(--green3);border:none;border-radius:8px;color:var(--bg);font-size:13px;font-weight:700;cursor:pointer;letter-spacing:.2px"'+(wcState.running?' disabled':'')+'>'+
6337
6337
  (wcState.running ? '&#9203; '+t('wc_generating')+'...' : '&#9654; '+t('wc_generate')) +
6338
6338
  '</button>' +
6339
- (wcState.generatedFiles.length > 0 ?
6339
+ (wcState.generatedFiles.length > 0 && !wcState.running ?
6340
6340
  '<button onclick="wcDownloadZip()" style="width:100%;padding:10px;background:var(--bg3);border:1px solid var(--border2);border-radius:8px;color:var(--text);font-size:12px;font-weight:600;cursor:pointer">&#8681; '+t('wc_download')+'</button>' +
6341
6341
  '<button onclick="wcStartSandbox()" id="wcSandboxBtn" style="width:100%;padding:10px;background:var(--bg3);border:1px solid var(--green3);border-radius:8px;color:var(--green);font-size:12px;font-weight:600;cursor:pointer">&#9654; '+t('wc_sandbox_start')+'</button>'
6342
6342
  : '') +
@@ -6673,8 +6673,16 @@ async function wcStopSandbox() {
6673
6673
  renderWebCraft(document.getElementById('content'));
6674
6674
  }
6675
6675
 
6676
+ var _wcLastDownload = 0;
6676
6677
  function wcDownloadZip() {
6677
6678
  if (!wcState.generatedFiles.length) return;
6679
+ var now = Date.now();
6680
+ if (now - _wcLastDownload < 30000) {
6681
+ var wait = Math.ceil((30000 - (now - _wcLastDownload)) / 1000);
6682
+ alert('Attendi ' + wait + 's prima di scaricare di nuovo.');
6683
+ return;
6684
+ }
6685
+ _wcLastDownload = now;
6678
6686
  // Build a real ZIP file (PKZIP format, stored/no compression) — zero dependencies
6679
6687
  var enc = new TextEncoder();
6680
6688
  var parts = [];