bermudis-pi-goodies 0.27.4 → 0.27.6

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/README.md CHANGED
@@ -25,7 +25,7 @@ extensions. One entry point, thirteen independent features.
25
25
  First install, pinned to a published version:
26
26
 
27
27
  ```bash
28
- pi install npm:bermudis-pi-goodies@0.27.4
28
+ pi install npm:bermudis-pi-goodies@0.27.6
29
29
  ```
30
30
 
31
31
  Picking up a new release on an existing install (`pi install` is not the
@@ -293,9 +293,9 @@ override the Codex base URL.
293
293
 
294
294
  All providers share one renderer: every balance is projected to a list of
295
295
  segments and formatted the same way. Credits render as `$1.5k`; each usage
296
- window renders as `[label ]<window> <remaining>%[ ↻<countdown>]`, e.g.
297
- `7d 72% ↻4d4h` (`↻` = resets in). Multiple windows are joined with `·`, and
298
- named extra limits like Codex Spark get a label: `7d 72% ↻4d4h · Spark 7d 74% ↻5d4h`.
296
+ window renders as `[label ]<window>: <remaining>%[ ↻<countdown>]`, e.g.
297
+ `7d: 72% ↻4d4h` (`↻` = resets in). Multiple windows are joined with `·`, and
298
+ named extra limits like Codex Spark get a label: `7d: 72% ↻4d4h · Spark 7d: 74% ↻5d4h`.
299
299
  The footer refreshes on session start, model
300
300
  switch, and after each completed run (`agent_settled`), so it tracks both
301
301
  consumption and external tier changes for whatever provider is active —
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bermudis-pi-goodies",
3
- "version": "0.27.4",
3
+ "version": "0.27.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/bermudi/agent-extensions.git",
@@ -278,7 +278,7 @@ function compactCodexQuotaName(name: string): string {
278
278
  // the same Balance model and one formatter renders it all. The footer reads
279
279
  // like a status bar: glyphs carry the meaning, words are dropped.
280
280
  // credits -> "$1.5k"
281
- // quota window -> "[label ]7d 72%[ ↻4d4h]" (↻ = resets in)
281
+ // quota window -> "[label ]7d: 72%[ ↻4d4h]" (↻ = resets in)
282
282
 
283
283
  export interface QuotaWindow {
284
284
  /** Remaining quota, 0–100. */
@@ -337,7 +337,7 @@ function formatSegment(segment: BalanceSegment, nowMs: number): string {
337
337
  if (!quota) return "";
338
338
 
339
339
  const window = quota.windowSeconds
340
- ? `${formatWindowDuration(quota.windowSeconds)} `
340
+ ? `${formatWindowDuration(quota.windowSeconds)}: `
341
341
  : "";
342
342
  const percent = `${clampPercent(quota.remainingPercent)}%`;
343
343
  const core = `${window}${percent}${formatResetSuffix(quota.resetAt, nowMs)}`;
package/vision.ts CHANGED
@@ -319,6 +319,12 @@ export default function (pi: ExtensionAPI): void {
319
319
  pi.on("model_select", (event) => {
320
320
  syncVisionToolVisibility(event.model);
321
321
  });
322
+ // model_select only fires on identity change (provider/id) — a registry
323
+ // refresh can swap the model object with a different input list silently.
324
+ // Re-check at the last checkpoint before each turn's loadout is built.
325
+ pi.on("before_agent_start", (_event, ctx) => {
326
+ syncVisionToolVisibility(ctx.model);
327
+ });
322
328
 
323
329
  // Burst-style rows while clean-tui is active — a load-time decision: the
324
330
  // flag is settled before this module registers (index.ts loads clean-tui