typebulb 0.52.0 → 0.52.2
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/SKILL.md +2 -2
- package/dist/agents/claude/client.js +193 -185
- package/dist/agents/claude/styles.css +78 -23
- package/dist/agents/codex/client.js +194 -186
- package/dist/agents/codex/styles.css +78 -23
- package/dist/agents/pi/client.js +198 -190
- package/dist/agents/pi/styles.css +78 -23
- package/dist/index.js +212 -189
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -161,13 +161,10 @@ body {
|
|
|
161
161
|
/* `.on` latches the hover accent — the bar's only persistent state cue (every other
|
|
162
162
|
pill accents on hover alone). */
|
|
163
163
|
.pill:hover, .pill.on { border-color: var(--accent); color: var(--accent); }
|
|
164
|
-
/* Square glyph pill
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
Glyph content (emoji span / the Anthropic SVG) is vertically symmetric, so plain flex
|
|
169
|
-
centering is exact for it — and cap/alphabetic trim mis-seats a replaced SVG (it trims to
|
|
170
|
-
TEXT metrics), so opt glyph pills back out of the word-pill recipe. */
|
|
164
|
+
/* Square glyph pill: width pinned to the pill height rather than padding-driven. Glyph content
|
|
165
|
+
(emoji span / the Anthropic SVG) is vertically symmetric, so plain flex centering is exact for it
|
|
166
|
+
— and cap/alphabetic trim mis-seats a replaced SVG (it trims to TEXT metrics), so opt glyph pills
|
|
167
|
+
back out of the word-pill recipe. */
|
|
171
168
|
.pill.glyph {
|
|
172
169
|
display: inline-flex;
|
|
173
170
|
align-items: center;
|
|
@@ -320,19 +317,25 @@ body {
|
|
|
320
317
|
-webkit-text-fill-color: transparent;
|
|
321
318
|
}
|
|
322
319
|
.shimmer-slow { --shimmer-speed: 7s; }
|
|
320
|
+
/* Summary's text-only working cue sits on a white surface in the light theme. Widen and deepen its
|
|
321
|
+
blue sweep there so the seven-second motion remains plainly visible; dark's calibrated treatment
|
|
322
|
+
stays untouched. */
|
|
323
|
+
html:not([data-theme="dark"]) .turn-view > .shimmer-text {
|
|
324
|
+
background-image: linear-gradient(100deg, currentColor 20%, var(--accent) 40%, color-mix(in srgb, var(--accent) 70%, var(--fg)) 50%, var(--accent) 60%, currentColor 80%) !important;
|
|
325
|
+
}
|
|
323
326
|
@keyframes bulb-shimmer { from { background-position: 250% 0; } to { background-position: -250% 0; } }
|
|
324
327
|
@media (prefers-reduced-motion: reduce) {
|
|
325
328
|
.shimmer { animation: none !important; background: color-mix(in srgb, var(--accent) 15%, var(--shimmer-base, transparent)) !important; }
|
|
326
329
|
.shimmer-text { animation: none !important; background: none !important; -webkit-text-fill-color: currentColor; }
|
|
327
330
|
}
|
|
328
331
|
|
|
329
|
-
/*
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
.
|
|
332
|
+
/* THE WORKING STATE for an opaque word pill — the token chip mid-turn. Only the shimmer's knobs live
|
|
333
|
+
here; the sweep itself is the shared .shimmer above, composed by `busyPill()` (ui.ts) so a new busy
|
|
334
|
+
pill cannot land at its own speed or its own base colour. The sweep blends with --panel, not
|
|
335
|
+
transparent like the launch buttons': a word pill sits over message text and must keep covering it.
|
|
336
|
+
shimmer-slow because these can sit lit for minutes (the JSONL flushes in batches, so the token chip
|
|
337
|
+
rides a whole buffering window). */
|
|
338
|
+
.pill-busy { border-color: var(--accent); --shimmer-base: var(--panel); --shimmer-mix: 25%; }
|
|
336
339
|
|
|
337
340
|
/* ── The composer (TB-Agent-Composer.md): the prompt panel under the transcript. In flow (not
|
|
338
341
|
overlaid like the statusbar) — it owns real height and must never cover content. ── */
|
|
@@ -701,8 +704,8 @@ body {
|
|
|
701
704
|
.reasoning-select:hover { border-color: var(--accent); }
|
|
702
705
|
.reasoning-select:focus { outline: none; border-color: var(--accent); }
|
|
703
706
|
|
|
704
|
-
/* The Anthropic brand glyph stands in for the word on the default pill
|
|
705
|
-
|
|
707
|
+
/* The Anthropic brand glyph stands in for the word on the default pill. currentColor tracks the
|
|
708
|
+
pill's muted→accent state; grayscale at rest like the other compact glyph controls. */
|
|
706
709
|
.anthropic-glyph { display: block; }
|
|
707
710
|
.pill.glyph .anthropic-glyph { filter: grayscale(1); opacity: .8; }
|
|
708
711
|
.pill.glyph:hover .anthropic-glyph { filter: none; opacity: 1; }
|
|
@@ -1013,6 +1016,19 @@ a.server-port:hover { text-decoration: underline; }
|
|
|
1013
1016
|
.trust-modal-h { font-size: 1rem; font-weight: 600; color: var(--fg); }
|
|
1014
1017
|
.trust-modal-b { font-size: .85rem; color: var(--fg); line-height: 1.45; }
|
|
1015
1018
|
.trust-modal-warn { font-size: .78rem; color: var(--muted); line-height: 1.4; }
|
|
1019
|
+
/* Summary’s first-use setup is deliberately informational: the normal interruption chrome makes
|
|
1020
|
+
the compact .env recipe legible without pretending the reader made a risky choice. */
|
|
1021
|
+
.summary-setup { width: min(390px, 100%); }
|
|
1022
|
+
.summary-setup-keys {
|
|
1023
|
+
padding: .55rem .65rem;
|
|
1024
|
+
border: 1px solid var(--border);
|
|
1025
|
+
border-radius: 7px;
|
|
1026
|
+
background: var(--bg);
|
|
1027
|
+
color: var(--fg);
|
|
1028
|
+
font: .78rem/1.6 ui-monospace, Menlo, Consolas, monospace;
|
|
1029
|
+
white-space: pre-line;
|
|
1030
|
+
user-select: text;
|
|
1031
|
+
}
|
|
1016
1032
|
.trust-modal-acts { display: flex; justify-content: flex-end; gap: .5rem; margin-top: .2rem; }
|
|
1017
1033
|
.trust-no, .trust-yes {
|
|
1018
1034
|
font: inherit; font-size: .82rem; appearance: none; margin: 0; cursor: pointer;
|
|
@@ -1100,10 +1116,10 @@ a.server-port:hover { text-decoration: underline; }
|
|
|
1100
1116
|
.gitdiff-close { flex: none; display: inline-flex; padding: 0 .15rem; color: var(--muted); }
|
|
1101
1117
|
.gitdiff-close .icon { width: 10px; height: 10px; }
|
|
1102
1118
|
.gitdiff-close:hover { color: var(--accent); }
|
|
1103
|
-
/* Doc open ⇒
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
.statusbar-actions.doc-open :is(.
|
|
1119
|
+
/* Doc open ⇒ transcript-scoped pills hide: model switcher and session picker act on a conversation
|
|
1120
|
+
that is not on screen (the token pill stays — its shimmer says the live diff may still grow).
|
|
1121
|
+
Display only, never unmount — the model pill's superSelect must keep its mount. */
|
|
1122
|
+
.statusbar-actions.doc-open :is(.model-wrap, .sid-wrap) { display: none; }
|
|
1107
1123
|
|
|
1108
1124
|
/* The diff doc — takes the transcript's slot in .chat (same flex geometry as .messages). Full-bleed
|
|
1109
1125
|
like a code surface (no --content-max column: diff lines want the width); the body is the scroll
|
|
@@ -1870,8 +1886,18 @@ html[data-theme="dark"] .masthead-logo.dark { display: block; }
|
|
|
1870
1886
|
(#draftThinkingPre). Durable rows stay uncapped: finished thinking IS reading material. */
|
|
1871
1887
|
.draft .thinking pre { max-height: 220px; overflow-y: auto; }
|
|
1872
1888
|
|
|
1873
|
-
/*
|
|
1874
|
-
|
|
1889
|
+
/* The bubble's hover-revealed copy-pill row. The direct-child reveal avoids firing an inline bulb's
|
|
1890
|
+
own controls when the reader merely hovers the outer assistant bubble. */
|
|
1891
|
+
.bubble-controls {
|
|
1892
|
+
position: absolute;
|
|
1893
|
+
bottom: .5rem;
|
|
1894
|
+
right: 0; /* flush with the content column's right edge (prose / statusbar pills) */
|
|
1895
|
+
display: flex;
|
|
1896
|
+
gap: .4rem;
|
|
1897
|
+
}
|
|
1898
|
+
.bubble-controls .overlay-pill { position: static; }
|
|
1899
|
+
.bubble:hover > .bubble-controls .overlay-pill,
|
|
1900
|
+
.bubble-controls .overlay-pill:focus-visible { opacity: 1; }
|
|
1875
1901
|
/* "copied" flash: eases into accent on click (CopyButton is a Component, so its
|
|
1876
1902
|
node persists across re-renders and the transition actually runs). The color
|
|
1877
1903
|
transition lives only on .done, not the base pill, so hover stays instant — the
|
|
@@ -1884,4 +1910,33 @@ html[data-theme="dark"] .masthead-logo.dark { display: block; }
|
|
|
1884
1910
|
}
|
|
1885
1911
|
/* Assistant bubbles carry no padding, so the shared .5rem bottom would float the
|
|
1886
1912
|
pill above the last line — pin it to the text's bottom edge. */
|
|
1887
|
-
.bubble.assistant .
|
|
1913
|
+
.bubble.assistant > .bubble-controls { bottom: 0; }
|
|
1914
|
+
|
|
1915
|
+
/* A turn's local representation selector (turnView.ts). It is a tab bar made of restrained
|
|
1916
|
+
hyperlink-like buttons, not pills: Raw is the full chronological trace for one turn, Reply is its
|
|
1917
|
+
exact prose, and Summary is the generated compression. Normal flow above the selected body means
|
|
1918
|
+
every switch resizes only below itself. */
|
|
1919
|
+
.turn-views-row {
|
|
1920
|
+
display: flex;
|
|
1921
|
+
align-items: baseline;
|
|
1922
|
+
gap: .35rem;
|
|
1923
|
+
margin: 0 0 .35rem;
|
|
1924
|
+
font-size: .8rem;
|
|
1925
|
+
line-height: 1.3;
|
|
1926
|
+
}
|
|
1927
|
+
.turn-view {
|
|
1928
|
+
appearance: none;
|
|
1929
|
+
margin: 0;
|
|
1930
|
+
padding: 0;
|
|
1931
|
+
border: 0;
|
|
1932
|
+
border-bottom: 1px solid transparent;
|
|
1933
|
+
background: none;
|
|
1934
|
+
color: var(--muted);
|
|
1935
|
+
font: inherit;
|
|
1936
|
+
cursor: pointer;
|
|
1937
|
+
}
|
|
1938
|
+
.turn-view:hover, .turn-view.on { color: var(--accent); }
|
|
1939
|
+
.turn-view.on { border-bottom-color: var(--accent); }
|
|
1940
|
+
.turn-view.err { color: var(--err); }
|
|
1941
|
+
.turn-view:focus-visible { outline: 1px solid var(--accent); outline-offset: 2px; border-radius: 2px; }
|
|
1942
|
+
.turn-view-sep { color: var(--border); user-select: none; }
|