Skip to content
JP the catJP the Cat
A Christmas snow globe with heavy falling snow, a cozy Santa house, snow-capped pines, little elves and JP the cat glowing like a little sun above them (the same scene as the privacy page).

Release notes

What changed in JP.

This is the official development history of JP the Cat. Shared by @8bit.

Skip to release sections

August 13, 2026 · 1.097

Grok 4.6 counts again, instead of a dead $0.00

Grok Build started writing today's sessions as Grok 4.6 under its own internal model name. JP did not have a price for that name, so a day of real use could still read as $0.00 with a flat sparkline — while the official 7-day quota bar kept moving, which made the chart look broken. xAI publishes Grok 4.6 at $2 input, $0.50 cached input, and $6 output per million tokens, with a higher rate once a prompt crosses 200k. That cached rate is not the same as Grok 4.5's, so JP now keeps them apart and maps Grok Build's local name onto the 4.6 row. A full check of every other model JP has seen in local logs against each company's current price list found no other missing or stale rates.

  • Count Grok 4.6 sessions at xAI's published list price so today's sparkline is not a dead $0.00.
  • Keep Grok 4.5 on its own cached-input rate. The two models share input and output, not cache.
  • Show the model simply as 4.6 across the app and library instead of Grok Build's internal name.

August 12, 2026 · 1.096

Ready for Claude's per-model weekly bar

Claude's own usage panel shows two weekly bars on a Max plan: one for all models, and one just for Fable. JP has only ever been able to show you the first, and it is worth saying plainly why. The only place Claude reports its limits on your Mac is the statusline feed, and that feed currently carries the all-models window and nothing else — the per-model number simply is not there to read. JP will not guess it from the tokens it can see, because a percentage you cannot check is worse than no percentage at all. So JP now listens for every weekly window Claude might report and will draw the Fable bar the moment one arrives, without you updating anything. Until then you get the honest empty space where a made-up number would have gone.

  • Listen for every weekly limit window Claude reports, not just the all-models one.
  • Draw a per-model bar — Fable, Sonnet — under the plan-wide gauges as soon as Claude sends it.
  • Never invent the missing number: no window reported means no bar, not a guess dressed up as a percentage.
  • Keep per-model bars in the provider detail only, so a model-specific cap sitting at 100% never makes the menu bar look like you are out of Claude.
  • Refresh an existing Claude live-limits setup in place, so the capture picks this up without turning it off and on.

August 11, 2026 · Web

Download numbers that count people, not machines

This one is about honesty in our own bookkeeping rather than anything on your Mac. When JP's website counts a download, it now discards traffic from datacenter and anonymizing networks — a server farm is not somebody's Mac — and from any address that keeps re-downloading the app day after day, which is the signature of a monitoring script, not a person. An audit found well over half of the raw download tally was machines talking to machines. Nothing new is collected about you to do this; the same coarse, short-lived signals the site already kept are simply read more skeptically, and the raw truth stays raw so we can see how much of the internet is robots.

  • Stop counting downloads from datacenter, hosting, and anonymizing networks as people.
  • Stop counting an address that re-downloads the app on four or more separate days — that is a monitoring script, not a person.
  • Collect nothing new to do it: the change is entirely in how existing, short-lived signals are read.

August 8, 2026 · 1.095

Local tokens that finally say what they are

Cursor and Copilot could show perfectly real token counts while looking just enough like plan usage to invite the wrong comparison. JP now labels those figures as local activity everywhere, gives them token sparklines instead of quota-shaped bars, and says plainly that they are not your provider allowance or billing balance. Each provider detail also links straight to the provider's own usage or account page, so the local view and the official view sit one click apart rather than pretending to be the same number.

  • Label Cursor and Copilot token figures as local activity, not an estimate of plan usage or billing.
  • Show token units and local token sparklines instead of quota-shaped progress bars for token-only providers.
  • Link Claude, Codex, Grok, Muse Spark, Copilot, and Cursor to their provider-owned usage or account pages.
  • Keep Muse Spark's narrower scope explicit: JP counts OpenCode sessions on this Mac, while Meta's account total can be higher.

August 7, 2026 · 1.094

A cat who only picks up as much as she can carry

JP reads your session logs a piece at a time, precisely so she never has to hold a whole one in memory. She was holding the whole thing anyway. On a real 82 MB Claude session log, a read that should have cost under two megabytes cost eighty-two — and there are 7,597 such logs on the Mac where this turned up. Peak memory is 1.9 MB now instead of 82.3 MB, and the second way she reads a log, picking up from where she left off, had the identical fault at 78 MB and got the identical fix. The longer your sessions run, the more she had been carrying. Opening Advanced Analytics no longer stalls everything else while she counts, either. And the file JP keeps your history in shrinks itself the first time you open this version: a real 379 MB one came down to 260 MB, a 31% cut, in about four and a half seconds, with nothing asked of you.

  • Use a fraction of the memory while JP reads your provider logs. She was quietly holding an entire log file instead of the piece she was working on: on a real 82 MB Claude session log, peak memory went from 82.3 MB to 1.9 MB. The second way she reads a log, resuming from where she left off, had the same fault at 78 MB and is fixed the same way — the longer your sessions, the more this helps.
  • Open Advanced Analytics without the rest of JP freezing. On a large history, the two passes over your stored history used to hold the whole app up until they finished; they now happen in the background, and closing the window or changing the timeframe genuinely abandons one already under way. The cancel was there before — it simply could never take effect.
  • Shrink the file JP keeps your history in. She was writing out a full file path, around 119 characters, on every one of 770,094 entries for only 13,770 distinct paths, and now stores each one once. A real 379 MB history came down to 260 MB — a 31% cut — in about four and a half seconds. It runs once, on its own, in the background, the first time you open this version, and needs nothing from you. Every total was verified identical before and after.
  • Stop redoing work that was already done. For Muse Spark, and for one of the tools JP only watches quietly in the background, she was throwing away her entire stored history and re-recording it from scratch every time a file changed — as often as every two seconds during an active session, and slower the more history you had. She records only what is new now. And if you turned Cursor tracking on, the file JP writes for it grew forever and was read again from the top on every refresh; it is kept to a sensible size now and remembered between refreshes.
  • See the same token figure on every surface. 97,600 tokens read “97.6K” on the dashboard and in the menu bar, but “98K tok” on the Medium widget. One rounding rule now serves all three. The widget was the one that was wrong.
  • Cursor's toggle in Settings now offers the same setup documentation the other three provider toggles do, instead of jumping straight to the install confirmation when Cursor is not installed. And if you opened JP's dashboard while an update was being presented, it could be left floating above every other app afterwards with its pin switched off — it is not any more.

August 4, 2026 · 1.093

Prices that kept up with the people who set them

OpenAI cut the price of two of the models Codex uses on July 30, one of them by eighty percent. JP did not notice. She carried on doing her arithmetic with the old, higher numbers, so if you had been using those models your Codex figure has been reading high — in the worst case five times higher than what those tokens are actually worth. Grok had a quieter version of the same problem in the other direction: xAI charges double once a request gets long, and JP was only ever charging the standard rate, so your longest sessions were being undercounted. Both are corrected, along with a fresh check of every other model's rates against what each company currently publishes, which found the rest in good order. You do not need to update to get this. JP checks in for the current price list on her own, so the moment this is published she will pick it up and your totals will settle to the right numbers on the next refresh.

  • Correct the rates for two Codex models after OpenAI's July 30 price cut. Costs for those models had been reading up to five times too high.
  • Charge Grok's higher long-context rate on long requests, as xAI actually bills it. Long sessions had been undercounted by half.
  • Re-check every other priced model against each company's published rates. No other differences found.

August 4, 2026 · 1.093

A total that would rather show nothing than show you the wrong number

If the database a coding tool keeps its history in was busy or damaged while JP was reading it, JP could stop reading partway through and quietly treat whatever she had so far as the whole picture. You would see a Muse Spark total that looked completely normal and was simply too low, with nothing on screen suggesting anything had gone wrong — the worst way for a number to be wrong, because there is no way to tell. She now recognises the difference between reaching the end of your history and being interrupted on the way there. Interrupted means she shows nothing for that tool and tries again on the next refresh, because a number you cannot trust is worth less than no number at all. This is the same rule JP already followed everywhere else; two places had quietly been left out.

  • Never present a partial total as a complete one. If reading a tool's history is interrupted, JP now shows nothing for that tool and retries, instead of silently reporting a number that is too low.

August 3, 2026 · 1.092

Update notes that read like a person wrote them

If you updated to 1.091 early, the “What's new” panel greeted you with “keep dev builds off the license Keychain” — a line lifted straight from an engineer's commit message, describing plumbing you cannot see and would not care about if you could. That is not what the update panel is for. The notes are written for you now, and there is a check that stops JP publishing raw engineering shorthand there again. Nothing about how JP tracks your spend has changed in this release.

  • Write the update notes in plain language rather than reprinting engineering shorthand, and guard against the raw version slipping through again.

August 3, 2026 · 1.091

JP finally asks how she's doing

JP has been downloaded all over the world and has almost never heard back, because there was nowhere to tell her anything. So once — the first time you open her after an update — she now asks. One box, whatever you want to say, and a Send button that emails it straight to the people who build her. No star rating, no five-question survey, no “rate us on the App Store”: a rating is just a step standing in front of the only thing actually worth having, which is your words. Say nothing and she closes and says nothing back; there is no tracking behind it, and nothing is sent unless you press Send. Your app version and macOS version ride along so a bug report is actionable, and that is genuinely all — no usage data, no costs, no provider list, nothing from your projects. If you would rather never be asked, there is a “Don't ask again” that means it.

  • Ask for feedback once after an update, with a single text box and an optional email if you want a reply. Nothing is sent unless you press Send, and “Don't ask again” is permanent.
  • Line up the text box properly. The grey prompt text sat a few points away from where your own typing landed, so the placeholder visibly jumped the moment you started typing, and the text sat closer to the top edge of the box than the left.

August 3, 2026 · 1.090

No more macOS password prompts

JP was asking some people for their Mac login password — once a day, and again after every update. It looked like she wanted permission to read your usage files. She didn't. She was reading the tiny piece of your Claude Code sign-in that says which plan you're on, purely to print “Max 20x” next to the limit gauge, and macOS quite rightly asks before one app reads another app's saved sign-in. That reading is gone. The plan label goes with it, because a cosmetic label is not worth a password prompt, and there is no other honest place on your Mac to find your tier. Your limit gauge is unaffected — it comes from the statusline capture you opt into, not from your sign-in. Along the way, JP also stopped describing every Claude account as “max” in her command-line output, which was wrong for anyone on Pro.

  • Stop asking for your macOS login password. JP no longer reads Claude Code's saved sign-in, so there is nothing left to approve — daily, after an update, or ever.
  • Remove the Claude plan label from the limit gauge. The gauge itself, and its official 5-hour and weekly percentages, are unchanged.
  • Stop reporting every Claude account as “max” in the command-line output. Pro accounts were being labelled incorrectly; JP now reports no tier rather than a guessed one.

August 1, 2026 · 1.089

Claude Code says “real” out loud

Codex, Grok and Muse Spark each carry a little “notional” tag on the provider list, because their dollars are list prices rather than a bill. Claude Code — the one provider whose number is real money — carried nothing at all, so the only way to know it was real was to notice the missing tag on everything else. It now wears its own green “real” tag, using the same colour language the Advanced Analytics window already uses.

  • Tag Claude Code with a green “real” badge on the provider list, so real dollars are labelled rather than implied.

July 28, 2026 · 1.088

The Advanced Analytics title bar sits straight again

Open Advanced Analytics next to the main JP window and something looked subtly off: its “JP the Cat — Advanced Analytics” title and the timeframe dropdown beside it sat a few points higher than the window's own close button, while every other JP window lined up perfectly. On a busy Mac the panel's contents ask for very slightly more room than the window has, and everything inside was drifting upward to make space. The title bar now stays put where it belongs.

  • Line the Advanced Analytics title and timeframe dropdown up with the window buttons, matching the main window and the Live data window.

July 28, 2026 · 1.087

The other two Activity views fill the window too

Yesterday's release gave the Calendar view its whole month back. The Rhythm and Model × Day views had the same problem for the same reason: their cells were a fixed size, so on anything but the widest timeframe they sat bunched against the left edge with a third of the panel empty beside them. Now every Activity view stretches to the full width of the panel — and a 90-day Model × Day grid, which used to need more than twice the available room, shrinks its columns to fit instead of running off the edge.

  • Stretch the Rhythm and Model × Day activity views across the full width of the window, matching the Calendar view.
  • Fit a 90-day Model × Day grid inside the panel instead of letting it run past the right edge.
  • Keep the Rhythm view's hour labels lined up with the columns they belong to at every width.

July 28, 2026 · 1.086

Advanced Analytics gets its whole month back

Three small things in the Advanced Analytics window were quietly wrong. The Calendar view drew only the two or three week columns your timeframe happened to touch, leaving most of the panel empty; it now lays out whole calendar months and stretches each day across the width, with days outside your timeframe shown faintly rather than as if nothing happened on them. Cursor was selectable in the sidebar but never appeared in the daily trend row beside the other providers. And on a busy Mac with a lot of models, the table underneath grew tall enough to push the Export button off the bottom edge of the window.

  • Show the full calendar month in the Activity view instead of a couple of narrow columns floating in white space.
  • Add Cursor to the daily trend charts and the basis key, so every provider you can tick is a provider you can see.
  • Keep the Export button on screen no matter how many models you have used — the table now shows the busiest ones and says how many more are waiting in the export.
  • Rename the third heatmap tab to “Model × Day” so it reads like words instead of a formula.

July 27, 2026 · 1.085

A third of the disk back, and nothing lost

JP keeps every usage event it has ever seen, deliberately — providers rotate their own logs away, and JP is the thing that remembers. But it was storing the full file path next to every single event, which on a well-used Mac meant a 117-character string repeated across hundreds of thousands of rows for only a few thousand actual files. Indexing just enough of that path to find what it needs, plus reclaiming space the database had been holding but never reusing, takes a 425 MB history down to 287 MB. Every event, every dollar, and every total is byte-for-byte identical afterwards — verified against a copy of a real database before shipping.

  • Shrink the usage history on disk by about a third — roughly 137 MB back on a well-used Mac — without losing a single recorded event.
  • Reclaim space the database had been holding onto but never reusing, at most once a week and only when there is plenty of free disk.
  • Run the whole thing quietly in the background after launch, so JP still opens instantly.

July 27, 2026 · 1.084

Two quiet fixes behind yesterday's speed-up

Making JP faster introduced two problems worth fixing immediately. Its usage database keeps a write-ahead log that is supposed to be folded back into the main file automatically; a leftover open read was preventing that, so the log kept growing for as long as the app stayed running. And a database upgrade that hit a rare disk error could leave JP unable to record any new spend until it was restarted, without saying anything. Both are fixed, and both now have tests that fail if the problem ever comes back.

  • Stop the usage database's write-ahead log from growing during long sessions — it now gets tidied up as intended instead of piling up until you quit.
  • Make sure a rare disk error during a database upgrade can never leave JP silently unable to record new spend.

July 27, 2026 · 1.083

JP stops working so hard

A cost tracker should be the quietest thing on your Mac, and this one wasn't. While Claude Code or Codex were actively writing logs, JP was rebuilding its whole picture roughly once a second instead of once a minute — and each of those passes was ten times slower than its own budget, because the “quick” path was quietly redoing the expensive work. Copilot's usage export was being read three separate times per pass. The dashboard kept animating at full frame rate even when it was completely hidden behind another window. All of that is fixed. On the machine this was found on, sustained energy use dropped by more than 90% and memory settled from about 137 MB to 51 MB, with no change to what any number says.

  • Cut sustained CPU during active coding sessions by more than 90% — the refresh now batches instead of firing on every single log write.
  • Stop animating the dashboard while it is fully hidden behind another window, and resume the moment it is visible again.
  • Read Copilot's usage export once per refresh instead of three times, which is most of the memory drop.
  • Skip the widget's 90-day recalculation on every refresh; the widget still updates well inside its own freshness window.
  • Speed up the daily and 90-day spend calculations by roughly 40% with a better index, added in the background so launch is never blocked.
  • Make startup lighter by reading each log file's state in one step instead of three.

July 25, 2026 · 1.079–1.082

Cursor joins JP with a private, token-only view

Cursor CLI can now join the dashboard without JP reading chat history or private Cursor databases. Turn the local integration on in Live Data and JP installs a fail-open Cursor stop hook that records only the timestamp, opaque turn identifiers, model name, and token counts needed for the row. Cursor stays deliberately separate from dollar totals, alerts, and quota claims: the dashboard, widget, analytics tray, CLI, and homepage demo all present it as a purple token estimate with unknown headroom. The menu bar now follows the same honest boundary by showing Cursor's actual tokens today instead of dressing self-relative activity up as a quota percentage.

  • Add an opt-in Cursor CLI row backed by Cursor's supported local stop-hook lifecycle.
  • Store only allowlisted usage metadata in JP's Application Support folder — never prompts, responses, code, paths, or private Cursor chat databases.
  • Show Cursor tokens in the dashboard, widget, Advanced Analytics, local automation snapshot, and CLI.
  • Keep Cursor non-aggregable and token-only, with no invented dollars, alerts, quota percentage, or reset time.
  • Show actual tokens in the menu bar whenever a provider has activity but no trustworthy quota signal, and omit the provider when that count is zero.
  • Mirror the same toggle, estimate badge, token series, provider checklist, and disclosure in the interactive homepage demo.

July 23, 2026 · 1.075–1.078

Limits stay honest when accounts and windows move

A limit tracker has one job: tell the truth when the underlying account state changes. Codex now follows the newest account-level reading as its session log grows, without spinning the app while nothing has changed. Claude refreshes the plan name when you swap accounts on the same Mac. And when Claude stops answering at the session limit before its statusline can emit 100%, JP now shows an explicitly estimated full gauge while preserving the last official reading in the explanation. Grok 4.5 cached input also lands at the correct lower list price.

  • Keep Codex's newest account-level 5-hour and weekly readings current as active session logs append.
  • Stop idle file watching from repeatedly refreshing the dashboard when provider data has not changed.
  • Refresh Claude's plan label after an account swap on the same Mac instead of carrying the previous account's tier.
  • Show Claude's five-hour gauge as 100% estimated when a high reading freezes and Claude confirms the session limit, while naming the last official percentage.
  • Price Grok 4.5 cached input at $0.50 per million tokens so notional totals no longer overstate cache reads.

July 23, 2026 · 1.073–1.074

Provider meters and the menu bar stay in sync

JP checks your local usage in the background so the numbers stay current. Provider meters now hold their exact position during those refreshes instead of repeatedly sweeping up from zero and making a steady limit look like it briefly vanished. The menu-bar percentage now redraws with that same fresh reading instead of occasionally keeping an older 0% until you click JP. Both fixes keep Claude Code, Codex, Grok, Muse Spark, and Copilot steady while real percentage changes still appear immediately.

  • Keep every provider meter fixed at its current value while JP refreshes local usage.
  • Stop unchanged limits and activity estimates from visually falling to zero and filling again.
  • Redraw the menu-bar percentage after every refresh so it cannot hold an older 0% while the dashboard is current.
  • Apply the same steady behavior to Claude Code, Codex, Grok, Muse Spark, and Copilot.
  • Continue showing genuine provider percentage changes immediately and exactly.

July 22, 2026 · 1.070–1.072

Pin the exact limit you care about

JP now treats each live limit window as its own menu-bar view. Pin Claude's 5-hour pace for the immediate picture, switch to Claude week for the longer horizon, or do the same with Codex — without waiting for the rotating view to come around. The rotating modes still sweep every available window, while weekly-only and estimate-only providers stay honest with one useful choice. Settings follows that sweep in real time now, so the view named inside JP always matches the pill beside your clock. And when a limit has just reset, the dashboard says it is waiting for the provider's next reading instead of leaving behind a mysteriously empty gauge.

  • Choose dedicated Claude 5h, Claude week, Codex 5h, and Codex week menu-bar views.
  • Keep rotating modes cycling through every live window, even when one provider supplies both the short and weekly limits.
  • Preserve existing saved choices with the familiar 5-hour-first behavior while making the weekly choice one click away.
  • Keep the dashboard and Settings controls synchronized with the exact provider window currently shown during rotation.
  • Trim repeated provider and window names from the display description so it simply reads Today total + Limit %.
  • Explain when a limit window has just reset and JP is waiting for the provider's next official reading.
  • Mirror the complete window-specific display cycle in the interactive homepage demo and VoiceOver copy.

July 20, 2026 · 1.069

A quiet green light for when the menu bar is on the move

When you pick a rotating menu-bar view — one that cycles through each available limit window rather than pinning a single one — a small green light now appears at the top-right of JP's card and breathes slowly, a calm at-a-glance cue that the pill beside the clock is rotating. Choose any fixed view and the light simply steps aside. It reads the same on the dashboard and Settings faces, honors Reduce Motion by holding a steady glow, and is mirrored in the interactive homepage demo.

  • Show a gently pulsing green indicator in the top-right chrome whenever a rotating menu-bar display mode is selected.
  • Hide the light entirely for fixed views, on both the dashboard and Settings faces.
  • Hold a steady, non-blinking glow when Reduce Motion is on, and mark the light as decorative for screen readers.
  • Mirror the same indicator in the homepage demo so the behavior matches what you see in the app.

July 20, 2026 · 1.068

Every menu-bar view is one click away

JP's compact top bar now carries a dedicated menu-bar display control on both the dashboard and Settings faces. One click advances through the full set of available total and provider-limit views, so changing what lives beside JP in the macOS menu bar no longer means opening Settings and hunting for the row. The homepage demo mirrors the same control and keeps its selection when you flip between faces.

  • Cycle through every available menu-bar display mode directly from the dashboard top bar.
  • Keep the same one-click control available on the Settings top bar, beside Pin, Widget, and Back.
  • Persist the chosen mode immediately and announce the current selection clearly to VoiceOver.
  • Try the identical control in the interactive homepage demo, with the selection shared across both faces.

July 20, 2026 · 1.067

The weekly limit stays current — and Grok 4.5 counts again

Two quiet accuracy fixes, because a usage tracker only earns its menu-bar space when every number is current. Codex now keeps the newest weekly reading when it temporarily stops reporting the 5-hour window, instead of reviving an older short-window snapshot. Grok Build's locally named Grok 4.5 sessions now resolve to xAI's canonical Grok 4.5 list price, so they stay in your notional total instead of landing in the unpriced-model warning.

  • Keep Codex's newest weekly limit reading authoritative when a fresh update omits the 5-hour window.
  • Stop an older Codex 5-hour snapshot from masquerading as current beside a newer weekly-only reading.
  • Count Grok Build's Grok 4.5 sessions at xAI's published Grok 4.5 list price — $2 input, $0.50 cached input, and $6 output per million tokens.
  • Show the model simply as Grok 4.5 across the app and library instead of exposing Grok Build's internal model name.

July 18, 2026 · 1.066

The menu bar says which limit you're looking at

JP's menu-bar limit readout now tells you exactly which window each percentage measures — a crisp (5hr) after the 5-hour number and (W) after the weekly one — so you never have to guess whether that figure is your short window or your long one. When a provider tracks both limits at once, the pill cycles through each, clearly labeled, instead of flashing two identical-looking numbers that mean entirely different things.

  • Label the menu-bar limit percentage with the window it measures — (5hr) for the 5-hour window, (W) for the weekly one — in the pill and in VoiceOver.
  • Rotate through both a provider's 5-hour and weekly limits when it exposes both, each clearly marked, instead of collapsing them to a single ambiguous number.

July 16, 2026 · 1.065

Stale rows open again — and the index sheds work it never needed

JP now lets you open a provider's last-good detail after a refresh failure instead of snapping back to All providers. The compact menu-bar pill also drops the tilde from self-relative activity figures, so every provider uses the same calm number shape while the tooltip and VoiceOver still identify estimates. Warm indexing stops rebuilding an unused daily table and maintaining a project index no query reads. The Copilot CLI help now names the file-export setting that actually writes local telemetry, while a broad internal cleanup removes retired code and consolidates duplicated parsing without changing the numbers you see.

  • Open stale provider rows and inspect their last-good detail after a refresh failure.
  • Show every compact menu-bar percentage as a bare number, with estimated semantics preserved in the tooltip and VoiceOver.
  • Stop rebuilding the unused materialized daily table and maintaining an unread project index during ingestion.
  • Correct Copilot CLI setup help to require COPILOT_OTEL_FILE_EXPORTER_PATH, the setting that actually writes local JSONL telemetry.
  • Consolidate shared rate-limit, timestamp, model-name, hex-color, and bounded-tail parsing while preserving existing clamps and accessibility labels.
  • Remove retired stats-cache, widget-placeholder, menu-title, and analytics delegate code whose only remaining callers were tests.

July 16, 2026 · 1.060–1.064

Every model you use — Copilot's real AIU count, and a tidier menu bar

JP stops cropping the story: the By model list now shows every model you actually used in the window, so an actively-used but older model like gpt-5.3-codex-spark can't disappear behind a “+3 more” label. Copilot's provider detail now shows the AIU it actually consumed this window — the real unit GitHub bills in, shown as a plain consumption count, never a made-up dollar or percentage. The menu bar gets tidier too: the rotating limit no longer flashes a useless “~0%” for a provider you haven't touched today. The same day fixes dashboard totals that could read $0 on Macs set to a non-Gregorian system calendar, and tightens up when widgets refresh.

  • Show every model you've used in the By model list — no more “+3 more” hiding an actively-used older model behind the top four.
  • Added Copilot's AIU consumption to its provider detail — GitHub's real billing unit, read from your local telemetry and shown as an honest consumption count, never a fabricated dollar figure or quota percentage.
  • Stopped the menu-bar limit rotation from showing a useless “~0%” — it now skips any provider sitting at zero for the day and only cycles through meters that actually have a number (falling back to your total when none do).
  • Fixed dashboard totals reading $0 for anyone whose Mac uses a non-Gregorian system calendar (Buddhist, Japanese, Islamic) — every provider's spend shows correctly again.
  • Made widgets refresh reliably when only sub-dollar amounts change, so a placed widget never sits on a stale number.

July 15, 2026 · 1.052–1.059

Muse Spark goes live — and finally draws the full picture

A full evening of shipping, one story: Muse Spark joins Claude, Codex, and Grok as a fourth live notional provider, then the detail face catches up — charts from your local logs, bars scaled to the dollars you see, activity estimates in the selector and menu bar, and honest scope disclosure that OpenCode sessions on this Mac are not your full Meta account dashboard. The same day restores fast dashboard load on heavy Claude/Codex histories, prices Grok Build's Cursor Composer 2.5 sessions, and closes the evening by making the dashboard and every widget timeframe refresh dramatically faster on long usage histories.

  • Added Muse Spark as a live notional provider — OpenCode muse-spark sessions indexed from your local opencode.db with the same honesty posture as Grok and Codex.
  • Wired Muse Spark into Settings → Menu bar display and the rotating limit pill (~NN% activity estimate when Meta exposes no local quota %).
  • Draw Muse Spark's hero sparkline and per-model bars from local log fallback when the indexed daily series is sparse — no more dead chart beside real totals.
  • Show sub-dollar run rates with two decimals so “At this pace” does not round honest cents to zero.
  • Use self-relative activity (~NN%) for the selector meter and hero caption when a provider has no official quota window — in the app and homepage demo — instead of a misleading slice of everyone else's spend.
  • Disclose Muse Spark's OpenCode-only scope in provider detail, Live Data, marketing copy, and /library — Meta account dashboard totals can be higher when Muse Spark runs outside OpenCode.
  • Load the dashboard instantly again on heavy histories — touch raw provider logs only when the index is missing data or the chart needs a sparse-series fallback, not on every refresh.
  • Made the dashboard and every widget timeframe refresh dramatically faster on long usage histories — the window totals now compute from a compact per-day rollup instead of replaying every raw event, to the exact same dollars.
  • Price Grok Build's Cursor Composer 2.5 (`grok-composer-2.5-fast`) from Cursor's on-demand rates — no more “Unpriced models omitted from cost” for Composer sessions.
  • Added a Best bang for the buck benchmark on /library — ranked from JP the Cat's bundled pricing table, with notional labels where subscription list price applies.
  • Extended the tokens-to-dollars calculator with Grok and Muse Spark, per-model notional labels, and mixed-basis disclosure when Claude and subscription providers appear together.

July 14, 2026 · 1.049–1.051

Two windows grow up, and the widget never clips

Settings gets calmer: your live-data providers and the full theme catalog each move into their own dedicated window, so the picker can grow without crowding the panel — and the Large widget's footer finally clears the bottom edge on a real placed widget.

  • Moved Live data into its own window — each provider shown with its real brand logo, its enable and live-limit toggles grouped together, and switches that show their true on-color the moment it opens.
  • Moved the full theme catalog into its own window so you can browse and preview every theme, free and premium, without lengthening Settings.
  • Enlarged the Appearance theme tiles so each theme's name and colors read clearly at a glance.
  • Lifted the Large widget's footer clear of the bottom edge so the freshness line never clips on a placed widget.

July 13, 2026 · 1.042–1.048

Grok arrives — and every provider fits the widget

A full day of shipping, one story: Grok Build joins Claude and Codex as a live notional provider, SuperGrok weekly limits are opt-in when you want them, and the All providers widget finally shows everyone you use — Medium and Large included — instead of quietly cropping the list.

  • Added Grok Build as a live notional provider with list-price dollars and the same honest treatment as Codex.
  • Added opt-in SuperGrok weekly limit capture so the gauge appears only when you turn it on.
  • Named Grok consistently across onboarding, dashboard, analytics, and share copy.
  • Show every connected provider on the All providers widget — Medium and Large both keep Claude, Codex, Grok, and Copilot visible.
  • Adapt the Medium layout into a compact two-column grid when three or more providers are active, so nothing is silently truncated.
  • Announce every provider in VoiceOver on Medium and Large, matching the visual set.

July 12, 2026 · 1.033–1.034

The right cat, the right Mac — and cleaner legal reading

This day is about trust when something around JP gets messy: old app copies, moved licenses, support handoffs, unpriced provider windows — plus a Terms page that is easier to scan when you need the fine print.

  • Made the licensed Settings card easier to scan with three clear actions: Buy More, Support, and Deactivate.
  • Kept stale or duplicate JP copies from competing with the installed app, so the menu-bar cat stays attached to the right build.
  • Expanded the redacted support report with the installed version, running-app source, license storage health, and widget access state.
  • Improved Copilot's menu-bar limit estimate when a window has token activity but no priced dollar total.
  • Added a left-side sticky table of contents to the Terms page so users can jump directly to any section.

July 11, 2026 · 1.025–1.032

Twenty ways to make JP yours — and history that travels

JP dresses for your desk, keeps a longer honest history, and prices the newest Codex models the day they ship. Themes, exports, and capacity readouts land in one day's work — not three separate stories.

  • Added four new premium themes — Ayu Mirage, Night Owl, Catppuccin Macchiato, and Palenight — bringing the pack to twenty, every one tuned to stay readable at a glance.
  • Gave JP's local CLI and automation snapshots one consistent "capacity remaining" readout across providers — honest by design, never a made-up number when a provider doesn't report one, and nothing ever leaves your Mac.
  • Made newsletter signup feel complete on the website: submit and you get a clear check-your-inbox confirmation, or a friendly retry if something hiccups.
  • Added JSON and Markdown exports alongside CSV, so Advanced Analytics can move cleanly into scripts, notes, and reports.
  • Added seven-day cost summaries by project to the local JSON CLI output for private, on-Mac automation.
  • Kept already-indexed usage history available after provider log rotation, so older costs do not quietly disappear from longer timeframes.
  • Added day-one cost tracking for the GPT-5.6 Luna and Terra Codex models, so new usage lands in your totals immediately.
  • Hardened the cost engine so a rare mid-read hiccup can never quietly show a partial total — JP falls back to a fresh, complete read instead of a truncated one.

July 10, 2026 · 1.023

Advanced analytics and Copilot visibility

See not just what today costs, but how your AI coding habit actually behaves. A full analytics workspace now opens on top of the compact dashboard — the trends, the rhythms, and the models quietly running up your bill — while GitHub Copilot joins the picture, honestly labeled. This is the update that turns a number into a story you can act on.

  • Opened Advanced Analytics: provider filters, one-click CSV export, daily trends, token mix, cache-hit rate, and Calendar, Rhythm, and Model×Day heatmaps that show exactly when and where your spend happens.
  • Made every heatmap cell open a focused model view with sortable columns and a timeframe control that keeps the whole workspace on screen — no scrolling, no digging.
  • Welcomed GitHub Copilot CLI as an opt-in row from its own local telemetry, with token estimates kept visibly separate from every real dollar total, widget, and alert so the numbers you trust stay clean.
  • Made turning a provider off feel instant — disabled sources vanish right away instead of lingering as confusing empty rows.
  • Shipped smaller, faster updates, newest-model-first ordering, and day-one pricing for GPT-5.6 Sol.

July 8, 2026 · 1.016

Honest about what's free

Trust is the entire point of a cost tracker, so we made the free-versus-paid line unmistakable. The live dollar total in your menu bar is free forever — and we fixed every place the site had blurred it. If JP is going to watch your spending, it had better be straight with you first.

  • Free forever now means exactly one thing you can count on: the live menu-bar dollar total, always on.
  • Moved the 5-hour and weekly limit percentage into the licensed features, right alongside the full dashboard, widget, and 80% alerts.
  • Rewrote the pricing FAQ so what you read is exactly what you get.

July 6, 2026 · 1.001

The little things that make it feel right

Great software is a hundred small kindnesses. Right after v1.0 we sanded down the launch site, the download, the pricing card, and the details you feel but never quite notice — the kind of polish that makes an app worth keeping in your menu bar.

  • Made downloads start the instant you click, with the newsletter note staying friendly, optional, and out of your way.
  • Kept the pricing card refreshingly direct: buy when you're ready, or grab the free trial in a single click.
  • Polished the transactional emails so they read beautifully in both light and dark mode.
  • Added real-render checks so a shipped widget can never quietly show up blank.
  • Fixed the Test meow so alert sounds and interface sounds each stay their own delightful selves.

July 6, 2026 · 1.0

JP the Cat 1.0

JP the Cat grew up: a signed, notarized, self-updating Mac app that tells you what your AI coding actually costs — to the cent — with a real trial, a fair checkout, and a download you can trust. If you have ever wondered where your Claude Code or Codex spend really goes, this is the day to find out.

  • Shipped Claude Code and Codex tracking with honest local math, clearly-labeled notional Codex pricing, and official limit gauges wherever the provider offers them.
  • Published the stable download, update feed, checksum, and Homebrew cask from one signed artifact, so every install path points at the same trustworthy build.
  • Proved the real installed-app experience on a clean, offline machine before ever calling it 1.0.
  • Completed the paid journey end to end: checkout, a server-anchored trial, license email, activation, validation, refund handling, Free Mode, and widget access.
  • Aligned the website, pricing, privacy, and terms with exactly what the app does — no more, no less.

July 6, 2026 · 0.128-0.131

Getting launch-ready

The last stretch before 1.0 was all about confidence — proving the release path, the widget, and the story we tell all hold up under real-world scrutiny.

  • Added an offline-machine release gate so every broad release proves the real installed-app path, not just a developer build.
  • Kept the Homebrew cask, stable manifest, and update feed perfectly in step with every public download.
  • Restored configurable widget packaging and confirmed the widget is ready for the gallery.
  • Sharpened the homepage around the real product, its honest analytics state, and why JP is different.
  • Fixed the demo chart and tuned the launch copy, widget cards, and the little breathing sparkline.

July 5, 2026 · 0.117-0.127

Ready for everyone

This is where JP became something you could actually buy, share, and rely on — with a real checkout, beautiful email, accessibility for every user, and a noticeably snappier feel.

  • Turned on live checkout, multi-Mac purchases, returning-buyer add-ons, a double opt-in newsletter, and branded confirmation pages.
  • Gave license, newsletter, purchase, refund, and lifecycle emails one warm, consistent JP look.
  • Strengthened privacy disclosures across the download, checkout, trial, and license flows so you always know what's happening.
  • Grew our understanding of downloads without ever touching your prompts, code, transcripts, credentials, or license keys.
  • Closed VoiceOver gaps across the dashboard, settings, widget, and loading screens.
  • Made first-run animation and charts visibly smoother, then locked it in with quality and render gates.

July 4, 2026 · 0.109-0.116

A fair, honest way to pay

We built the entire license foundation the way we would want it as customers — a generous Free Mode, an honest trial, and clear alerts — and kept every public claim truthful the whole way through.

  • Built the license server, checkout, signed leases, device identity, Keychain storage, and offline verification.
  • Shipped Free Mode, server-anchored trials, license activation, a paste-key flow, and widget and theme access.
  • Added tiered usage alerts and clearer menu-bar display options so a budget surprise never sneaks up on you.
  • Kept the Buy button behind a safety switch until the live path was genuinely ready.
  • Added the thank-you experience, a Buy-more flow, one-tap sharing, and a playful 404 page.
  • Kept update notes clear of internal noise, so everything you read is written for you.

July 3-4, 2026 · 0.093-0.108

Make it yours

JP started to feel personal: a glanceable widget for your desktop, themes to match your setup, and easy ways to tell a friend about it.

  • Shipped the widget with snapshot-only data and its own settings for provider focus and limit visibility.
  • Added Sunlit Ledger and Midnight Ledger themes, with switching and contrast tested for real readability.
  • Made the footer JP badge open a friendly 'tell others about JP' share in both the app and the homepage demo.
  • Tucked shared actions neatly into the card footer and kept Settings calm and compact.
  • Guarded release notes against empty, generic, or mechanical text — every note has to earn its place.
  • Warmed up the sound cues and fixed the sharing links.

July 2-3, 2026 · 0.041-0.092

The dashboard finds its shape

These builds turned an early experiment into the fixed-width, always-accurate dashboard that defines JP today — the one you'll recognize the moment you open it.

  • Brought first-run onboarding right into the dashboard, with a clear path to settings and licensing.
  • Added opt-in Claude live limits while keeping every provider change explicit and easy to undo.
  • Added provider availability states, resilient handling of quiet sources, and clearer notional and list-price labels so no number ever lies to you.
  • Refined the status pill, right-click menu, tooltip, VoiceOver value, and multi-display positioning.
  • Added budget alerts, smart refresh, and instant file-change updates so today's number is always current.
  • Kept the homepage demo a faithful mirror of the real app.

July 2, 2026 · 0.017-0.040

Two faces, one calm app

The dashboard-and-settings model took shape, along with the split-flap money readout you'll recognize the second you open JP.

  • Added the settings face, pin control, shared footer, update dot, Dock visibility, and launch-at-login.
  • Moved toward the intrinsic-height card with its basis-label ticker and the split-flap money readout.
  • Generated update notes from real history instead of a hand-kept changelog.
  • Polished the legal snow-globe pages, homepage typography, and mobile layout.
  • Fixed foregrounding so update windows and alert taps always come right to you.

June 30-July 1, 2026 · 0.001-0.016

Where JP began

The very first artifacts: a brand, a mascot, and a signed Mac app that proved the whole idea — know your AI coding cost, privately, on your own machine, with nothing to sign up for.

  • Created the JP the Cat brand, mascot, website, privacy and terms pages, and SEO.
  • Built the menu-bar app, a pure cost engine, Claude Code and Codex parsers, a persistent usage index, and the provider catalog.
  • Renamed every internal identifier from the old TokenBar name to JP the Cat before shipping.
  • Added self-updates, signed and notarized packaging, public release hosting, checksums, and the stable download route.
  • Shipped the first dashboard, provider rows, local-day charts, timeframe picker, money formatting, and the light status pill.
  • Introduced the snow-globe legal pages and the homepage demo that mirrors the app.

Questions about a release? Contact JP. For data handling, read the privacy policy.