@kolbo/mcp 1.106.2 → 1.106.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolbo/mcp",
3
- "version": "1.106.2",
3
+ "version": "1.106.3",
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
@@ -126,10 +126,11 @@ body {
126
126
  display: inline-flex; align-items: center; gap: 5px;
127
127
  padding: 3px 8px; border-radius: 999px;
128
128
  background: var(--surface-2); border: 0;
129
- font-size: 10.5px; font-weight: 500; color: var(--text-muted);
129
+ font-size: 11.5px; font-weight: 500; color: var(--text-muted);
130
130
  white-space: nowrap;
131
- font-family: 'JetBrains Mono', ui-monospace, monospace;
132
- letter-spacing: 0.01em;
131
+ /* UI font, not a code font: tags are labels people read ("7 images",
132
+ "Seedance 2.5"), and monospace made the whole row look like a log line. */
133
+ font-variant-numeric: tabular-nums;
133
134
  animation: k-chip-in 200ms var(--spring);
134
135
  }
135
136
  @keyframes k-chip-in { from { opacity: 0; transform: translateX(-6px); } to { opacity: 1; transform: none; } }
@@ -221,7 +221,13 @@ function boot(sc) {
221
221
  // model_name / voice_name are the CLEAN catalog names, resolved server-side
222
222
  // (src/tools/_shared.js on submit, get_generation_status on completion). The raw
223
223
  // ids stay in sc.model / sc.voice for Recreate + model context — never for display.
224
- function modelLabel(sc) { return sc.model_name || sc.model; }
224
+ // 'Generations' is the server's placeholder when a status check spans
225
+ // several generations and no single model is known (src/tools/generate.js).
226
+ // It is not a model: rendered as one it showed a "G Generations" brand chip.
227
+ function modelLabel(sc) {
228
+ var m = sc.model_name || sc.model;
229
+ return m && m !== 'Generations' ? m : '';
230
+ }
225
231
  function voiceLabel(sc) { return sc.voice_name || sc.voice || (sc.settings || {}).voice; }
226
232
 
227
233
  // @VisualDNA / #Moodboard mentions are the tag syntax the server resolves into
@@ -297,7 +303,10 @@ function renderChips(sc) {
297
303
  var h = modelChipHTML(modelLabel(sc), sc.model_icon);
298
304
  var s = sc.settings || {};
299
305
  var kind = displayKind(sc);
300
- if (kind) h += chip(iconFor(kind) + ' ' + kind);
306
+ // One chip says what and how many: "7 images", not "image" + "×7".
307
+ var many = sc.count > 1;
308
+ var noun = kind === '3d' ? '3D model' : kind === 'audio' ? 'track' : kind;
309
+ if (kind) h += chip(iconFor(kind) + ' ' + (many ? sc.count + ' ' + noun + 's' : (kind === '3d' ? '3D' : kind)));
301
310
  // Shot count when we know it, otherwise just say multishot is on — the
302
311
  // provider picks the count in that case, and showing nothing made an
303
312
  // enabled toggle look like it had not applied.
@@ -332,7 +341,7 @@ function renderChips(sc) {
332
341
  h += chip(face + ' ' + esc(voice));
333
342
  }
334
343
  if (s.mode) h += chip(esc(s.mode));
335
- if (sc.count > 1) h += chip('×' + sc.count);
344
+ if (many && !kind) h += chip(sc.count + ' items');
336
345
  h += referenceHTML(sc);
337
346
  el('chips').innerHTML = h;
338
347
  }