shadok-ai 0.7.1 → 0.7.3

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/README.md CHANGED
@@ -559,3 +559,18 @@ update breaks the detection).
559
559
  engine room (`waitFor()` + `press()` in library mode).
560
560
  - The TUI runs in the alternate screen: `fullBuffer()` ≈ visible screen;
561
561
  very long responses scroll out of view (increase `rows` if needed).
562
+
563
+ ## Why it is called that
564
+
565
+ Les Shadoks were French cartoon birds, drawn by Jacques Rouxel in 1968, and the
566
+ whole joke was that they pumped. Relentlessly, exhaustingly, and for no result
567
+ anyone could ever identify. One of their mottos: *the more it fails, the more
568
+ likely it is to work.*
569
+
570
+ An agent woken every hour to report that nothing happened is pumping. You pay a
571
+ model call to be told there was nothing to do, and it will tell you that
572
+ twenty-three more times today. Hence the guard in `crons.ts`: the check runs
573
+ without the model, and a quiet hour costs nothing at all.
574
+
575
+ The name went unexplained here for the project's first month, which is a
576
+ strange thing to leave out of a README when the joke *is* the design.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shadok-ai",
3
- "version": "0.7.1",
3
+ "version": "0.7.3",
4
4
  "main": "dist/session.js",
5
5
  "scripts": {
6
6
  "test": "node --import tsx --test test/*.ts .claude/skills/shadok-ai-agents/test/*.test.mjs context/*/test/*.test.mjs",
package/public/index.html CHANGED
@@ -315,6 +315,8 @@
315
315
  letter-spacing: 0;
316
316
  }
317
317
  header button.icon.stop:hover { border-color: var(--err); color: var(--err); }
318
+ /* The bell's diagonal slash shows only when notifications are muted. */
319
+ #muteNotif:not(.muted) .mute-slash { display: none; }
318
320
  /* "⋯" overflow menu: dropdown of the rarely-used actions. */
319
321
  .more-wrap { position: relative; display: inline-flex; }
320
322
  #moreMenu {
@@ -1461,10 +1463,10 @@
1461
1463
  against the right edge (the 🔑 was there, 16px from it — out of sight at
1462
1464
  the slightest zoom). -->
1463
1465
  <div class="hdr-tools">
1464
- <button id="secretsBtn" class="icon" title="Repo secrets (injected as env)">🔑</button>
1465
- <button id="profilesBtn" class="icon" title="Agent profiles (role + guardrails + secrets)">👤</button>
1466
+ <button id="secretsBtn" class="icon" title="Repo secrets (injected as env)" aria-label="Secrets"><svg viewBox="0 0 24 24" width="15" height="15" style="vertical-align:-2px" aria-hidden="true"><circle cx="8.5" cy="8.5" r="3.5" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M11 11l7.5 7.5M15.5 15.5l1.8-1.8M17.8 17.8l1.7-1.7" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
1467
+ <button id="profilesBtn" class="icon" title="Agent profiles (role + guardrails + secrets)" aria-label="Profiles"><svg viewBox="0 0 24 24" width="15" height="15" style="vertical-align:-2px" aria-hidden="true"><circle cx="12" cy="8.5" r="3.6" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M5.5 19.5a6.5 6.5 0 0 1 13 0" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></button>
1466
1468
  <button id="telegramBtn" class="icon" title="Configure the Telegram bot (token, on/off, allowed chats)"><svg viewBox="0 0 24 24" width="15" height="15" style="vertical-align:-2px" aria-hidden="true"><path fill="#26A5E4" d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg></button>
1467
- <button id="muteNotif" class="icon" title="Mute the notification sound">🔔</button>
1469
+ <button id="muteNotif" class="icon" title="Mute the notification sound" aria-label="Notification sound"><svg viewBox="0 0 24 24" width="15" height="15" style="vertical-align:-2px" aria-hidden="true"><path d="M6 16.5h12c-1.3-1.1-2-2.7-2-4.5v-1.2a4 4 0 0 0-8 0v1.2c0 1.8-.7 3.4-2 4.5z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/><path d="M10.4 19a1.7 1.7 0 0 0 3.2 0" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><line class="mute-slash" x1="4.5" y1="4.5" x2="19.5" y2="19.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></button>
1468
1470
  <div class="more-wrap">
1469
1471
  <button id="moreBtn" class="icon" title="More">⋯</button>
1470
1472
  <div id="moreMenu" hidden>
@@ -1826,8 +1828,8 @@
1826
1828
  <span class="value" id="branchView">—</span>
1827
1829
  </div>
1828
1830
  <span class="chan-actions">
1829
- <button id="chanCron" class="icon" title="Scheduled prompts for this agent (monitoring / reporting)">⏰</button>
1830
- <button id="chanStop" class="icon stop" title="End session">⏹️</button>
1831
+ <button id="chanCron" class="icon" title="Scheduled prompts for this agent (monitoring / reporting)" aria-label="Schedule"><svg viewBox="0 0 24 24" width="15" height="15" style="vertical-align:-2px" aria-hidden="true"><circle cx="12" cy="13" r="6.3" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M12 9.8V13l2.2 1.4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><path d="M4.8 6.6 7.2 4.6M19.2 6.6 16.8 4.6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></button>
1832
+ <button id="chanStop" class="icon stop" title="End session" aria-label="End session"><svg viewBox="0 0 24 24" width="15" height="15" style="vertical-align:-2px" aria-hidden="true"><path d="M12 4v7" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M8.5 6.8a6 6 0 1 0 7 0" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></button>
1831
1833
  <button id="chanTerm" class="icon" title="Terminal — the raw TUI for this agent" aria-label="Terminal"><svg viewBox="0 0 24 24" width="15" height="15" style="vertical-align:-2px" aria-hidden="true"><rect x="2.5" y="4" width="19" height="16" rx="2.5" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M6 9.5l3 2.5-3 2.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><path d="M12.5 15h5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></button>
1832
1834
  <!-- The per-agent menu (rename, profile, mirror, report to, close). It's
1833
1835
  the same menu a right-click / long-press on a tab opens — but with the
@@ -3157,7 +3159,7 @@
3157
3159
  }
3158
3160
  const muteBtn = $("muteNotif");
3159
3161
  function renderMute() {
3160
- muteBtn.textContent = muted ? "🔕" : "🔔";
3162
+ muteBtn.classList.toggle("muted", muted); // shows the bell's slash (CSS)
3161
3163
  // A toggle's tooltip says what the click will do, not what the state is:
3162
3164
  // "Notifications sound on" reads as a status line and leaves you guessing
3163
3165
  // whether clicking turns it on or off.