Repository navigation
v0.9.0
Changelog
v0.9.0
- Mark old/failed Codex readings consistently with Claude and hide menu-title
percentages after their reset time passes. - Add usage reset countdowns and last-updated labels to Compact mode, preserving
missing timing, failed readings and passed-reset states. - Add opt-in, silent local alerts for low overall capacity and Codex resets
expiring within 24 hours. Deduplicate warnings across refreshes and restarts;
ignore old, failed and cached data. - Add native launch at login and notification settings, accessible from the
dropdown gear or Command-comma. Both features are off by default.
v0.8.0
- Add a saved Compact / Detailed switch to the dropdown opened from the menu bar.
- Compact defaults to a 600-point popover with remaining usage, banked Codex reset
counts and expiration dates; Detailed expands to larger rows, timing and advice. - Both layouts hug their contents without scrolling or blank viewport space.
Preserve missing, blocked, old and expired readings and shared appearance. - Keep the desktop dashboard layout unchanged.
v0.7.3
-
Replace generic menu-bar service symbols with the OpenAI knot and Claude
starburst, rendered as crisp monochrome vector templates. -
Add a fully redacted, digest-pinned secret scan to CI and an installable local
pre-push guard; document the public-history and release-archive audit.
v0.7.2
- Alternate Codex and connected Claude weekly usage in the menu bar every 10
seconds, with a service symbol, name, remaining percentage and reset weekday. - Mark old/failed Claude readings and withhold expired allowances until updated;
hover for exact reset and receipt times. Disconnected Claude leaves Codex visible. - Keep rotation independent of the existing usage refresh schedules.
- Compare Claude reset epochs directly to avoid date round-trip precision errors
at the expiry boundary. The v0.7.1 tag failed release validation and was not published.
v0.7.0
- Add a unified desktop Dashboard with Codex on the left and Claude on the right.
- Keep provider loading, unavailable, expired and last-reported states independent,
with shared Refresh and appearance controls. - Widen the desktop window to keep usage meters and reset expiry dates readable;
retain Claude connection settings and cached Codex snapshots in the sidebar.
v0.6.1
- Show server-reported Fable weekly usage beside Claude's five-hour and overall
weekly limits, using the existing Desktop request and Keychain connection. - Keep Fable reset times independent; show missing/unreported values explicitly
and never infer an included allowance or paid credit balance from Pro status. - Keep the menu compact by placing Claude Details beside the receipt timestamp.
- Add Fable decoding, invalid/duplicate/expired window, privacy, report-compatibility,
and three-meter/four-reset layout coverage.
v0.6.0
- Add optional Claude Desktop usage polling using the existing desktop login;
no CLI or browser extension is required. Five-hour and weekly limits include
desktop and web activity on the same subscription. - Explain Keychain access in Connect, keep credentials and Desktop reports in
memory, reject redirects, validate cookie domain hashes, and pause polling on
rate limits. Preserve terminal status-line setup as an alternative source. - Clear prior values when Desktop login changes; retain receipt times on network
failures. Disconnect stops checks without changing Claude's login. - Add synthetic cookie, request, response, and connection lifecycle tests. A live
read-only request on 2026-09-06 returned both usage windows successfully.
0.5.1 - 2026-09-06
- Keeps the initial terminal status-line report in Waiting for Claude Code
until usage fields arrive. Malformed input still produces an unavailable state. - Adds a derived waiting flag to distinguish startup from a failed report,
with backward-compatible reading of existing reports. - Updates the release and source-build documentation for this fork.
0.5.0 - 2026-09-06
- Adds optional Claude Pro/Max five-hour and weekly remaining usage to the menu
and desktop sidebar through terminal Claude Code's local status-line feed. - Adds explicit connection/disconnection, existing-command forwarding, and
automatic discovery of standard CLI and Claude Desktop's native engine. - Labels observations with receipt times, preserves partial/unavailable states,
and stops showing expired windows as current capacity. - Uses a wider connected menu with provider columns and paired Codex reset cards.
The existing Codex menu-bar title and reset advice remain Codex-specific. - Packages a universal, credential-free helper with private atomic reports,
container tests, and command-forwarding/secret checks in CI. - Requires terminal Claude Code activity; desktop-only Code sessions do not
produce this feed. No Claude credentials, browser cookies, or account mutations
are involved.
0.4.4 - 2026-07-12
- Restores the weekly reset weekday to the compact menu bar title, for example
57% | Sunday. - Keeps weekly as the only current menu-title metric while Codex is not
returning the former 5-hour window. - Uses
% | weekwhen weekly timing is missing and--% | weekwhen the
weekly percentage is unavailable, without falling back to reset counts. - Documents the dormant 5-hour display design and restoration checklist in
MENU_BAR_DISPLAY_PLAN.mdfor when Codex returns that window.
0.4.3 - 2026-07-12
- Makes the macOS menu bar title show only the weekly remaining percentage.
- Removes the
Week/5hmenu-title selector and its persisted preference;
weekly is now the single, consistent status metric. - Removes reset counts, reset dates, weekdays, and times from the compact menu
bar title; those details remain available inside the dropdown. - Shows
--%when Codex returns no trustworthy weekly percentage. - Adds regression tests for the reported case where three banked resets and a
missing 5-hour window incorrectly produced3 resetsin the title.
0.4.2 - 2026-07-11
- Removes the v0.4.1 screen-sized menu viewport that created large empty bands
above and below the real content. - Lets the menu dropdown use its intrinsic SwiftUI height with no forced frame,
ScrollView, orViewThatFitssizing layer. - Reorders menu sections to
Display settings,Current limits, then
Banked Resets Expiration, with the usage nudge after the primary sections. - Renames the menu's reset section to
Banked Resets Expiration. - Removes cached snapshots and stale-snapshot cleanup from the menu dropdown;
those account-management controls remain in the full desktop app. - Adds a regression test for the required menu section order and label.
0.4.1 - 2026-07-11
- Fixes the v0.4.0 menu-bar regression that could reopen the dropdown partway
down and hide current limits or reset-credit expiry dates. - Removes the fixed 620-point dynamic-content cap. The dropdown now uses the
active screen's available height and shows its full natural content whenever
that screen can fit it. - Keeps scrolling only as a constrained-screen fallback, gives that fallback a
deterministic viewport height, and resets it to the top whenever it appears
or live data refreshes. - Adds regression tests for tall-screen expansion and short-screen fallback
sizing.
0.4.0 - 2026-07-11
- Makes missing data explicit: loading, partial, signed-out, failed, and cached
states no longer masquerade as zero resets or fresh live limits. - Keeps the active account's live data separate from cached snapshots during
auth changes, endpoint failures, and token rotation, preventing mixed-account
snapshots and stale timestamps. - Uses the server reset count when available, shows missing-expiry rows when
Codex reports credits without usable expiry details, and shows only available
reset credits in the active detail view. - Improves reset advice for blocked limits, low 5-hour capacity, unknown reset
counts, and missing timing data; cached snapshots use neutral last-seen copy. - Bounds hostile numeric/date/count inputs and validates semantically empty
successful JSON responses before they can replace valid state. - Rejects empty auth tokens, unsafe redirects, and untrusted final response URLs;
keeps the dedicated network session free of cookies and URL caches. - Expands unit coverage to 105 tests across account races, snapshot redaction,
stale cleanup, hostile input, nudge decisions, endpoint trust, and UI tokens. - Makes release CI build universal arm64/x86_64 binaries and adds package scans
for sensitive strings and tag/version drift.
0.3.8 - 2026-07-02
- Makes the desktop window roughly 10% larger by default so the usage cards,
reset expiry rows, nudge, and footer controls fit without the bottom content
being clipped on first open. - Enforces the roomier minimum size on restored macOS windows, so users with an
older saved too-short window frame get expanded instead of seeing the old
clipped layout again. - Adds a design-system regression test for the desktop window size floor.
0.3.7 - 2026-07-02
- Tightens the desktop layout so the active usage cards, all reset expiry rows,
nudge, and footer controls fit in the default-height window without hiding
the main content behind scrolling. - Fixes desktop reset expiry row overlap by separating label/detail text from
the date column and removing the redundant status pill that could squeeze
into an empty oval. - Makes usage cards, reset rows, header artwork, and the nudge card denser while
preserving the sharedCodexPalette/CodexStyledesign system. - Rebalances the menu-bar dropdown after real menu QA with a wider popover,
roomier row heights, and better reset/cached-snapshot breathing room.
0.3.6 - 2026-07-02
- Refreshes the menu dropdown and desktop window around the uploaded 2026 design
system: warmer light surfaces, dark gray dark mode surfaces, shared row/card
styling, and a roomier readable menu scale. - Adds Light, Dark, and Auto appearance modes that apply to both SwiftUI content
and the AppKit menu-bar app appearance. - Adds green, amber, and red usage-capacity bars with tested thresholds:
60% or higher is green, 25-59% is amber, and below 25% is red; blocked usage
windows still override with danger styling. - Moves live usage windows ahead of reset expiry and nudge content in the
desktop detail view so current capacity is the first thing to scan. - Adds compact usage meters to the menu dropdown rows while preserving the
active menu-bar title selector, reset expiry rows, and cached snapshot rows. - Adds design-system tests for appearance-mode mapping and usage-tone
thresholds.
0.3.5 - 2026-06-30
- Treats Codex
allowed: false/limit_reachedusage responses as a first-class
blocked state in the nudge logic, menu dropdown, desktop usage cards, and
status icon instead of falling back to ordinary capacity advice. - Stops guessing 5-hour versus weekly windows from endpoint order when
limit_window_secondsis missing, and falls back to generic labeled usage
rows until Codex returns a trustworthy duration. - Hardens cached snapshot date math against implausible reset epochs and marks
snapshots with no usage or reset signals as stale. - Keeps missing-auth refreshes from stamping a fresh
last checkedtime or
leaving the UI selected on a cached snapshot that cannot be refreshed live. - Removes the raw account-id suffix fallback from account labels when Codex does
not provide an email or name.
0.3.4 - 2026-06-30
- Restores compact per-snapshot rows in the menu dropdown so cached snapshots
select their detail view before opening the desktop window. - Keeps cached-account detail copy honest by labeling cached usage as last-seen
data, not live limits. - Shows up to four reset expiry rows in the menu and includes the next hidden
expiry cue when additional reset credits are available. - Shows explicit unavailable-expiry rows when Codex reports more available reset
credits than it returns usable expiry records for. - Keeps
Clear stalevisible whenever stale cached snapshots exist. - Shows elapsed reset windows as
nowinstead of rounding expired cached reset
timers up to1m. - Hardens refresh reliability for same-account token rotation, swapped usage
window ordering, flexible numeric endpoint fields, exact trusted Codex endpoint
checks, sanitized live error messages, and reset-credit partial failures that
should not carry old expiry rows forward as fresh data. - Moves routine UI surfaces back onto light shared design tokens and documents
theCodexTone/ reusable component layer for future visual changes. - Tightens the GitHub release workflow so tagged releases run tests, package the
app, verify the bundle version against the tag, check the code signature, and
validate the versioned zip before upload. - Strips release binaries before signing so packaged apps do not retain local
build/source paths in symbol metadata. - Cleans old versioned release zips before packaging so release uploads cannot
accidentally include stale artifacts. - Documents versioned release zip assets in the install instructions.
- Verifies the packaged app with local UI QA against the menu bar title,
dropdown metric toggle, cached snapshot selection, and stale cleanup surfaces.
0.3.3 - 2026-06-26
- Adds an explicit
Clear staleaction in the desktop sidebar, desktop footer,
and menu dropdown so stale cached snapshots can be removed without clearing
every cached snapshot. - Renames the selected stale snapshot action to
Forget staleso removing a
single stale record is easier to discover. - Adds a regression test for stale-snapshot cleanup persistence.
0.3.2 - 2026-06-25
- Fixes a menu-dropdown regression where clicking cached accounts could create
additional main windows instead of focusing the existing window. - Replaces the fragile desktop
NavigationSplitViewshell with a fixed two-pane
sidebar/detail layout so cached-snapshot navigation cannot hide the sidebar. - Renames the former
Other accountssections toCached snapshotsso local
last-seen records are not confused with linked/live Codex accounts. - Adds a small main-window presenter so menu actions reuse the registered main
window and only create a new one if no main window exists.
0.3.1 - 2026-06-25
- Fixes a
v0.3.0regression where the active account could be rejected with
Codex returned a different account than the active loginwhen the usage
endpoint reported an account identifier in a different namespace than the
local Codex Desktop auth context. - Uses the Codex Desktop auth context as the active snapshot key when available,
and falls back to the usage response account ID only when auth has no stable
account ID. - Adds a regression test that keeps active usage meters visible when the usage
endpoint account ID differs from the auth context account ID.
0.3.0 - 2026-06-25
- Adds local multi-account snapshots: the active Codex account refreshes live,
while previously seen accounts remain available as cached last-seen records. - Adds a desktop sidebar with
Active accountandOther accountssections,
plus cached-account detail views, stale labels,Forget, andClear cached
controls. - Keeps the menu bar title active-account-only, and adds compact cached-account
rows in the dropdown that open the desktop window. - Refactors refreshes around one loaded auth context so usage and reset-credit
calls cannot mix account identities during a login switch. - Stores only derived snapshot fields under Application Support, with salted
hashed account keys and no bearer tokens, raw auth JSON, raw endpoint JSON,
full account IDs, user IDs, or reset credit IDs. - Adds tests for redaction, account-switch races, stale snapshots, missing auth,
partial endpoint failures, duplicate labels across accounts, and deletion.
0.2.6 - 2026-06-25
- Aligns the menu bar popover and desktop window around the same app identity,
accent color, rounded type scale, and panel surface treatment. - Adds the checked-in header artwork to the menu popover header so both
surfaces immediately read as Codex Reset Watcher. - Moves neutral emphasis away from system blue and back to the shared green
operational accent used by reset, nudge, and usage-meter states. - Keeps usage-meter tracks visible after normalizing menu rows and desktop cards
to the same panel surface.
0.2.5 - 2026-06-24
- Adds a shared SwiftUI design-system layer for Codex Reset Watcher spacing,
radii, typography, row sizing, and panel styling. - Updates the menu bar title to show the selected limit's next reset cue, for
example57% | Sundayfor weekly or80% | 9:50 PMfor 5-hour. - Reworks the menu dropdown around stable icon, content, metric, and date
columns so rows no longer crowd or bleed into the popover edge. - Splits reset-credit expiry dates into a deliberate weekday/date line and
time line in the dropdown. - Aligns the main desktop window with the same panel, row, color, and type
tokens used by the menu bar dropdown. - Reduces color drift by routing status colors through shared palette roles and
removing the multi-color fallback artwork gradient. - Adds
DESIGN_SYSTEM.mdso future visual updates have concrete guardrails.
0.2.4 - 2026-06-24
- Labels reset-credit expiry rows in the menu bar dropdown, for example
Reset 1 expires: Fri, Jul 17 at 7:38 PM. - Adds reset timing labels under the 5-hour and weekly limit rows in the
dropdown. - Adds weekdays to reset and expiry timestamps and improves the dropdown's
contrast, row spacing, and type scale. - Shows the active Codex account label in the menu bar dropdown and main app.
- Documents the conservative
v0.3.0multi-account snapshot plan.
0.2.3 - 2026-06-24
- Adds a menu-bar display toggle in the dropdown so each user can choose
whether the menu bar follows the weekly or 5-hour usage window. - Persists the selected display mode locally with macOS app storage.
0.2.2 - 2026-06-24
- Fixes the visible macOS menu bar label so the status icon renders beside the
weekly usage text. - Keeps the
0.2.1weekly percentage behavior, but corrects the actual
menu-bar presentation that could collapse to icon-only.
0.2.1 - 2026-06-24
- Updates the menu bar title to show weekly usage remaining.
- Keeps the status icon in the menu bar so the weekly meter is glanceable without opening the popover.
0.2.0 - 2026-06-19
- Adds 5-hour and weekly Codex usage windows.
- Adds a reset-use nudge based on remaining usage, reset timing, reset-credit expiry, and banked reset credits.
- Adds expiry urgency states for reset rows, including this week, expires soon, ends today, and expired.
- Adds Codex-adjacent header artwork and a more visual main window.
- Adds a brighter high-contrast layout and generated reset-button app icon.
- Adds unit tests for reset-expiry urgency and reset-use nudge thresholds.
- Keeps usage and reset-credit endpoint failures independent so partial data can still render.
0.1.0
- Initial public release.
- Shows Codex reset credits and expiry dates.
- Adds menu-bar status and manual refresh.
- Packages as a simple macOS app bundle.