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.md without 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.0 config providers --descriptors returns Unknown option --descriptors and the plain payload carries no descriptor key, so the whole path is dormant and the page degrades to enable/disable, set-api-key and 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; extend codexbar config first. 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.details rows 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.credits reports remaining, updatedAt, and events only. 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 one cost payload, so it must never add a CLI call. historyCoverageIsEstablished drives the "still collecting" note; a missing flag means established.
  • Cost truthfulness: CLI 0.54.0 coverage counters and provenance are 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 local path and retain only bounded display fields.
  • Quota warning thresholds are configurable through quotaWarningPercent and quotaCriticalPercent, bounded by contents/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; limitResetArmThreshold is 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 in contents/ui/NotificationMemo.js and is covered by tests/tst_notification_memo.qml; keep it there rather than reinlining it in main.qml.
  • Local Agent Sessions are consumed through codexbar sessions --json-v2 in 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 runOut display mode shows the predicted duration only while the CLI pace forecast reports exhaustion before the reset; keep it tied to paceWarningActive instead 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 .po catalogs, compiled catalog packaging, and translator contribution docs when localization work starts.
  • Predictive pace warnings are opt-in and consume the CLI pace forecast; 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.