Skip to content

Releases: Lucenx9/codexbar-plasma

v0.2.38

Choose a tag to compare

@github-actions github-actions released this 13 Sep 20:21
Immutable release. Only release title and notes can be modified.
083e84f

Added

  • Offer Configure providers when the popup has no provider data, and
    Retry and Settings beside usage errors. The messages point to
    Providers or Diagnostics in widget settings. Retry keeps last-known quotas
    visible and cannot repeat while a usage refresh is running.
  • Refresh stale Usage & Spend history when revisiting the tab and when a
    visible spend view stays open across midnight. The existing hourly cost
    lifecycle still guards in-flight scans and failed-attempt cooldowns, cached
    charts stay visible during refresh, and switching the cost/token metric or
    inspecting a day still starts no scan.
  • Contribution guidelines, a security policy with private vulnerability
    reporting, and issue forms for bug reports and feature requests.

Fixed

  • Eliminate duplicate section separators in the popup detail view when plain
    credit balances are absent but other additional sections are displayed.
  • Ignore malformed configuration checksum replies so they cannot clear cached
    quotas or trigger unnecessary usage refreshes.
  • Reserve initial readout row height in interactive charts so that hovering
    a point for the first time does not cause a vertical layout shift.
  • Guard session refresh activity calculations against missing, null, or
    non-string command sources, avoiding uncaught exceptions during refresh
    scheduling.
  • Keep partial cost refreshes working when a provider error message is malformed,
    retaining its previous costs while healthy providers update.
  • Respect the automatic refresh interval after a failed Sessions scan when
    reopening the popup or revisiting the tab, while allowing immediate manual
    retries and scans after changing the CLI command.
  • Preserve valid Codex quotas and named accounts when optional login-method
    metadata is malformed, and use a valid fallback for the plan label.
  • Keep disabled Overview providers from occupying the three selection slots,
    while preserving their saved selection when other providers are chosen.
  • Provider setup no longer reports a successful save when a CLI error has no
    readable message. Structured error messages cannot interrupt result handling;
    the widget shows a generic failure instead.
  • Keep unavailable days in their calendar positions in the Usage & Spend
    activity heatmap, so missing cost or token values do not shift weekday rows
    or shorten the displayed range.
  • Show cost refresh errors beside retained provider costs, including when the
    details are collapsed, so older values do not hide a failed update.
  • Coalesce cost-setting changes applied together into one scan using the final
    settings, avoiding duplicate scans that immediately replace each other.
  • Keep panel run-out countdowns tied to each forecast's receipt time, so
    selecting a cached account cannot restart an old or expired prediction.
  • Preserve the original measurement age when selecting a cached account whose
    usage timestamp is missing, invalid, or future-dated, so old quotas cannot
    become fresh again or extend their 24-hour retention limit.
  • Keep last-known quotas when a provider error has an empty or malformed message,
    showing a generic error while healthy providers and current status still update.
  • Preserve healthy usage records after a malformed sibling in provider-scoped
    CLI replies, including measured-zero quotas, while keeping all-invalid
    replies as provider errors.
  • Keep settings checkboxes stable in right-to-left layouts under KDE/Breeze
    styles, avoiding repeated width binding loops while the pages settle.
  • Keep the provider filter tabs usable with KDE styles whose tab buttons expose
    no content item, avoiding repeated QML errors when opening Providers settings.
  • Use the pinned KDE CI image’s authenticated package indexes so an outage of
    the archive’s current metadata does not block checks and package builds.
  • Preserve ampersands and angle brackets in provider selection and settings
    checkbox labels when KDE styles process keyboard mnemonics.
  • Preserve quota, pace, and reset notification baselines when a successful CLI
    reply contains obsolete quotas alongside current service status, avoiding
    repeated warnings and missed reset notices when fresh usage returns.
  • Clear completed Sessions snapshots and update metadata when the configured CLI
    command changes, so a failed or timed-out scan cannot display sessions from
    the previous executable.
  • Hide pace and run-out forecasts when an otherwise successful quota snapshot
    is older than the 24-hour retention limit, while preserving its last-known
    measurement and current service status.
  • Keep failed usage replies from borrowing another account's quota when distinct
    account keys share a display label or the account is identified only by its
    organization. Failures without identity still retain the last known quota,
    and the startup cache still restores its own for a provider whose explicit
    account selection its context already verified.
  • Keep the healthy accounts listed in the account picker when another account
    record in the same codexbar reply cannot be read.
  • Preserve newer retained usage and its last-known timestamp when startup cache
    restoration is delayed past a failed refresh.
  • A tiny negative credit balance that rounds to zero now reads as 0 instead
    of the negative-zero string -0.
  • Preserve valid provider usage when the CLI supplies a malformed optional
    status URL, falling back to the provider's bundled status page instead of
    discarding its usage snapshot.
  • Keep the last known provider incident ID across active status replies that omit
    it, including notification priming, so a replacement incident at the same
    severity is still announced without repeating the original incident.
  • Preserve valid provider quotas when the CLI supplies malformed optional
    reset metadata, ignoring the unusable reset value instead of discarding
    the provider snapshot.
  • Preserve valid provider quotas when the CLI supplies a malformed optional
    provider display name, ignoring the unusable name instead of discarding
    the provider snapshot.
  • Align reset countdown / timestamp text with pace metadata along the text
    baseline in provider usage rows.
  • Aggregate per-model cost and token totals by the raw model identity instead
    of the bounded display label, so distinct models that share a truncated or
    whitespace-collapsed label no longer merge into one row.

Full diff

v0.2.37

Choose a tag to compare

@github-actions github-actions released this 11 Sep 00:02
Immutable release. Only release title and notes can be modified.
59cbc89

Added

  • Choose which providers appear in the panel through Panel → Panel
    providers
    . The selection lists the enabled providers, follows the saved
    provider order, and is limited to the four meters the panel can draw; the
    panel text, meters, and tooltip follow it, while the popup keeps showing every
    enabled provider. Leave the selection automatic to show all enabled
    providers, as before. Clearing every checkbox keeps the widget icon without
    provider text or meters. Disabled providers keep their saved selection without
    blocking new choices; only the first four enabled selections appear.
    Automatic checkboxes recognize provider aliases and mixed-case IDs.
    The preview uses enabled provider names after the selection list loads, with
    synthetic measurements for every provider.

Changed

  • Refresh quotas when the popup opens by default, so a widget that was idle,
    suspended, or running without periodic refresh no longer presents an old
    measurement as current. Only quotas older than the refresh interval are
    fetched, and failed attempts keep their cooldown, so reopening the popup does
    not repeat the command. Existing widgets keep their stored choice; new widgets
    and General → Restore all defaults get the new default, and the setting can
    be turned off again in General.

Fixed

  • Keep every enabled Panel → Additional information item readable when
    several providers fill the panel. The panel used to squeeze the provider
    name, usage text, and credit balance into whatever the meter row left over
    and cut the result short, so "Claude 82% used 125cr" arrived as
    "Claude 82% u..." and a complete value became a fragment reading as a
    different one. The panel now surrenders whole items instead, dropping the
    provider name first because the icon beside it already identifies the
    provider, then the credit balance, and keeping the usage text. The full text
    stays in accessible names, and only a single remaining item is ever elided.
    For a provider the widget has no icon for, the panel draws a generic icon that
    names no provider, so there the name outlives the credit balance instead. The
    panel also offers the text every pixel the row actually leaves, instead of a
    flat allowance that hid content while space was free.
  • Report the credit balance in the panel tooltip while panel credits are
    enabled, so a crowded panel that had no room to draw it does not leave a
    pointer user without it. No meter carries the balance, and the tooltip
    previously reported only quotas and incidents.
  • Keep Popup and Notifications settings text and controls in place while the
    page opens. The themed scrollbar gutter stays reserved instead of appearing
    and then disappearing as the content settles, and the Popup overview section
    carries the same width bound as its provider-order sibling while the provider
    list arrives.
  • Keep the stored value in the editable settings fields for the custom refresh
    interval, the update check interval, and both quota thresholds when the typed
    text holds no number, instead of replacing a configured value with an
    unrelated default. Clearing the custom interval field, or committing its
    "No periodic refresh" text, no longer turns a disabled refresh into five
    minutes.
  • Keep accounts that differ only by internal spacing separately selectable and
    pass the unmodified name to --account, instead of collapsing one label onto
    the other and requesting the wrong account.
  • Never show the previous executable's cost data beside the new quotas after
    the command source changes, even when the cost refresh fails.
  • Survive malformed provider status fields and keep the healthy providers of
    the same refresh, settling loading instead of leaving it active.
  • Revalidate carried account keys before use, so a blank or overlong stored
    key falls back to the snapshot identity instead of reaching deduplication,
    selection, or the --account argument.
  • Skip structured account identity fields when choosing the --account
    identity, so a malformed value cannot mask a valid fallback from another
    identity field.
  • Screen the provider id inside the per-provider guard during usage parsing,
    so a failing identity read drops only its own provider instead of aborting
    the whole refresh.
  • Retain failed providers after a partial cost reply only from the same
    command source, so a source change cannot re-tag the previous executable's
    costs with the new source.
  • Show the panel incident badge on the affected provider's own meter icon, so
    reordering providers moves the outage marker with that provider instead of
    leaving a dot beside whichever provider comes first. The badge stays visible
    while a refresh runs. The standalone status dot remains only as a fallback
    for incidents no meter can badge (meters hidden, or the incident provider
    has no meters), and the vertical identity icon carries a badge only for its
    own provider's incident; an incident on another provider keeps the
    standalone fallback when meters are hidden.
  • Place the subscription label directly beside the account email in the
    provider header, instead of letting it drift toward the middle of the popup,
    and let the account elide first on narrow popups.
  • Stop presenting an "all systems operational" service status as the overview
    account line. Providers whose CLI payload carries no account identity (such
    as Claude on verified CLI 0.56.2) now show no substitute identity; an active
    incident still appears, and the detail line no longer repeats the provider's
    own name or source.
  • Recover provider actions when a secret prompt stops responding: the dialog
    closes after a long escape-hatch deadline and the stuck pending state clears,
    instead of leaving the provider disabled until the settings page reopens.
    Late submissions retain the full bounded save window.
  • Complete provider fallback slots when a malformed reply fails late, and
    report account normalization failures as errors for the affected provider.
  • Keep provider configuration polling connected when another widget instance
    has already cached a response for the same command.
  • Keep the provider cost metric picker in sync with the shared cost and token
    history selection after picking an entry.
  • Keep the Panel settings preview visible while scrolling through content,
    quota, order, and visibility options.
  • Avoid repeating the selected provider's icon with custom panel element
    orders when it is the only visible provider meter.
  • Ignore malformed cost breakdown/model rows and keep chart dimensions finite.
  • Clear chart selection and hover state when point data disappears, allowing
    keyboard navigation to recover when data returns.
  • Normalize provider fallback requests before deduplication and preserve scalar
    zero/false CLI text values.
  • Keep theme calculations finite when inputs are unavailable.
  • Avoid tab overflow controls during initialization.
  • Anchor tab tooltips to their hover areas and improve accessibility labels for
    heatmap cells and decorative controls.
  • Animate the panel provider meter hover/press highlight and the Usage & Spend
    heatmap cell hover outline, matching the smooth transitions already used for
    every other interactive surface in the popup. The heatmap outline is a
    separate overlay, so the cell's painted fill never shifts on hover.
  • Confirm hover on session cards, which reveal copy actions on hover but
    previously left the card surface unchanged.
  • Fade the chart readout in and out with the hovered point instead of blinking
    the label and value on every pointer entry and exit.
  • Fade the tab selection indicator with the tab background it sits under,
    instead of blinking the accent bar on every tab change.
  • Hold tooltips back for the standard Plasma hover delay instead of flashing
    them the instant the pointer crosses a tab, a panel status dot, or a copy
    button. The heatmap cell readout and the copied confirmation stay immediate.
  • Grow the panel capsule fill into a new reading, like every meter in the popup
    already does. The settings preview keeps rendering a static frame.
  • Truncate popup section headings and labels that fill the available width, so
    a long translation or a provider-supplied cost title can no longer push the
    row wider than the popup.
  • Narrow the panel tooltip to the hovered provider meter, so hovering one
    panel icon reports only that provider's quotas instead of the whole roster.
    The full list remains when hovering elsewhere.
  • Lay the Usage & Spend activity heatmap out as a complete block instead of a
    small patch of squares stranded beside an empty half of the tab. Its cells
    now stretch into the width a short range leaves unused, the grid is padded so
    a partial final week no longer cuts a week-wide notch out of it, and ranges
    that fill a single week column hide the heatmap, which repeated the chart
    above it one day per row.
  • Reject oversized diagnostics responses with a clear error instead of
    buffering them for display, matching the other CLI surfaces.
  • Allow mouse selection in the diagnostics output and bound the diagnostic
    provider field, matching the provider settings inputs.
  • Recognize provider aliases and mixed-case IDs in the Overview provider
    checkboxes, matching the runtime selection and the panel provider selection,
    so a stored choice stays checked when the roster spells it differently.

Full diff

v0.2.36

Choose a tag to compare

@github-actions github-actions released this 09 Sep 17:18
Immutable release. Only release title and notes can be modified.
d223cc6

Added

  • Last-known quota recovery after failed refreshes and Plasma restarts, with
    explicit freshness labels, a 24-hour retention limit, and a redacted persistent
    cache.
  • A versioned changelog, included in the widget package and used as the source
    for future GitHub release notes.

Changed

  • Panel settings start with appearance and meters. Additional information holds
    provider name, usage text and format, credits, and the monochrome preset.
    Quota, order, conditions, and automatic selection have their own expandable
    section. Closed summaries reflect enabled information and custom choices.
    Standard and Minimal are side by side.
  • Default panel order groups optional text with the selected provider's capsules,
    using one logo. Hidden or unavailable meters retain a separate text identity;
    custom element orders keep their independent positions.
  • Panel meters place a small provider icon beside primary and secondary quota
    capsules, with matching geometry in colored Standard and monochrome Minimal.
    Meters now work in vertical panels. Explicit quota choices still show one
    capsule; visibility conditions accept either displayed quota. Tooltip and
    accessibility descriptions report both quotas and resets.
  • Linux parity work is maintained in TODO.md, with agent review of each stable
    upstream release and updates in the PR that implements a feature.
  • Reorganized installation and troubleshooting instructions, with dedicated
    guides for settings, cost history, and development.
  • Contributor delivery uses pull requests with required check and smoke jobs.
    Agents follow CI through completion after pushes and authorized merges.
  • Pull request titles follow Conventional Commits and are checked automatically.
  • CI cancels superseded PR runs and omits graphical smoke tests for changes
    limited to editorial Markdown. Checks and packaging still run; releases keep
    full graphical coverage.

Fixed

  • Provider details and project costs no longer trigger recursive Qt layout
    warnings when opened or resized. Long values stay within the popup.
  • Panel settings keep text and controls in place while the page opens, including
    when the scrollbar disappears or collapsed sections finish sizing.
  • Restored cached provider quotas are retained across partial early refreshes
    during startup, preventing premature eviction of unrefreshed providers.
  • Primary incident selection, tooltips, and status banners ignore providers with
    unknown or inactive status, preventing stale outages from masking active incidents.
  • Successful responses without measured quotas keep valid credits and details
    even when their supplemental timestamp is older than the quota-cache limit.
    They no longer show a last-known banner or turn into cache-expired errors.
  • Last-known quota handling: unknown service status no longer keeps showing
    the previous outage, extra-lane quotas survive restarts, expired quotas
    keep no measurement instead of undefined state, the restore banner only
    shows when data is actually stale, per-provider resets keep healthy
    providers' disk cache, empty usage results keep CLI error detail, stale
    supplement sections are hidden until revalidated, measurements older than
    24 hours no longer stamp as fresh, future live timestamps use receipt time,
    overview rows keep account/status
    context beside the last-known note, and long update timestamps ellipsize
    on one line.
  • Panel settings no longer query a rebuilding element-order layout's attached
    size hints, avoiding a Qt layout crash when expanding and reordering controls.
  • Panel text falls back to a separate label if meters exhaust the width available
    for grouped text.
  • The settings preview now renders quota capsules from its synthetic data after
    QML converts provider records for delegates.
  • Credit balances that round up to a whole number no longer keep a trailing
    ".0" (99.95 credits read as "100"), and huge magnitudes no longer gain a
    bogus group separator.
  • Token, request, and point counts now use singular and plural forms in usage
    and cost summaries, while large counts keep their compact notation.
  • Corrected quota and plan labels, login actions, and settings wording across
    the five translations. The Brazilian Portuguese panel style is now translated,
    and French and Spanish pace percentages use consistent spacing.
  • Switching the account of the configured provider no longer starts a usage
    command twice in a row, discarding the first run immediately.
  • Provider settings descriptors whose schema version is not exactly the
    supported number stay unsupported instead of being accepted through type
    coercion, and malformed quota-threshold inputs keep their documented
    fallbacks instead of collapsing to a 1% warning for every provider.

Full diff

v0.2.35

Choose a tag to compare

@github-actions github-actions released this 08 Sep 19:38
Immutable release. Only release title and notes can be modified.

What's new

  • Dedicated General, Providers, Panel, Popup, Notifications and Diagnostics settings pages, with a live panel preview. Existing preferences are preserved. #162
  • Optional privacy mode for widget views and new notifications, refresh-on-open for stale usage, and controls for showing pace, credits and provider details in the popup. #162
  • Compact Today and period cost summaries, expandable history, and model details for the selected day. Missing amounts and partial model coverage remain explicit. #160
  • Standard provider icons and usage meters by default on fresh installations, with the existing appearance options preserved. #158
  • Fix an Accounts action that could stay disabled when a reply arrived after CLI settings changed. #161
  • Handle malformed cost, chart and account data more gracefully, preserve zero cache-token days, and retain the panel loading fallback. #156 #157 #159

Install or update

Download codexbar-plasma.plasmoid below, or use the widget's update action. For a manual upgrade:

kpackagetool6 -t Plasma/Applet -u codexbar-plasma.plasmoid

Reload the widget after updating. The codexbar CLI remains a separate dependency. Existing provider accounts and saved widget settings are preserved.

Validated with make check (814 Qt results and 34 Python tests), make package, and all 45 popup smoke scenarios. The downloaded release assets passed SHA-256 and GitHub release-attestation verification. An isolated installation of v0.2.34 successfully upgraded to v0.2.35 through its shipped updater.

Full changelog: v0.2.34...v0.2.35

v0.2.34

Choose a tag to compare

@github-actions github-actions released this 07 Sep 21:34
Immutable release. Only release title and notes can be modified.
78d94fb

What's new

  • Optional Minimal panel style and preset for a quieter panel appearance.
  • Better popup navigation, including visible scroll controls when provider tabs overflow, plus search and filters in provider settings.
  • Refined provider typography, selection contrast and spacing.
  • Clearer settings groups and order. Fresh installs now show percentages used, and routine quota-reset notifications are opt-in. Existing saved preferences are preserved.
  • Updated README with a compact gallery of native Breeze Dark screenshots, a Standard/Minimal panel comparison, and reproducible synthetic data.

Install or update

Download codexbar-plasma.plasmoid below, or use the widget's update action. For a manual upgrade:

kpackagetool6 -t Plasma/Applet -u codexbar-plasma.plasmoid
systemctl --user restart plasma-plasmashell.service

The codexbar CLI remains a separate dependency. Existing provider accounts and widget settings are preserved. Some provider-supplied descriptions still arrive in English from the CLI, including z.ai and OpenRouter details.

Validated with make check, packaging, and all 32 native smoke scenarios.

Full changelog: v0.2.33...v0.2.34

v0.2.33

Choose a tag to compare

@github-actions github-actions released this 07 Sep 11:08
Immutable release. Only release title and notes can be modified.

What's Changed

  • fix: address latent data-handling defects found by bug hunt by @Lucenx9 in #146
  • fix: floor fractional day bounds in cost model aggregation by @Lucenx9 in #147
  • fix: close notification prime gap and order stale account validation by @Lucenx9 in #148
  • fix: keep cost history and models within calendar ranges by @Lucenx9 in #149
  • fix: localize session labels and structured pace forecasts by @Lucenx9 in #150

Full Changelog: v0.2.32...v0.2.33

v0.2.32

Choose a tag to compare

@github-actions github-actions released this 06 Sep 12:34
Immutable release. Only release title and notes can be modified.

CodexBar Plasma 0.2.32 adds Italian, French, German, Spanish, and Brazilian Portuguese translations.

Provider notifications now handle usage errors, service recoveries, and status-setting changes correctly. Monthly quota forecasts retain their pace data, and unavailable Antigravity costs no longer appear as zero dollars.

Popup details stay within their columns. Chart keyboard navigation works with a stationary pointer, and hover-only areas preserve click handling.

What's Changed

  • Complete Plasma CI coverage and test legacy dashboard parsing by @Lucenx9 in #141
  • Add Italian, French, German, and Spanish localization by @Lucenx9 in #143
  • Add Brazilian Portuguese localization by @Lucenx9 in #144
  • fix(qml): use valid bindings for hover-only mouse areas by @Lucenx9 in #142
  • fix: correct provider notifications and usage presentation by @Lucenx9 in #145

Full Changelog: v0.2.31...v0.2.32

v0.2.31

Choose a tag to compare

@github-actions github-actions released this 06 Sep 01:28
Immutable release. Only release title and notes can be modified.

What's Changed

  • fix(providers): scope Fireworks version gate by @Lucenx9 in #136
  • Escape provider names in ordering tooltips by @Lucenx9 in #137
  • Show project costs and tokens in Usage & Spend by @Lucenx9 in #139
  • fix(security): route all tooltips through PlainToolTip by @Lucenx9 in #138
  • Add panel quota selection and conditional visibility by @Lucenx9 in #140

Full Changelog: v0.2.30...v0.2.31

v0.2.30

Choose a tag to compare

@github-actions github-actions released this 04 Sep 23:15
Immutable release. Only release title and notes can be modified.

What's Changed

  • Fix panel auto-selection, Sessions refresh and chart values by @Lucenx9 in #133
  • Polish panel, popup, and Settings layout by @Lucenx9 in #134
  • Add reproducible popup smoke tests by @Lucenx9 in #135

Full Changelog: v0.2.29...v0.2.30

v0.2.29

Choose a tag to compare

@github-actions github-actions released this 04 Sep 19:49
Immutable release. Only release title and notes can be modified.

What's Changed

  • fix: restore update status and hide stale cost details by @Lucenx9 in #131
  • Add provider ordering and icon-only popup tabs by @Lucenx9 in #132

Full Changelog: v0.2.28...v0.2.29