@kolbo/mcp 1.106.3 → 1.106.4

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": "@kolbo/mcp",
3
- "version": "1.106.3",
3
+ "version": "1.106.4",
4
4
  "description": "Kolbo AI MCP Server - Generate images, videos, music, speech, and sound effects from Claude Code",
5
5
  "main": "src/index.js",
6
6
  "bin": {
package/src/apps/theme.js CHANGED
@@ -11,7 +11,10 @@
11
11
  const KOLBO_CSS = `
12
12
  :root {
13
13
  --bg: #0f0f0f;
14
- --card: rgba(22, 22, 25, 0.96);
14
+ /* A translucent lift, not a fixed colour: every host paints its own dark grey
15
+ behind the iframe (claude.ai, ChatGPT, Codex, Kolbo Code all differ), and a
16
+ fixed near-black card read as a hole cut into the chat. */
17
+ --card: rgba(255, 255, 255, 0.04);
15
18
  --card-solid: #161619;
16
19
  --panel: rgba(255, 255, 255, 0.035);
17
20
  --surface: rgba(255, 255, 255, 0.03);
@@ -67,7 +70,8 @@ body {
67
70
  -webkit-backdrop-filter: blur(20px) saturate(180%);
68
71
  border: 1px solid var(--border);
69
72
  border-radius: var(--radius-card);
70
- box-shadow: 0 2px 16px rgba(0, 0, 0, 0.22), var(--specular);
73
+ /* No drop shadow: on a dark host it only adds a muddy halo. */
74
+ box-shadow: var(--specular);
71
75
  overflow: hidden;
72
76
  animation: k-in 400ms var(--spring);
73
77
  }
@@ -4,27 +4,34 @@ const { widgetPage } = require('../html');
4
4
 
5
5
  const BODY = `
6
6
  <style>
7
- #loading[hidden], #balance[hidden], #error[hidden] { display: none !important; }
8
- .k-credit-total { font-size: clamp(30px, 8vw, 46px); font-weight: 600; letter-spacing: -1.5px; line-height: 1.2; overflow-wrap: anywhere; }
9
- .k-credit-label { color: var(--text-muted); font-size: 12px; margin-top: 6px; }
10
- .k-credit-breakdown { margin: 22px 0 0; padding: 0; }
11
- .k-credit-row { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-top: 1px solid var(--border); font-size: 13px; }
7
+ #loading[hidden], #balance[hidden], #error[hidden], #breakdown[hidden] { display: none !important; }
8
+ /* One line by default. Agents check the balance at session start and before
9
+ big batches; a full-height balance card each time buried the chat. */
10
+ .k-credit-line { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
11
+ .k-credit-total { font-size: 22px; font-weight: 650; letter-spacing: -0.5px; line-height: 1.2;
12
+ font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
13
+ .k-credit-label { color: var(--text-muted); font-size: 12px; }
14
+ .k-credit-line .k-text-btn { margin-left: auto; align-self: center; }
15
+ .k-credit-breakdown { margin: 10px 0 0; padding: 0; }
16
+ .k-credit-row { display: flex; justify-content: space-between; gap: 16px; padding: 8px 0; border-top: 1px solid var(--border); font-size: 12.5px; }
12
17
  .k-credit-row dt { color: var(--text-muted); }
13
18
  .k-credit-row dd { margin: 0; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; text-align: right; }
14
19
  </style>
15
20
  <div class="k-card">
16
- <div class="k-head"><span class="k-logo" id="logo"></span><span class="k-title">Credit balance</span></div>
21
+ <div class="k-head"><span class="k-logo" id="logo"></span><span class="k-title">Credits</span></div>
17
22
  <div class="k-body" aria-live="polite">
18
- <div id="loading" class="k-skel" style="height:160px" aria-label="Loading credit balance"></div>
23
+ <div id="loading" class="k-skel" style="min-height:0;height:28px" aria-label="Loading credit balance"></div>
19
24
  <div id="balance" hidden>
20
- <div class="k-credit-total" id="total"></div>
21
- <div class="k-credit-label">Available credits</div>
22
- <dl class="k-credit-breakdown">
25
+ <div class="k-credit-line">
26
+ <span class="k-credit-total" id="total"></span>
27
+ <span class="k-credit-label">available</span>
28
+ <button type="button" class="k-text-btn" id="toggle" aria-expanded="false" aria-controls="breakdown">Details</button>
29
+ </div>
30
+ <dl class="k-credit-breakdown" id="breakdown" hidden>
23
31
  <div class="k-credit-row"><dt>Plan credits</dt><dd id="plan"></dd></div>
24
32
  <div class="k-credit-row"><dt>Credit pack</dt><dd id="pack"></dd></div>
25
33
  <div class="k-credit-row"><dt>Redemption</dt><dd id="redemption"></dd></div>
26
34
  </dl>
27
- <div class="k-credit-label">Balance at time of check</div>
28
35
  </div>
29
36
  <div id="error" class="k-error" hidden>Credit balance unavailable. Please check again.</div>
30
37
  </div>
@@ -32,6 +39,13 @@ const BODY = `
32
39
 
33
40
  const SCRIPT = `
34
41
  el('logo').innerHTML = KOLBO_LOGO + '<span>Kolbo</span>';
42
+ el('toggle').onclick = function () {
43
+ var open = el('breakdown').hidden;
44
+ el('breakdown').hidden = !open;
45
+ el('toggle').setAttribute('aria-expanded', String(open));
46
+ el('toggle').textContent = open ? 'Hide' : 'Details';
47
+ window.kolbo.notifySize();
48
+ };
35
49
  function amount(value) {
36
50
  if (value == null || value === '' || !Number.isFinite(Number(value))) return '\u2014';
37
51
  return Number(value).toLocaleString('en-US', { maximumFractionDigits: 8 });
@@ -30,7 +30,7 @@ const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
30
30
 
31
31
  function trendTile(t) {
32
32
  const example = (t.examples || [])[0] || {};
33
- const poster = t.cover?.image || example.poster || t.source_poster;
33
+ const poster = t.cover?.image || example.poster;
34
34
  return {
35
35
  id: t.slug,
36
36
  title: t.name,