nothumanallowed 6.8.0 → 6.8.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,6 +1,6 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "6.8.0",
3
+ "version": "6.8.2",
4
4
  "description": "NotHumanAllowed — 38 AI agents for security, code, DevOps, data & daily ops. Per-agent memory, Telegram + Discord auto-responder, proactive intelligence daemon, voice chat, plugin system.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -437,7 +437,8 @@ async function executeTool(action, params, config) {
437
437
  const gm = await import('../services/google-gmail.mjs');
438
438
  if (params.all) {
439
439
  const result = await gm.markAllAsRead(config);
440
- return `Done! ${result.count} email${result.count !== 1 ? 's' : ''} marked as read.`;
440
+ if (result.count === 0) return 'All emails are already read. No changes needed.';
441
+ return `Success! ${result.count} email${result.count !== 1 ? 's' : ''} marked as read.`;
441
442
  }
442
443
  if (params.count) {
443
444
  const msgs = await gm.listMessages(config, 'is:unread', params.count);
@@ -365,7 +365,8 @@ async function executeTool(action, params, config) {
365
365
  const cfg = (await import('../config.mjs')).loadConfig();
366
366
  if (params.all) {
367
367
  const result = await gm.markAllAsRead(cfg);
368
- return `Done! ${result.count} email${result.count !== 1 ? 's' : ''} marked as read.`;
368
+ if (result.count === 0) return 'All emails are already read. No changes needed.';
369
+ return `Success! ${result.count} email${result.count !== 1 ? 's' : ''} marked as read.`;
369
370
  }
370
371
  if (params.count) {
371
372
  const msgs = await gm.listMessages(cfg, 'is:unread', params.count);
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 = '6.8.0';
8
+ export const VERSION = '6.8.2';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -235,7 +235,7 @@ function loadDash(){
235
235
  function loadAgents(){return apiGet('/api/agents').then(function(r){agentsList=(r&&r.agents)||[]})}
236
236
  function updateBadges(){
237
237
  var eb=document.getElementById('emailBadge'),tb=document.getElementById('taskBadge'),cb=document.getElementById('calBadge');
238
- var ue=dash.emails.length,ut=dash.tasks.filter(function(t){return t.status!=='done'}).length,uc=dash.events.length;
238
+ var ue=dash.emails.filter(function(e){return e.isUnread}).length,ut=dash.tasks.filter(function(t){return t.status!=='done'}).length,uc=dash.events.length;
239
239
  if(eb){eb.textContent=ue;eb.style.display=ue>0?'':'none'}
240
240
  if(tb){tb.textContent=ut;tb.style.display=ut>0?'':'none'}
241
241
  if(cb){cb.textContent=uc;cb.style.display=uc>0?'':'none'}
@@ -373,7 +373,8 @@ function renderEmails(el){
373
373
  var e=dash.emails;
374
374
  if(e.length===0){el.innerHTML='<div class="card" style="text-align:center;color:var(--dim);padding:30px">No unread emails</div>';return}
375
375
  var h='';e.forEach(function(x){
376
- h+='<div class="card email" style="cursor:pointer" onclick="openEmail(\\x27'+esc(x.id)+'\\x27)"><div class="email__header"><span class="email__from">'+esc(x.from)+'</span><span class="email__date">'+esc(x.date)+'</span></div><div class="email__subject">'+esc(x.subject)+'</div><div class="email__snippet">'+esc((x.snippet||'').slice(0,150))+'</div><div style="font-size:10px;color:var(--green3);margin-top:6px">Click to read full email</div></div>';
376
+ var unreadStyle=x.isUnread?'border-left:3px solid var(--green);font-weight:700':'border-left:3px solid transparent;opacity:0.7';
377
+ h+='<div class="card email" style="cursor:pointer;'+unreadStyle+'" onclick="openEmail(\\x27'+esc(x.id)+'\\x27)"><div class="email__header"><span class="email__from">'+esc(x.from)+'</span><span class="email__date">'+esc(x.date)+(x.isUnread?' <span style="color:var(--green);font-size:9px">NEW</span>':'')+'</span></div><div class="email__subject">'+esc(x.subject)+'</div><div class="email__snippet" style="font-weight:400">'+esc((x.snippet||'').slice(0,150))+'</div></div>';
377
378
  });
378
379
  el.innerHTML=h;
379
380
  }