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.
@@ -2217,7 +2217,7 @@ var Patcher = class _Patcher {
2217
2217
 
2218
2218
  // cli/agents/pi/server/piPatcherExtension.ts
2219
2219
  var DESCRIPTION = true ? "Apply unified diffs to files \u2014 tolerant of form, strict about intent. Repairs sloppy AI-generated diffs (mangled headers, whitespace drift, missing prefixes; line numbers can be wrong or absent \u2014 hunks anchor by fuzzy-matched context lines) and applies all hunks atomically when the intent is unambiguous; fails with a precise, typed error when it isn't. Use for multi-hunk edits in one step, or when exact string-replacement editing fails on whitespace or invisible characters." : "Apply unified diffs to files.";
2220
- var BUILD_TAG = true ? "matchu-patchu-pi 0.2.0, built 2026-07-15 16:35:40" : "matchu-patchu-pi dev";
2220
+ var BUILD_TAG = true ? "matchu-patchu-pi 0.2.0, built 2026-07-15 23:58:22" : "matchu-patchu-pi dev";
2221
2221
  var errorBlocks = (errors) => {
2222
2222
  const parts = [`Patch failed with ${errors.length} error(s):`];
2223
2223
  for (const e of errors) parts.push("", e.toString());
@@ -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 {