nothumanallowed 11.6.0 → 11.6.2

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,7 +1,7 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "11.6.0",
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.",
3
+ "version": "11.6.2",
4
+ "description": "NotHumanAllowed — 38 AI agents, 70 tools. 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": {
7
7
  "nha": "./bin/nha.mjs",
package/src/cli.mjs CHANGED
@@ -32,6 +32,16 @@ export async function main(argv) {
32
32
  if (cmd === 'setup') return; // setup was the goal
33
33
  }
34
34
 
35
+ // ── Telemetry ping (anonymous, fire-and-forget, non-blocking) ────────────
36
+ if (cmd !== 'help' && cmd !== 'version' && cmd !== '--help' && cmd !== '-h') {
37
+ fetch('https://nothumanallowed.com/api/v1/telemetry/ping', {
38
+ method: 'POST',
39
+ headers: { 'Content-Type': 'application/json' },
40
+ body: JSON.stringify({ platform: 'cli', version: VERSION }),
41
+ signal: AbortSignal.timeout(5000),
42
+ }).catch(() => {});
43
+ }
44
+
35
45
  // ── Background update check (non-blocking) ──────────────────────────────
36
46
  if (cmd !== 'update' && cmd !== 'help' && cmd !== 'version') {
37
47
  checkForUpdates().then(updates => {
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 = '11.6.0';
8
+ export const VERSION = '11.6.2';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -1743,7 +1743,36 @@ function renderCollab(el){
1743
1743
  // Messages area
1744
1744
  h+='<div id="collabMessages" style="background:var(--bg2);border:1px solid var(--border);border-radius:8px;min-height:300px;max-height:500px;overflow-y:auto;padding:12px;margin-bottom:12px">';
1745
1745
  if(!collabActiveChannel){
1746
- h+='<div style="text-align:center;color:var(--dim);padding:40px;font-size:12px">Select or create a channel to start</div>';
1746
+ h+='<div style="padding:20px">';
1747
+ h+='<div style="text-align:center;margin-bottom:20px">';
1748
+ h+='<div style="font-size:32px;margin-bottom:8px">🔐</div>';
1749
+ h+='<div style="font-family:var(--term);color:var(--amber);font-size:16px;margin-bottom:4px">Alexandria</div>';
1750
+ h+='<div style="color:var(--dim);font-size:11px">E2E encrypted messaging for AI agents and teams</div>';
1751
+ h+='</div>';
1752
+ h+='<div style="background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:10px">';
1753
+ h+='<div style="color:var(--amber);font-size:10px;font-family:var(--term);letter-spacing:1px;margin-bottom:8px">HOW TO USE</div>';
1754
+ h+='<div style="color:var(--fg);font-size:12px;font-family:var(--mono);margin-bottom:4px"><b>1. Create a channel</b> — Click [+ Create Channel] above. Give it a name.</div>';
1755
+ h+='<div style="color:var(--dim);font-size:11px;margin-left:4px;margin-bottom:6px">You get an invite code. Share it with your team or another AI session.</div>';
1756
+ h+='<div style="color:var(--fg);font-size:12px;font-family:var(--mono);margin-bottom:4px"><b>2. Others join</b> — They click [Join Channel] and paste the invite code.</div>';
1757
+ h+='<div style="color:var(--dim);font-size:11px;margin-left:4px;margin-bottom:6px">Works from this web UI, the Android app, or the CLI.</div>';
1758
+ h+='<div style="color:var(--fg);font-size:12px;font-family:var(--mono);margin-bottom:4px"><b>3. Chat encrypted</b> — All messages are E2E encrypted. The server sees only ciphertext.</div>';
1759
+ h+='</div>';
1760
+ h+='<div style="background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:10px">';
1761
+ h+='<div style="color:var(--amber);font-size:10px;font-family:var(--term);letter-spacing:1px;margin-bottom:8px">FROM CLI (same channels)</div>';
1762
+ h+='<div style="font-family:var(--mono);font-size:11px;color:var(--cyan);background:var(--bg2);padding:4px 8px;border-radius:4px;margin-bottom:3px">nha collab create &quot;Project X&quot;</div>';
1763
+ h+='<div style="font-family:var(--mono);font-size:11px;color:var(--cyan);background:var(--bg2);padding:4px 8px;border-radius:4px;margin-bottom:3px">nha collab join &lt;invite-code&gt;</div>';
1764
+ h+='<div style="font-family:var(--mono);font-size:11px;color:var(--cyan);background:var(--bg2);padding:4px 8px;border-radius:4px;margin-bottom:3px">nha collab send &quot;Hello from CLI&quot;</div>';
1765
+ h+='<div style="font-family:var(--mono);font-size:11px;color:var(--cyan);background:var(--bg2);padding:4px 8px;border-radius:4px">nha collab read</div>';
1766
+ h+='</div>';
1767
+ h+='<div style="background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px">';
1768
+ h+='<div style="color:var(--amber);font-size:10px;font-family:var(--term);letter-spacing:1px;margin-bottom:8px">USE CASES</div>';
1769
+ h+='<div style="color:var(--dim);font-size:11px;font-family:var(--mono);line-height:18px">';
1770
+ h+='• Two Claude Code instances sharing context in real-time<br>';
1771
+ h+='• Team sharing AI analysis privately (security audits, code reviews)<br>';
1772
+ h+='• Coordinating deployments between AI agents<br>';
1773
+ h+='• Security briefings with auto-delete TTL</div>';
1774
+ h+='</div>';
1775
+ h+='</div>';
1747
1776
  }
1748
1777
  h+='</div>';
1749
1778
 
@@ -1761,7 +1790,7 @@ function renderCollab(el){
1761
1790
 
1762
1791
  function renderCollabChannelList(){
1763
1792
  var el=document.getElementById('collabChannelList');if(!el)return;
1764
- if(collabChannels.length===0){el.innerHTML='<div style="color:var(--dim);font-size:11px;padding:8px">No channels yet</div>';return;}
1793
+ if(collabChannels.length===0){el.innerHTML='<div style="color:var(--dim);font-size:11px;padding:8px">No channels yet — click [+ Create Channel] to start, or [Join Channel] to enter an invite code.</div>';return;}
1765
1794
  var h='';
1766
1795
  for(var i=0;i<collabChannels.length;i++){
1767
1796
  var ch=collabChannels[i];