typebulb 0.29.3 → 0.31.0

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.
@@ -201,7 +201,8 @@ body {
201
201
  /* ONE geometry contract for both menus — sizing policy, padding, stacking. Stating it twice is
202
202
  how every sibling discrepancy of June '26 happened (row pitch, gaps, fixed-vs-grow). max-height,
203
203
  not height: a menu hugs its content and caps at the 12 rows above — a fixed height left a
204
- 1-bulb project with a row floating atop a 400px void. Per-menu rules keep only width. */
204
+ 1-bulb project with a row floating atop a 400px void. Per-menu rules keep only width and
205
+ alignment (.pop-center / .pop-start below). */
205
206
  max-height: var(--menu-h);
206
207
  overflow: hidden;
207
208
  padding: .35rem;
@@ -217,6 +218,14 @@ body {
217
218
  border-radius: 10px;
218
219
  box-shadow: 0 8px 30px rgba(0, 0, 0, .45);
219
220
  }
221
+ /* Popover alignment — which edge of the pill the menu aligns to (floating-UI's start/center/end
222
+ vocabulary; "end", right edges flush and growing left, is the unnamed default above). Tagged on
223
+ the pill's WRAP, not each popover root: a menu with several drilled-in views (the model pill's
224
+ list/info/diag/key modes) aligns once, and a future mode can't forget. The cluster's left-side
225
+ pills (diff, model) center — end-anchored, their menus run out of room growing left. No viewport
226
+ clamping: desktop-only; revisit if a narrow window ever clips one. */
227
+ .pop-center > :is(.picker, .servers-pop) { right: auto; left: 50%; transform: translateX(-50%); }
228
+ .pop-start > :is(.picker, .servers-pop) { right: auto; left: 0; }
220
229
 
221
230
  /* ---- Shimmer — the one "working" cue. One gradient, one keyframes, composed via class, never
222
231
  re-pasted (paste-drift is how each new shimmer kept landing at its own speed). `.shimmer` sweeps
@@ -985,16 +994,30 @@ a.server-port:hover { text-decoration: underline; }
985
994
  .gitdiff-counts { flex: none; display: inline-flex; gap: .35rem; font-size: .72rem; font-variant-numeric: tabular-nums; }
986
995
  .gitdiff-counts .count-add { color: var(--diff-add); }
987
996
  .gitdiff-counts .count-del { color: var(--err); }
997
+ /* The pill's viewing form: the doc's identity in place of the icon+count — status letter, path,
998
+ ±counts, × (the doc itself is chrome-free). Width capped so a deep path can't crowd the cluster;
999
+ rtl clip keeps the path's tail — the filename — visible, full path in the title. */
1000
+ .pill.glyph.gitdiff-pill.viewing { max-width: min(30rem, 45vw); gap: .45rem; padding: 0 .35rem 0 .5rem; }
1001
+ /* Same text seating as the word pills (.pill's text-box note): .pill.glyph opts out of the trim
1002
+ (right for pure glyphs, low for letters), and the viewing form keeps flex for the path's
1003
+ ellipsis — so the trim rides each text item instead of the button. Flex items are block
1004
+ containers, so text-box applies; the × icon stays untrimmed (symmetric, flex-exact). */
1005
+ .gitdiff-pill.viewing :is(.gitdiff-status, .gitdiff-doc-path, .gitdiff-counts span) { text-box: trim-both cap alphabetic; }
1006
+ .gitdiff-doc-path { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; direction: rtl; text-align: left; font-size: var(--pill-font); color: var(--accent); }
1007
+ .gitdiff-doc-path:hover { text-decoration: underline; }
1008
+ .gitdiff-close { flex: none; display: inline-flex; padding: 0 .15rem; color: var(--muted); }
1009
+ .gitdiff-close .icon { width: 10px; height: 10px; }
1010
+ .gitdiff-close:hover { color: var(--accent); }
1011
+ /* Doc open ⇒ the transcript-scoped pills hide: prose toggle, model switcher, session picker all act
1012
+ on the conversation, which isn't on screen (the token pill stays — its shimmer says the live diff
1013
+ may still grow). display only, never unmount — the model pill's superSelect must keep its mount. */
1014
+ .statusbar-actions.doc-open :is(.prose-pill, .model-wrap, .sid-wrap) { display: none; }
988
1015
 
989
1016
  /* The diff doc — takes the transcript's slot in .chat (same flex geometry as .messages). Full-bleed
990
1017
  like a code surface (no --content-max column: diff lines want the width); the body is the scroll
991
1018
  surface, its bottom padding clearing the overlaid statusbar like .messages' does. The ± markers and
992
1019
  red/green bands are the shared .udiff-* rules the tool cards use. */
993
1020
  .diff-doc { flex: 1; min-height: 0; display: flex; flex-direction: column; outline: none; }
994
- .diff-doc-head { display: flex; align-items: center; gap: .6rem; padding: .5rem 1.75rem .4rem; font-size: .8rem; border-bottom: 1px solid var(--border); }
995
- .diff-doc-path { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--accent); cursor: pointer; }
996
- .diff-doc-path:hover { text-decoration: underline; }
997
- .diff-doc-head .bulb-log-back { margin-left: auto; }
998
1021
  .diff-doc-body {
999
1022
  flex: 1; min-height: 0; overflow: auto;
1000
1023
  scrollbar-gutter: stable both-edges;
@@ -1012,8 +1035,8 @@ a.server-port:hover { text-decoration: underline; }
1012
1035
  gutter ± glyphs and at file scale by the ruler. Scoped: the tool-card hunks keep 24%, where the
1013
1036
  unhighlighted band is the only signal. Del a touch stronger than add — red-leaning tokens
1014
1037
  camouflage against red tint more than anything does against green. */
1015
- .diff-doc-body .udiff-add { background: color-mix(in srgb, var(--diff-add) 10%, transparent); }
1016
- .diff-doc-body .udiff-del { background: color-mix(in srgb, var(--err) 13%, transparent); }
1038
+ .diff-doc-body .udiff-add { background: color-mix(in srgb, var(--diff-add) 15%, transparent); }
1039
+ .diff-doc-body .udiff-del { background: color-mix(in srgb, var(--err) 18%, transparent); }
1017
1040
  /* The overview ruler — VS Code's scrollbar change-marks, owned since the native scrollbar can't be
1018
1041
  painted: a thin track beside the scrollbar (17px clears Windows Chromium's classic bar — plain px
1019
1042
  on a desktop-only surface, the menus' own stance), red/green marks at each change run's fractional