Skip to content

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 16 Mar 17:57
· 1095 commits to main since this release

What's Changed

  • fix: update solution file to AIUsageTracker projects by @rygel in #175
  • feat(ui): add update channel selector to settings by @rygel in #176
  • chore(release): update main version to v2.2.26 by @rygel in #178
  • fix: improve UI startup polling and provider data flow by @rygel in #179
  • fix: WPF async improvements and cleanup by @rygel in #181
  • Beta 5 changes: logging, startup guard, data export, budget, comparison by @rygel in #182
  • Prepare 2.2.27-beta.6 changelog by @rygel in #183
  • fix(providers): enforce Provider Detail Contract compliance by @rygel in #185
  • refactor: create ProviderBase class to eliminate code duplication by @rygel in #186
  • refactor: centralize provider registration via DI in Monitor by @rygel in #187
  • refactor: eliminate silent catches with proper logging by @rygel in #188
  • feat: add provider-specific exception types by @rygel in #189
  • feat: extract magic string literals to constants (P3 Task 1) by @rygel in #190
  • refactor: complete architecture improvements by @rygel in #191
  • fix: add dual progress bar support for Kimi provider by @rygel in #192
  • release: v2.2.28-beta.10 by @rygel in #193
  • feat: unify and simplify provider testing by @rygel in #194
  • feat: expand test coverage and improve integration testing by @rygel in #195
  • fix: dual progress bars for OpenAI and Kimi by @rygel in #196
  • feat: advanced logic testing and structural improvements by @rygel in #197
  • feat: implement dependency injection for WPF UI by @rygel in #198
  • refactor: centralize path management and finalize WPF DI by @rygel in #199
  • refactor: decompose database service and centralize paths by @rygel in #200
  • release: v2.2.28-beta.11 by @rygel in #201
  • release: v2.2.28-beta.13 by @rygel in #203
  • release: v2.2.28-beta.14 by @rygel in #204
  • release: v2.2.28-beta.15 by @rygel in #205
  • release: v2.2.28-beta.16 by @rygel in #207
  • fix: local web tests and architectural model extraction by @rygel in #206
  • fix: local web tests and architectural model extraction by @rygel in #208
  • release: v2.2.28-beta.17 by @rygel in #209
  • refactor(ui): consolidate provider rendering and fix dual pass issue (Rescued) by @rygel in #211
  • feat(ui): enable dual bars for OpenAI, Codex, and Kimi by @rygel in #213
  • chore(release): update version files to v2.2.28-beta.18 by @rygel in #214
  • fix(beta19-prep): beta 18 post-release fixes + code deduplication by @rygel in #215
  • Centralize provider metadata defaults by @rygel in #216
  • Fix release workflow for repository tag rules by @rygel in #217
  • Harden monitor startup metadata coverage by @rygel in #218
  • Remove OpenAI session migration to Codex by @rygel in #219
  • fix: adjust dual-progress and stale provider presentation for Codex/Kimi by @rygel in #220
  • ci: unsuppress additional VSTHRD analyzer rules by @rygel in #224
  • fix: replace string == operators with string.Equals for MA0006 compliance by @rygel in #225
  • Fix MA0011 analyzer warnings by @rygel in #226
  • Fix MA0011 analyzer warnings in CLI, Monitor, and Providers by @rygel in #227
  • Fix MA0011 analyzer warnings in Tests project by @rygel in #228
  • Fix MA0006 analyzer warning in Seeder by @rygel in #229
  • Fix MA0004 analyzer warnings: Add ConfigureAwait(false) to CLI Program.cs by @rygel in #230
  • Fix MA0004 analyzer warnings in Core project (ProviderManager, MonitorService) by @rygel in #231
  • Suppress MA0009 analyzer warnings for regex patterns by @rygel in #233
  • Fix MA0023 analyzer warnings: Add ExplicitCapture to regex patterns by @rygel in #234
  • Unsuppress analyzer rules and harden guardrails by @rygel in #235
  • Refactor: Fix MA0051 warnings in ZaiProvider by @rygel in #236
  • fix(usagemath, seeder): extract helpers to fix MA0051 warnings by @rygel in #239
  • fix(MA0048): split multiple public types into separate files by @rygel in #243
  • fix(MA0009): add regex timeout to prevent DoS vulnerabilities by @rygel in #244
  • fix(MA0002): add IEqualityComparer to dictionary and LINQ operations by @rygel in #245
  • fix(MA0004): add ConfigureAwait(false) to provider async methods by @rygel in #246
  • fix(MA0004): add ConfigureAwait(false) to DeepSeek, Kimi, Zai, and Codex providers by @rygel in #247
  • fix(MA0004): add ConfigureAwait(false) to OpenRouter, GitHubCopilot, OpenCode, Gemini, Antigravity, and ClaudeCode providers by @rygel in #248
  • fix(MA0004): add ConfigureAwait(false) to GitHubAuthService and JsonConfigLoader by @rygel in #249
  • fix(MA0004): add ConfigureAwait(false) to TokenDiscoveryService by @rygel in #250
  • fix(MA0004): add ConfigureAwait(false) to ProviderManager by @rygel in #251
  • Fix MA0002: Add StringComparer to Dictionary and OrderBy by @rygel in #253
  • Fix MA0016: Use collection abstractions in IUsageAnalyticsService by @rygel in #254
  • Fix MA0048: Rename Web page model classes to match file names by @rygel in #255
  • Enhance burn rate forecast with trend detection by @rygel in #256
  • Enable analyzer follow-up rules and clean up suppressions by @rygel in #258
  • Add comprehensive web view rendering and model binding tests by @rygel in #259
  • Enhance analyzer configuration with stricter async and collection abstraction rules by @rygel in #260
  • Enhance OpenCode CLI provider with detailed usage data by @rygel in #257
  • Enable additional analyzer rule severities for async and CA checks by @rygel in #261
  • Analyzer follow-up: enable additional warnings and remove test VSTHRD200 suppression by @rygel in #262
  • Analyzer cleanup follow-up and reliability fix by @rygel in #263
  • Fix settings dialog provider visibility by @rygel in #264
  • Prepare 2.2.28-beta.20 release by @rygel in #266
  • chore: Mechanical cleanup - Batches B and C by @rygel in #265
  • Mechanical cleanup: Fix SA1101, SA1516, MA0004 analyzer warnings by @rygel in #267
  • style: fix SA1516 warnings across solution by @rygel in #268
  • style: solution-wide cleanup of using placement and this. qualification by @rygel in #269
  • style: surgical mechanical cleanup batch E by @rygel in #270
  • style: mechanical cleanup batch F - Headers and Namespaces by @rygel in #271
  • style: consolidated mechanical cleanup by @rygel in #272
  • refactor: remove legacy preferences API and fallback paths by @rygel in #273
  • refactor: modularize monitor endpoints and refresh orchestration by @rygel in #274
  • style: follow-up cleanup batches for UI, monitor, and providers by @rygel in #275
  • style: clean up analyzer warnings in UI and tests by @rygel in #276
  • Architectural Improvements: Provider SDK, Centralized Resilience, and Push-Based Updates by @rygel in #277
  • chore: add staged pre-commit formatting hooks by @rygel in #278
  • Mechanical cleanup part 2: web analyzer noise reduction by @rygel in #279
  • CI: scoped analyzer baseline guardrails by @rygel in #280
  • Release prep: 2.2.28-beta.21 by @rygel in #281
  • Improve web monitor diagnostics coverage by @rygel in #282
  • Phase 2 monitor observability and lifecycle contract cleanup by @rygel in #283
  • Continue monitor contract and health cleanup by @rygel in #284
  • feat: harden monitor health and scheduler telemetry by @rygel in #285
  • chore: continue core cleanup and style normalization by @rygel in #286
  • installer: add balanced compression profile and align publisher URLs by @rygel in #288
  • docs: add auth information flow reference by @rygel in #287
  • chore(release): prepare 2.2.28-beta.23 by @rygel in #289
  • Fix antigravity username display and split Minimax/OpenAI labels by @rygel in #290
  • CI stabilization: deterministic test workflow and shared assembly resolver by @rygel in #291
  • Fix auth discovery: load legacy OpenCode auth paths by @rygel in #292
  • chore(release): prepare 2.2.28-beta.25 by @rygel in #293
  • Fix Gemini OAuth refresh fallback and stabilize monitor test by @rygel in #294
  • Strict catalog cleanup: remove suppression layers and UI special-casing by @rygel in #295
  • Monitor-UI provider capabilities contract and beta 28 release notes by @rygel in #296
  • Fix OpenCode Zen CLI timeout cancellations by @rygel in #297
  • Refactor provider display semantics and prepare beta.30 by @rygel in #298
  • Centralize provider label authority and prep 2.2.28-beta.31 by @rygel in #299
  • Clean up analyzer warnings using dotnet format by @rygel in #300
  • Harden monitor logging and bootstrap .NET runtime install by @rygel in #301
  • Fix OpenAI quota detail semantics by @rygel in #302
  • refactor(ui): WPF MVVM improvements and bug fixes by @rygel in #303
  • Cleanup warnings by @rygel in #304
  • feat(ui): WPF MVVM architecture improvements - Phase 2 by @rygel in #305
  • feat(claude-code): add OAuth usage endpoint for subscription quotas by @rygel in #306
  • chore(release): 2.2.28-beta.32 by @rygel in #307
  • fix(analyzer): Resolve 331 analyzer warnings (62% reduction) by @rygel in #309
  • chore(release): 2.2.28-beta.33 by @rygel in #308
  • chore(release): 2.2.28-beta.34 by @rygel in #310
  • fix(ui): rename WindowKind and fix dual bar matching by @rygel in #311
  • fix(analyzer): fix null reference, ConfigureAwait, and ordering warnings by @rygel in #312
  • fix: semantic naming, explicit state, and plain HttpClient for providers by @rygel in #314
  • fix: plain HttpClient, legacy deserialization, and upstream-first refactor by @rygel in #315
  • Release 2.2.28-beta.35 by @rygel in #317
  • fix: Kimi provider rename and monitor version-mismatch restart by @rygel in #318
  • Release 2.2.28-beta.36 by @rygel in #319
  • fix(claude-code): skip useless API probe for OAuth tokens and retry 429 by @rygel in #320
  • Release 2.2.28-beta.37 by @rygel in #321
  • release: 2.2.28-beta.38 by @rygel in #322
  • fix(ui): show progress bars on Claude Code synthetic child cards by @rygel in #323
  • refactor(slim-ui): eliminate ProviderCapabilityCatalog and simplify call graph by @rygel in #324
  • chore(release): prepare 2.2.28-beta.39 by @rygel in #325
  • refactor(cleanup): consolidate display name resolution and simplify call graph by @rygel in #326
  • refactor(state): add typed ProviderUsageState; replace description-string heuristics by @rygel in #327
  • release: 2.2.28-beta.41 by @rygel in #328
  • release: 2.3.0 by @rygel in #329

Full Changelog: v2.2.25...v2.3.0