typebulb 0.52.1 → 0.52.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/SKILL.md +2 -2
- package/dist/agents/claude/client.js +172 -164
- package/dist/agents/claude/styles.css +67 -34
- package/dist/agents/codex/client.js +175 -167
- package/dist/agents/codex/styles.css +67 -34
- package/dist/agents/pi/client.js +187 -179
- package/dist/agents/pi/styles.css +67 -34
- package/dist/index.js +186 -176
- 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,18 +317,24 @@ 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
|
-
/* THE WORKING STATE for
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
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). */
|
|
335
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
|
|
@@ -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,11 +1886,8 @@ 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
|
-
/* The bubble's pill row
|
|
1874
|
-
|
|
1875
|
-
container's bottom-right otherwise, and the second would land on the first. Same shape as the
|
|
1876
|
-
inline bulb's .bulb-controls. The reveal is scoped to a DIRECT child row, so an inline bulb's own
|
|
1877
|
-
controls keep their own (bulb-hover) reveal instead of firing on the whole bubble. */
|
|
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. */
|
|
1878
1891
|
.bubble-controls {
|
|
1879
1892
|
position: absolute;
|
|
1880
1893
|
bottom: .5rem;
|
|
@@ -1899,13 +1912,33 @@ html[data-theme="dark"] .masthead-logo.dark { display: block; }
|
|
|
1899
1912
|
pill above the last line — pin it to the text's bottom edge. */
|
|
1900
1913
|
.bubble.assistant > .bubble-controls { bottom: 0; }
|
|
1901
1914
|
|
|
1902
|
-
/*
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1915
|
+
/* A turn's local representation selector (turnView.ts). A standard tab bar: a continuous bottom
|
|
1916
|
+
line under all tabs, the selected tab's thicker line indicating the active view. Raw is the full
|
|
1917
|
+
chronological trace for one turn, Reply is its exact prose, and Summary is the generated
|
|
1918
|
+
compression. Normal flow above the selected body means every switch resizes only below itself. */
|
|
1919
|
+
.turn-views-row {
|
|
1920
|
+
display: flex;
|
|
1921
|
+
align-items: baseline;
|
|
1922
|
+
gap: 0;
|
|
1923
|
+
width: fit-content;
|
|
1924
|
+
margin: .7rem auto;
|
|
1925
|
+
font-size: .8rem;
|
|
1926
|
+
line-height: 1.3;
|
|
1927
|
+
border-bottom: 1px solid var(--border);
|
|
1928
|
+
}
|
|
1929
|
+
.turn-view {
|
|
1930
|
+
appearance: none;
|
|
1931
|
+
margin: 0 0 -1px 0;
|
|
1932
|
+
padding: 0 .5rem .1rem;
|
|
1933
|
+
border: 0;
|
|
1934
|
+
border-bottom: 2px solid transparent;
|
|
1935
|
+
background: none;
|
|
1936
|
+
color: var(--muted);
|
|
1937
|
+
font: inherit;
|
|
1938
|
+
cursor: pointer;
|
|
1939
|
+
text-align: center;
|
|
1940
|
+
}
|
|
1941
|
+
.turn-view:hover, .turn-view.on { color: var(--accent); }
|
|
1942
|
+
.turn-view.on { border-bottom-color: var(--accent); }
|
|
1943
|
+
.turn-view.err { color: var(--err); }
|
|
1944
|
+
.turn-view:focus-visible { outline: 1px solid var(--accent); outline-offset: 2px; border-radius: 2px; }
|