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

· Web

JP shows up sooner

Website only: the Mac app and its download are unchanged. JP’s still frame on the homepage now starts loading as soon as the page does, so she appears sooner on a slow connection.

  • Ask the browser for JP’s homepage still frame first, at high priority, instead of after the page’s scripts.
  • Keep the site’s visitor and performance measurement on one consistent setup, with event names that read the same everywhere.

· Web

Team emails that get to the point

Website only: the Mac app and its download are unchanged. The notices JP’s website sends to the people who build her now read like a short checklist, so a problem is the first thing they see and nothing important is buried.

  • Lead every notice with anything that needs attention, then short labelled sections.
  • List top pages, sources, and searches as numbered items with their counts, and link each page to the live site.
  • Say exactly what an empty value means: a real $0.00 when nothing sold, and plain words when a data source is not set up or has failed.
  • Set every value in the same plain text, including long browser identifiers, so nothing in a notice looks like code.

· 1.137

Count Haiku 5.5 at its own price

The pricing feed adds Claude Haiku 5.5 and updates Sonnet 5.5’s cached-input price. These prices can reach your running app through its daily pricing check.

  • Count Haiku 5.5 turns, including the higher rates for prompts over 100K tokens.
  • Use Sonnet 5.5’s lower cached-input price for Claude Code while keeping Zen’s gateway rate separate.
  • See the published longer-prompt cache rates in the pricing library and use Haiku 5.5 in its calculators.

· 1.136

Go straight to your Codex usage

The Codex usage link now opens the page for your Codex allowance and credits.

  • Open your Codex usage page from the app or the website demo.

· 1.135

Your Codex credits have their own place

An empty weekly allowance can still sit beside available Codex credits. JP now shows both, each with its own meaning.

  • See your last-reported Codex credit balance and when Codex reported it, separate from subscription limits and notional dollars.
  • Read the windows Codex actually reports. A weekly-only plan shows its weekly limit without an invented five-hour meter.
  • Get the same allowance and credit distinction in local automation reports.

· 1.134

One column or two, your pick

The two-column dashboard gave your providers room to breathe, but the compact card was easier to read at a glance. Now you get both. One button at the top of the card switches between them, and JP remembers your pick.

  • Switch between one and two columns with the new button at the top of the dashboard and Settings. Its icon shows the layout you are in.
  • Get the compact card back: providers stack in one list, limits read from 5-hour to monthly, and each model gets a single row with its name, usage bar, and cost or token count.
  • See the same numbers, order, and labels in either layout. Only the arrangement changes.
  • Click again to switch back without moving the mouse. The card keeps its right edge, so the button stays under your pointer.

· 1.130–1.133

One name per model, one honest label

JP now reads a model the same way everywhere she shows it. A model that OpenCode bills at a peak-hour or gateway rate stays one row with the exact same dollars, its effort label matches the model it really is, and when she has not classified a model she leaves the label off instead of guessing. Long Grok turns now cost what xAI would charge for each request, and placed widgets pick up an update right away.

  • See one row per model in the dashboard and Advanced Analytics, even when OpenCode Go bills part of that model's usage at peak-hour rates.
  • Spot free-tier turns at a glance: they read as free and show tokens, never a price.
  • Trust every effort label. Local model names such as Grok Build's read their model's real tier, and a model JP has not classified shows no label rather than a guessed Medium.
  • Count Gemini 3.1 Pro, Gemini 3.5 Flash and Flash-Lite, and Qwen 3.5 Plus at their published rates, and measure OpenCode Go's GPT-6 Luna and DeepSeek V4.1 Flash against Go's current limits.
  • Browse a truer pricing library with an OpenCode Go limits page and every live provider named, and read a privacy policy that matches the app: JP never reads Claude Code's stored credentials.
  • Count long Grok turns more truly. When Grok's local log still holds a turn's requests, JP prices each request on its own, so only requests past 200K context carry xAI's long-context premium.
  • See the new version in placed widgets right after an update, and keep your real numbers while JP starts. An update used to leave the old widget running for days, and a launch showed $0.00 for up to five minutes.
  • Find JP the Cat under her proper name in the widget gallery, Finder, and Spotlight, and spot OpenCode Zen and OpenCode Go in widgets by their own marks, labeled as gateways.

· 1.129

Cursor's own numbers, not JP's guess

JP used to estimate Cursor usage from the tokens she could see locally, so the row never quite matched Cursor's own Spending page. Switch on the opt-in Cursor source and she reads the official percentages instead, each with the date it resets. Personal plans and team seats both work.

  • Turn on official Cursor plan usage in Settings to replace the local estimate with the percentages Cursor itself reports.
  • Watch Cursor Models and Other Models against your billing cycle, and the weekly Grok Bot meter when your plan includes one.
  • Read your plan by name, whether that is a personal Pro, Pro+, or Ultra plan or a seat on a team.
  • Keep a still-current reading when one call goes unanswered, instead of blanking a row that was right a moment ago.
  • Leave it switched off and nothing changes. The fetch is opt-in, tries at most once every five minutes, and reads your existing Cursor sign-in without ever touching the refresh token.

· 1.126–1.128

More room, with every little label in line

JP's wider Mac dashboard gives your providers and models room to breathe. Usage windows find their place, Settings takes less scrolling, and compact labels keep one steady height from Medium and High to official and measured.

  • Browse providers and usage-ordered models in two columns, with All providers across the full width and the same totals and controls.
  • Read 5-hour and 7-day limits side by side, with a full-width monthly window above them. A lone available limit fills the card.
  • Use shorter two-column Settings and evenly sized label badges across the dashboard, analytics, onboarding, widgets, and matching website demos.
  • Count MiMo V2.6 Pro and newer models at published rates, recover late OpenCode updates, and keep gateway usage outside combined totals.
  • Keep the homepage's familiar layout and fixed provider list. Explore expanded pricing-library coverage with small cache rates, gateway prices, and historical-rate caveats intact.

· 1.124–1.125

She stays where you left her

Click away to another app and the dashboard stays put, above whatever you switched to, on every desktop. The menu-bar icon is still the quick way to tuck it away and bring it back. Today's earlier update also counts two newer models in the total, and a second click on the menu bar closes the window when it is the one you are looking at.

  • Leave the dashboard open when you click another app. It stays above other windows, on every Space, and over a full-screen app.
  • Hide it and show it again from the menu-bar icon. A second click closes it when it is the window in front of you.
  • Turn that off in Settings if you want other windows to cover the dashboard. The choice lasts until you quit, and the next launch starts on top again.
  • Count Claude Opus 5.5 and Grok 4.7 in your cost, at their published rates.

· 1.123

OpenCode Go turns priced at their own rates

DeepSeek V4 turns you take through OpenCode's Go gateway now price at the published Go rates, separately from the Zen gateway's list, with their own monthly caps on the Go gauge. The Zen rows are untouched, so each gateway's dollar figure matches the list you actually paid.

  • Price Go-routed DeepSeek V4 Flash, Flash Vision, and Pro turns at the OpenCode Go published rates.
  • Give the Go gauge its own caps for the three DeepSeek V4 models, separate from Zen's list.
  • Keep Zen-gateway turns and free turns priced exactly as before.

· 1.117–1.122

Free means free on every row — and Claude's bar stays put

OpenCode's free-tier models now read as free everywhere they appear: their model rows show tokens instead of list-price dollars, and the cost notice says plainly that they sit outside the dollar total, while a genuinely unknown price still gets its own warning. Claude's weekly gauge stays on screen until its own reset time passes, however quiet the day has been, and OpenCode Go draws the usage bars its console shows instead of an activity sparkline.

  • Count a free-tier OpenCode turn as free on its model row too, so MiMo, Nemotron, DeepSeek, and Big Pickle show tokens for free usage instead of a notional dollar figure.
  • Keep free-tier models out of the spend disclosure on the dashboard hero, where only a genuinely unknown price is worth a warning.
  • Stop OpenCode Go from drawing a 0% usage bar for a capped model JP has no price for; the bar appears only when it can be measured.
  • Price DeepSeek V4 Pro, DeepSeek V4 Flash Vision, and Muse Spark 1.2 and 1.3 from OpenCode's published list, and correct DeepSeek V4 Flash's cached-read rate.
  • Let jpthecat-cli --provider all include the same model rows the dashboard sums, so the two totals agree.
  • File DeepSeek and OpenCode house models under their own families in the pricing library instead of under Gemini.
  • Label free-tier models as excluded from cost instead of calling them unpriced.
  • Keep Claude's official weekly gauge visible while its reset is still ahead, even when the last reading is many hours old.
  • Drop a limit window only when its own reset time passes, never because the reading looks stale.
  • Let the Live data row's own indicator keep reporting whether a capture is still working, so a quiet day reads differently from one that never started.
  • Draw OpenCode Go's usage as bars in the provider list instead of a sparkline, adding the monthly window its console also shows.
  • Say measured, never official, on those bars, and keep them out of the widget's official limit capsule — OpenCode publishes the caps, not a percentage.

· 1.115–1.116

Two more gateways join the list

JP now follows OpenCode Zen and OpenCode Go alongside the models they serve. Neither is added into any total: the work already appears under the model that did it, and counting it twice would inflate the day. Go's plan publishes a per-model cap, so its row measures your local usage against that and says plainly that the number is measured rather than reported by the provider.

  • Track OpenCode Zen and OpenCode Go on the dashboard, in dollars where a price is published and in plain tokens where the model is free.
  • Keep both gateways out of every dollar total and every alert, so usage already counted under a model brand is never added up twice.
  • Measure OpenCode Go's usage against its own published per-model caps, and label it measured rather than official — JP reads the local cost, and the provider reports no percentage to JP.
  • Give every provider row room for its full name, so OpenCode Zen and OpenCode Go no longer shrink beside shorter ones.
  • Drop the composition legend, which repeated the dot, name, and amount the provider list already shows.

· 1.112–1.114

Your weekly Codex bar stays — and Help and Close, the Mac way

The Codex row keeps its 7-day usage bar and reset countdown on screen, and OpenAI model pages list only the prices OpenAI actually publishes. The menu bar also gains a Help menu, and Window > Close uses Command-W, matching other Mac apps.

  • Keep the Codex weekly bar and its reset countdown on screen instead of falling back to a sparkline.
  • Drop cache-write prices from GPT-6 Astra and the GPT-5.6 models; OpenAI does not charge for cache writes.
  • Open JP the Cat Help from the Help menu; it goes to the same site as the dashboard help button.
  • Close the dashboard from Window > Close with Command-W.

· 1.109–1.111

Every local provider gets its full count — and free tokens still count

Nemotron, MiMo, Big Pickle, and DeepSeek now count the same individual messages in direct reads and saved history, and join Advanced Analytics, widgets, and the website controls by default. Big Pickle's free activity shows as tokens instead of an empty dashboard, providers without a current official quota show activity sparklines, and Advanced Analytics wraps its trends into four columns. Everything stays on your Mac.

  • Restore refreshes for older installations and keep each provider's progress separate when they share one local database.
  • Count new messages promptly and keep direct and indexed totals consistent, including shared Muse Spark history.
  • Include Nemotron, MiMo, Big Pickle, and DeepSeek in analytics totals, model breakdowns, and activity charts.
  • Choose any of the four in widgets, with readable icons and room for all ten dashboard providers in Medium and Large layouts.
  • Mirror provider controls and analytics choices on the website, preserving Big Pickle's zero-dollar estimate.
  • Show Big Pickle token counts in the headline, provider row, and activity details.
  • Chart daily token activity from both direct reads and saved history.
  • Keep token totals consistent with the selected timeframe in the website demo.
  • Show cost trends for priced models and token trends for free or unpriced activity.
  • Keep Big Pickle, MiMo, and DeepSeek names readable after settings reload.
  • Wrap analytics trends at four columns and keep extra model rows in exports.

· 1.108

A clearer provider catalog

The website and documentation now consistently describe the 65-provider catalog. Catalog entries remain distinct from publicly supported integrations; the count does not promise live support for every listed tool.

  • Align the catalog count across the website and product documentation.
  • Preserve the distinction between live integrations, local dashboard options, and planned providers.

· 1.105–1.107

Shared history, separate providers

These releases improved the four new local readers and separated provider records when multiple models share an OpenCode database. The later v1.109 review completed the older-index upgrade and refresh handling, so these earlier changes alone were not the final repair.

  • Read usage for MiMo, Nemotron, DeepSeek, and Big Pickle from local OpenCode history.
  • Keep one provider's refresh from deleting another provider's records in the same database.
  • Introduce separate saved progress for providers sharing a database; v1.109 completes migration for existing installations.

· 1.104

Four more models on your Mac

JP added local usage tracking for Nemotron 3, MiMo 2.5, Big Pickle, and DeepSeek V4 sessions recorded by OpenCode. Their dollar figures are labelled notional estimates, not subscription bills or account-wide totals. Later repair releases improve how this shared history is read and displayed.

  • Show the four model families in the local dashboard and Live Data controls when OpenCode is detected.
  • Use local token history for estimates without uploading prompts, code, transcripts, or provider credentials.
  • Keep unavailable quotas blank instead of inventing a plan limit.

· 1.103

Account switches settle without the spin

Switching Grok accounts could leave JP doing far more work than the new account needed. JP now reuses the completed usage already in its local index, reads only the small part of an active session that can still change, and replaces that live count cleanly when the turn finishes. The same audit covered every provider: unchanged histories now stay on their indexed path, Codex remembers its official limit reading across restarts, and large log files are read as a stream instead of one large allocation. JP also returns freed parse memory to macOS after real log work instead of holding empty buffers. Your local history and provider credentials still never leave your Mac.

  • Settle a Grok account switch without repeatedly rebuilding completed history.
  • Keep Codex's official limit gauge ready across app restarts without sweeping every old rollout again.
  • Stream large provider logs and retain only one file's temporary parse objects at a time.
  • Return freed parse memory to macOS after a changed-file pass, while skip-only checks stay untouched.
  • Keep unchanged Claude Code, Codex, Grok, Muse Spark, Copilot, Cursor, Gemini, and OpenCode histories on their low-work paths.

· Web

A shorter trip to JP's data store

JP's website now handles account, checkout, download, and growth requests in the same United States East region as its data store. That removes an avoidable cross-country network trip from server-side work while keeping the site's privacy and data boundaries unchanged.

  • Run website server requests beside JP's United States East data store.
  • Reduce avoidable network distance for account, checkout, download, and growth requests.
  • Keep the same providers, privacy boundaries, and public behavior.

· 1.102

Ready for Astra, with a lighter Sol estimate

OpenAI has introduced GPT-6 Astra and published a lower promotional price for GPT-5.6 Sol. JP is ready for Astra before it reaches your Codex rollout: the first local session carrying its official model name will count at OpenAI's published list price instead of falling into the unpriced bucket. Sol's notional figure now follows its new $4 input and $20 output rates rather than the older $5 and $30 prices, so existing Sol history settles lower on refresh. These are still notional API-list-price estimates for a Codex subscription, never a claim about your bill.

  • Recognize GPT-6 Astra at OpenAI's published $10 input, $1 cached input, $12.50 cache-write, and $50 output rates per million tokens.
  • Lower GPT-5.6 Sol's notional estimate to its promotional $4 input and $20 output rates per million tokens.
  • Lower Sol's cached-input rate to $0.40 and cache-write rate to $5 per million tokens.
  • Keep every Codex dollar labelled as notional list price. JP does not present it as subscription spend or a provider bill.

· 1.100–1.101

Grok counts while the turn is still going — and Claude Fable 5.1 at its own cache rate

Grok Build only wrote the bill when a turn finished, so a long agent turn could sit at $0.00 while you were clearly working. JP now reads each model round as it lands and replaces that live count with the completed total, so nothing is counted twice, and Codex keeps its last official limit gauge visible during a warm refresh. The website's price list also gained Claude Fable 5.1: those sessions had been left out of your Claude total, and 5.1 now has its own entry, with cache reads at a quarter of Fable 5's rate. You do not need to update for the price; JP fetches the current list on her own.

  • Show Grok's notional cost and tokens while a turn is still running, not only after it ends.
  • Replace that live count with the completed-turn total so a finished turn is never counted twice.
  • Keep Codex's existing official limit gauge visible while a warm refresh checks the newest reading.
  • Keep the official weekly SuperGrok bar on the opt-in capture — never a percentage invented from local tokens.
  • Leave Cursor as its own token-estimate row. Grok and Cursor are still two products in JP.
  • Count Claude Fable 5.1 sessions instead of leaving them out of your Claude total.
  • Charge its cache reads at $0.25 per million tokens — a quarter of Fable 5's rate, exactly as Anthropic publishes it.
  • Keep 5.1 a separate entry from Fable 5, so the cheaper cache rate can never be quietly replaced by the older one.
  • Re-check every other model against its vendor's current list price; no other rate was missing or stale.

· 1.099

A quieter cleanup under the hood

Nothing in the app or on this page looks different today, and that is the point. Version 1.099 holds the Mac app to the same stricter bar. Every function behind the site — the homepage demo, the analytics window, the growth reports — now has to stay simple enough that a person can read it in one sitting, and an automated check fails the build the moment any one of them grows too tangled. Eighteen of the most knotted ones were untangled to get there; the worst was a thirty-eight-way chain deciding which icon to draw, which became a plain lookup table. Simpler code is where mistakes get found early, so this is maintenance in your favor even though no pixel moved.

  • Hold every function on the site to a measured complexity ceiling, enforced on every build.
  • Untangle the eighteen functions that were over the line, including the homepage demo's icon picker and the analytics window's summary math.
  • Change no behavior: the full test, accessibility, and build checks passed unchanged at the stricter bar.
  • Apply the same complexity ceiling to the Mac app in 1.099, with no feature or number changed.

· 1.098

Say when the menu bar rotates

A small clarity fix: the menu bar display setting now says when it rotates between providers.

  • Label the menu bar display subtitle as rotating when it cycles between providers.

· 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.

· 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.

· 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.

· 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.

· 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.

· 1.093

Prices that kept up — and a total that would rather show nothing than the wrong number

OpenAI cut the price of two Codex models on July 30, one of them by eighty percent, and JP kept using the old rates, so Codex could read up to five times high. Grok was missing xAI's higher rate for long requests, so long sessions were undercounted. Both are corrected, and every other rate was re-checked against what each company publishes. Separately, when a tool's history database was busy or damaged, JP could stop reading partway and show a total that was simply too low; she now shows nothing for that tool and tries again 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.
  • 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.

· 1.090–1.092

No more macOS password prompts — and JP finally asks how she's doing

JP was asking some people for their Mac login password, because she read the part of Claude Code's saved sign-in that names your plan, just to print a label. That read is gone, the label with it, and the limit gauge is unchanged. The first time you open JP after an update she now asks, once, for anything you want to say, and nothing is sent unless you press Send. The update notes are written for you, too, with a check that stops raw engineering shorthand from reaching them.

  • 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.
  • 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.
  • Write the update notes in plain language rather than reprinting engineering shorthand, and guard against the raw version slipping through again.

· 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.

· 1.086–1.088

Advanced Analytics gets its whole month back — and every view fills the window

The Calendar view now lays out whole calendar months, and the Rhythm and Model × Day views stretch across the full panel, with a 90-day grid shrinking to fit instead of running off the edge. Cursor joins the daily trend charts, the Export button stays on screen however many models you use, and the window's title bar lines up with its buttons again.

  • 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.
  • 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.
  • Line the Advanced Analytics title and timeframe dropdown up with the window buttons, matching the main window and the Live data window.

· 1.083–1.085

JP stops working so hard — and gives a third of the disk back

A cost tracker should be the quietest thing on your Mac. While Claude Code or Codex were writing logs, JP was rebuilding its whole picture about once a second through a path that was far slower than its budget. That work now batches, the dashboard stops animating while hidden, and sustained energy use dropped by more than 90% with no change to any number. Two follow-up fixes keep the usage database from growing during long sessions and stop a rare disk error from silently blocking new spend, and the history on disk shrinks by about a third without losing a single event.

  • 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.
  • 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.
  • 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.

· 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.

· 1.073–1.078

Limits stay honest when accounts and windows move — and meters stay in sync

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, Claude refreshes the plan name when you swap accounts, and when Claude stops answering at the session limit before its statusline can emit 100%, JP shows an explicitly estimated full gauge while naming the last official reading. Provider meters now hold their exact position during background refreshes instead of repeatedly sweeping up from zero, and the menu-bar percentage redraws with that same fresh reading instead of occasionally keeping an older 0% until you click JP, while real percentage changes still appear immediately. Grok 4.5 cached input also lands at the correct lower list price.

  • 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.
  • 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.

· 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.

· 1.067–1.069

Every menu-bar view is one click away — and Grok 4.5 counts again

JP's top bar gains a one-click control that cycles through every menu-bar view on both faces, and a small green light breathes in the corner whenever a rotating view is selected. Codex keeps its newest weekly reading when it briefly stops reporting the 5-hour window, and Grok Build's Grok 4.5 sessions count at xAI's published list price instead of landing in the unpriced warning.

  • 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.
  • 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.
  • 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.

· 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.

· 1.060–1.065

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. Later that day, a provider row whose refresh failed opens again to its last good detail, the compact menu-bar pill drops the tilde from activity figures, and indexing stops doing work that no screen reads.

  • 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.
  • 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.

· 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.

· 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.

· 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.

· 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.

· 1.022–1.024

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.
  • Closed the analytics tray with a single footer-icon click and lined up its Export button with the model table.

· 1.018–1.021

Live data toggles that stay put

The live-limits and live-data switches now do what they say the moment you flip them, and the first Advanced Analytics tray takes shape.

  • Fixed the Claude live-limits switch springing back on after you turned it off, and refreshed right away when you change it or Copilot live data.
  • Split the live-limits explanation into readable paragraphs and gave every confirmation dialog room between its title and body.
  • Redesigned Advanced Analytics as a provider checklist with Copilot included, and steadied the tray against races and repositioning.
  • Added the missing Claude Code and Codex switches to the homepage demo and removed a redundant Refresh button from Settings.

· 1.009–1.017

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.
  • Added themes: Ember Ledger first, then sixteen in a grid picker at the bottom of Settings, with a theme row on the homepage.
  • Gave each widget its own timeframe picker.
  • Fixed the freezes and lag some Macs saw: a theme switch that redrew twice, a runaway reindex, a widget update that blocked the app, and a slow Keychain read at launch.
  • Stopped guessing a Claude plan tier JP cannot confirm, and limited Free Mode's menu bar to the total.

· 1.006–1.008

Clearer model costs

The day after 1.0, JP got sharper about which model and effort level you are paying for.

  • Show each model's effort level on the pricing and dashboard rows, and price GPT-5.3 Codex Spark.
  • Scale each model's bar against the busiest model, so smaller ones stay readable.
  • Tidy the widget setup guide with a step for choosing the right size.

· 0.128–1.005

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. The last builds before 1.0 proved the release path, the widget, and the story on a clean machine, and the first hours after launch sanded down the download, the pricing card, and the emails.

  • 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.
  • 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.
  • 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.
  • Added provider switches, a public Homebrew tap, a support page, and a smoother license support flow.

· 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.

· 0.017–0.116

The dashboard finds its shape — then the widget, themes, and a fair way to pay

Three days turned an early experiment into the JP you recognize: the dashboard and settings faces with the split-flap money readout, a fixed-width dashboard that keeps every number honest, a glanceable widget and themes to make it yours, and a license foundation built the way we would want it as customers — a generous Free Mode, an honest trial, and clear alerts.

  • 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.
  • 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.
  • 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.
  • 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.

· 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.