nothumanallowed 13.5.31 → 13.5.32
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 +1 -1
- package/src/constants.mjs +1 -1
- package/src/services/web-ui.mjs +21 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.32",
|
|
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.
|
|
8
|
+
export const VERSION = '13.5.32';
|
|
9
9
|
export const BASE_URL = 'https://nothumanallowed.com/cli';
|
|
10
10
|
export const API_BASE = 'https://nothumanallowed.com/api/v1';
|
|
11
11
|
|
package/src/services/web-ui.mjs
CHANGED
|
@@ -231,6 +231,9 @@ var agentChatHistory = []; // [{role:'user'|'agent', text:'...'}]
|
|
|
231
231
|
|
|
232
232
|
// ---- NAV ----
|
|
233
233
|
function switchView(v) {
|
|
234
|
+
// Close any open modal (e.g. calendar day detail) before switching view
|
|
235
|
+
var modal=document.getElementById('agentModal');
|
|
236
|
+
if(modal&&modal.classList.contains('modal-overlay--open')){closeModal();}
|
|
234
237
|
currentView = v;
|
|
235
238
|
// Invalidate cached data so pages always show fresh content
|
|
236
239
|
if(v==='contacts')contactsData=null;
|
|
@@ -1195,6 +1198,16 @@ function calKey(y,m,d){return y+'-'+String(m+1).padStart(2,'0')+'-'+String(d).pa
|
|
|
1195
1198
|
function isToday(y,m,d){var t=new Date();return t.getFullYear()===y&&t.getMonth()===m&&t.getDate()===d}
|
|
1196
1199
|
|
|
1197
1200
|
function renderCalendar(el){
|
|
1201
|
+
// Guard: if Google not connected, show setup message — don't block on API call
|
|
1202
|
+
if(!settingsData.hasGoogle){
|
|
1203
|
+
el.innerHTML='<div style="max-width:400px;margin:60px auto;text-align:center;padding:32px;border:1px solid var(--border);border-radius:12px;background:var(--bg2)">' +
|
|
1204
|
+
'<div style="font-size:40px;margin-bottom:16px">📅</div>' +
|
|
1205
|
+
'<div style="color:var(--bright);font-size:18px;font-weight:700;margin-bottom:8px">Calendar</div>' +
|
|
1206
|
+
'<div style="color:var(--dim);font-size:13px;margin-bottom:24px">Connect your Google account to view and manage calendar events.</div>' +
|
|
1207
|
+
'<button onclick="switchView(\\x27settings\\x27)" style="background:var(--green3);color:var(--bg);padding:10px 24px;border-radius:var(--r);font-weight:700;font-size:13px;cursor:pointer;border:none">Connect Google \u2192</button>' +
|
|
1208
|
+
'</div>';
|
|
1209
|
+
return;
|
|
1210
|
+
}
|
|
1198
1211
|
var firstDay=new Date(calYear,calMonth,1).getDay();
|
|
1199
1212
|
var daysInMonth=new Date(calYear,calMonth+1,0).getDate();
|
|
1200
1213
|
var monthName=new Date(calYear,calMonth,1).toLocaleDateString('en',{month:'long',year:'numeric'});
|
|
@@ -3325,7 +3338,7 @@ var studioAbortController = null;
|
|
|
3325
3338
|
var parlActiveAgent = null; // active agent label during parliament streaming
|
|
3326
3339
|
var parlDoneAgents = {}; // set of completed agent labels during parliament
|
|
3327
3340
|
var _parlPersistHtml = null; // persists parliament block HTML across tab navigations
|
|
3328
|
-
var _PARL_STAMP = '<!--nha-parl-v13.5.
|
|
3341
|
+
var _PARL_STAMP = '<!--nha-parl-v13.5.32-->';
|
|
3329
3342
|
|
|
3330
3343
|
function stopStudio() {
|
|
3331
3344
|
if (!studioState.running) return;
|
|
@@ -3949,7 +3962,9 @@ function renderStudioNodes() {
|
|
|
3949
3962
|
var bubbleText = isOrch
|
|
3950
3963
|
? (hasActive ? (\x27Assegno step \x27+(doneCount+1)+\x27/\x27+totalCount) : (doneCount===totalCount&&totalCount>0 ? \x27\u2714 Fatto!\x27 : \x27In attesa\x27))
|
|
3951
3964
|
: (isDone ? \x27\u2714 fatto\x27 : (isErr ? \x27\u2715 errore\x27 : (isActive ? \x27\x27 : \x27\x27)));
|
|
3952
|
-
var bubbleBg = isOrch ? \x27rgba(
|
|
3965
|
+
var bubbleBg = isOrch ? \x27rgba(255,255,255,.95)\x27 : (isActive ? \x27#ffffff\x27 : (isDone ? \x27rgba(0,0,0,.08)\x27 : \x27rgba(239,68,68,.12)\x27));
|
|
3966
|
+
var bubbleColor = isActive ? \x27#000000\x27 : (isOrch ? \x27#111827\x27 : (isDone ? \x27#374151\x27 : \x27#6b7280\x27));
|
|
3967
|
+
var bubbleFontWeight = isActive ? \x27700\x27 : \x27500\x27;
|
|
3953
3968
|
var glowBox = isActive ? (\x270 0 0 3px \x27+accentColor+\x2744,0 8px 24px \x27+accentColor+\x2733\x27) : (isDone ? (\x270 0 0 2px rgba(0,0,0,.25)\x27) : \x27none\x27);
|
|
3954
3969
|
// Orchestrator char: no CSS walk animation — JS moves it via inline transform toward the active agent column
|
|
3955
3970
|
var charIdAttr = isOrch ? \x27 id="wfOrchChar"\x27 : \x27\x27;
|
|
@@ -3963,7 +3978,7 @@ function renderStudioNodes() {
|
|
|
3963
3978
|
var bubbleVisible = (bubbleText || isOrch || isActive) ? \x27visible\x27 : \x27hidden\x27;
|
|
3964
3979
|
return \x27<div class="iso-station" \x27+clickAttr+\x27 data-station-idx="\x27+(isOrch?-1:nodeIdx)+\x27" style="box-shadow:\x27+glowBox+\x27;border-color:\x27+accentColor+\x27;transition:box-shadow .4s">\x27+
|
|
3965
3980
|
flyDoc+
|
|
3966
|
-
\x27<div class="iso-bubble\x27+(isActive?\x27 iso-bubble--active\x27:\x27\x27)+\x27" id="\x27+bubbleId+\x27" style="border-color:\x27+accentColor+\x27;color:\x27+
|
|
3981
|
+
\x27<div class="iso-bubble\x27+(isActive?\x27 iso-bubble--active\x27:\x27\x27)+\x27" id="\x27+bubbleId+\x27" style="border-color:\x27+accentColor+\x27;color:\x27+bubbleColor+\x27;font-weight:\x27+bubbleFontWeight+\x27;background:\x27+bubbleBg+\x27;visibility:\x27+bubbleVisible+\x27">\x27+esc(bubbleText)+\x27</div>\x27+
|
|
3967
3982
|
\x27<div class="iso-tool-badge">\x27+toolEmoji+\x27</div>\x27+
|
|
3968
3983
|
charHtml+
|
|
3969
3984
|
\x27<div class="iso-desk" style="width:85%;border-top-color:\x27+accentColor+\x2733"></div>\x27+
|
|
@@ -5653,6 +5668,9 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
5653
5668
|
var wfSafe = wfSnippet.replace(/&/g,\x27&\x27).replace(/</g,\x27<\x27).replace(/>/g,\x27>\x27);
|
|
5654
5669
|
isoB.className = \x27iso-bubble iso-bubble--active\x27;
|
|
5655
5670
|
isoB.style.visibility = \x27visible\x27;
|
|
5671
|
+
isoB.style.color = \x27#000000\x27;
|
|
5672
|
+
isoB.style.fontWeight = \x27700\x27;
|
|
5673
|
+
isoB.style.background = \x27#ffffff\x27;
|
|
5656
5674
|
isoB.innerHTML = wfSafe + \x27<span style="display:inline-block;width:2px;height:8px;background:#1d4ed8;margin-left:1px;vertical-align:text-bottom;animation:streamBlink .7s step-end infinite">​</span>\x27;
|
|
5657
5675
|
}
|
|
5658
5676
|
// Update orchestrator bubble: show which agent it assigned and move the char
|