@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 +1 -1
- package/src/apps/html.js +1 -1
- package/src/apps/theme.js +15 -9
- package/src/apps/widgets/generation.js +8 -2
package/package.json
CHANGED
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=
|
|
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
|
-
|
|
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: '
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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) {
|