typebulb 0.14.2 → 0.14.4

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.
@@ -92,7 +92,7 @@ body {
92
92
  font-size: .8rem;
93
93
  /* Drop the inherited 1.55 line-height so the bar's own strut doesn't add
94
94
  phantom ascender/descender room above the pills. Everything in the bar
95
- is a fixed-height pill or a shimmer text line — both look right at 1. */
95
+ is a fixed-height pill, which looks right at 1. */
96
96
  line-height: 1;
97
97
  min-width: 0;
98
98
  }
@@ -102,13 +102,13 @@ body {
102
102
  gap: .4rem;
103
103
  align-items: center;
104
104
  }
105
- /* Chip shape shared by the status-bar pills (interactive: session chip, token
106
- counter) and the working indicator (passive). One rule = one source of vertical
107
- alignment, no element-type drift between siblings; inline-flex + line-height:1
108
- + fixed height centers the glyph run by the box, not by the inherited line-box.
105
+ /* Chip shape shared by the status-bar pills, interactive (session chip) and
106
+ passive (token counter). One rule = one source of vertical alignment, no
107
+ element-type drift between siblings; inline-flex + line-height:1 + fixed
108
+ height centers the glyph run by the box, not by the inherited line-box.
109
109
  Opaque so they read cleanly over the message text the transparent strip lets
110
110
  through. */
111
- .pill, .working, .token {
111
+ .pill, .token {
112
112
  display: inline-flex;
113
113
  align-items: center;
114
114
  justify-content: center;
@@ -132,7 +132,16 @@ body {
132
132
  margin: 0;
133
133
  cursor: pointer;
134
134
  }
135
- .pill:hover { border-color: var(--accent); color: var(--accent); }
135
+ /* `.on` latches the hover accent the bar's only persistent state cue (every other
136
+ pill accents on hover alone). */
137
+ .pill:hover, .pill.on { border-color: var(--accent); color: var(--accent); }
138
+ /* Square glyph pill (the prose-mode toggle): width pinned to the pill height rather than
139
+ padding-driven — the bar's first non-word pill. The emoji can't take currentColor, so it
140
+ carries state itself: grayscale at rest, color while hovered or on — filtered on the
141
+ inner span, never the button, or it would wash the accent border too. */
142
+ .pill.glyph { width: 1.7rem; padding: 0; font-size: .9rem; }
143
+ .pill.glyph .glyph-img { filter: grayscale(1); opacity: .75; }
144
+ .pill.glyph:hover .glyph-img, .pill.glyph.on .glyph-img { filter: none; opacity: 1; }
136
145
 
137
146
  /* The two status-bar chips each anchor an upward popover (token breakdown /
138
147
  session list). Wrap = positioning context; the popover anchors bottom/right and
@@ -156,20 +165,23 @@ body {
156
165
  box-shadow: 0 8px 30px rgba(0, 0, 0, .45);
157
166
  }
158
167
 
159
- /* "working…" indicator: CC is mid-turn. Passive driven by the live-chain leaf,
160
- not a live token stream (the JSONL is flushed in batches, so this can sit lit
161
- through a multi-minute buffering window). Shares the chip shape above; only adds
162
- room for the pulsing dot. Non-interactive no cursor / hover accent. */
163
- .working { gap: .45rem; }
164
- .working-dot {
165
- width: 7px;
166
- height: 7px;
167
- border-radius: 50%;
168
- background: var(--accent);
169
- animation: working-pulse 1.4s ease-in-out infinite;
168
+ /* CC mid-turn: the token pill doubles as the working indicator — an accent shimmer
169
+ over the chip, the count frozen until the turn flushes. Passive driven by the
170
+ live-chain leaf, not a live token stream (the JSONL is flushed in batches, so this
171
+ can sit lit through a multi-minute buffering window). The sweep blends with
172
+ --panel, not transparent like .launching's: statusbar pills must stay opaque over
173
+ the message text the strip lets through. */
174
+ .token.busy {
175
+ border-color: var(--accent);
176
+ background: linear-gradient(100deg, var(--panel) 30%, color-mix(in srgb, var(--accent) 25%, var(--panel)) 50%, var(--panel) 70%);
177
+ background-size: 250% 100%;
178
+ /* Much slower than .launching's sweep: that one paces a ~2s wait, this can sit lit for
179
+ minutes — at that dwell a fast sweep reads as urgency, not progress. */
180
+ animation: bulb-shimmer 7s linear infinite;
181
+ }
182
+ @media (prefers-reduced-motion: reduce) {
183
+ .token.busy { animation: none; background: color-mix(in srgb, var(--accent) 15%, var(--panel)); }
170
184
  }
171
- @keyframes working-pulse { 0%, 100% { opacity: .25; } 50% { opacity: 1; } }
172
- @media (prefers-reduced-motion: reduce) { .working-dot { animation: none; opacity: .8; } }
173
185
 
174
186
  /* Session list — shares the popover chrome (.picker above); these are
175
187
  just its own dimensions. */
@@ -336,7 +348,9 @@ a.server-port:hover { text-decoration: underline; }
336
348
  visibility: visible; border-color: var(--accent);
337
349
  background: linear-gradient(100deg, transparent 30%, color-mix(in srgb, var(--accent) 35%, transparent) 50%, transparent 70%);
338
350
  background-size: 250% 100%;
339
- animation: bulb-shimmer 1.1s linear infinite;
351
+ /* One full pass per ~2s wait — slow enough to stay calm, fast enough that the band
352
+ is guaranteed to cross while the user is actually watching. */
353
+ animation: bulb-shimmer 2.2s linear infinite;
340
354
  }
341
355
  @keyframes bulb-shimmer { from { background-position: 250% 0; } to { background-position: -250% 0; } }
342
356
  @media (prefers-reduced-motion: reduce) {
@@ -782,7 +796,7 @@ a.server-port:hover { text-decoration: underline; }
782
796
  color: var(--accent); border-color: var(--accent);
783
797
  background: linear-gradient(100deg, transparent 30%, color-mix(in srgb, var(--accent) 35%, transparent) 50%, transparent 70%);
784
798
  background-size: 250% 100%;
785
- animation: bulb-shimmer 1.1s linear infinite;
799
+ animation: bulb-shimmer 2.2s linear infinite;
786
800
  }
787
801
  @media (prefers-reduced-motion: reduce) {
788
802
  .md .bulb-breakout.launching { animation: none; background: color-mix(in srgb, var(--accent) 18%, transparent); }