Skip to content

chore(release): 0.39.44 - #126

Merged
pitimon merged 1 commit into
mainfrom
chore/125-release-0.39.44
Jul 26, 2026
Merged

chore(release): 0.39.44#126
pitimon merged 1 commit into
mainfrom
chore/125-release-0.39.44

Conversation

@pitimon

@pitimon pitimon commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Summary

Release 0.39.44. Closes #125.

Version bumped in all four lockstep locations by the version hook — package.json, package-lock.json, both TokenTrackerBar targets (MARKETING_VERSION), and TokenTrackerWin.csproj. validate:version-lockstep passes.

15 commits since v0.39.43.

What users get

Change Why it matters
Projects panel honours the date range (#118) It read no query parameter. Picking "24h" narrowed every other card while Projects kept showing all-time totals, with nothing on screen saying so.
Per-repo cost (#121) Project rows now carry a model, so computeRowCost works per repository.
Unattributed sources are named (#118) Cursor, Copilot, Zed, Goose and Kiro have no per-repo story; omitting them looked identical to "that tool cost nothing here".
Plan-value card (#122) Answers the question README:32 already promised, labelled list-price-equivalent rather than a saving.
Codex chip survives a 401 (#119) A stale sign-in produced no windows and no error, so the chip disappeared — worse than never having had one.
sync --compact (#117) 34,924 lines to 5,636 on a real install. Sync recommends it past a threshold and does not act on its own.

Behind the scenes: outbound-privacy validator hardening (#111, #114), avatar proxy per-hop revalidation + port-aware allowlisting + a real download cap (#109, #112), a parser conformance ratchet (#116, #120), scripts/graph out of the product gate (#115), a usage-limits fixture capture tool (#124).

The one thing to watch after this ships

#121 migrates cursors.json on every user's first sync after upgrading, re-keying project buckets from project|source|hour to project|source|model|hour. Without that the old bucket strands, new usage restarts from zero under the model key, and the reader still sees the old row — the usage is counted twice.

Verified read-only against a real 2,015-bucket state:

  • every key migrated from three segments to four
  • total_tokens preserved exactly: 6,281,653,062 unchanged
  • all 2,015 queuedKey markers survived — losing those would re-append every row
  • the real file was not touched

That is one machine. A differently-shaped state is the residual risk, and it is the thing to look at first if anything is reported.

Test plan

  • ci:local exit 0 — 972 root tests, 302 dashboard
  • validate:version-lockstep passes; all four locations read 0.39.44
  • npm view @ipv9/tokentracker-cli@0.39.44 → 404, so the version is free
  • After merge: tag v0.39.44, run release (macOS + Windows), npm publish
  • Verify the published package runs and the DMG reports 0.39.44 — not just that the workflow went green
  • Repin the local LaunchAgents

15 commits since v0.39.43. Tracker: #125.

User-facing:
- The Projects panel honours the date range. It read no query parameter at
  all, so picking "24h" narrowed every other card while Projects kept showing
  all-time totals with nothing on screen saying so (#118).
- Per-repo cost, with rows written before the change named as unpriced rather
  than shown as a confident $0 (#121).
- Sources with no per-repo attribution are named, instead of their absence
  reading as "that tool cost nothing here" (#118).
- A plan-value card answering what README:32 already promised, labelled as
  list-price-equivalent rather than a saving (#122).
- The Codex quota chip no longer vanishes on a 401 (#119).
- `sync --compact`, which reclaimed 34,924 lines to 5,636 on a real install
  (#117).

Behind the scenes: outbound-privacy validator hardening (#111, #114), avatar
proxy per-hop revalidation, port-aware allowlisting and a real download cap
(#109, #112), a parser conformance ratchet (#116, #120), scripts/graph out of
the product gate (#115), and a usage-limits fixture capture tool (#124).

Version bumped in all four lockstep locations by the `version` hook:
package.json, package-lock.json, both TokenTrackerBar targets, and the Windows
csproj. validate:version-lockstep passes.

WATCH AFTER SHIPPING: #121 migrates cursors.json on every user's first sync
after upgrading, re-keying project buckets from project|source|hour to
project|source|model|hour. Without that the old bucket strands and its usage is
counted twice. Verified read-only against a real 2,015-bucket state — every key
migrated, total_tokens preserved exactly at 6,281,653,062, and all 2,015
queuedKey markers survived, the loss of which would re-append every row. That
is one machine; a differently-shaped state is the residual risk.

ci:local exit 0: 972 root tests, 302 dashboard.
@pitimon
pitimon merged commit 789af7b into main Jul 26, 2026
1 check passed
@pitimon
pitimon deleted the chore/125-release-0.39.44 branch July 26, 2026 00:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

release: 0.39.44 — projects filters and per-repo cost, plan value, quota chip fix

1 participant