Included in this release:
- Improved reset countdown formatting to omit empty time units and show the next meaningful unit instead — for example,
5d27minstead of5d0h; exact-day and exact-hour values stay compact, and positive durations under one minute display as<1m. - Hid Claude's Extra usage meter from the status bar and tooltips when it is fully exhausted, while preserving the existing behavior that also hides the meter when Extra usage has not been used yet. Extra usage remains visible while it has been partially consumed and still has quota remaining; other meters, including Codex, are unaffected.
Included in this release:
- Made startup snappier by publishing quota and reset status before the slower local history discovery and scanning work, so the status bar reflects usage right away; the Codex foreground path no longer waits for the full local session scan before showing its initial status.
- Added progressive history loading in stages — 1 day, 7 days, 30 days, 365 days, then all available history — with the dashboard noting when only part of the history window has loaded so far. The ALL chart still shows the most recent 12 months of the loaded history window to keep it readable.
- Persisted per-file history contributions across VS Code sessions so unchanged history files are reused instead of reparsed on every load; changed and deleted files are still detected and rescanned.
- Made warm refreshes efficient: when valid full history is already cached, a refresh re-checks the whole window in a single pass instead of replaying the full progressive sequence, reducing unnecessary dashboard and status work and avoiding briefly showing a narrow or partial history window during an ordinary refresh.
- Skipped building expensive dashboard models while the Usage dashboard is closed, kept the history-loading progress banner consistent and anchored to the bottom of the History section, and added a one-time notification when a genuine first history load finishes — not on every VS Code startup when a valid persisted cache already exists.
- Made reset countdowns more precise: minutes under an hour, hours and minutes under a day, and days and hours at a day or more (for example
1h55mor2d5h), while partial remaining minutes are still rounded upward. - Hid Claude's disabled or unused Extra usage meter from the status bar and tooltips when it is exactly 0%, while nonzero Extra usage remains visible; other meters, including Codex, are unaffected.
- Stopped treating live Codex tracing and context-window token counters as dated correlated usage history. Codex history buckets without turn or model evidence are now rejected when creating snapshots, reading self archives, importing remote/shared history, and building combined dashboard totals, preventing false large token totals with zero turns and no model attribution, including totals combined across shared machines.
- Ignored already-written malformed snapshot and archive data: the corrected behavior leaves it out of display and stops it from being perpetuated, and existing snapshot and archive files are not automatically rewritten or deleted. No manual data cleanup is required for normal corrected behavior once all participating machines are updated.
Included in this release:
- Fixed Overview and History API-equivalent estimates to keep valid provider contributions when another provider is unavailable, showing a partial estimate instead of marking the whole result Unavailable.
- Removed the separate Today dashboard section and its unused usage-scanner plumbing, consolidating Today into History's 1D range as the single live presentation.
- Replaced repeated source-provenance chips throughout each tab with one Data source summary per tab.
- Moved the Data source summary into a subdued footer at the bottom of the History section; Model Distribution still shows its own provenance note beside the chart whenever it genuinely differs from the tab's summary.
- Added Claude Opus 5 API-equivalent pricing data (
claude-opus-5), using the same standard rates as Claude Opus 4.8.
Included in this release:
- Kept Codex seven-day quota updates independent when five-hour data is unavailable, so missing windows no longer block healthy quota data.
- Tracked quota freshness and cached recovery independently per window: fresh window evidence overrides obsolete stale state, while cached numeric values without trustworthy window timestamps remain stale after restart.
- Kept imported snapshot freshness tied to each snapshot's generation time and added conditional Quota issues rows for missing or stale windows while preserving the aligned At a glance layout.
- Replaced the synthetic 100% fallback for unavailable windows with an empty bar and
—, omitted those windows from the compact status bar, retained—in tooltips, and kept status presentation free of persistent warning decoration.
Included in this release:
- Fixed Claude and Codex Model Distribution cards collapsing models beyond the top 5 into an "Other" bucket. All models used in the selected range are now shown individually.
Included in this release:
- Added API-equivalent pricing estimates for GPT-5.6 Sol, Terra, and Luna, including explicit cache-write rates.
- Added effective-date-aware pricing resolution so scheduled rate changes, including Claude Sonnet 5's transition from introductory to standard pricing, use the correct rates for each date.
- Hardened model pricing matching so dated model suffixes continue to resolve while prefix collisions such as
gpt-5.6-solardo not resolve asgpt-5.6-sol. - Fixed Claude and Codex provider-tab Model Distribution cards so selected ranges use range-specific model attribution instead of all-history data.
- Renamed the user-facing snapshot compatibility command from “upgrade” wording to validation wording while preserving its existing command ID; the command remains read-only.
- Clarified
promptFuel.sources: a non-empty configuration replaces defaults, an empty object uses defaults, and providers omitted from a non-empty set are disabled unless explicitly included.
Compatibility warning: snapshot files written by this version are not readable by older PromptFuel versions.
Included in this release:
- Snapshot writers now include a
metersarray on each provider entry (generic per-window usage meters beyond the fixed five-hour/seven-day windows). Snapshot files containingmeterswill fail to parse on PromptFuel versions that predate this release. - Machines that share a snapshot folder (
promptFuel.snapshot.path) should update to this version together, or older readers on that folder will report snapshot validation errors for newer machines' files until they update. - Fixed Codex token totals double-counting cached input.
cached_input_tokensis a subset ofinput_tokens, not additional tokens on top of it, but the day-bucket scanner, snapshot writer, and dashboard current-turn breakdown were all folding the cached amount into cache-creation while still counting the full raw input, inflating displayed totals and cost estimates for every Codex session. Cached tokens are now mapped to cache-read and subtracted from input consistently across the live, snapshot, and 365-day history paths. - Fixed a false "stale" indicator that could appear right after a fresh authenticated refresh. A failed refresh now only falls back to the cached quota as stale when that cached data is actually older than the stale threshold, instead of flagging any post-failure fallback as stale regardless of age.
- Added Claude Sonnet 5 introductory API pricing ($2 input / $10 output per MTok) to the model pricing estimates, used for Usage dashboard cost estimates.
Adds a range-aware Weekday distribution chart to the usage history dashboard.
Included in this release:
- Added a Weekday distribution chart to the history panel for each tab (Overview, Claude, Codex). The chart shows total token activity grouped by weekday for the currently selected range: 1D, 1W, 1M, 1Y, or ALL.
- Weekday bars stack by model/provider using the same color palette and tooltip system as the Token trend chart. Hovering a bar shows the weekday, range, total tokens, share percentage, message count, active days, and top model breakdown.
- Added
promptFuel.weekStartsOnsetting (enum:sunday,monday,saturday; defaultsunday). Changing this rotates the display order of weekday bars only; all totals and percentages are unaffected. - Reordered the history panel so selected-range summary cards appear immediately after Token trend and before the Model distribution and Weekday distribution charts, improving the flow from time trend to totals to composition.
Improves usage chart tooltip readability.
Included in this release:
- Changed chart tooltip headers to show the date range as the primary header with the source/provenance text stacked underneath as a smaller subtitle, so long ranges such as
YYYY-MM-DD to YYYY-MM-DDremain readable. - Kept existing usage details in the tooltip, including total tokens, messages/turns, provider breakdowns, and top model rows.
- Added tooltip smoke coverage for full 1M and 1Y range labels, stacked header styling, and provider-tab source text.
- Fixed Usage dashboard model colors so token trend stacks, Model Distribution donut segments, legend rows, and tooltip payloads resolve colors by provider + model identity instead of each surface's local sort order.
- Replaced native Usage source/detail title tooltips with the dashboard's custom dark tooltip shell so provenance chips and related notes position above the target and stay clamped inside the webview.
Fixes self-archive history being omitted from the dashboard history charts.
Included in this release:
- Restored local machine archive history to the dashboard's provider history lane. When
promptFuel.snapshot.pathpoints at a shared snapshot folder andpromptFuel.snapshot.machineLabelmatches archived monthly files for the current machine, PromptFuel now supplements local Claude/Codex history from those archives without requiring a visible self remote source such asworkstation/claude. - Preserved selected remote snapshot behavior for other machines, such as
laptop/codex, while filtering self snapshot IDs out of visible remote/status-bar surfaces. - Added regression coverage for self-archive fill, same-day dedupe, local-history precedence, empty marker buckets, selected remote sources, disabled remote sources, and 1Y weekly chart bins.
Fixes the usage dashboard refreshing about once per second when idle.
Included in this release:
- Fixed the usage dashboard and status bar refreshing in a continuous ~1s loop regardless of activity. The state-directory file watcher matched
*.json, which also caughtauthenticated-quota-cache.json— a file the extension rewrites on every refresh. That self-write retriggered the watcher, which scheduled another refresh, which rewrote the cache again, spinning indefinitely. The watcher now targets the external bridge state files explicitly (claude.json,codex.json,codex-completed-turns.json) and no longer reacts to the extension's own cache writes. Periodic refresh (promptFuel.refreshIntervalMinutes, default 5) and live updates from real provider/session file changes are unaffected.
Improves history refresh performance, hardens quota source tracking, expands CI validation, and adds README privacy disclosure.
Included in this release:
- Improved dashboard/history refresh performance by replacing repeated large Claude/Codex JSONL rescans with incremental per-file history aggregation.
- Changed Codex correlated history scanning to stream session files line-by-line instead of loading entire files into memory.
- Hardened quota source handling by carrying explicit
sourceKindmetadata instead of relying on display-label substring inference. - Expanded CI compile validation to run the full smoke suite through
smoke:ci. - Added README disclosure for the Claude/Codex credential files PromptFuel reads, the provider usage endpoints contacted, sanitized quota-cache behavior, and the unofficial nature of those endpoints.
- Added incremental history cache tests for cold cache, warm cache, changed files, deleted files, day rollover, out-of-range records, and Codex variants.
- Added quota sourceKind regression tests to ensure display-label wording changes do not alter merge behavior.
Adds Claude Fable 5 to PromptFuel's API-equivalent pricing estimates.
Included in this release:
- Added first-party Anthropic
claude-fable-5pricing at $10 input / $50 output per MTok, with $12.50 5-minute cache write, $20 1-hour cache write, and $1 cache hit / refresh per MTok. - Added
anthropic/claude-fable-5as an OpenRouter-style pricing alias that maps to the same Claude Fable 5 rates.
Getting package.json / package-lock.json correctly aligned.
Fixes Codex 5h quota showing 0% remaining after the first message in a fresh window.
Included in this release:
- Fixed a misidentification of Codex's
used_percentfield as a 0–1 fraction. The Codex API returnsused_percentas a 0–100 value, but the parser was applying a fraction-conversion heuristic (× 100) to any value ≤ 1. Sending a single message into a fresh 5h window produces aused_percentnear1(≈1% used), which the heuristic inflated to 100% used → 0% remaining. The fix clampsused_percentandusedPercentagedirectly to [0, 100] without scaling; theutilizationfield (a genuine 0–1 fraction) continues to be scaled. Applied to both the live authenticated-quota path and the local Codex session-log scanner.
Fixes a false-critical quota display when the server's reset time has already passed and a live refresh fails.
Included in this release:
- Fixed expired cached quota windows showing as critical / 0% remaining after a live refresh failure. When the provider's reset boundary is in the past, the stale usage value is no longer meaningful — the window is now treated as fully reset (0% used, 100% remaining) until a fresh value arrives from the server. The cached source label and incident indicator (e.g. network error) are preserved so the fallback state is still visible.
- Local heuristic sources (local session, status line, hook) with expired windows continue to be marked unavailable rather than reset, since they carry no authoritative reset boundary from the provider.
PromptFuel is ready for its public 1.0.0 release with a unified source configuration model, cleaner snapshot import behavior, CSV-backed model pricing estimates, and a more polished dashboard/status-bar surface.
Included in this release:
- Added
promptFuel.sourcesas the canonical configuration for local providers and imported snapshot sources, includinglabel,shortLabel,enabled, andstatusBarcontrols. - Added top-level
promptFuel.refreshIntervalMinutesfor periodic local scanning and authenticated quota refresh. - Restored
promptFuel.statusBarDensityfor choosingstandardorcompactstatus bar display. - Removed older scattered provider, authenticated-quota, snapshot-source, status-bar-source, and public threshold settings from the public configuration surface.
- Kept snapshot writer/reader settings separate as
promptFuel.snapshot.enabled,promptFuel.snapshot.machineLabel, andpromptFuel.snapshot.path. - Updated source semantics so omitted local providers do not appear as unavailable in the dashboard or status bar.
- Improved imported snapshot source labels, including compact status-bar short labels and full labels in dashboard/tooltip views.
- Removed the unsupported
blockedstatus-bar label while preserving raw 7d/5h remaining values. - Simplified the status-bar tooltip and set the dashboard webview tab icon to the PromptFuel icon.
- Moved model pricing estimates to
data/model-pricing-estimates.csv, loaded at extension startup and cached in memory. - Updated the model distribution table with Provider, Model, Tokens, Share, Est. API Cost, and Rate / 1M columns, including right-aligned numeric fields and tighter model/provider spacing.
- Reduced hardcoded model pricing to fallback estimate behavior and documented the
codex-auto-reviewalias mapping. - Updated validation so
.\tools\dev-validate-install.ps1runs unit tests as part of the dev package/install pass. - Decoupled smoke coverage from brittle UI text where practical while preserving behavior checks for source filtering, snapshots, dashboard rendering, status text, and pricing.
Breaking/config changes from 0.9.1:
- Use
promptFuel.sourcesinstead of the removed provider/snapshot/status-bar source settings. - Use top-level
promptFuel.refreshIntervalMinutesinstead of removed authenticated-quota refresh interval settings. - Use
promptFuel.statusBarDensityto choose standard or compact status bar display. - Public quota threshold settings were removed; PromptFuel uses its built-in 6-level remaining-quota scale.
- API-equivalent cost estimates are approximate and based on PromptFuel's configured model-rate table. They are not actual billing records.
PromptFuel simplifies its dashboard rendering model by removing the Merged/Separate layout toggle, unifying the aggregate card path, and adding consistent contributor breakdowns across all tabs.
Included in this release:
- Removed the Merged / Separate dashboard layout toggle.
- Kept the existing Overview, Claude, and Codex tabs while simplifying the dashboard rendering model.
- Combined Overview Today cards into one aggregate provider-level card set.
- Unified the dashboard aggregate rendering path below At-a-glance.
- Added consistent contributor breakdowns:
- Overview breaks down by provider: Claude / Codex.
- Claude and Codex tabs break down by source: Local / remote alias.
- Aligned API-equivalent footer breakdowns with the metric cards.
- Preserved honest API-equivalent unavailable behavior: no fake partial dollar breakdowns.
- Improved At-a-glance quota rows with stable aligned columns.
- Aligned dashboard quota bar colors with the same threshold scale used by status bar indicators.
- Removed dead dashboard model-distribution render/test path.
- Retargeted dashboard smoke coverage to the live render path.
PromptFuel hardens its snapshot schema, surfaces remote Today activity counts, sharpens the quota display scale, and refactors the extension internals into focused modules.
Included in this release:
- Snapshot schema simplified to V1 as the sole supported baseline; the private V2–V4 upgrade chain is removed. Existing snapshot files can be migrated to V1 with the new
npm run maintenance:normalize-snapshot-schemascript (creates.bakbackups; supports dry-run). - Remote Today dashboard cards now show assistant-message and turn activity counts when the snapshot provides them, replacing the "Activity count not available from snapshot data" placeholder.
- Merged/Overview Today section suppresses empty provider groups when another provider has real local or remote data.
- Separate-view remote Today cards now populate correctly when a provider has no local today data but a remote snapshot does.
- Quota threshold display expanded to a 6-level scale: purple (91–100%), blue (71–90%), green (51–70%), yellow (31–50%), orange (11–30%), red (0–10%).
- Dashboard placeholder copy updated to neutral loading wording.
extension.tsrefactored into focused modules:statusBar.ts(status bar helpers),watchers.ts(file watchers and debounce timers), andrefreshController.ts(refresh orchestration and history-scan cache). Runtime behavior is unchanged.- Dashboard webview styles and scripts moved to media assets; inline injection removed.
- Token count formatting unified across status bar and dashboard (locale-independent output).
- Model usage contribution mapping centralized across Claude and Codex paths.
- CI workflow now gates on unit tests and dashboard smoke before packaging.
- Dead code, unreferenced imports, and unused variables removed.
Scope notes:
- PromptFuel continues to display aggregate usage only.
- PromptFuel does not display prompts, responses, transcripts, raw JSONL, local paths, usernames, secrets, tokens, or raw provider payloads.
- Snapshot imports and exports remain aggregate-only, with safe source labels permitted only after sanitization.
- Live quota remains independent from the selected dashboard usage source.
- Live authenticated quota refresh stays opt-in and makes no live calls when disabled.
PromptFuel rebuilds its usage engine and dashboard around a faster aggregation pipeline, combined per-metric cards, model-stacked history, configurable alert thresholds, and a reorganized cross-machine snapshot schema.
Included in this release:
- Usage aggregation rebuilt around day-bucket scanning for Claude and Codex, with per-model totals, provider pricing, and API-equivalent cost estimates.
- Dashboard at-a-glance redesigned as one compact row per source on a shared grid, showing 7d and 5h bars, reset time, and a current/snapshot/stale badge across local and remote lanes.
- Today and Overview merged into combined metric cards (Tokens, Input/Output, Cache, API-equivalent) that sum Claude and Codex with a per-provider breakdown line.
- History charts now use model-stacked bars across 1D, 1W, 1M, 1Y, and ALL ranges, with inline model-distribution sections per provider.
promptFuel.statusBarDensitysetting added (standard/compact) to control status bar countdown detail; countdown display simplified to a single highest unit (days, hours, or minutes).promptFuel.lowRemainingPercent,promptFuel.warnRemainingPercent, andpromptFuel.criticalRemainingPercentsettings added for configurable low, warning, and critical remaining-quota icons.promptFuel.authenticatedQuota.refreshIntervalSecondsrenamed topromptFuel.authenticatedQuota.refreshIntervalMinutes(default 5, minimum 1).- Snapshot settings reorganized under the
promptFuel.snapshot.*namespace: a singlepromptFuel.snapshot.pathreplaces the separate import and export path settings, alongsidepromptFuel.snapshot.enabledandpromptFuel.snapshot.machineLabelfor the local snapshot writer. - Remote snapshot lanes are now configured through
promptFuel.snapshot.remoteSources,promptFuel.snapshot.statusBarSources, andpromptFuel.snapshot.remoteMachineLabelsfor dashboard cards, status bar entries, and display aliases. - Snapshot files upgraded to schema V4 (flattened machine label and writer version, source labels, always-written daily history buckets), with older schema 2 and 3 files upgraded automatically on read.
PromptFuel: Upgrade Snapshot Files to Current Schemacommand added for migrating older snapshot files in place.- Dashboard webview content security policy tightened: inline script execution replaced with a per-request nonce.
- Display defaults hardcoded (countdown display, combined status bar layout); the
promptFuel.configureClaudeHookscommand and unused separate-layout settings removed. - Local install tooling hardened:
install.ps1gains isolated-profile options and explicit exit-code checks, anddev-validate-install.ps1verifies the packaged entrypoint and runs the aggregate smoke suite. - Smoke and unit coverage reorganized into focused suites for chart binning, tooltips, dashboards, model breakdowns, remote history merge, pricing, and snapshot read/write.
Scope notes:
- PromptFuel continues to display aggregate usage only.
- PromptFuel does not display prompts, responses, transcripts, raw JSONL, local paths, usernames, secrets, tokens, or raw provider payloads.
- Snapshot imports and exports remain aggregate-only, with safe source labels permitted only after sanitization.
- Live quota remains independent from the selected dashboard usage source.
- Live authenticated quota refresh stays opt-in and makes no live calls when disabled.
PromptFuel now adds configurable cross-machine snapshot imports/exports, model-level usage breakdowns, imported quota visibility, and a more range-driven dashboard experience.
Included in this release:
PromptFuel: Export Usage Snapshotcommand added for writing aggregate-only snapshot files from local usage history.promptFuel.snapshotImportPathsetting added for choosing a custom aggregate snapshot import folder.promptFuel.snapshotExportPathsetting added for choosing a custom aggregate snapshot export folder.promptFuel.localMachineLabelsetting added for stable exported machine labels and local-import deduplication.promptFuel.snapshotImportLabelssetting added for allowlisting imported machine/source labels.- Snapshot import support expanded for compatible schema 2 snapshots, including archive files, daily history buckets, model breakdowns, safe machine/source labels, and imported quota windows.
- Snapshot import deduplication now skips snapshots from the local machine label and respects the configured import allowlist.
- Snapshot source labels are sanitized, preserved, combined, and surfaced in dashboard and tooltip views when safe.
- Imported snapshot quota windows can now appear in the status bar, tooltip, and dashboard alongside live quota state.
- Dashboard usage source defaults to Combined, with Local only and Snapshots only modes still available.
- Dashboard history now uses range controls for 1W, 1M, 1Y, and ALL views, driving history bars, summary totals, usage distribution, and model distribution together.
- Dashboard charts now use model-stacked history bars, improved empty-bin handling, larger donut visuals, cleaner center labels, and clearer provider labels.
- Provider usage tabs now appear only when the selected source has data for that provider.
- Model usage aggregation added for Claude, Codex, imported snapshots, local-history windows, dashboard rows, and tooltip summaries.
- Claude local history parsing now tracks per-model aggregates and daily history buckets while ignoring incomplete malformed tail lines safely.
- Codex local history parsing now uses completed-turn deltas, turn/model context, timestamps, per-model aggregates, and daily history buckets.
- JSONL parsing now trims boundary NUL characters and shares line-break tail handling helpers.
- Live quota status bar and tooltip formatting polished with quota indicators, reset countdown alignment, snapshot quota rows, model summaries, and clearer parse-error wording.
- Snapshot validation hardened against forbidden content, unexpected fields, unsafe labels, unsupported schemas, unknown providers, and excessive imported file counts.
- Manifest validation expanded for the new command, settings, configured snapshot paths, package exclusions, and copy that avoids unimplemented API-estimate claims.
- README and contribution notes updated for combined dashboard usage, snapshot imports/exports, cross-machine labels, live quota defaults, and current privacy boundaries.
Scope notes:
- PromptFuel continues to display aggregate usage only.
- PromptFuel does not display prompts, responses, transcripts, raw JSONL, local paths, usernames, secrets, tokens, raw provider responses, or raw provider payloads.
- Snapshot imports and exports remain aggregate-only, with safe source labels permitted only after sanitization.
- Live quota remains independent from the selected dashboard usage source.
promptFuel.snapshotImportLabelscan restrict imported snapshots by machine/source label, and local-machine snapshots are skipped to avoid double-counting.- Live quota can still be disabled with
promptFuel.liveQuotaEnabled: false.
PromptFuel now centers live quota remaining values, reset countdowns, provider-isolated fallback states, and aggregate-only imported history as the release-ready experience.
Included in this release:
- Live quota visibility added for Claude and Codex in the status bar, tooltip, and dashboard.
- Live quota displays now emphasize remaining quota instead of used quota.
- Reset countdown labels added alongside live quota remaining values when provider reset times are available.
- Last-known-good quota caching added so prior quota data can remain visible as cached or stale when a provider is temporarily unavailable.
- Provider isolation added so one unavailable provider does not hide quota data from providers that are still working.
- Dashboard provider tabs added for Overview, Claude, and Codex.
- Dashboard local-history windows added for Today, Last 5h, Last 7d, and All local history.
- Dashboard source modes added for Local only, Snapshots only, and Combined usage views, with live quota kept independent from the selected history source.
- Aggregate-only snapshot imports added for external Claude and Codex usage totals.
PromptFuel: Open Snapshot Imports Foldercommand added for discoverable snapshot import placement.- Snapshot validation added for known providers and sanitized source labels.
- Tooltip and dashboard copy updated to distinguish live quota, cached/stale quota, unavailable quota, local history, and imported snapshots.
- Local history is now presented as secondary to live quota in status, tooltip, and dashboard copy.
promptFuel.displayModesetting removed; PromptFuel now shows reset countdowns when reset timing is available.- Manifest validation updated to reject
promptFuel.displayModeif it is accidentally reintroduced. - Package exclusions tightened so generated VSIX artifacts and local test output are not included in release packages.
- README and package description text updated for default-on live quota behavior and provider-auth expectations.
Scope notes:
- PromptFuel continues to display aggregate usage only.
- PromptFuel does not display prompts, responses, transcripts, raw JSONL, local paths, usernames, machine names, secrets, tokens, or raw provider responses.
- Imported snapshots remain aggregate-only and sanitized before being used in the dashboard.
- Live quota can be disabled with
promptFuel.liveQuotaEnabled: false.
Live quota visibility is now PromptFuel's primary product path. The extension attempts live quota reads automatically, shows safe loading/unavailable/stale states, and keeps local history clearly secondary.
Included in this release:
promptFuel.liveQuotaEnabledsetting added and now defaults totruein the manifest and runtime defaults.- Live quota status types, freshness labels, quota window helpers, and provider reader plumbing added.
- Authenticated quota adapter added for attempting provider quota reads from existing provider auth state.
- Refresh flow now runs live quota readers when enabled and preserves explicit opt-out.
- Status bar now prioritizes live quota remaining percentages and reset countdown labels when available.
- Status bar now shows safe live quota loading, unavailable, and disabled states instead of silently falling back to local history as the primary experience.
- Tooltip copy now separates live quota from local history, shows remaining quota only, and avoids local-history-only wording by default.
- Tooltip copy now reports snapshot import state instead of using stale fixed snapshot wording.
- Dashboard now includes live quota visibility, including loading, unavailable, cached/stale, remaining percentage, reset countdown, and disabled states.
- Dashboard now includes Overview, Claude, and Codex tabs.
- Dashboard local-history windows now include Today, Last 5h, Last 7d, and All local history.
- Dashboard source modes now include Local only, Snapshots only, and Combined, with live quota kept independent from the selected usage-history source.
- Imported snapshot support added for aggregate-only PromptFuel JSON snapshots.
PromptFuel: Open Snapshot Imports Foldercommand added for discoverable snapshot import placement.- Live quota UX copy polished for unavailable/auth-missing cases and sanitized errors.
- Manifest and package validation updated, including a check that
promptFuel.liveQuotaEnableddefaults totrue. .vscodeignoreupdated for package contents.- README and contributor docs updated for live quota behavior, snapshot imports, source modes, privacy boundaries, and current validation workflows.
- Smoke coverage expanded for live quota status formatting, explicit opt-out, unavailable/error/stale states, remaining percentages, reset countdown labels, dashboard tabs, local-history windows, source modes, snapshot imports, CSP nonce checks, provider window parsing, and local history not masking live quota states.
Scope notes:
- PromptFuel still does not provide its own provider auth UI.
- Live quota can remain unavailable when provider quota data, existing provider auth, or provider endpoints are not available.
- Local history and imported snapshots remain aggregate-only and do not expose prompts, responses, transcripts, raw JSONL, file paths, usernames, machine names, secrets, or tokens.
- Dashboard charts, notifications, additional providers, and Marketplace publish automation remain post-MVP.
Dashboard with local usage history overview and per-provider cards. Status bar shows aggregate token counts with tooltip. Auto-refresh scheduler polls at configurable interval.
Included in this release:
src/panel/dashboardPanel.ts— webview panel host for the dashboardsrc/panel/dashboardModel.ts— dashboard state model (local history snapshots, provider cards)src/panel/dashboardHtml.ts— dashboard HTML with CSP nonce, style CSP, message listener- Dashboard refresh button wired to re-query local data
src/providers/claudeLocal.ts— safe local Claude session parsing (aggregate usage metadata only)src/providers/codexLocal.ts— safe local Codex session parsing (aggregate usage metadata only)src/providers/claudeUsageParser.ts— Claude usage log parsersrc/providers/codexUsageParser.ts— Codex usage log parsersrc/providers/readProviders.ts— provider reader registrysrc/core/providerReader.ts— abstract provider reader interfacesrc/core/usageAggregate.ts— aggregate usage types and merge logicsrc/core/statusModel.ts— status bar model with aggregate reader datasrc/core/statusTooltip.ts— status bar tooltip generationsrc/core/refreshScheduler.ts— auto-refresh scheduler with config reactiveness and dispose lifecyclesrc/core/formatQuota.ts— updated for aggregate statessrc/core/quotaTypes.ts— extended for aggregate usagesrc/extension.ts— dashboard command, status bar wiring, refresh command, auto-refresh lifecyclesrc/config.ts— config loader extended for refresh intervalsrc/core/configDefaults.ts— defaults forrefreshIntervalSecondspackage.json—promptFuel.refreshIntervalSecondssettingscripts/smoke-providers.cjs— smoke tests for provider reader and usage parsingscripts/smoke-core.cjs— extended smoke tests for dashboard and scheduler.vscodeignore— updated for webview assetsassets/icon.png— updated extension icon
Scope notes:
- Dashboard shows local history only. Cloud snapshots, authenticated provider data, and quota remaining are not yet included.
- Aggregate counts only. No prompts, responses, transcripts, raw JSONL, file paths, usernames, or machine names are displayed or stored.
Core model/config foundation. Provider usage import is not yet implemented.
Included in this release:
src/core/providers.ts— provider IDs (claude,codex), labels,isKnownProviderguardsrc/core/quotaTypes.ts— quota window IDs (5h,7d), labels,ProviderQuotaStatetypesrc/core/configDefaults.ts— pure config defaults (no VS Code dependency; smokeable)src/core/formatQuota.ts— status bar text forno-data,disabled,unknownstatessrc/config.ts— VS Code config loader underpromptFuel.*src/dataFolder.ts— data folder path helper wrappingcontext.globalStorageUrisrc/extension.ts— status bar item wired with placeholder no-data status; refresh command updates bar; open data folder uses real extension storage URIscripts/smoke-core.cjs— pure-logic smoke tests (no VS Code dependency) covering provider validation, quota window labels, status text formatting, and config defaultspackage.json— addedpromptFuel.refreshIntervalSecondssetting; addedsmoke:corescript
Initial skeleton. Marketplace identity reserved; extension is unpublished pending provider import implementation.
Included in this release:
- Extension scaffolding and TypeScript compilation pipeline
- Three registered commands (registered, placeholder output):
promptFuel.openDashboard,promptFuel.refresh,promptFuel.openDataFolder - Initial
promptFuel.enabledProviderssetting - Marketplace metadata: icon, categories, gallery banner, keywords, repository/bugs/homepage links
- Manifest validation script (
npm run validate:manifest) - CI workflow: compile, lint, validate manifest, package VSIX
SUPPORT.mdandSECURITY.mdincluded in VSIX
Provider usage import (Claude, Codex) is not yet implemented.