typebulb 0.27.1 → 0.28.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.
@@ -810,7 +810,7 @@ a.server-port:hover { text-decoration: underline; }
810
810
  the popover cap, plain auto rows compress to each row's min-height contribution, so a full-text
811
811
  row's snippet line bleeds under the next row as overlapping text. max-content tracks never
812
812
  compress; the list scrolls, rows keep their content height. */
813
- .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; }
813
+ .bulb-list { display: grid; grid-template-columns: auto 1fr auto 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; }
814
814
  /* A stopped bulb's name isn't a link (no running URL), so it stays plain foreground. */
815
815
  .server-name.stopped { color: var(--fg); }
816
816
  /* Downloaded-bulb rows (TB-Agent-Mirror.md): the user link — the folder/user slug (`samples`) in
@@ -821,6 +821,12 @@ a.server-port:hover { text-decoration: underline; }
821
821
  .server-name.remote:hover { text-decoration: none; }
822
822
  .sample-link { color: var(--muted); font-size: .76rem; text-decoration: none; cursor: pointer; flex: none; }
823
823
  .sample-link:hover { color: var(--accent); text-decoration: underline; }
824
+ /* The samples-catalog fold header (bulbsPill.ts groupRow): caret in the button column, muted label
825
+ spanning the remaining tracks. Pitch, hover, and the keyboard highlight inherit from .server-row. */
826
+ .sample-group { cursor: pointer; color: var(--muted); }
827
+ .sample-group:hover, .sample-group.active { color: var(--fg); }
828
+ .sample-group .caret-tri { justify-self: center; }
829
+ .sample-group-label { grid-column: 2 / -1; }
824
830
  /* The 1fr name column: name + (in full-text mode) its hit count read together, the badge
825
831
  right-aligned at the column's end by the name's flex:1 — the session row's preview/hits layout. */
826
832
  .bulb-name-cell { display: flex; align-items: baseline; gap: .6rem; min-width: 0; }
@@ -859,6 +865,22 @@ a.server-port:hover { text-decoration: underline; }
859
865
  .bulb-launch.launching { visibility: visible; border-color: var(--fold-marker); }
860
866
  .server-stop { color: var(--muted); }
861
867
  .server-stop:hover { color: var(--err); border-color: var(--err); }
868
+ /* push/pull verbs (TB-Push-Pull.md, Mirror surface): borderless quiet icons in one cell —
869
+ frequency earns mutedness, so like the play button they're hover/keyboard-revealed
870
+ (visibility reserves the slot; columns never shift). Accent on hover marks the live control. */
871
+ .sync-cell { display: inline-flex; gap: .15rem; justify-self: center; }
872
+ .sync-btn {
873
+ font: inherit; appearance: none; margin: 0; padding: 0 .1rem; cursor: pointer;
874
+ background: transparent; border: none; color: var(--muted);
875
+ display: inline-flex; align-items: center; visibility: hidden;
876
+ }
877
+ .server-row:hover .sync-btn, .server-row.active .sync-btn { visibility: visible; }
878
+ .sync-btn:hover { color: var(--accent); }
879
+ /* In-flight: stays visible (hover-independent) and shimmers, same contract as .bulb-launch.launching;
880
+ the ✓ beat after success likewise holds its slot so the arrow's return doesn't shift columns. */
881
+ .sync-btn.busy, .sync-btn.done { visibility: visible; }
882
+ .sync-btn.done { color: var(--fold-marker); }
883
+ .btn-icon-sm { width: 13px; height: 13px; }
862
884
  /* Elevation prompt (VS-Code-Workspace-Trust style) — a modal over the whole view, since a
863
885
  denied capability is worth interrupting for. Backdrop dims; the card holds the choice. */
864
886
  .trust-back {