TODO.md
TODO
Parity baseline: docs/research/2026-08-20-macos-parity-0.54.0.md, pinned to
upstream v0.54.0 and probed against the installed CLI 0.54.0.
- 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.54.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 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:
usage.creditsreportsremaining,updatedAt, andeventsonly. With no allowance or plan total, the Credits section prints the balance without a meter; the meter it replaced scaled against a hardcoded 1000 credits and so filled for reasons the payload never described. Restore a meter only when the CLI reports the matching allowance. - 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.54.0 emits
coveragecounters andprovenance, plus bounded project breakdown inputs. The widget does not consume them yet. Normalize them before adding richer spend presentation so partial, estimated, unmetered, or unpriced totals do not look exact. A future 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. 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.54.0, 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.