ccgauge 1.1.1 → 1.1.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.
Files changed (96) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +42 -42
  3. package/.next/standalone/.next/app-path-routes-manifest.json +9 -9
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/api/blocks/route_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/api/export/usage/route.js +1 -1
  8. package/.next/standalone/.next/server/app/api/export/usage/route_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/api/scan/route_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/models/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/page.js +1 -1
  16. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  22. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/usage/page.js +2 -2
  24. package/.next/standalone/.next/server/app/usage/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app-paths-manifest.json +9 -9
  26. package/.next/standalone/.next/server/chunks/567.js +2 -2
  27. package/.next/standalone/.next/server/chunks/716.js +1 -1
  28. package/.next/standalone/.next/server/chunks/98.js +1 -1
  29. package/.next/standalone/.next/server/functions-config-manifest.json +3 -3
  30. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  31. package/.next/standalone/.next/server/pages/500.html +1 -1
  32. package/.next/standalone/.next/static/chunks/148-59989feca70944f2.js +1 -0
  33. package/.next/standalone/.next/static/chunks/app/{layout-78960a03a026ecdf.js → layout-af71188a257674b5.js} +1 -1
  34. package/.next/standalone/.next/static/chunks/app/usage/page-8af23d9f5420c824.js +1 -0
  35. package/.next/standalone/.next/static/css/{e69fbe3cba63076e.css → fabb40b2545c70dd.css} +1 -1
  36. package/.next/standalone/package.json +3 -3
  37. package/.next/standalone/public/codex-logo.webp +0 -0
  38. package/CHANGELOG.md +133 -0
  39. package/dist/mcp/server.mjs +14 -14
  40. package/dist/report/index.mjs +36 -8158
  41. package/package.json +3 -3
  42. package/.next/standalone/.next/static/chunks/148-f2cba0b76260b8d3.js +0 -1
  43. package/.next/standalone/.next/static/chunks/app/usage/page-051223f62647aadc.js +0 -1
  44. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/constants.js +0 -10
  45. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/fontkit/index.js +0 -1
  46. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/format-available-values.js +0 -9
  47. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/fetch-css-from-google-fonts.js +0 -28
  48. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/fetch-font-file.js +0 -24
  49. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/fetch-resource.js +0 -46
  50. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/find-font-files-in-css.js +0 -34
  51. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/font-data.json +0 -17669
  52. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/get-fallback-font-override-metrics.js +0 -62
  53. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/get-font-axes.js +0 -66
  54. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/get-google-fonts-url.js +0 -55
  55. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/get-proxy-agent.js +0 -23
  56. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/google-fonts-metadata.js +0 -8
  57. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/loader.js +0 -175
  58. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/retry.js +0 -18
  59. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/sort-fonts-variant-values.js +0 -26
  60. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/google/validate-google-font-function-call.js +0 -101
  61. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/local/get-fallback-metrics-from-font-file.js +0 -85
  62. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/local/loader.js +0 -78
  63. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/local/pick-font-file-for-fallback-generation.js +0 -85
  64. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/local/validate-local-font-function-call.js +0 -66
  65. package/.next/standalone/node_modules/next/dist/compiled/@next/font/dist/next-font-error.js +0 -11
  66. package/.next/standalone/node_modules/next/dist/compiled/@next/font/google/loader.js +0 -1
  67. package/.next/standalone/node_modules/next/dist/compiled/@next/font/local/loader.js +0 -1
  68. package/.next/standalone/node_modules/next/dist/compiled/@next/font/package.json +0 -1
  69. package/.next/standalone/node_modules/next/dist/compiled/amphtml-validator/index.js +0 -1
  70. package/.next/standalone/node_modules/next/dist/compiled/amphtml-validator/package.json +0 -1
  71. package/.next/standalone/node_modules/next/dist/compiled/amphtml-validator/validator_wasm.js +0 -2672
  72. package/.next/standalone/node_modules/next/dist/server/capsize-font-metrics.json +0 -181516
  73. package/.next/standalone/node_modules/next/node_modules/@img/sharp-darwin-arm64/LICENSE +0 -191
  74. package/.next/standalone/node_modules/next/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  75. package/.next/standalone/node_modules/next/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
  76. package/.next/standalone/node_modules/next/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  77. package/.next/standalone/node_modules/next/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  78. package/.next/standalone/node_modules/next/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
  79. package/.next/standalone/node_modules/next/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  80. package/.next/standalone/node_modules/next/node_modules/sharp/lib/channel.js +0 -177
  81. package/.next/standalone/node_modules/next/node_modules/sharp/lib/colour.js +0 -195
  82. package/.next/standalone/node_modules/next/node_modules/sharp/lib/composite.js +0 -212
  83. package/.next/standalone/node_modules/next/node_modules/sharp/lib/constructor.js +0 -499
  84. package/.next/standalone/node_modules/next/node_modules/sharp/lib/index.js +0 -16
  85. package/.next/standalone/node_modules/next/node_modules/sharp/lib/input.js +0 -809
  86. package/.next/standalone/node_modules/next/node_modules/sharp/lib/is.js +0 -143
  87. package/.next/standalone/node_modules/next/node_modules/sharp/lib/libvips.js +0 -207
  88. package/.next/standalone/node_modules/next/node_modules/sharp/lib/operation.js +0 -1016
  89. package/.next/standalone/node_modules/next/node_modules/sharp/lib/output.js +0 -1666
  90. package/.next/standalone/node_modules/next/node_modules/sharp/lib/resize.js +0 -595
  91. package/.next/standalone/node_modules/next/node_modules/sharp/lib/sharp.js +0 -121
  92. package/.next/standalone/node_modules/next/node_modules/sharp/lib/utility.js +0 -291
  93. package/.next/standalone/node_modules/next/node_modules/sharp/package.json +0 -202
  94. package/.next/standalone/public/codex-logo.png +0 -0
  95. /package/.next/standalone/.next/static/{7PsGBJ1-BFrm7kVcPye-n → CMei_rtoPIOG9ihnAXFks}/_buildManifest.js +0 -0
  96. /package/.next/standalone/.next/static/{7PsGBJ1-BFrm7kVcPye-n → CMei_rtoPIOG9ihnAXFks}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccgauge",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Local web dashboard for Claude Code and OpenAI Codex CLI token usage and cost",
5
5
  "keywords": [
6
6
  "claude",
@@ -57,14 +57,14 @@
57
57
  ],
58
58
  "scripts": {
59
59
  "dev": "next dev -p 3738",
60
- "build": "next build && node scripts/build-mcp.mjs && node scripts/build-report.mjs && node scripts/postbuild.mjs",
60
+ "build": "next build && node scripts/build-mcp.mjs && node scripts/build-report.mjs && node scripts/postbuild.mjs && node scripts/smoke-standalone.mjs",
61
61
  "build:mcp": "node scripts/build-mcp.mjs",
62
62
  "build:report": "node scripts/build-report.mjs",
63
63
  "start": "node bin/cli.mjs",
64
64
  "start:next": "next start -p 3737",
65
65
  "lint": "eslint .",
66
66
  "typecheck": "tsc --noEmit",
67
- "test": "node --experimental-strip-types --no-warnings scripts/test-codex-parser.mjs && node --experimental-strip-types --no-warnings scripts/test-turns.mjs && node --experimental-strip-types --no-warnings scripts/test-source-merge.mjs && node --experimental-strip-types --no-warnings scripts/test-cost-from-usage.mjs && node --experimental-strip-types --no-warnings scripts/test-range.mjs && node scripts/check-parser-versions.mjs && node scripts/check-readme-images.mjs",
67
+ "test": "node --experimental-strip-types --no-warnings scripts/test-codex-parser.mjs && node --experimental-strip-types --no-warnings scripts/test-turns.mjs && node --experimental-strip-types --no-warnings scripts/test-sidechain.mjs && node --experimental-strip-types --no-warnings scripts/test-source-merge.mjs && node --experimental-strip-types --no-warnings scripts/test-cost-from-usage.mjs && node --experimental-strip-types --no-warnings scripts/test-range.mjs && node scripts/check-parser-versions.mjs && node scripts/check-readme-images.mjs",
68
68
  "test:mcp": "node scripts/test-mcp-server.mjs",
69
69
  "clean": "node -e \"for (const p of ['.next','node_modules','tsconfig.tsbuildinfo']) require('node:fs').rmSync(p,{recursive:true,force:true})\"",
70
70
  "screenshots": "node scripts/screenshots.mjs",
package/CHANGELOG.md CHANGED
@@ -5,6 +5,135 @@ All notable changes to **ccgauge** are documented here.
5
5
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
6
6
  this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.3] — 2026-06-05
9
+
10
+ A critical hotfix, plus a Workflow / ultracode badge on the usage page.
11
+ **v1.1.2 fails to start on a clean install** — `npx ccgauge` crashes at
12
+ boot, before serving a single page. If you installed 1.1.2, upgrade
13
+ immediately.
14
+
15
+ ### Added
16
+
17
+ - **Workflow / ultracode badge on the usage page.** A turn that fans out
18
+ parallel sub-agents — Claude Code's Workflow tool, e.g. `ultracode`
19
+ mode — now shows a `Workflow ×N` badge in the usage table's model
20
+ column, where N is the number of distinct parallel sub-agent transcripts
21
+ it spawned. Localized (en / zh).
22
+
23
+ ### Fixed
24
+
25
+ - **`npx ccgauge` crashed on every clean machine (1.1.2 regression).**
26
+ The 1.1.2 size-prune deleted `next/dist/compiled/babel`, assuming it was
27
+ a build-only transpiler bundle. It is not: Next's standalone production
28
+ startup requires `babel/code-frame` unconditionally
29
+ (`node-environment.js` → `patch-error-inspect.js` →
30
+ `next-devtools/server/shared.js`). The server threw `Cannot find module
31
+ 'next/dist/compiled/babel/code-frame'` at boot and never listened — so
32
+ every page, logo, and JS chunk failed to load with a 400 and the app
33
+ died with a `ChunkLoadError`. `babel` + `babel-packages` are restored to
34
+ the package (tarball 5.3 MB → 5.9 MB — still ~62% below the 15.5 MB it
35
+ started from). The other prunes (`sharp` / `@img`, AMP validator,
36
+ capsize font-metrics, `next/font`) are verified safe and stay removed.
37
+
38
+ - **The build's smoke gate couldn't catch this — now it can.** The
39
+ post-build `smoke-standalone.mjs` booted the server *inside the repo*,
40
+ where Node's module resolution falls back to the project's own
41
+ `node_modules/next` — so a standalone missing its bundled `babel` still
42
+ started and the gate passed green. The gate now copies the standalone to
43
+ a temp dir **outside the repo** and boots it there, faithfully
44
+ reproducing a clean `npx` install. Reverse-tested: with `babel` removed
45
+ it now fails the build (`server exited early … Cannot find module`),
46
+ exactly the regression that shipped 1.1.2.
47
+
48
+ - **Workflow / ultracode sub-agent turns weren't folded into the turn
49
+ that spawned them.** These sub-agent transcripts live under
50
+ `subagents/workflows/wf_<id>/`, a path the sidechain-linking regex
51
+ didn't match — so each parallel agent surfaced as its own orphan
52
+ "(no user text)" row instead of collapsing into the conversation turn
53
+ that launched the fan-out. The matcher now handles the nested workflow
54
+ path (case- and separator-tolerant), with regression tests.
55
+
56
+ ### Internal
57
+
58
+ - `postbuild.mjs` now carries a standing warning against re-pruning
59
+ `babel`, documenting the exact startup require chain that depends on it,
60
+ so the assumption that misfired in 1.1.2 can't be repeated silently.
61
+
62
+ ## [1.1.2] — 2026-05-30
63
+
64
+ A packaging + polish release. The published npm tarball shrinks by 66%,
65
+ the nav gets a Docs link, and Claude Opus 4.8 pricing lands. No
66
+ breaking changes — drop-in over 1.1.x.
67
+
68
+ ### Highlights
69
+
70
+ - **npm package is 66% smaller** — tarball **15.5 MB → 5.3 MB**
71
+ (unpacked 51.8 MB → 22.2 MB). The bulk was a macOS `sharp` native
72
+ binary (~16 MB of libvips) that `next build` traced into a nested
73
+ `node_modules` the old prune never reached — pure dead weight since
74
+ ccgauge sets `images: { unoptimized: true }` and uses no `next/image`.
75
+ We also drop other Next internals ccgauge never loads (AMP validator,
76
+ `next/font` font-metrics + babel bundles) and shrink the Codex logo.
77
+ - **Docs link in the nav** — a new "Docs" entry after Settings opens the
78
+ documentation site in a new tab. It follows the in-app language:
79
+ English → `chengzuopeng.github.io/ccgauge/`, Chinese →
80
+ `…/ccgauge/zh/`.
81
+ - **Claude Opus 4.8 pricing** — added to the built-in table, and the
82
+ `opus` family fallback now points at 4.8 so unknown future Opus date
83
+ suffixes price correctly.
84
+
85
+ ### Added
86
+
87
+ - **Built-in pricing for `claude-opus-4-8`** ($5 / $25 per 1M in/out,
88
+ $6.25 / $10 cache-write 5m/1h, $0.50 cache-read).
89
+ - **Docs nav link** — locale-aware external link with an external-arrow
90
+ glyph, opens in a new tab (`rel="noopener noreferrer"`).
91
+ - **`scripts/smoke-standalone.mjs`** — a post-build smoke gate wired
92
+ into `pnpm build`. It boots the pruned standalone server and hits the
93
+ key routes; if any page 500s or the server crashes, the build fails.
94
+ This is the safety net that makes pruning Next internals viable: a
95
+ future Next upgrade that starts requiring a pruned file is caught at
96
+ build time instead of shipping a broken package.
97
+
98
+ ### Changed
99
+
100
+ - **`opus` family pricing fallback** now resolves to `claude-opus-4-8`
101
+ (was `claude-opus-4-7`).
102
+ - **Nav: removed the tagline** next to the logo ("usage dashboard for
103
+ AI coding CLIs" / "AI 编程 CLI 的本地用量看板") for a cleaner bar. The
104
+ string is still used for the page `<meta description>` and the
105
+ empty-state copy.
106
+ - **Codex logo `png → webp`** — 354 KB / 816² PNG → 23 KB / 512² WebP
107
+ (matches the Claude logo), a 331 KB drop.
108
+ - **`ccgauge report` bundle is minified** (`dist/report/index.mjs`,
109
+ 307 KB → 166 KB), same as the MCP bundle. The output is machine-read
110
+ only, so there's no debuggability cost.
111
+ - **`cost_estimator` MCP tool docs** reference Opus 4.8 in their
112
+ examples.
113
+
114
+ ### Fixed
115
+
116
+ - **Build prune missed a nested `sharp` / `@img` copy (~16 MB).**
117
+ `postbuild` only swept the top-level + `.pnpm` `node_modules`; Next's
118
+ file tracer had copied the platform libvips binary into a real
119
+ `next/node_modules/@img`. A new recursive sweep removes
120
+ `@img` / `sharp` / `typescript` wherever they nest, plus the AMP
121
+ validator, capsize font-metrics, babel bundles, and `next/font`
122
+ loaders — none of which ccgauge's configuration loads.
123
+
124
+ ### Internal
125
+
126
+ - `postbuild` prune is now two-pass: top-level / `.pnpm`
127
+ (pre-materialize) + a recursive `pruneModulesTree` (post-materialize)
128
+ that only walks `node_modules` trees, never package source. Each
129
+ Next-internal removal carries a comment naming the standing
130
+ assumption (no `next/image` optimization, no AMP, no `next/font`)
131
+ that keeps it safe.
132
+ - The standalone smoke gate is reverse-tested: removing a
133
+ production-required Next runtime makes every page 500 and the gate
134
+ exits non-zero, so it provably catches a broken prune rather than
135
+ silently passing.
136
+
8
137
  ## [1.1.1] — 2026-05-29
9
138
 
10
139
  A polish-and-harden release: motion across the dashboard and marketing
@@ -1188,6 +1317,10 @@ of HTML to the browser.
1188
1317
  - Initial public release as `ccgauge`: local Next.js dashboard for
1189
1318
  Claude Code token usage, cost, and 5-hour block tracking.
1190
1319
 
1320
+ [1.1.3]: https://github.com/chengzuopeng/ccgauge/compare/v1.1.2...v1.1.3
1321
+ [1.1.2]: https://github.com/chengzuopeng/ccgauge/compare/v1.1.1...v1.1.2
1322
+ [1.1.1]: https://github.com/chengzuopeng/ccgauge/compare/v1.1.0...v1.1.1
1323
+ [1.1.0]: https://github.com/chengzuopeng/ccgauge/compare/v1.0.5...v1.1.0
1191
1324
  [1.0.5]: https://github.com/chengzuopeng/ccgauge/compare/v1.0.4...v1.0.5
1192
1325
  [1.0.4]: https://github.com/chengzuopeng/ccgauge/compare/v1.0.3...v1.0.4
1193
1326
  [1.0.3]: https://github.com/chengzuopeng/ccgauge/compare/v1.0.2...v1.0.3