TODO.md
TODO
Parity baseline: docs/research/2026-08-24-macos-parity-0.55.0.md, pinned to
upstream v0.55.0 and probed with the verified official Linux CLI 0.55.0 release
asset. On 2026-08-27 the host CLI was upgraded to 0.55.1 from the
checksum-verified official release asset; isolated probes showed the
config providers, usage, and cost JSON contracts structurally unchanged,
so no new parity report is needed for v0.55.1 (its provider fixes flow through
the existing generic paths).
- Provider-specific editable settings: the Providers page renders generic
fields/actions from
docs/cli-provider-settings-descriptor.mdwithout provider-specific QML branches. Declared coverage includes source mode, API key, cookie source/manual cookie, enterprise/base URL, workspace/project ID, region, AWS profile/auth mode, and boolean extras. That descriptor is still a proposal: on CLI 0.55.0config providers --descriptorsreturnsUnknown option --descriptorsand the plain payload carries nodescriptorkey, so the whole path is dormant and the page degrades to enable/disable,set-api-keyand docs/dashboard/login links. Keep that fallback working. Missing controls once the CLI ships the contract include token-account add/edit/remove, provider-specific auth mode nuances, organization/team editors, provider metric pickers, and quota thresholds. Do not duplicate macOS Swift provider settings logic in QML; extendcodexbar configfirst. IBM Bob can use the existing single-key command, but its token-account editing still needs generic CLI field/actions. Fireworks 0.54.0 and later auto-discovers its account slug from the API key, so a follow-up can enable the generic single-key setup path without a separate slug editor. - Provider onboarding parity: descriptor-backed dashboard actions are supported, and legacy login/account/dashboard/docs links remain as fallbacks. Add safer setup actions for providers that need browser-cookie import, local app files, OAuth/device-flow handoff, CLI-auth setup, or token-account workflows when the CLI can describe and execute those actions in JSON.
- Dashboard extras: the widget now surfaces the generic CodexBar 0.48.1
usage.detailsrows and bounded bar/line charts, with legacy KPI/summary payloads retained as a compatibility fallback. Add richer sections only when the CLI extends that stable presentation contract. Missing examples include billing summaries, usage breakdowns, credits history, and richer provider-specific model/request/token sections. - Credits allowance: the generic
usage.creditsbalance usesremaining,updatedAt, andeventsand still has no generic allowance or plan total, so it stays a line without a meter. The optional Codex-onlycredits.codexCreditLimitrecord carries a real used amount, limit, remaining amount, percentage, and reset metadata; v0.54.1 made it reliable for Business and Enterprise accounts, but Plasma currently ignores it. Add a bounded monthly-limit projection and meter for that nested record only. Never apply its denominator to a plain credit balance. - Cost history plots either cost or tokens through
costHistoryMetric; the selector drives the range chart, the heatmap, and the per-provider bars from onecostpayload, so it must never add a CLI call.historyCoverageIsEstablisheddrives the "still collecting" note; a missing flag means established. - Cost truthfulness: CLI 0.55.0 retains the
coveragecounters andprovenancenormalized behind a bounded trust boundary. Provider and global cost amounts are qualified as estimated, partial, or approximate, and share one semantic notice decision; older payloads remain quiet. Project breakdown inputs remain future work: a Projects view must discard the emitted localpathand retain only bounded display fields. - Quota warning thresholds are configurable through
quotaWarningPercentandquotaCriticalPercent, bounded bycontents/ui/QuotaThresholds.js, and drive both the notification level and the usage-bar markers. Per-provider thresholds stay blocked on the CLI descriptor. Do not reintroduce literal percentages at a call site;limitResetArmThresholdis a separate reset-detection knob and is deliberately not tied to the warning step. Changing a threshold resets the threshold-derived notification memo but keeps the provider status baseline: a settings change is not a status transition. That decision lives incontents/ui/NotificationMemo.jsand is covered bytests/tst_notification_memo.qml; keep it there rather than reinlining it inmain.qml. - Local Agent Sessions are consumed through
codexbar sessions --json-v2in a bounded, refreshable global tab. Only safe display fields are normalized;cwd,transcriptPath, IDs, and PIDs are neither retained nor rendered. Remote/SSH host focus stays macOS-only. - Existing detail and cost charts now support hover, click selection, and
keyboard inspection. The global Usage & Spend tab adds 7/30/90-day cost
ranges and a bounded activity heatmap. CodexBar 0.55.0 Kiro overage data,
z.ai BigModel CN balance, and Cursor Grok Bot usage already fit the generic
detail, provider-cost, and extra-window paths, so they need only a CLI upgrade.
The macOS Cursor/Antigravity local spend readers are not exposed by Linux
cost, which still accepts only Claude and Codex. Grok period-only responses no longer become a false 0%, but an explicit unknown-usage row with reset data needs a generic CLI window representation. Credits history, plan-utilization history, and session-equivalent forecasts still need stable CLI history payloads; do not infer history from one snapshot. - Panel element composition now has a persisted, sanitized order for identity,
status, usage text, and provider meters. Visibility remains controlled by the
existing Plasma-native display settings. The
runOutdisplay mode shows the predicted duration only while the CLI pace forecast reports exhaustion before the reset; keep it tied topaceWarningActiveinstead of the percent used. The macOS weekly reserve token remains open. CLI 0.54.0 also adds conditional menu-bar rules and direct primary/secondary/tertiary lane tokens; these are implementable from existing normalized data only through a Plasma-native rule model and configuration UI, not by copying the Swift persistence model. - Translations: gettext template extraction is in place. Add real
.pocatalogs, compiled catalog packaging, and translator contribution docs when localization work starts. - Predictive pace warnings are opt-in and consume the CLI
paceforecast; they silently prime the current state and notify only on a new projected exhaustion. Consider reset-imminent notifications only if they remain quiet, configurable, and tied to clear state transitions. - Provider drift checks: the Plasma fallback catalog covers all 69 provider IDs
released in CodexBar v0.49.1 and re-verified on 0.55.0 and again on the
0.55.1 host CLI (same 69, none added), while retaining fork-only compatibility
assets.
When upstream releases providers, sync provider keys, CLI aliases, titles,
colors, docs/dashboard/login URLs, icon assets, and
scripts/test_provider_icons.sh. - Plasma release channel: the GitHub Release updater is in place. If the widget is published through KDE Store, prefer KDE Store/KNewStuff/Discover for that channel instead of inventing a parallel updater.
- Platform-specific non-goals: do not port macOS-only surfaces directly (WidgetKit, Sparkle, Keychain/Full Disk Access UI). Add only Plasma/Linux equivalents that provide real value and keep provider/auth logic in the CLI.