cctally 1.3.0 → 1.4.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,42 @@ based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.4.0] - 2026-05-09
9
+
10
+ ### Added
11
+ - Shareable reports — all 8 reporting subcommands (`report`, `daily`,
12
+ `monthly`, `weekly`, `forecast`, `project`, `five-hour-blocks`, `session`)
13
+ now accept `--format md|html|svg` to emit shareable artifacts to a
14
+ filename like `cctally-<cmd>-<utcdate>.<ext>`. Flags: `--theme light|dark`,
15
+ `--no-branding`, `--reveal-projects` (project labels are anonymized to
16
+ `project-N` by default), `--output <path>` / `--output -` for stdout,
17
+ `--copy` (markdown only), `--open` (html/svg only). `session --format`
18
+ also accepts `--top-n N` to cap the chart's project breakdown.
19
+ See `docs/commands/share.md` and the per-command "Shareable output"
20
+ sections.
21
+
22
+ ### Fixed
23
+ - Dashboard 5-hour row now shows the post-reset delta (`⚡ Δ +Xpp this
24
+ block`) when a 5h block spans a weekly reset, instead of suppressing
25
+ the number behind a `⚡ reset` line. The cross-reset flag now detects
26
+ natural weekly boundaries from `weekly_usage_snapshots.week_start_at`
27
+ in addition to Anthropic-shifted mid-week resets, and all interval
28
+ comparisons normalize through `unixepoch()` so the flag flips
29
+ correctly on non-UTC hosts (the prior lex-compare silently failed
30
+ for `+03:00` and other non-zero offsets, leaving the panel showing
31
+ a misleading `Δ −94pp this block`).
32
+ - `record-usage`: self-heal `percent_milestones` and `five_hour_blocks` rows
33
+ that were silently dropped when an earlier invocation was killed between
34
+ snapshot insert and milestone insert (e.g. Claude Code self-update kill
35
+ window). On a dedup'd tick, re-runs the idempotent milestone helpers
36
+ against the latest snapshot — recovering missed rows at the next
37
+ status-line tick instead of waiting for the percent to advance.
38
+ - Root `.gitignore` now anchors `/node_modules` and `/package-lock.json`,
39
+ preventing `npm install` next to the repo-root `package.json` (the
40
+ npm-publish sentinel) from leaving the working tree dirty and blocking
41
+ `cctally release`. `dashboard/web/node_modules` and the tracked
42
+ `dashboard/web/package-lock.json` are unaffected by the anchored entries.
43
+
8
44
  ## [1.3.0] - 2026-05-08
9
45
 
10
46
  ### Changed
package/README.md CHANGED
@@ -9,6 +9,13 @@
9
9
  <strong>Track Claude Code subscription usage as a weekly $-per-1% trend. Local web dashboard, terminal UI, forecasts, and threshold alerts.</strong>
10
10
  </p>
11
11
 
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/cctally"><img src="https://img.shields.io/npm/v/cctally.svg" alt="npm version"></a>
14
+ <a href="https://www.npmjs.com/package/cctally"><img src="https://img.shields.io/npm/dm/cctally.svg" alt="npm downloads"></a>
15
+ <a href="https://github.com/omrikais/cctally/blob/main/LICENSE"><img src="https://img.shields.io/github/license/omrikais/cctally.svg" alt="Apache-2.0 license"></a>
16
+ <a href="https://github.com/omrikais/cctally/stargazers"><img src="https://img.shields.io/github/stars/omrikais/cctally.svg" alt="GitHub stars"></a>
17
+ </p>
18
+
12
19
  If you're using `ccusage` to watch Claude Code spend, `cctally` covers the same ground and adds the parts you reach for next: a live web dashboard, a forecast that tells you whether you're going to cap this week, threshold alerts when you cross a percent, and a persistent week-over-week trend of cost per percent of quota. All local, no account, no telemetry.
13
20
 
14
21
  <p align="center">