nothumanallowed 10.8.0 → 10.8.1
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/commands/ui.mjs +11 -1
- package/src/constants.mjs +1 -1
- package/src/services/web-ui.mjs +5 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "10.8.
|
|
3
|
+
"version": "10.8.1",
|
|
4
4
|
"description": "NotHumanAllowed — 38 AI agents, 53 tools. Email, calendar, browser automation, screen capture, canvas, cron/heartbeat, GitHub, Notion, Slack, voice chat, 28 languages. Zero-dependency CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/commands/ui.mjs
CHANGED
|
@@ -354,7 +354,17 @@ export async function cmdUI(args) {
|
|
|
354
354
|
const chId = url.searchParams.get('channelId');
|
|
355
355
|
if (!chId) { sendJSON(res, 400, { error: 'channelId required' }); return; }
|
|
356
356
|
const r = await fetch(ALEX_API + '/channels/' + chId + '/messages?fp=' + identity.fingerprint);
|
|
357
|
-
|
|
357
|
+
if (!r.ok) {
|
|
358
|
+
sendJSON(res, 200, { error: 'Channel not found or expired', messages: [] });
|
|
359
|
+
logRequest(method, pathname, 200, Date.now() - start);
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
let data;
|
|
363
|
+
try { data = await r.json(); } catch {
|
|
364
|
+
sendJSON(res, 200, { error: 'Invalid response from server', messages: [] });
|
|
365
|
+
logRequest(method, pathname, 200, Date.now() - start);
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
358
368
|
// Decrypt using channel key (ID + secret from local file)
|
|
359
369
|
const chFile2 = path.join(collabDir, 'channels.json');
|
|
360
370
|
let chSecret = '';
|
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 = '10.8.
|
|
8
|
+
export const VERSION = '10.8.1';
|
|
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
|
@@ -1731,13 +1731,9 @@ function collabDeleteChannel(id){
|
|
|
1731
1731
|
function collabSelect(id){
|
|
1732
1732
|
collabActiveChannel=id;
|
|
1733
1733
|
collabLoadMessages();
|
|
1734
|
-
//
|
|
1734
|
+
// No polling — messages arrive via WebSocket in real-time
|
|
1735
1735
|
if(collabPolling)clearInterval(collabPolling);
|
|
1736
|
-
collabPolling=
|
|
1737
|
-
if(currentView==='collab'&&collabActiveChannel===id){
|
|
1738
|
-
collabLoadMessages();
|
|
1739
|
-
}
|
|
1740
|
-
},2000);
|
|
1736
|
+
collabPolling=null;
|
|
1741
1737
|
}
|
|
1742
1738
|
|
|
1743
1739
|
function collabLoadMessages(){
|
|
@@ -1747,7 +1743,9 @@ function collabLoadMessages(){
|
|
|
1747
1743
|
apiGet('/api/collab/messages?channelId='+collabActiveChannel).then(function(r){
|
|
1748
1744
|
if(r&&r.error){
|
|
1749
1745
|
var el=document.getElementById('collabMessages');
|
|
1750
|
-
if(el)el.innerHTML='<div style="text-align:center;color:var(--red);padding:20px;font-size:11px">'+esc(r.error)+'<br><span style="color:var(--dim);font-size:10px">This channel may have expired or the server was restarted.</span></div>';
|
|
1746
|
+
if(el)el.innerHTML='<div style="text-align:center;color:var(--red);padding:20px;font-size:11px">'+esc(r.error)+'<br><span style="color:var(--dim);font-size:10px">This channel may have expired or the server was restarted.<br>Delete it and create a new one.</span></div>';
|
|
1747
|
+
// Stop any polling for this dead channel
|
|
1748
|
+
if(collabPolling){clearInterval(collabPolling);collabPolling=null;}
|
|
1751
1749
|
return;
|
|
1752
1750
|
}
|
|
1753
1751
|
if(!r||!r.messages)return;
|