@kolbo/mcp 1.106.4 → 1.106.5

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.4",
3
+ "version": "1.106.5",
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/html.js CHANGED
@@ -17,7 +17,7 @@ function widgetPage({ title, body, script }) {
17
17
  <title>${title}</title>
18
18
  <link rel="preconnect" href="https://fonts.googleapis.com">
19
19
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
20
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" media="print" onload="this.media='all'">
20
+ <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'">
21
21
  <style>${KOLBO_CSS}</style>
22
22
  </head>
23
23
  <body>
package/src/apps/theme.js CHANGED
@@ -34,7 +34,13 @@ const KOLBO_CSS = `
34
34
  --spring: cubic-bezier(0.34, 1.56, 0.64, 1);
35
35
  --smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
36
36
  --specular: inset 0 1px 0 rgba(255, 255, 255, 0.18);
37
- color-scheme: dark;
37
+ /* "light dark" on the ROOT, never a fixed scheme. When an iframe's root
38
+ scheme differs from the host frame's, the browser paints an OPAQUE canvas
39
+ behind the page: a fixed "dark" here drew a dark square around every card
40
+ in hosts whose frame is light/normal (Codex). "light dark" adopts the host
41
+ frame's scheme, so the canvas stays transparent everywhere. The card
42
+ carries the real theme for its native controls below. */
43
+ color-scheme: light dark;
38
44
  }
39
45
  [data-theme="light"] {
40
46
  --bg: #f5f5f2;
@@ -50,12 +56,13 @@ const KOLBO_CSS = `
50
56
  --text-faint: rgba(10, 10, 12, 0.40);
51
57
  --brand-soft: rgba(59, 130, 246, 0.10);
52
58
  --specular: inset 0 1px 0 rgba(255, 255, 255, 0.65);
53
- color-scheme: light;
54
59
  }
55
60
  * { box-sizing: border-box; margin: 0; padding: 0; }
56
61
  html, body { background: transparent; }
62
+ .k-card { color-scheme: dark; }
63
+ [data-theme="light"] .k-card { color-scheme: light; }
57
64
  body {
58
- font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
65
+ font-family: 'Poppins', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
59
66
  color: var(--text);
60
67
  font-size: 14px;
61
68
  line-height: 1.5;
@@ -114,7 +121,6 @@ body {
114
121
  .k-mention {
115
122
  display: inline; padding: 1px 5px; border-radius: 5px;
116
123
  background: var(--brand-soft); color: var(--brand);
117
- font-family: 'JetBrains Mono', ui-monospace, monospace;
118
124
  font-size: 0.94em; font-weight: 500;
119
125
  }
120
126
  /* Single-line media caption (scene / batch prompt under the viewer) */
@@ -143,7 +149,7 @@ body {
143
149
  .k-chip .k-mono-icon {
144
150
  width: 14px; height: 14px; border-radius: 4px; background: var(--brand);
145
151
  color: #fff; font-size: 9px; font-weight: 700; display: inline-flex;
146
- align-items: center; justify-content: center; font-family: 'Inter', sans-serif;
152
+ align-items: center; justify-content: center; font-family: inherit;
147
153
  }
148
154
  .k-chip img.k-voice-thumb { width: 18px; height: 18px; border-radius: 999px; margin-left: -3px; }
149
155
  .k-ref-thumb { width: 26px; height: 26px; border-radius: 6px; object-fit: cover; border: 1px solid var(--border-strong); }
@@ -161,7 +167,7 @@ html.k-peek-open .k-card { min-height: 460px; }
161
167
  .k-peek-bar { flex: none; display: flex; align-items: center; gap: 8px; padding: 8px 8px 8px 14px; min-height: 44px; }
162
168
  .k-peek-cap { flex: 1; min-width: 0; font-size: 12.5px; color: rgba(255,255,255,0.78);
163
169
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
164
- .k-peek-count { flex: none; font-size: 11.5px; color: rgba(255,255,255,0.55); font-family: 'JetBrains Mono', ui-monospace, monospace; }
170
+ .k-peek-count { flex: none; font-size: 11.5px; color: rgba(255,255,255,0.55); font-variant-numeric: tabular-nums; }
165
171
  .k-peek-btn {
166
172
  flex: none; width: 32px; height: 32px; border: 1px solid rgba(255,255,255,0.14); border-radius: 999px;
167
173
  background: rgba(255,255,255,0.08); color: #fff; cursor: pointer; font-size: 15px;
@@ -303,7 +309,7 @@ video::-webkit-media-controls-fullscreen-button { display: none !important; }
303
309
  animating k-sweep skeleton forced per-frame backdrop re-sampling on phones;
304
310
  0.65 black over the shimmer reads identically without it */
305
311
  border: 1px solid rgba(255, 255, 255, 0.14);
306
- font-size: 11px; font-weight: 600; color: #fff;
312
+ font-size: 11px; font-weight: 600; color: #fff; text-transform: capitalize;
307
313
  }
308
314
  .k-spin {
309
315
  width: 12px; height: 12px; border-radius: 50%;
@@ -463,7 +469,7 @@ video::-webkit-media-controls-fullscreen-button { display: none !important; }
463
469
  .k-dot.on { width: 22px; opacity: 0.95; cursor: default; }
464
470
  .k-dot.ghost { cursor: default; opacity: 0.14; }
465
471
  .k-pager-label { font-size: 11px; color: var(--text-faint);
466
- font-family: 'JetBrains Mono', ui-monospace, monospace; min-width: 58px; text-align: center; }
472
+ font-variant-numeric: tabular-nums; min-width: 58px; text-align: center; }
467
473
 
468
474
  /* ---- Audio rows ---- */
469
475
  .k-audio-row { display: flex; align-items: center; gap: 10px; padding: 9px 10px;
@@ -533,7 +539,7 @@ video::-webkit-media-controls-fullscreen-button { display: none !important; }
533
539
  .k-footer:not(:has(.k-credits:not(:empty))) { display: none; }
534
540
  .k-footer a { color: var(--text-faint); text-decoration: none; }
535
541
  .k-footer a:hover { color: var(--brand); }
536
- .k-credits { margin-left: auto; font-family: 'JetBrains Mono', monospace; }
542
+ .k-credits { margin-left: auto; font-variant-numeric: tabular-nums; }
537
543
  `;
538
544
 
539
545
  /**
@@ -453,11 +453,17 @@ function moodboardChipsHTML(sc, s) {
453
453
  }
454
454
  return h;
455
455
  }
456
- function chip(inner) { return '<span class="k-chip">' + inner + '</span>'; }
456
+ // Labels read as words: "Image", "Enhanced", "Web search" — the first letter
457
+ // of the visible text (after any leading icon markup) is uppercased. Digits
458
+ // first ("1080p", "16:9", "7 images") are left alone.
459
+ function capLabel(inner) {
460
+ return String(inner).replace(/(^|>)(\\s*)([a-z])/, function (m, gt, sp, ch) { return gt + sp + ch.toUpperCase(); });
461
+ }
462
+ function chip(inner) { return '<span class="k-chip">' + capLabel(inner) + '</span>'; }
457
463
  // Same chip with a hover title — used to surface the asset id behind a
458
464
  // "2 Visual DNA" / "preset" label without spending chip width on it.
459
465
  function chipT(inner, title) {
460
- return '<span class="k-chip" title="' + esc(title) + '">' + inner + '</span>';
466
+ return '<span class="k-chip" title="' + esc(title) + '">' + capLabel(inner) + '</span>';
461
467
  }
462
468
  function iconFor(kind) {
463
469
  switch (kind) {