pennyrouter 0.3.48 → 0.3.49

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pennyrouter",
3
- "version": "0.3.48",
3
+ "version": "0.3.49",
4
4
  "description": "Install and manage PennyRouter local coding-agent integrations.",
5
5
  "homepage": "https://pennyrouter.com",
6
6
  "bugs": {
@@ -85,7 +85,7 @@
85
85
  .meter .field.read strong { color: var(--accent); }
86
86
  .meter .field.write strong { color: var(--warn); }
87
87
  .meter .field.in strong, .meter .field.out strong { color: #75ec45; }
88
- .meter .field.main, .meter .field.side { color: #77777e; }
88
+ .meter .field.side, .meter .field.side strong { color: #77777e; font-weight: 400; }
89
89
  .meter .wait { display: none; color: #77777e; }
90
90
  .meter.waiting .wait { display: block; }
91
91
  .meter.waiting .field { display: none; }
@@ -804,7 +804,7 @@
804
804
  : value >= 1_000 ? `${(value / 1_000).toFixed(1)}k` : String(value);
805
805
  // Cents alone would round a cheap side call to $0.00.
806
806
  const dollars = (value) => `$${value.toLocaleString('en-US',
807
- { minimumFractionDigits: value < 1 ? 4 : 2, maximumFractionDigits: value < 1 ? 4 : 2 })}`;
807
+ { minimumFractionDigits: value < 1 ? 3 : 2, maximumFractionDigits: value < 1 ? 3 : 2 })}`;
808
808
  const reducedMotion = matchMedia('(prefers-reduced-motion: reduce)');
809
809
  const meters = {};
810
810
  const buildMeter = (side) => {
@@ -817,13 +817,12 @@
817
817
  root.append(model);
818
818
  const amounts = {};
819
819
  // Token rows count the main thread only. Background calls Claude Code makes outside the
820
- // transcript (auto-mode reviewer, titles) show only as `side` cost; the last row is main + side.
821
- for (const [key, label] of [['read', 'read'], ['write', 'write'], ['in', 'in'], ['out', 'out'],
822
- ['total', 'total'], ['main', 'main'], ['side', 'side'], ['cost', 'total']]) {
823
- const field = document.createElement('span'); field.className = `field ${key}`;
820
+ // transcript (auto-mode reviewer, titles) show only as `side` cost; `cost` is main + side.
821
+ for (const label of ['read', 'write', 'in', 'out', 'total', 'side', 'cost']) {
822
+ const field = document.createElement('span'); field.className = `field ${label}`;
824
823
  field.append(document.createTextNode(`${label} `));
825
- amounts[key] = document.createElement('strong');
826
- field.append(amounts[key]);
824
+ amounts[label] = document.createElement('strong');
825
+ field.append(amounts[label]);
827
826
  root.append(field);
828
827
  }
829
828
  // Zeros would read as a measurement; the pane has simply not seen a turn yet.
@@ -865,7 +864,6 @@
865
864
  fresh_input: main.fresh_input, output: main.output };
866
865
  meter.cost = totals.cost;
867
866
  const side = snapshot.side_calls;
868
- meter.amounts.main.textContent = dollars(main.cost);
869
867
  meter.amounts.side.textContent = dollars(side?.cost || 0);
870
868
  meter.root.classList.add('has-data');
871
869
  meter.root.classList.toggle('waiting', !totals.total);