docs/research/2026-09-11-macos-parity-0.58.0.md

Linux parity review at CodexBar 0.58.0

Checked 2026-09-11 against Plasma commit 59cbc89b168c9cc665589a6856102275be929e9e. The macOS reference is official v0.58.0, commit 88fa2f45fa1e7e04c3c96234ddf973ca947208db, published 2026-09-10 at 04:06:38 UTC.

This is a release-delta review for useful Linux behavior. It covers published stable releases after the 0.57.0 review through 0.58.0, with targeted source inspection and scoped CLI probes. It does not repeat the full 0.56.2 contract audit. Current open parity work belongs in TODO.md.

Release coverage

The official release list contained only 0.58.0 after 0.57.0 on the review date.

ReleaseLinux-relevant observations
0.58.0macOS daily spend ledger, chart hover details, visible-row selection, percent-window and reset-layout pickers, and account reset labels. No Linux CLI payload contract changed; cost scanner fixes can change reported values within the existing schema.

No Linux CLI payload changes

The 0.57.0…0.58.0 comparison modifies no file under Sources/CodexBarCLI/. The emitted JSON contracts for usage, cost, sessions, and config are therefore unchanged from the 0.56.2 audit and scoped 0.57.0 probes. Core-side changes stay CLI-owned: Codex local-cost subagent boundary and cache revision fixes, OpenCodex full-history aggregation, and UsageFormatter token rounding (1000K to 1M) that affects text rendering, not JSON numbers.

ProviderConfig gains hiddenUsageItemIDs for macOS visible-row preferences, and ProviderConfig+FetchIdentity strips display-only fields from cache identity. The isolated probe below shows the Linux config providers record still carries only provider, displayName, enabled, and defaultEnabled; the new field is not emitted, so it is not a Linux contract.

0.58.0 features against existing Plasma behavior

  • Daily spend ledger (#2635). macOS SpendDashboardModel computes DailySummary rows from existing snapshot optionals (totalTokens, requestCount, totalCost), a display calendar, and historyCoverageIsEstablished. Plasma already renders interactive daily cost/token charts with explicit day selection. Its cost normalization in ProviderNormalizer.js keeps only cost and token metrics and drops a request-only day, and no nonempty Linux output was probed for per-day request counts, so the request-count ledger stays inside the existing richer-usage blocker in TODO. The unknown-versus-zero distinction remains presentation over existing data; the unavailable-cost blocker in TODO still needs its established-empty CLI case verified.
  • Chart hover details (#3413). Plasma charts are already interactive with per-day detail on inspection. No new contract or work.
  • Visible usage rows (#3196, #3182). macOS hides menu-card rows per provider through hiddenUsageItemIDs. Plasma chooses visible panel rows natively with panel visibility rules, ordering, the settings preview, and Overview, but popup provider cards expose only fixed section toggles, so an individual usage row cannot be hidden. The new provider-config field is not emitted to Linux consumers, and the macOS preference is a local display choice, so per-row popup visibility is implementable Plasma-locally; it is tracked in TODO.
  • Percent-window picker (#3124). MenuBarPercentWindowPreference rewrites the app-local menu-bar layout. Plasma exposes explicit per-provider quota lane selection (panelQuotaLane) covering the same session/weekly choice. Existing native behavior.
  • Reset countdown/clock layout tokens (#3481). macOS adds window-selectable reset tokens to menu-bar layouts. The Plasma panel already has a reset-time element with countdown and absolute display (resetTimesShowAbsolute) beside explicit quota lanes. Existing native behavior.
  • Account rows with reset times (#3477). macOS compact account menu rows gain reset labels. Plasma popup quota rows already show reset times per window, while the account list is a selector by design. No useful gap.

Scoped official Linux probes

The official CodexBarCLI-v0.58.0-linux-x86_64.tar.gz asset passed the release's SHA-256 check: a327f8428fc8d2fd8707f2deab4e082a209f90707b7cfa91e1a2a6d4420dcb10. Assets and checksum are on the official release.

Probes ran inside a network-isolated Bubblewrap process with temporary home, configuration, cache, data, Claude, and Codex roots, a cleared environment, and no host credentials reachable. No installed CLI was replaced. Running the bare binary without its adjacent bundle prints only CodexBar; executed from the extracted asset it reports CodexBar 0.58.0, which the probes used.

ProbeResult
config providers --format json --json-onlyExit 0; 69 records, keys provider, displayName, enabled, defaultEnabled. No descriptor, hiddenUsageItemIDs, or accentColor emitted.
config providers --descriptors --format json --json-onlyExit 1, Unknown option --descriptors. The descriptor remains unavailable.
config --helpLists existing config commands, with no generic set or action; set-api-key only.
cost --provider cursor --format json --json-onlyExit 1; supported list remains Antigravity, Claude, Codex.
cost --provider claude --format json --json-onlyExit 0; empty history with historyCoverageIsEstablished: true and measured zeros. A fresh scan of empty roots is genuinely zero; it does not retest the unavailable-cost established-empty case.
cost --provider antigravity --format json --json-onlyExit 0; empty daily/projects, no cost totals, matching the 0.57.0 fresh-history shape.
sessions --json-v2Exit 0, empty array in the isolated account.

No authenticated usage, credit validity, account switching, provider balance units, or nonempty cost history was exercised. Those limitations remain explicit in TODO; this is not a replacement for the full 0.56.2 audit.

Carried-forward blockers

Every blocker in TODO remains open. No 0.58.0 change adds a provider settings descriptor, generic config action, Cursor cost support, service-tier fields, cost availability metadata beyond historyCoverageIsEstablished, structured localization identifiers, or a display-currency contract. The scoped 0.58.0 probes re-verify the descriptor rejection, the absent generic config commands, and the Cursor cost rejection at this version. The 0.56.2 audit remains the contract baseline for unprobed authenticated cases.