shadok-ai 0.2.49 → 0.2.51

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/public/index.html +48 -23
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shadok-ai",
3
- "version": "0.2.49",
3
+ "version": "0.2.51",
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",
package/public/index.html CHANGED
@@ -1252,6 +1252,19 @@
1252
1252
  }
1253
1253
  /* Pousse ce qui suit à droite : un pied peut porter une note à gauche. */
1254
1254
  .modal-foot .foot-note { margin-right: auto; font-size: 11px; color: var(--text-dim); }
1255
+ /* Popins sans pied dont le contenu peut s'allonger (listes de secrets, de
1256
+ profils…). Sans ça, TOUT le panneau défilait et le ✕ partait avec l'entête.
1257
+ Ici l'entête — titre, ✕ et description — reste épinglée, seul le corps
1258
+ défile. Même intention que `.modal`, mais on garde le titre en gras (pas le
1259
+ libellé mono des modales) et on ne réclame pas de pied. */
1260
+ .sec-panel.pinned { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
1261
+ .sec-panel.pinned > .pin-head {
1262
+ flex: 0 0 auto; padding: 14px 16px 10px;
1263
+ border-bottom: 1px solid var(--line);
1264
+ }
1265
+ .sec-panel.pinned > .pin-head > .sec-head { margin-bottom: 8px; }
1266
+ .sec-panel.pinned > .pin-head > .sec-note:last-child { margin-bottom: 0; }
1267
+ .sec-panel.pinned > .pin-body { flex: 1 1 auto; overflow: auto; padding: 12px 16px 14px; }
1255
1268
  .sec-panel :focus-visible { outline: 2px solid var(--amber); outline-offset: 1px; }
1256
1269
  /* Les <select> et les champs numériques n'étaient couverts par aucune règle :
1257
1270
  ils tombaient sur le rendu par défaut du navigateur — clair — au milieu d'un
@@ -1351,20 +1364,24 @@
1351
1364
  </div>
1352
1365
 
1353
1366
  <div id="secretsOverlay" class="overlay" hidden>
1354
- <div id="secretsPanel">
1355
- <div class="sec-head">
1356
- <strong>Secret vault</strong>
1357
- <button id="secretsClose" title="Close">✕</button>
1367
+ <div id="secretsPanel" class="sec-panel pinned">
1368
+ <div class="pin-head">
1369
+ <div class="sec-head">
1370
+ <strong>Secret vault</strong>
1371
+ <button id="secretsClose" title="Close">✕</button>
1372
+ </div>
1373
+ <p class="sec-note">A central list of named secrets (stored 600 outside any repo, values write-only).</p>
1374
+ <p class="sec-note warn"><b>A secret here reaches no agent on its own.</b> It is injected as an environment variable only into agents whose <b>profile</b> references it — define the value once here, then tick it in a profile.
1375
+ <button type="button" class="linkish" id="secretsToProfiles">Manage profiles →</button></p>
1376
+ </div>
1377
+ <div class="pin-body">
1378
+ <ul id="secretsList"></ul>
1379
+ <form id="secretsAdd">
1380
+ <input id="secretKey" placeholder="NAME" autocomplete="off" spellcheck="false" />
1381
+ <input id="secretVal" placeholder="value" autocomplete="off" spellcheck="false" />
1382
+ <button type="submit">Add</button>
1383
+ </form>
1358
1384
  </div>
1359
- <p class="sec-note">A central list of named secrets (stored 600 outside any repo, values write-only).</p>
1360
- <p class="sec-note warn"><b>A secret here reaches no agent on its own.</b> It is injected as an environment variable only into agents whose <b>profile</b> references it — define the value once here, then tick it in a profile.
1361
- <button type="button" class="linkish" id="secretsToProfiles">Manage profiles →</button></p>
1362
- <ul id="secretsList"></ul>
1363
- <form id="secretsAdd">
1364
- <input id="secretKey" placeholder="NAME" autocomplete="off" spellcheck="false" />
1365
- <input id="secretVal" placeholder="value" autocomplete="off" spellcheck="false" />
1366
- <button type="submit">Add</button>
1367
- </form>
1368
1385
  </div>
1369
1386
  </div>
1370
1387
 
@@ -1506,12 +1523,15 @@
1506
1523
  </div>
1507
1524
 
1508
1525
  <div id="profilesOverlay" class="overlay" hidden>
1509
- <div id="profilesPanel" class="sec-panel">
1510
- <div class="sec-head">
1511
- <strong>Agent profiles</strong>
1512
- <button id="profilesClose" title="Close">✕</button>
1526
+ <div id="profilesPanel" class="sec-panel pinned">
1527
+ <div class="pin-head">
1528
+ <div class="sec-head">
1529
+ <strong>Agent profiles</strong>
1530
+ <button id="profilesClose" title="Close">✕</button>
1531
+ </div>
1532
+ <p class="sec-note">A profile is a named role applied at spawn: a system prompt, native Claude permission guardrails (e.g. no <code>git commit</code>), extra secrets, and an optional model. Global — reusable on any repo. <b>Soft</b>: agents run as you, so this is a role + guardrail layer, not a sandbox.</p>
1513
1533
  </div>
1514
- <p class="sec-note">A profile is a named role applied at spawn: a system prompt, native Claude permission guardrails (e.g. no <code>git commit</code>), extra secrets, and an optional model. Global — reusable on any repo. <b>Soft</b>: agents run as you, so this is a role + guardrail layer, not a sandbox.</p>
1534
+ <div class="pin-body">
1515
1535
  <ul id="profilesList"></ul>
1516
1536
  <hr style="border:none;border-top:1px solid rgba(255,255,255,.1);margin:12px 0">
1517
1537
  <div class="sec-head"><strong id="profEditTitle">New profile</strong></div>
@@ -1525,16 +1545,20 @@
1525
1545
  <button id="profSave" class="primary">Save profile</button>
1526
1546
  <button id="profReset">Clear form</button>
1527
1547
  </div>
1548
+ </div>
1528
1549
  </div>
1529
1550
  </div>
1530
1551
 
1531
1552
  <div id="telegramOverlay" class="overlay" hidden>
1532
- <div id="telegramPanel" class="sec-panel">
1533
- <div class="sec-head">
1534
- <strong>Telegram bot</strong>
1535
- <button id="telegramClose" title="Close">✕</button>
1553
+ <div id="telegramPanel" class="sec-panel pinned">
1554
+ <div class="pin-head">
1555
+ <div class="sec-head">
1556
+ <strong>Telegram bot</strong>
1557
+ <button id="telegramClose" title="Close">✕</button>
1558
+ </div>
1559
+ <p class="sec-note" id="tgStatus">…</p>
1536
1560
  </div>
1537
- <p class="sec-note" id="tgStatus">…</p>
1561
+ <div class="pin-body">
1538
1562
  <button id="tgUnbind" hidden title="Unbind the board group so you can /setup a fresh one (e.g. after it became a supergroup)">Unbind group</button>
1539
1563
  <label class="check"><input type="checkbox" id="tgEnabled"><span>Bot enabled</span></label>
1540
1564
  <div class="field">
@@ -1554,6 +1578,7 @@
1554
1578
  </form>
1555
1579
  </div>
1556
1580
  <p class="sec-note">Applies live — running sessions are not interrupted.</p>
1581
+ </div>
1557
1582
  </div>
1558
1583
  </div>
1559
1584