typebulb 0.11.7 → 0.11.8
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/dist/agents/claude/client.js +99 -99
- package/dist/agents/claude/styles.css +60 -32
- package/dist/index.js +68 -67
- package/package.json +1 -1
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
:root {
|
|
2
2
|
/* Light is the default; data-theme="dark" is set by the host (typebulb.com
|
|
3
|
-
or the typebulb CLI, sourced from prefers-color-scheme).
|
|
3
|
+
or the typebulb CLI, sourced from prefers-color-scheme).
|
|
4
|
+
GRAY RAMP — every gray rides ONE neutral tint (R=G=B), like the main app's
|
|
5
|
+
bg1–bg5 ramp. Lightness may step; the HUE never changes. The bug to avoid is a
|
|
6
|
+
gray in a *different* tint (a cool/blue panel beside a neutral one), not the
|
|
7
|
+
number of steps. App chrome (statusbar, picker, modals) sits on the fixed
|
|
8
|
+
--panel. Document panels — code, callouts, tables, user bubbles, open tools —
|
|
9
|
+
paint --veil instead: a translucent neutral that matches --panel when alone on
|
|
10
|
+
the page but COMPOUNDS when panels nest (a code block in a callout, a panel in a
|
|
11
|
+
user bubble), so every depth separates on its own — no level-counting, no cap. */
|
|
4
12
|
--bg: rgb(255, 255, 255);
|
|
5
13
|
--fg: rgb(28, 28, 30);
|
|
6
|
-
--muted: rgb(96,
|
|
7
|
-
--panel: rgb(
|
|
8
|
-
--border: rgb(
|
|
14
|
+
--muted: rgb(96, 96, 100);
|
|
15
|
+
--panel: rgb(242, 242, 242);
|
|
16
|
+
--border: rgb(221, 221, 221);
|
|
9
17
|
--accent: rgb(58, 125, 232);
|
|
10
|
-
--
|
|
11
|
-
--tool-bg:
|
|
18
|
+
--veil: rgba(0, 0, 0, 0.05); /* one shade step; alpha-stacks as panels nest */
|
|
19
|
+
--tool-bg: var(--panel);
|
|
12
20
|
--err: rgb(206, 60, 60);
|
|
13
21
|
--diff-add: rgb(40, 140, 70);
|
|
14
22
|
--fold-marker: rgb(24, 145, 72);
|
|
@@ -19,16 +27,17 @@
|
|
|
19
27
|
}
|
|
20
28
|
|
|
21
29
|
html[data-theme="dark"] {
|
|
22
|
-
|
|
23
|
-
--
|
|
24
|
-
--
|
|
25
|
-
--
|
|
26
|
-
--
|
|
30
|
+
/* Neutral ramp, same tint as the main app: page 18 → surface 32 → border 52. */
|
|
31
|
+
--bg: rgb(18, 19, 20);
|
|
32
|
+
--fg: rgb(232, 232, 232);
|
|
33
|
+
--muted: rgb(150, 150, 150);
|
|
34
|
+
--panel: rgb(32, 32, 32);
|
|
35
|
+
--border: rgb(52, 52, 52);
|
|
27
36
|
--accent: rgb(122, 162, 250);
|
|
28
|
-
--
|
|
29
|
-
--tool-bg:
|
|
30
|
-
--err: rgb(
|
|
31
|
-
--diff-add: rgb(
|
|
37
|
+
--veil: rgba(255, 255, 255, 0.06);
|
|
38
|
+
--tool-bg: var(--panel);
|
|
39
|
+
--err: rgb(230, 60, 60);
|
|
40
|
+
--diff-add: rgb(100, 210, 130);
|
|
32
41
|
--fold-marker: rgb(0, 255, 0);
|
|
33
42
|
color-scheme: dark;
|
|
34
43
|
}
|
|
@@ -442,7 +451,7 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
|
|
|
442
451
|
margin: 0 auto;
|
|
443
452
|
}
|
|
444
453
|
.bubble.user {
|
|
445
|
-
background: var(--
|
|
454
|
+
background: var(--veil);
|
|
446
455
|
border: 1px solid var(--border);
|
|
447
456
|
border-radius: 12px;
|
|
448
457
|
padding: .7rem .9rem;
|
|
@@ -521,20 +530,23 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
|
|
|
521
530
|
opacity: .5;
|
|
522
531
|
}
|
|
523
532
|
.md pre {
|
|
524
|
-
background: var(--
|
|
533
|
+
background: var(--veil);
|
|
525
534
|
border: 1px solid var(--border);
|
|
526
535
|
border-radius: 8px;
|
|
527
536
|
padding: .7rem .85rem;
|
|
528
537
|
overflow-x: auto;
|
|
529
538
|
}
|
|
539
|
+
/* A pasted image (server renders an <img> from a base64 block, see blockToMarkdown) is capped to the
|
|
540
|
+
column and never blows the layout — height follows the width. */
|
|
541
|
+
.md img { max-width: 100%; height: auto; border-radius: 6px; }
|
|
530
542
|
/* Blockquote: left bar + faint tint + muted text — a quiet "quoted" callout. The bar
|
|
531
543
|
is mixed toward --border so it stays distinct from the bright turn stripe in the
|
|
532
544
|
gutter, and the tint is light enough not to read as a code/output panel. */
|
|
533
545
|
.md blockquote {
|
|
534
546
|
margin: .5rem 0;
|
|
535
547
|
padding: .35rem .85rem;
|
|
536
|
-
border-left: 3px solid
|
|
537
|
-
background:
|
|
548
|
+
border-left: 3px solid var(--border);
|
|
549
|
+
background: var(--veil);
|
|
538
550
|
border-radius: 0 6px 6px 0;
|
|
539
551
|
color: var(--muted);
|
|
540
552
|
}
|
|
@@ -545,17 +557,31 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
|
|
|
545
557
|
font-size: .88em;
|
|
546
558
|
}
|
|
547
559
|
.md :not(pre) > code {
|
|
548
|
-
background: var(--
|
|
560
|
+
background: var(--veil);
|
|
549
561
|
padding: .1em .35em;
|
|
550
562
|
border-radius: 5px;
|
|
551
563
|
}
|
|
552
564
|
.md table { border-collapse: collapse; }
|
|
553
565
|
.md th, .md td { border: 1px solid var(--border); padding: .3rem .55rem; }
|
|
554
566
|
/* A faint header band breaks the grid's monotony and gives the table a head/body structure — tonal
|
|
555
|
-
(`--
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
567
|
+
(`--veil`, the document-panel shade), never a hue, so it reads as structure not opinion and follows
|
|
568
|
+
the host light/dark theme. As a panel the veil steps one shade above the table's container, so the
|
|
569
|
+
header still reads when the table sits inside a bubble or callout. The header text stays `--fg`:
|
|
570
|
+
weight + the fill carry it, a tint would be the opinionated bit. Left-align to the body cells. */
|
|
571
|
+
.md th { background: var(--veil); font-weight: 600; text-align: left; }
|
|
572
|
+
/* Disclosure (<details>/<summary>) from the safe-HTML allowlist (markdown.ts): a quiet --veil container,
|
|
573
|
+
subtler than a code block — assistant prose sits directly on the page, so a fill stands out; keep it
|
|
574
|
+
restrained and let the border define it. Summary is the clickable caret row (native marker), accent
|
|
575
|
+
on hover like a link. */
|
|
576
|
+
.md details {
|
|
577
|
+
margin: .5rem 0;
|
|
578
|
+
padding: .35rem .7rem;
|
|
579
|
+
background: var(--veil);
|
|
580
|
+
border: 1px solid var(--border);
|
|
581
|
+
border-radius: 8px;
|
|
582
|
+
}
|
|
583
|
+
.md summary { cursor: pointer; font-weight: 600; }
|
|
584
|
+
.md summary:hover { color: var(--accent); }
|
|
559
585
|
|
|
560
586
|
/* The full-lane breakout geometry, defined ONCE and shared by the two breakouts (the mermaid
|
|
561
587
|
embed and a spread bulb). `100%` in --lane-ml resolves against each user's own containing block
|
|
@@ -845,16 +871,16 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
|
|
|
845
871
|
padding: .6rem .8rem;
|
|
846
872
|
font-family: ui-monospace, monospace;
|
|
847
873
|
font-size: .85em;
|
|
848
|
-
color: color-mix(in srgb,
|
|
874
|
+
color: color-mix(in srgb, var(--err) 70%, var(--fg));
|
|
849
875
|
white-space: pre-wrap;
|
|
850
876
|
}
|
|
851
877
|
.md .bulb-err-strip {
|
|
852
878
|
padding: .45rem .7rem;
|
|
853
879
|
border-top: 1px solid var(--border);
|
|
854
|
-
background: color-mix(in srgb,
|
|
880
|
+
background: color-mix(in srgb, var(--err) 8%, var(--bg));
|
|
855
881
|
font-family: ui-monospace, monospace;
|
|
856
882
|
font-size: .8em;
|
|
857
|
-
color: color-mix(in srgb,
|
|
883
|
+
color: color-mix(in srgb, var(--err) 75%, var(--fg));
|
|
858
884
|
white-space: pre-wrap;
|
|
859
885
|
}
|
|
860
886
|
|
|
@@ -877,7 +903,7 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
|
|
|
877
903
|
}
|
|
878
904
|
.tool.open {
|
|
879
905
|
margin-top: .55rem;
|
|
880
|
-
background: var(--
|
|
906
|
+
background: var(--veil);
|
|
881
907
|
border: 1px solid var(--border);
|
|
882
908
|
border-radius: 8px;
|
|
883
909
|
}
|
|
@@ -963,13 +989,15 @@ a.server-port:hover { color: var(--accent); text-decoration: underline; }
|
|
|
963
989
|
overflow: auto;
|
|
964
990
|
}
|
|
965
991
|
.tool-out { color: var(--muted); }
|
|
992
|
+
/* The band carries the add/remove signal; text stays --fg so it's readable. Colouring the text the same
|
|
993
|
+
hue as its fill (red-on-red) is what washes a diff out — the band alone is the convention. */
|
|
966
994
|
.diff-old {
|
|
967
|
-
background: color-mix(in srgb, var(--err)
|
|
968
|
-
color: var(--
|
|
995
|
+
background: color-mix(in srgb, var(--err) 24%, transparent);
|
|
996
|
+
color: var(--fg);
|
|
969
997
|
}
|
|
970
998
|
.diff-new {
|
|
971
|
-
background: color-mix(in srgb, var(--diff-add)
|
|
972
|
-
color: var(--
|
|
999
|
+
background: color-mix(in srgb, var(--diff-add) 24%, transparent);
|
|
1000
|
+
color: var(--fg);
|
|
973
1001
|
}
|
|
974
1002
|
|
|
975
1003
|
/* Path link: plain accent, underline only on hover. skip-ink:none so the
|