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 +5 -0
- package/bin/_lib_dashboard_sources.py +7 -0
- package/package.json +1 -1
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.
|
|
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": {
|