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
coveragecounters andprovenanceare normalized 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. 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.