@kolbo/mcp 1.81.8 → 1.81.10

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.81.8",
3
+ "version": "1.81.10",
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": {
@@ -1,6 +1,6 @@
1
1
  # AUTO-GENERATED — do not edit
2
2
 
3
- This tree is mirrored from kolbo-code@beae0e9, the single source of truth.
3
+ This tree is mirrored from kolbo-code@9c91cff, the single source of truth.
4
4
  Canonical source: packages/opencode/skills/kolbo/
5
5
  Distribution: .github/workflows/sync-skill-to-plugin.yml
6
6
 
@@ -30,6 +30,15 @@ Read [routing.md](references/filmmaking/routing.md) for the full decision rules.
30
30
  | Revise one failed behavior without losing what worked | Workbench | `validation.md` and the relevant craft reference |
31
31
  | Multi-scene, episode, commercial, music video, or feature workflow | Production | `production-bible.md`, `workflows.md`, `validation.md` |
32
32
 
33
+ Craft packs named in the table above (load only what the shot needs):
34
+ [scene-engine.md](references/filmmaking/scene-engine.md) ·
35
+ [asset-preproduction.md](references/filmmaking/asset-preproduction.md) ·
36
+ [acting-direction.md](references/filmmaking/acting-direction.md) ·
37
+ [blocking-continuity.md](references/filmmaking/blocking-continuity.md) ·
38
+ [cinematography.md](references/filmmaking/cinematography.md) ·
39
+ [physics-action.md](references/filmmaking/physics-action.md) ·
40
+ [audio-dialogue-music.md](references/filmmaking/audio-dialogue-music.md)
41
+
33
42
  For Seedance 2.5, always read [seedance-2-5.md](references/models/seedance25.md) before final compilation. Treat capability numbers as a dated adapter snapshot and verify them against current provider/catalog truth when real money or production delivery depends on them.
34
43
 
35
44
  ## Keep two layers separate
package/src/apps/html.js CHANGED
@@ -173,6 +173,9 @@ function bindPeekHits(root) {
173
173
  };
174
174
  });
175
175
  }
176
+ // Whether THIS peek took the iframe fullscreen (vs. opening inside a card the
177
+ // user had already fullscreened) — only then does closing it hand the mode back.
178
+ var peekWentFullscreen = false;
176
179
  function openPeek(url, kind, cap) {
177
180
  if (!url) return;
178
181
  var box = ensurePeek();
@@ -184,6 +187,23 @@ function openPeek(url, kind, cap) {
184
187
  el('peek-cap').textContent = cap || '';
185
188
  box.hidden = false;
186
189
  if (window.kolbo && window.kolbo.notifySize) window.kolbo.notifySize();
190
+ // Go big when the host allows it: the overlay is ALREADY visible inside the
191
+ // card, so a host that refuses fullscreen (or never answers the request)
192
+ // still shows the preview — the failure mode is "smaller", never "nothing".
193
+ // Skip the request when the card itself is fullscreen; the overlay covers it.
194
+ if (!window.kolbo || !window.kolbo.requestDisplayMode) return;
195
+ if (document.documentElement.classList.contains('k-fullscreen')) return;
196
+ try {
197
+ window.kolbo.requestDisplayMode('fullscreen').then(function (res) {
198
+ // The user may have closed the peek before the host answered — hand the
199
+ // grant straight back instead of fullscreening an empty card.
200
+ if (!(res && res.mode === 'fullscreen')) return;
201
+ if (box.hidden) { window.kolbo.requestDisplayMode('inline').catch(function () {}); return; }
202
+ peekWentFullscreen = true;
203
+ document.documentElement.classList.add('k-peek-fs');
204
+ if (window.kolbo.setFullscreen) window.kolbo.setFullscreen(true);
205
+ }).catch(function () {});
206
+ } catch (e) {}
187
207
  }
188
208
  function closePeek() {
189
209
  var box = el('peek');
@@ -192,6 +212,12 @@ function closePeek() {
192
212
  el('peek-img').removeAttribute('src');
193
213
  var vid = el('peek-video');
194
214
  if (vid) { try { vid.pause(); } catch (e) {} vid.removeAttribute('src'); }
215
+ if (peekWentFullscreen) {
216
+ peekWentFullscreen = false;
217
+ document.documentElement.classList.remove('k-peek-fs');
218
+ try { window.kolbo.requestDisplayMode('inline').catch(function () {}); } catch (e) {}
219
+ if (window.kolbo.setFullscreen) window.kolbo.setFullscreen(false);
220
+ }
195
221
  if (window.kolbo && window.kolbo.notifySize) window.kolbo.notifySize();
196
222
  }
197
223
  document.addEventListener('keydown', function (e) { if (e.key === 'Escape') closePeek(); });
package/src/apps/theme.js CHANGED
@@ -155,6 +155,10 @@ body {
155
155
  display: inline-flex; align-items: center; justify-content: center;
156
156
  }
157
157
  .k-peek-cap { font-size: 12px; color: var(--text-muted); text-align: center; max-width: 100%; word-break: break-word; }
158
+ /* Peek granted host fullscreen: the overlay owns the whole viewport, not the card. */
159
+ html.k-peek-fs, html.k-peek-fs body { height: 100%; overflow: hidden; }
160
+ html.k-peek-fs .k-peek { position: fixed; inset: 0; z-index: 50; }
161
+ html.k-peek-fs .k-peek img, html.k-peek-fs .k-peek video { max-height: calc(100vh - 72px); }
158
162
  /* Visual DNA chips: the character's face, so you can see WHICH DNA is locked in. */
159
163
  .k-dna-face { width: 18px; height: 18px; border-radius: 999px; object-fit: cover; margin-left: -3px; background: var(--border-strong); }
160
164
  .k-dna-stack .k-dna-stack-item { display: inline-flex; }