typebulb 0.14.6 → 0.14.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 +180 -180
- package/dist/agents/claude/styles.css +31 -25
- package/dist/index.js +113 -112
- package/package.json +1 -1
|
@@ -157,7 +157,8 @@ body {
|
|
|
157
157
|
.picker, .servers-pop {
|
|
158
158
|
--menu-h: 428px; /* one height for both statusbar menus — they sit side by side, so a
|
|
159
159
|
mismatched cap reads as a glitch; .picker grows to it, .servers-pop
|
|
160
|
-
|
|
160
|
+
too (the drilled-in console is the one fixed-height exception, see
|
|
161
|
+
.log-mode). Sized to show exactly 12 rows
|
|
161
162
|
(12 × --menu-row-h + 11 gaps + filter + padding) — recognition fades
|
|
162
163
|
past ~12 and search owns the tail. Plain px: desktop-only surface,
|
|
163
164
|
every desktop window fits it. 428, not 427: at 427 the two menus land
|
|
@@ -166,6 +167,16 @@ body {
|
|
|
166
167
|
--menu-row-h: 29px; /* one row height for both menus' lists — rows must match pitch exactly
|
|
167
168
|
or the side-by-side menus read as two designs. Whole px, eyeball-tuned;
|
|
168
169
|
the row paddings are kept below it so this floor is what governs. */
|
|
170
|
+
/* ONE geometry contract for both menus — sizing policy, padding, stacking. Stating it twice is
|
|
171
|
+
how every sibling discrepancy of June '26 happened (row pitch, gaps, fixed-vs-grow). max-height,
|
|
172
|
+
not height: a menu hugs its content and caps at the 12 rows above — a fixed height left a
|
|
173
|
+
1-bulb project with a row floating atop a 400px void. Per-menu rules keep only width. */
|
|
174
|
+
max-height: var(--menu-h);
|
|
175
|
+
overflow: hidden;
|
|
176
|
+
padding: .35rem;
|
|
177
|
+
display: flex;
|
|
178
|
+
flex-direction: column;
|
|
179
|
+
gap: .15rem;
|
|
169
180
|
position: absolute;
|
|
170
181
|
bottom: calc(100% + .35rem);
|
|
171
182
|
right: 0;
|
|
@@ -220,15 +231,7 @@ body {
|
|
|
220
231
|
|
|
221
232
|
/* Session list — shares the popover chrome (.picker above); these are
|
|
222
233
|
just its own dimensions. */
|
|
223
|
-
.picker {
|
|
224
|
-
width: min(440px, calc(100vw - 2rem));
|
|
225
|
-
max-height: var(--menu-h);
|
|
226
|
-
overflow: hidden;
|
|
227
|
-
padding: .35rem;
|
|
228
|
-
display: flex;
|
|
229
|
-
flex-direction: column;
|
|
230
|
-
gap: .15rem;
|
|
231
|
-
}
|
|
234
|
+
.picker { width: min(440px, calc(100vw - 2rem)); }
|
|
232
235
|
/* The filter (.bulb-filter-control) pins at the bottom — the popover's anchored edge, so it never
|
|
233
236
|
jumps as the filtered list changes height; the row list scrolls inside the capped box, resting at
|
|
234
237
|
its end (newest-at-bottom) — same shape as the launcher's .servers-pop / .bulb-list. */
|
|
@@ -298,18 +301,8 @@ body {
|
|
|
298
301
|
and the metadata/controls form a right-aligned cluster of fixed-width columns (logs · trust ·
|
|
299
302
|
time/port) that line up row-to-row — right-anchored, so the rightmost (time/port) always aligns and
|
|
300
303
|
the rest stack inward (logs and time/port share a width; trust is wider, to fit "restricted"). The
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
scrolls inside (see .bulb-list). */
|
|
304
|
-
.servers-pop {
|
|
305
|
-
width: min(560px, calc(100vw - 2rem));
|
|
306
|
-
height: var(--menu-h);
|
|
307
|
-
overflow: hidden;
|
|
308
|
-
padding: .35rem;
|
|
309
|
-
display: flex;
|
|
310
|
-
flex-direction: column;
|
|
311
|
-
gap: .15rem;
|
|
312
|
-
}
|
|
304
|
+
filter pins at the bottom and the list scrolls inside (see .bulb-list). */
|
|
305
|
+
.servers-pop { width: min(560px, calc(100vw - 2rem)); }
|
|
313
306
|
.server-row {
|
|
314
307
|
/* Subgrid: all rows share ONE set of column tracks (defined on .bulb-list). A per-row grid sizes
|
|
315
308
|
its columns independently — which is exactly what broke alignment (a stopped row with no
|
|
@@ -372,7 +365,7 @@ a.server-port:hover { text-decoration: underline; }
|
|
|
372
365
|
}
|
|
373
366
|
.bulb-filter-clear:hover { color: var(--accent); }
|
|
374
367
|
/* Filter-mode toggle (full-text search) — inset at the input's right edge; the clear × shifts
|
|
375
|
-
inward beside it.
|
|
368
|
+
inward beside it. Both comboboxes render it (SearchComboboxPill's modeToggle). */
|
|
376
369
|
.bulb-filter-control.has-trailing .bulb-filter { padding-right: 3.8rem; }
|
|
377
370
|
.bulb-filter-control.has-trailing .bulb-filter-clear { right: 2.5rem; }
|
|
378
371
|
.bulb-filter-mode {
|
|
@@ -393,9 +386,19 @@ a.server-port:hover { text-decoration: underline; }
|
|
|
393
386
|
/* The shared grid for the launcher rows: each .server-row is a subgrid spanning these tracks, so
|
|
394
387
|
columns line up row-to-row. auto cols size to their widest content (tight, no slack); 1fr is the
|
|
395
388
|
name. A small right padding keeps the selected-row highlight off the scrollbar. */
|
|
396
|
-
|
|
389
|
+
/* grid-auto-rows: max-content — the grid twin of .picker-row's flex:none: when the list overflows
|
|
390
|
+
the popover cap, plain auto rows compress to each row's min-height contribution, so a full-text
|
|
391
|
+
row's snippet line bleeds under the next row as overlapping text. max-content tracks never
|
|
392
|
+
compress; the list scrolls, rows keep their content height. */
|
|
393
|
+
.bulb-list { display: grid; grid-template-columns: auto 1fr auto auto auto; grid-auto-rows: max-content; column-gap: .6rem; row-gap: .15rem; align-items: center; align-content: start; padding-right: 4px; flex: 1; min-height: 0; overflow-y: auto; }
|
|
397
394
|
/* A stopped bulb's name isn't a link (no running URL), so it stays plain foreground. */
|
|
398
395
|
.server-name.stopped { color: var(--fg); }
|
|
396
|
+
/* The 1fr name column: name + (in full-text mode) its hit count read together, the badge
|
|
397
|
+
right-aligned at the column's end by the name's flex:1 — the session row's preview/hits layout. */
|
|
398
|
+
.bulb-name-cell { display: flex; align-items: baseline; gap: .6rem; min-width: 0; }
|
|
399
|
+
/* Full-text snippet in the launcher: a second internal row of the row's subgrid, aligned under the
|
|
400
|
+
name column (the session picker indents past its dot gutter instead — override that margin). */
|
|
401
|
+
.bulb-list .picker-snippet { grid-column: 2 / -1; margin: 0 .4rem .2rem 0; }
|
|
399
402
|
.bulb-time { color: var(--muted); font-size: .72rem; font-variant-numeric: tabular-nums; text-align: right; margin-right: .4rem; }
|
|
400
403
|
/* The row's chrome buttons share one reset; sizing + colour differ below. Play/stop are round icon
|
|
401
404
|
buttons (friendlier, space-economic); the trust switch is text. Logs is a link, not a button
|
|
@@ -457,7 +460,10 @@ a.server-port:hover { text-decoration: underline; }
|
|
|
457
460
|
body fills the popover's height. overflow:hidden lets the rounded popover border clip the
|
|
458
461
|
square head/body; the body scrolls internally. */
|
|
459
462
|
.servers-pop.log-mode {
|
|
460
|
-
padding: 0;
|
|
463
|
+
padding: 0;
|
|
464
|
+
/* The one fixed-height surface: a console wants its full frame regardless of how little it has
|
|
465
|
+
logged yet — a height that tracked the log would grow line by line. */
|
|
466
|
+
height: var(--menu-h);
|
|
461
467
|
}
|
|
462
468
|
.servers-pop.log-mode:focus { outline: none; }
|
|
463
469
|
.bulb-log-head {
|