@double_geste/agent-standup 1.25.10 β†’ 1.26.0

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/media/icon.png CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@double_geste/agent-standup",
3
- "version": "1.25.10",
3
+ "version": "1.26.0",
4
4
  "description": "Your Claude Code agents as a live video call, from the terminal: a local page in your browser, plus one-line status for status bars. Free, open source, zero token cost.",
5
5
  "bin": {
6
6
  "agent-standup": "bin/agent-standup.js"
@@ -0,0 +1 @@
1
+ <svg width="64" height="64" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><defs><clipPath id="room_16_c"><rect width="1024" height="1024" rx="230"/></clipPath><linearGradient id="room_16_room" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#10282f"/><stop offset="1" stop-color="#18444f"/></linearGradient><linearGradient id="room_16_body" gradientUnits="userSpaceOnUse" x1="0" y1="12" x2="0" y2="72"><stop offset="0" stop-color="#efa98f"/><stop offset="1" stop-color="#e8845f"/></linearGradient><linearGradient id="room_16_desk" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#506b73"/><stop offset="1" stop-color="#2f4850"/></linearGradient><linearGradient id="room_16_scene" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#10282f"/><stop offset="1" stop-color="#18444f"/></linearGradient></defs><g clip-path="url(#room_16_c)"><rect width="1024" height="1024" fill="url(#room_16_room)"/><g transform="translate(-355.797 -138.847) scale(17.35593)"><ellipse cx="25" cy="56" rx="4.6" ry="9" fill="#ba6a4c" transform="rotate(12 25 56)"/><rect x="27" y="20" width="46" height="56" rx="22" fill="url(#room_16_body)"/><ellipse cx="75" cy="56" rx="4.6" ry="9" fill="#ba6a4c" transform="rotate(-12 75 56)"/><ellipse cx="41.5" cy="40" rx="3.1" ry="4.3" fill="#2a2233"/><ellipse cx="58.5" cy="40" rx="3.1" ry="4.3" fill="#2a2233"/><path d="M37.9 32.7q3.6-2 7.2 0" fill="none" stroke="#2a2233" stroke-width="2.8" stroke-linecap="round" transform="rotate(13 41.5 32.2) translate(0 .5)"/><path d="M54.9 32.7q3.6-2 7.2 0" fill="none" stroke="#2a2233" stroke-width="2.8" stroke-linecap="round" transform="rotate(-13 58.5 32.2) translate(0 .5)"/><path d="M46 50.5q4 3.6 8 0" fill="none" stroke="#2a2233" stroke-width="2.9" stroke-linecap="round"/><path d="M26.5 37Q27 13 50 13Q73 13 73.5 37" fill="none" stroke="#2c2f40" stroke-width="4.2" stroke-linecap="round"/><rect x="23" y="33" width="7" height="14" rx="3.5" fill="#f5c04a"/><rect x="70" y="33" width="7" height="14" rx="3.5" fill="#f5c04a"/></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg width="64" height="64" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><defs><clipPath id="night_32_c"><rect width="1024" height="1024" rx="230"/></clipPath><linearGradient id="night_32_room" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#10282f"/><stop offset="1" stop-color="#18444f"/></linearGradient><linearGradient id="night_32_body" gradientUnits="userSpaceOnUse" x1="0" y1="12" x2="0" y2="72"><stop offset="0" stop-color="#efa98f"/><stop offset="1" stop-color="#e8845f"/></linearGradient><linearGradient id="night_32_desk" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#506b73"/><stop offset="1" stop-color="#2f4850"/></linearGradient><linearGradient id="night_32_scene" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#10282f"/><stop offset="1" stop-color="#18444f"/></linearGradient></defs><g clip-path="url(#night_32_c)"><rect width="1024" height="1024" fill="url(#night_32_room)"/><g transform="translate(-300.698 -97.524) scale(16.25397)"><ellipse cx="25" cy="56" rx="4.6" ry="9" fill="#ba6a4c" transform="rotate(12 25 56)"/><rect x="27" y="20" width="46" height="56" rx="22" fill="url(#night_32_body)"/><ellipse cx="75" cy="56" rx="4.6" ry="9" fill="#ba6a4c" transform="rotate(-12 75 56)"/><ellipse cx="35.5" cy="46" rx="3.3" ry="2" fill="#ff6f91" opacity=".34"/><ellipse cx="64.5" cy="46" rx="3.3" ry="2" fill="#ff6f91" opacity=".34"/><ellipse cx="41.5" cy="40" rx="3.1" ry="4.3" fill="#2a2233"/><circle cx="42.5" cy="38.5" r="1.1" fill="#fff"/><ellipse cx="58.5" cy="40" rx="3.1" ry="4.3" fill="#2a2233"/><circle cx="59.5" cy="38.5" r="1.1" fill="#fff"/><path d="M37.9 32.7q3.6-2 7.2 0" fill="none" stroke="#2a2233" stroke-width="2.1" stroke-linecap="round" transform="rotate(13 41.5 32.2) translate(0 .5)"/><path d="M54.9 32.7q3.6-2 7.2 0" fill="none" stroke="#2a2233" stroke-width="2.1" stroke-linecap="round" transform="rotate(-13 58.5 32.2) translate(0 .5)"/><path d="M46 50.5q4 3.6 8 0" fill="none" stroke="#2a2233" stroke-width="2.2" stroke-linecap="round"/><path d="M26.5 37Q27 13 50 13Q73 13 73.5 37" fill="none" stroke="#2c2f40" stroke-width="3.7" stroke-linecap="round"/><rect x="23" y="33" width="7" height="14" rx="3.5" fill="#f5c04a" stroke="#2c2f40" stroke-width="1.4"/><rect x="70" y="33" width="7" height="14" rx="3.5" fill="#f5c04a" stroke="#2c2f40" stroke-width="1.4"/><path d="M27 45q-2 11 13 12" fill="none" stroke="#2c2f40" stroke-width="2" stroke-linecap="round"/><circle cx="40" cy="57" r="2.53" fill="#2c2f40"/><rect x="-20" y="62" width="140" height="33" fill="url(#night_32_desk)"/><rect x="-20" y="62" width="140" height="1.3" fill="#fff" opacity=".38"/><rect x="-20" y="63.3" width="140" height="2.6" fill="#000" opacity=".1"/><g transform="translate(-11.5 0)"><rect x="79" y="55.6" width="7.4" height="6.8" rx="1.6" fill="#f6f2ea"/><path d="M86.2 57q3.2 0 3.2 2.2t-3.2 2.2" fill="none" stroke="#f6f2ea" stroke-width="1.3"/><g fill="none" stroke="#fff" stroke-width=".8" stroke-linecap="round" opacity=".7"><path d="M81.5 53q-1.4-1.8 0-3.4M84.3 53q-1.4-1.8 0-3.4"/></g></g></g></g></svg>
package/public/index.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width,initial-scale=1">
6
6
  <title>Agent Standup</title>
7
- <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ctext y='.9em' font-size='90'%3EπŸŽ₯%3C/text%3E%3C/svg%3E">
7
+ <link rel="icon" href="favicon.svg" type="image/svg+xml">
8
8
  <style>
9
9
  :root { --bg:#12131a; --panel:#1b1d27; --panel2:#232634; --line:#2a2d3b; --text:#e9eaf0; --dim:#9aa0b6; --ease:cubic-bezier(.2,.8,.2,1); --accent:#7c9cff; --gold:#f5c04a; --ok:#58d68d; --warn:#f0a020; --red:#ff5a5a; --r:10px }
10
10
  * { box-sizing:border-box }
@@ -20,7 +20,7 @@
20
20
  .brand { display:flex; align-items:center; gap:9px; min-width:0; overflow:hidden } .brand .logo { flex:none } .brand > div { min-width:0 } .brand b { overflow:hidden; text-overflow:ellipsis }
21
21
  header > * { flex-shrink:0 } header .brand { flex-shrink:100 } header #board { flex-shrink:50 } .tok, .ctxp { flex-shrink:2; min-width:0; overflow:hidden; text-overflow:ellipsis } #pill { flex-shrink:.05; min-width:0; overflow:hidden; text-overflow:ellipsis } /* in a narrow window the buttons (the gear above all) stay whole: the name gives way first, then the counters */
22
22
  @media (max-width:720px) { .ctxp { display:none !important } } @media (max-width:620px) { .tok { display:none !important } } @media (max-width:560px) { #bCoffee { display:none !important } } @media (max-width:480px) { header { gap:6px; padding-left:8px; padding-right:8px } } /* narrow: the coffee link stays in βš™ β€Ί Tools */
23
- .logo { width:26px; height:26px; border-radius:8px; background:#d97757; display:grid; place-items:center; font-size:15px; flex:none }
23
+ .logo { width:26px; height:26px; display:block; flex:none }
24
24
  .brand b { font:700 14px "Comic Sans MS","Chalkboard SE",system-ui,sans-serif; white-space:nowrap }
25
25
  .brand small { display:block; color:var(--dim); font-size:11px; max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
26
26
  .sp { flex:1 }
@@ -255,7 +255,7 @@
255
255
  </head>
256
256
  <body>
257
257
  <header>
258
- <div class="brand"><div class="logo">πŸŽ₯</div><div><b>Agent Standup</b><small id="subtitle"></small></div></div>
258
+ <div class="brand"><img class="logo" src="icon.svg" alt=""><div><b>Agent Standup</b><small id="subtitle"></small></div></div>
259
259
  <span id="pill">REPLAY</span><button id="tok" class="tok" style="display:none"></button><button id="ctxp" class="ctxp" style="display:none"></button><span id="board" aria-live="polite"></span><span id="meet" class="meet"></span>
260
260
  <div class="sp"></div>
261
261
  <div class="seg" id="viewSeg"><button data-v="call" class="on" data-ic="πŸ‘₯" data-fr="Appel" data-en="Call">Appel</button><button data-v="tree" data-ic="🌳" data-fr="Arbre" data-en="Tree">Arbre</button><button data-v="board" data-ic="πŸ—‚" data-fr="Sessions" data-en="Sessions">Sessions</button></div>
@@ -452,10 +452,9 @@ const SCENES = [
452
452
  <circle cx="22" cy="26" r="11" fill="#ff9bb8"/><ellipse cx="22" cy="26" rx="18" ry="3.6" fill="none" stroke="#ffe0a8" stroke-width="1.6" transform="rotate(-18 22 26)"/><path d="M13 22q9 4 18 1" stroke="#e86f98" stroke-width="1.4" fill="none"/>
453
453
  <circle cx="80" cy="20" r="6" fill="#6fd3ff"/><circle cx="77.5" cy="18" r="1.4" fill="#4ab6e6"/>${star(60, 14, 3)}${star(90, 40, 2.2, '#cfc2ff')}` },
454
454
  { desk: ['#506b73', '#2f4850'], svg: () => `<defs>${grad('gs6', '#10282f', '#18444f')}</defs><rect width="100" height="75" fill="url(#gs6)"/>
455
- ${[[5, 8], [36, 6], [67, 8]].map(([x, y], i) => `<rect x="${x}" y="${y}" width="28" height="22" rx="2.5" fill="#0a1a1f" stroke="#2b6a78" stroke-width=".8"/>
456
- <polyline points="${x + 3},${y + 17} ${x + 9},${y + 11} ${x + 14},${y + 14} ${x + 20},${y + 6} ${x + 25},${y + 9}" fill="none" stroke="${['#ff9a6b', '#4fd1a5', '#ffd84a'][i]}" stroke-width="1.3" stroke-linejoin="round"/>
457
- <rect x="${x + 3}" y="${y + 3}" width="9" height="1.4" rx=".7" fill="#4cc3ff" opacity=".7"/>`).join('')}
458
- <g fill="#ffe9a8" opacity=".7"><circle cx="20" cy="36" r="1" class="pulse"/><circle cx="50" cy="38" r="1" class="pulse" style="animation-delay:-.6s"/><circle cx="80" cy="36" r="1" class="pulse" style="animation-delay:-1.1s"/></g>` },
455
+ <rect x="9" y="-6" width="82" height="42" rx="3" fill="#0a1a1f"/>
456
+ ${[[12, 22, 9], [22, 31, 8], [68, 27, 9], [78, 19, 9]].map(([x, h, w], i) => `<rect x="${x}" y="${36 - h}" width="${w}" height="${h}" fill="${i % 2 ? '#15373f' : '#123038'}"/>` + [0, 1, 2].map((r) => `<rect x="${x + 1.6 + ((i + r) % 2) * 3.4}" y="${39 - h + r * 6.4}" width="1.8" height="2.4" rx=".4" fill="#ffd84a" opacity="${r === 1 ? '.9' : '.5'}"${r === 1 ? ` class="tw" style="animation-delay:-${i * .8}s"` : ''}/>`).join('')).join('')}
457
+ <path d="M36.6 0V36M63.4 0V36" stroke="#2b6a78" stroke-width="1.2"/><rect x="9" y="-6" width="82" height="42" rx="3" fill="none" stroke="#2b6a78" stroke-width="1.2"/>` },
459
458
  { desk: ['#a87a56', '#7c5438'], svg: () => `<defs>${grad('gs7', '#3a2b52', '#6b4a68')}<radialGradient id="gl7"><stop offset="0" stop-color="#ffd98a" stop-opacity=".75"/><stop offset="1" stop-color="#ffd98a" stop-opacity="0"/></radialGradient></defs>
460
459
  <rect width="100" height="75" fill="url(#gs7)"/><circle cx="82" cy="30" r="26" fill="url(#gl7)"/>
461
460
  <path d="M82 54V36" stroke="#2a2233" stroke-width="1.6"/><path d="M75 36q7-9 14 0z" fill="#ffd98a"/>
@@ -1180,11 +1179,11 @@ function watchDone(n) { // live: the team was busy for a while and has now bee
1180
1179
  if (EMBED) window.parent.postMessage({ agentStandup: 'notify', text: msg }, '*');
1181
1180
  else { try { if (document.hidden && 'Notification' in window && Notification.permission === 'granted') new Notification('Agent Standup', { body: msg }); } catch {} }
1182
1181
  }
1183
- const FAV0 = (document.querySelector('link[rel="icon"]') || {}).href;
1182
+ const FAV0 = (document.querySelector('link[rel="icon"]') || {}).href, FAVI = new Image(); FAVI.src = FAV0 || '';
1184
1183
  function setFav(color) {
1185
1184
  const l = document.querySelector('link[rel="icon"]'); if (!l || setFav.cur === color) return; setFav.cur = color;
1186
1185
  if (!color) { l.href = FAV0; return; }
1187
- const c = document.createElement('canvas'); c.width = c.height = 32; const g = c.getContext('2d'); g.font = '26px serif'; g.fillText('πŸŽ₯', 0, 26); g.fillStyle = color; g.beginPath(); g.arc(24, 8, 8, 0, 7); g.fill(); g.strokeStyle = '#12131a'; g.lineWidth = 2; g.stroke(); l.href = c.toDataURL();
1186
+ const c = document.createElement('canvas'); c.width = c.height = 32; const g = c.getContext('2d'); try { g.drawImage(FAVI, 0, 0, 32, 32); } catch {} g.fillStyle = color; g.beginPath(); g.arc(24, 8, 8, 0, 7); g.fill(); g.strokeStyle = '#12131a'; g.lineWidth = 2; g.stroke(); l.href = c.toDataURL();
1188
1187
  }
1189
1188
  function updateTitle() {
1190
1189
  paintStates(); if (S.live && S.nBlocked && !S.wasBlocked && prefs.notify) { AUD.alert(); const msg = L('Un agent attend peut-Γͺtre votre feu vert βœ‹', 'An agent may be waiting for you βœ‹'); if (EMBED) window.parent.postMessage({ agentStandup: 'notify', text: msg }, '*'); else { try { if (document.hidden && 'Notification' in window && Notification.permission === 'granted') new Notification('Agent Standup', { body: msg }); } catch {} } } S.wasBlocked = S.nBlocked > 0;