cctally 1.69.2 → 1.69.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,11 @@ based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.69.3] - 2026-07-17
9
+
10
+ ### Fixed
11
+ - Dashboard: cleared the persistent `⚠ sync error` chip (`source-bundle: data_version must be a non-empty string`) that appeared once a provider — typically Codex — stayed degraded or unavailable across two or more consecutive sync ticks. The first failure records an unavailable provider generation; the next tick then tried to retain that already-unavailable generation as a `partial` state with an empty data version, which fails the source-state validator. `degrade_source_state` now stays `unavailable` (carrying the new warning) when there is no coherent prior generation to retain.
12
+
8
13
  ## [1.69.2] - 2026-07-17
9
14
 
10
15
  ### Fixed
@@ -230,6 +230,13 @@ def degrade_source_state(
230
230
  raise ValueError("prior must be a SourceDashboardState")
231
231
  if not isinstance(warning, SourceDashboardWarning):
232
232
  raise ValueError("warning must be a SourceDashboardWarning")
233
+ # There must be a coherent prior generation to retain. An unavailable prior
234
+ # carries no data and an empty ``data_version``; degrading it to ``partial``
235
+ # would build an invalid state (the non-empty-data_version invariant only
236
+ # exempts ``unavailable``) and raise. Stay unavailable, carrying the new
237
+ # warning — this is the 2nd+ consecutive failing sync of a degraded provider.
238
+ if prior.availability == "unavailable" or not prior.data_version:
239
+ return unavailable_source_state(prior.source, warning)
233
240
  return SourceDashboardState(
234
241
  source=prior.source,
235
242
  availability="partial",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cctally",
3
- "version": "1.69.2",
3
+ "version": "1.69.3",
4
4
  "description": "Claude Code usage tracker and local dashboard for Pro/Max subscription limits - weekly cost-per-percent trend, quota forecasts, threshold alerts. ccusage-compatible.",
5
5
  "homepage": "https://github.com/omrikais/cctally",
6
6
  "repository": {