cctally 1.105.0 → 1.107.0

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.
Files changed (32) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/bin/_cctally_cache.py +553 -44
  3. package/bin/_cctally_dashboard.py +64 -262
  4. package/bin/_cctally_dashboard_conversation.py +38 -0
  5. package/bin/_cctally_dashboard_envelope.py +6 -4
  6. package/bin/_cctally_db.py +140 -5
  7. package/bin/_cctally_doctor.py +76 -0
  8. package/bin/_cctally_record.py +11 -2
  9. package/bin/_cctally_reporting.py +1 -0
  10. package/bin/_cctally_share.py +42 -11
  11. package/bin/_cctally_tui.py +9 -39
  12. package/bin/_cctally_weekrefs.py +49 -14
  13. package/bin/_lib_aggregators.py +7 -2
  14. package/bin/_lib_cache_report.py +5 -2
  15. package/bin/_lib_doctor.py +189 -0
  16. package/bin/_lib_ingest_frontier.py +46 -0
  17. package/bin/_lib_pricing.py +44 -0
  18. package/bin/_lib_quota_model.py +26 -10
  19. package/bin/_lib_render.py +15 -8
  20. package/bin/_lib_snapshot_cache.py +5 -185
  21. package/bin/_lib_subscription_weeks.py +90 -6
  22. package/bin/_lib_view_models.py +64 -5
  23. package/dashboard/static/assets/{ConversationsView-DA4j7Yso.js → ConversationsView-BHbw2W1l.js} +1 -1
  24. package/dashboard/static/assets/{DoctorModal-D4PbVnbE.js → DoctorModal-DcyMPwvn.js} +1 -1
  25. package/dashboard/static/assets/{ModalRoot-D4oSPxPp.js → ModalRoot-BYV-99Rq.js} +1 -1
  26. package/dashboard/static/assets/{ProjectsDrillPanel-DkPlB9JH.js → ProjectsDrillPanel-ecN8oCwv.js} +1 -1
  27. package/dashboard/static/assets/{SourceDetailModal-BE7FONsS.js → SourceDetailModal-CUwdD7_v.js} +1 -1
  28. package/dashboard/static/assets/{UpdateModal-BJuI8glf.js → UpdateModal-CKlFE0ER.js} +1 -1
  29. package/dashboard/static/assets/{index-w_bINkJ8.js → index-D8svRv_9.js} +3 -3
  30. package/dashboard/static/assets/{outlineNavigation-zDVm6Hdd.js → outlineNavigation-CVse0Hj9.js} +1 -1
  31. package/dashboard/static/dashboard.html +1 -1
  32. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,58 @@ based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.107.0] - 2026-09-04
9
+
10
+ ### Changed
11
+ - The same-window weekly credit model introduced in 1.106.0 is reverted. A week is anchored to its billing cycle again, and a recorded credit no longer rewrites the week in place or withholds the `$/1%` figure.
12
+ - Upgrading from 1.106.0 rebuilds the disposable stats index once. On a large store that took about a minute here, and commands report that a rebuild is running until it finishes.
13
+ - `claude-fable-5-1` and `claude-mythos-5-1` each count as their own model family in the weekly quota model, instead of being pooled with the model they follow. Your quota calibration refits once on the next `cctally quota` run.
14
+ - `cctally doctor` separates the one refused-pricing-write state that restarting cctally cannot clear — a recorded pricing date it cannot read — from the ordinary one, and names the step that does clear it.
15
+ - A shared `cctally weekly` artifact labels each row by the date its cycle began, matching the terminal table and the dashboard. On a week Anthropic reset early, that label and the artifact's stated period both move forward.
16
+ - The dashboard's Projects panel counts a credited week as the two billing cycles it is, so its week grid covers fewer calendar days for the same week count.
17
+ - The `cctally weekly` and `cctally report` artifacts, the dashboard's Weekly panel footer and the Weekly modal title all count billing cycles rather than weeks, because a credited week supplies two rows. `Avg %/wk` is now `Avg %/cycle`.
18
+
19
+ ### Fixed
20
+ - `cctally weekly` renders a week credited in place as two rows, one per billing cycle, matching `cctally report`. The cycle before the credit had no row at all, and its spend was missing from the table and from `--json` totals.
21
+ - The dashboard's Weekly panel and the TUI show both cycles of a credited week from one source, so a week's two rows can no longer disagree with the panel total beside them.
22
+ - `cctally project` counts a credited week as the two billing cycles it is, so `--weeks N` spans a shorter calendar range there. `attributedUsedPercent` rises, because the cycle before the credit matches its usage snapshot again.
23
+ - A `cctally dashboard` left running across a pricing update can no longer overwrite corrected conversation cost from the table it started with. It keeps ingesting, your conversations stay listed, and `cctally doctor` says to restart it.
24
+ - `cctally doctor` reports a refused conversation-cost write from any process that hit it, including short-lived ones like the status line and `cctally daily` that never open the conversation store.
25
+ - `cctally cache-sync --rebuild` says it did nothing when it may not rewrite conversation cost, instead of reporting `0 processed` and exiting 0. It names both reasons: a stored pricing table newer than this one, or one that is not a date.
26
+ - `cctally doctor`'s refused-pricing-write warning clears once cctally is running current with the store, including after a refused `cctally cache-sync --rebuild`. That refusal previously left a warning the documented remedy could not clear.
27
+
28
+ ## [1.106.0] - 2026-09-03
29
+
30
+ ### Changed
31
+ - `cctally record-credit --force` replaces the single credit `--at` names instead of clearing the whole week, and refuses when `--at` names none. Recording a second credit in one week needs no `--force`: rerun with a different `--at`.
32
+ - A week Anthropic credited in place renders as one row on its own boundaries, instead of two rows split at the credit. A credit that also moved the week's declared end is marked, but still renders on the windows the API stated.
33
+ - The dashboard's Current Week header and modal name the week's own boundaries on a credited week, instead of the window that starts at the credit.
34
+ - A credited week's row is marked `+` in `cctally report` and `cctally weekly`, so a low `Used %` beside a week's worth of spend has a visible explanation.
35
+ - The dashboard's Weekly panel and its week detail mark a credited week, and the week detail, the Current Week card and its modal name why `$/1%` is withheld instead of the em-dash or `$0.000` you cannot tell from a week with no usage.
36
+ - The dashboard's `$/1%` tables — the Weekly modal's week list, the `$/1% Trend` panel and its modal — say `No climb` for a credited week whose ratio is withheld, instead of the em-dash you cannot tell from a week with no usage.
37
+ - `$/1%` for a credited week is measured from the credit forward, over the climb since it. With no climb yet the figure is withheld and names why. Uncredited weeks are unchanged.
38
+ - The dashboard's Current Week card, the TUI header and a shared Current Week recap report a credited week's whole spend, matching the week they name and the Weekly card beside them. Only `$/1%` is measured from the credit forward.
39
+ - `cctally milestone` history lists a credited week once instead of once per credit, and its detail separates the week's percent ladders with a row naming each credit and the level it dropped from.
40
+
41
+ ### Fixed
42
+ - A conversation open in the viewer updates its own cost as its turns stream, for both Claude and Codex. The live tail advanced the transcript but not the accounting the cost is read from.
43
+ - A Codex conversation's cost no longer reads `$0.00` long after its turns finish. The dashboard now re-scans each provider at least every two minutes, so accounting stays current even when that provider's activity hooks never fire.
44
+ - Upgrading an existing installation to v1.105.0 left every background sync failing and the dashboard stuck on `server sync error`. The two columns that release added now reach an existing database, not only a freshly created one.
45
+ - After Anthropic zeroes your weekly counter, every 7d surface lowers on the next status-line tick. A reading captured in the same hour no longer holds the week at its pre-credit percentage, and no manual command is needed.
46
+ - A goodwill credit to a non-zero level records that level's own percent milestone. Before, the ladder for the new period opened one percent late, and `cctally percent-breakdown` was missing its first row.
47
+ - `cctally percent-breakdown`, the TUI's milestone panel and the milestone writer agree on which credit a percent belongs to, including after a database rebuild and for a credit recorded with `cctally record-credit`.
48
+ - A percent milestone crossed after a credit reports the cost spent since that credit. After a credit recorded with `cctally record-credit` it reported the whole week's spend, which made the first post-credit `$/1%` figure far too high.
49
+ - `cctally record-credit` no longer deletes genuine usage recorded between the moment you assert with `--at` and the moment you run the command.
50
+ - On an install with more than one Claude account, a reset detected for one account no longer records a credit for another, and no longer discards the first account's pending detection.
51
+ - `cctally forecast` measures its rate from the latest credit rather than across it, including one you recorded yourself. `cctally budget` keeps summing the whole week, because the money was spent inside one unchanged window.
52
+ - `cctally doctor`'s post-credit milestone check now sees a week credited with `cctally record-credit`, which it silently skipped before.
53
+ - `cctally record-credit` accepts a second credit inside the same hour as the first. Only a credit at the identical instant is still refused, because that is indistinguishable from running the command twice.
54
+ - An install upgrading from a version that predates the append-only journal now gets the current weekly-credit table shape, instead of reporting the new database version while missing the columns a credit needs.
55
+ - `cctally record-credit --force` no longer leaves a replaced credit's percent milestones behind after a database rebuild, and `cctally record-usage` no longer leaves a removed stale reading's five-hour milestones pointing at it.
56
+ - `cctally` no longer records a second, automatically-shaped credit for a large credit you already recorded with `cctally record-credit`.
57
+ - A stale pre-credit reading replayed by the status line after a credit is removed on the next tick that contradicts it, instead of holding every 7d surface at the old percentage and provoking a second, phantom credit.
58
+ - On an install with more than one Claude account, `cctally record-credit` no longer names another account's credit when refusing, and no longer finishes another account's interrupted credit as though it were yours.
59
+
8
60
  ## [1.105.0] - 2026-09-02
9
61
 
10
62
  ### Added