typebulb 0.27.2 → 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 19:10:21" : "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
@@ -865,6 +865,22 @@ a.server-port:hover { text-decoration: underline; }
865
865
  .bulb-launch.launching { visibility: visible; border-color: var(--fold-marker); }
866
866
  .server-stop { color: var(--muted); }
867
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; }
868
884
  /* Elevation prompt (VS-Code-Workspace-Trust style) — a modal over the whole view, since a
869
885
  denied capability is worth interrupting for. Backdrop dims; the card holds the choice. */
870
886
  .trust-back {