You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(nix): make nix flake show work again on nixpkgs 26.11 - #2019
Drop x86_64-darwin from the flake's systems, and the cargo-hawk release archive that only that system used.
Why
Nixpkgs 26.11 dropped x86_64-darwin and throws when it is instantiated for that system. Every command that evaluates all systems, such as nix flake show, therefore failed on the x86_64-darwin perSystem.
No output needs that system:
The Intel macOS npm binary is cross-built on the aarch64-darwin runner (packages.aarch64-darwin.ccusage-darwin-x64).
The macos-15-intel CI job only runs the published npm package and does not use Nix.
Testing
nix flake show --all-systems succeeds (it failed before).
nix eval .#packages.aarch64-darwin.ccusage-darwin-x64.drvPath still evaluates.
nix flake check --no-build passes on aarch64-darwin. The Linux systems were not checked locally.
Summary by cubic
Fixes nix flake show failing on nixpkgs 26.11 by dropping x86_64-darwin from the flake's systems.
Nixpkgs 26.11 dropped x86_64-darwin and throws when instantiated for that system, breaking every command that evaluates all systems. Removing the system and its now-unused cargo-hawk archive is safe because the Intel macOS npm binary is cross-built on the aarch64-darwin runner, and the Intel macOS CI job only runs the published npm package.
Written for commit aac207b. Summary will update on new commits.
Summary by CodeRabbit
Platform Support
Intel-based macOS (x86_64-darwin) is no longer listed as a supported platform, and its cargo-hawk release archive is no longer available.
Apple silicon macOS (aarch64-darwin) and Linux platform entries remain supported.
No merge-blocking issue was found. The retained Intel macOS package does not depend on the removed archive; normal build checks remain appropriate.
Pre-merge checks: 5
Check name
Status
Explanation
Description Check
Check skipped - CodeRabbit’s high-level summary is enabled.
Title check
The title names the main change, which is restoring nix flake show on nixpkgs 26.11. The changeset removes x86_64-darwin from the flake's supported systems and drops the cargo-hawk archive for tha…
Docstring Coverage
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check
Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check
Check skipped because no linked issues were found for this pull request.
Full details: Title check
Explanation
The title names the main change, which is restoring nix flake show on nixpkgs 26.11. The changeset removes x86_64-darwin from the flake's supported systems and drops the cargo-hawk archive for that platform. The title does not name the removal itself. It gives the reason (nixpkgs 26.11 breaks evaluation of that system) and the effect (nix flake show works again). A reader scanning history gets the purpose of the change, though not the exact file-level action. The title is specific and accurate, so it passes.
Full details: Docstring Coverage
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files.
Finishing Touches
Generate unit tests (beta)
Commit to this branch
Create a new PR
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
File: No configuration file from this repository applied
Commit: Unavailable
Layers: defaults
Review profile: CHILL
Plan: Advanced
Run ID: d32c9313-c461-48e3-a0b5-11fa5539b3a0
Commits
Reviewing files that changed from the base of the PR and between b4e6193 and 83a9bd0.
Files selected for processing: 2
flake.nix
nix/cargo-hawk.nix
Files with no reviewable changes: 2
nix/cargo-hawk.nix
flake.nix
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
The reason will be displayed to describe this comment to others. Learn more.
✅ No new issues found.
Reviewed changes — reviewed the single commit dropping x86_64-darwin to restore nix flake show on nixpkgs 26.11.
Drop x86_64-darwin from flake systems — removes the perSystem instantiation that nixpkgs 26.11 can no longer evaluate.
Remove unused cargo-hawk Intel macOS archive — deletes the x86_64-darwin release entry that only that system consumed; the archives.${system} or throw lookup and derived meta.platforms stay consistent over the remaining systems.
Intel macOS coverage is preserved through the aarch64-darwin cross-build of packages.ccusage-darwin-x64, and the macos-15-intel CI job exercises the published npm package rather than Nix.
This compares the Rust PR release binary against the configured base package on the same CI runner.
Package runtime diagnostics
Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.
Command
Runtime
Input
Median
Throughput
Samples
claude --offline --json
Package wrapper
1.01 GiB
377.4ms
2.67 GiB/s
1
claude --offline --json
Installed native binary
1.01 GiB
351.1ms
2.87 GiB/s
1
codex --offline --json
Package wrapper
1.01 GiB
154.7ms
6.51 GiB/s
1
codex --offline --json
Installed native binary
1.01 GiB
128.5ms
7.84 GiB/s
1
Committed fixture performance
Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.
Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude daily --offline --json
0.00 MiB
39.5ms
15.3ms
2.58x
55.75 MiB
22.96 MiB
0.41x
0.04 MiB/s
0.10 MiB/s
claude session --offline --json
0.00 MiB
38.8ms
15.8ms
2.46x
55.75 MiB
23.21 MiB
0.42x
0.04 MiB/s
0.10 MiB/s
codex daily --offline --json
0.00 MiB
39.6ms
15.5ms
2.56x
56.00 MiB
27.21 MiB
0.49x
0.02 MiB/s
0.06 MiB/s
codex session --offline --json
0.00 MiB
38.1ms
16.3ms
2.34x
56.00 MiB
27.21 MiB
0.49x
0.02 MiB/s
0.05 MiB/s
Large real-world-shaped fixture performance
Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude --offline --json
1.01 GiB
391.1ms
367.9ms
1.06x
917.09 MiB
923.09 MiB
1.01x
2.57 GiB/s
2.74 GiB/s
codex --offline --json
1.01 GiB
150.6ms
167.1ms
0.90x
501.43 MiB
541.43 MiB
1.08x
6.68 GiB/s
6.02 GiB/s
Artifact size
Artifact
Base
PR
Delta
Ratio
packed ccusage-*.tgz
27.64 KiB
27.64 KiB
-0.00 KiB
1.00x
installed native package binary
4988.78 KiB
4988.78 KiB
+0.00 KiB
1.00x
Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.
This compares the PR package against the configured base package on the same CI runner.
Package runtime diagnostics
Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.
Command
Runtime
Input
Median
Throughput
Samples
claude --offline --json
Package wrapper
1.01 GiB
383.5ms
2.63 GiB/s
1
claude --offline --json
Installed native binary
1.01 GiB
346.3ms
2.91 GiB/s
1
codex --offline --json
Package wrapper
1.01 GiB
144.6ms
6.96 GiB/s
1
codex --offline --json
Installed native binary
1.01 GiB
126.1ms
7.98 GiB/s
1
Committed fixture performance
Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.
Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude daily --offline --json
0.00 MiB
39.1ms
39.7ms
0.99x
56.00 MiB
56.00 MiB
1.00x
0.04 MiB/s
0.04 MiB/s
claude session --offline --json
0.00 MiB
35.8ms
37.5ms
0.95x
56.00 MiB
56.00 MiB
1.00x
0.04 MiB/s
0.04 MiB/s
codex daily --offline --json
0.00 MiB
39.6ms
38.5ms
1.03x
55.75 MiB
56.00 MiB
1.00x
0.02 MiB/s
0.02 MiB/s
codex session --offline --json
0.00 MiB
39.3ms
38.9ms
1.01x
55.75 MiB
55.75 MiB
1.00x
0.02 MiB/s
0.02 MiB/s
Large real-world-shaped fixture performance
Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude --offline --json
1.01 GiB
364.2ms
378.3ms
0.96x
941.09 MiB
911.09 MiB
0.97x
2.76 GiB/s
2.66 GiB/s
codex --offline --json
1.01 GiB
154.8ms
150.6ms
1.03x
529.43 MiB
521.43 MiB
0.98x
6.50 GiB/s
6.69 GiB/s
Artifact size
Artifact
Base
PR
Delta
Ratio
packed ccusage-*.tgz
27.64 KiB
27.64 KiB
-0.00 KiB
1.00x
installed native package binary
4988.78 KiB
4988.78 KiB
+0.00 KiB
1.00x
Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.
Nixpkgs 26.11 dropped x86_64-darwin and throws when instantiated for it,
so any command that evaluates every system, such as `nix flake show`,
failed on the x86_64-darwin perSystem.
The Intel macOS npm binary is cross-built on the aarch64-darwin runner
(packages.aarch64-darwin.ccusage-darwin-x64), and the macos-15-intel CI
job only runs the published npm package, so no output needs the
x86_64-darwin system. Drop it, together with the cargo-hawk archive that
only that system used.
This compares the Rust PR release binary against the configured base package on the same CI runner.
Package runtime diagnostics
Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.
Command
Runtime
Input
Median
Throughput
Samples
claude --offline --json
Package wrapper
1.01 GiB
405.6ms
2.48 GiB/s
1
claude --offline --json
Installed native binary
1.01 GiB
378.7ms
2.66 GiB/s
1
codex --offline --json
Package wrapper
1.01 GiB
184.1ms
5.47 GiB/s
1
codex --offline --json
Installed native binary
1.01 GiB
139.2ms
7.23 GiB/s
1
Committed fixture performance
Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.
Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude daily --offline --json
0.00 MiB
39.5ms
14.9ms
2.64x
55.75 MiB
22.96 MiB
0.41x
0.04 MiB/s
0.10 MiB/s
claude session --offline --json
0.00 MiB
35.7ms
14.7ms
2.43x
56.00 MiB
23.21 MiB
0.41x
0.04 MiB/s
0.11 MiB/s
codex daily --offline --json
0.00 MiB
36.9ms
14.6ms
2.53x
56.00 MiB
27.21 MiB
0.49x
0.02 MiB/s
0.06 MiB/s
codex session --offline --json
0.00 MiB
38.9ms
16.4ms
2.38x
56.25 MiB
27.21 MiB
0.48x
0.02 MiB/s
0.05 MiB/s
Large real-world-shaped fixture performance
Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude --offline --json
1.01 GiB
378.3ms
376.5ms
1.00x
913.09 MiB
935.09 MiB
1.02x
2.66 GiB/s
2.67 GiB/s
codex --offline --json
1.01 GiB
163.2ms
128.9ms
1.27x
519.43 MiB
539.43 MiB
1.04x
6.17 GiB/s
7.81 GiB/s
Artifact size
Artifact
Base
PR
Delta
Ratio
packed ccusage-*.tgz
27.64 KiB
27.64 KiB
-0.00 KiB
1.00x
installed native package binary
4988.78 KiB
4988.78 KiB
+0.00 KiB
1.00x
Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.
This compares the PR package against the configured base package on the same CI runner.
Package runtime diagnostics
Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.
Command
Runtime
Input
Median
Throughput
Samples
claude --offline --json
Package wrapper
1.01 GiB
398.7ms
2.52 GiB/s
1
claude --offline --json
Installed native binary
1.01 GiB
371.2ms
2.71 GiB/s
1
codex --offline --json
Package wrapper
1.01 GiB
180.2ms
5.59 GiB/s
1
codex --offline --json
Installed native binary
1.01 GiB
160.3ms
6.28 GiB/s
1
Committed fixture performance
Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.
Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude daily --offline --json
0.00 MiB
40.0ms
46.4ms
0.86x
55.75 MiB
55.75 MiB
1.00x
0.04 MiB/s
0.03 MiB/s
claude session --offline --json
0.00 MiB
40.3ms
40.9ms
0.98x
55.50 MiB
55.75 MiB
1.00x
0.04 MiB/s
0.04 MiB/s
codex daily --offline --json
0.00 MiB
40.5ms
40.5ms
1.00x
56.00 MiB
56.00 MiB
1.00x
0.02 MiB/s
0.02 MiB/s
codex session --offline --json
0.00 MiB
41.1ms
39.6ms
1.04x
56.00 MiB
56.00 MiB
1.00x
0.02 MiB/s
0.02 MiB/s
Large real-world-shaped fixture performance
Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.
Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.
Command
Input
Base median
PR median
PR vs base
Base peak RSS
PR peak RSS
PR/base RSS
Base throughput
PR throughput
claude --offline --json
1.01 GiB
386.9ms
390.2ms
0.99x
953.09 MiB
947.09 MiB
0.99x
2.60 GiB/s
2.58 GiB/s
codex --offline --json
1.01 GiB
155.2ms
157.3ms
0.99x
511.43 MiB
517.44 MiB
1.01x
6.49 GiB/s
6.40 GiB/s
Artifact size
Artifact
Base
PR
Delta
Ratio
packed ccusage-*.tgz
27.64 KiB
27.64 KiB
-0.00 KiB
1.00x
installed native package binary
4988.78 KiB
4988.78 KiB
+0.00 KiB
1.00x
Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.
Buster210
added a commit
to Buster210/ccusage
that referenced
this pull request
Nov 6, 2026
Upstream tip: 30b653f (2026-11-06,
chore(pricing): update models.dev snapshot)
Previous fork base: c76874e (the upstream commit this fork was synced to)
Synced 128 upstream commits on top of c76874e: 70 automated pricing
snapshot refreshes and the following meaningful ones:
b24e7a7 docs: remove LINE MAN sponsor logo (ccusage#1910)
a93d2fe chore: release v20.0.38 (ccusage#1938)
d91f296 docs: add ccx to community projects (ccusage#1943)
aa7c675 chore: release v20.0.39 (ccusage#1944)
39fefa2 fix(cli): accept --start-of-week on top-level weekly (ccusage#1945)
600b3c9 chore: release v20.0.40 (ccusage#1946)
baeb991 fix(antigravity): map model ID 1402 to claude-opus-5-5 (ccusage#1948)
06347d3 chore: release v20.0.41 (ccusage#1949)
5649632 test(hermes): derive DeepSeek provider pricing from embedded snapshot (ccusage#1951)
d0847af chore(deps): update node.js to >=24.22.1 (ccusage#1950)
91dfe85 chore(deps): update pullfrog/pullfrog action to v0.1.100 (ccusage#1953)
f335280 chore: release v20.0.42 (ccusage#1952)
b86527d chore(deps): update rust crate rustls-webpki to 0.103.16 (ccusage#1954)
5c85ca2 chore(deps): update pullfrog/pullfrog action to v0.1.101 (ccusage#1958)
f268798 fix(cli): apply source-specific config in unified reports (ccusage#1959)
37a51da chore: release v20.0.43 (ccusage#1955)
e302366 chore(deps): update github/codeql-action action to v4.39.1 (ccusage#1960)
7af0db6 chore(deps): update pnpm to v12.15.0 (ccusage#1961)
730c336 chore(deps): update rust crate ureq to 3.5.0 (ccusage#1964)
bd1a21a fix(release): publish platform packages before the wrapper (ccusage#1965)
ca33842 chore: release v20.0.44 (ccusage#1962)
b2c8f8b chore: remove unused npm registry gate test (ccusage#1966)
19e71d0 chore(deps): update songmu/tagpr action to v1.21.4 (ccusage#1969)
2a84385 fix(codex): count repeated first-response snapshots once (ccusage#1971)
60227f2 chore(deps): update rust crate smallvec to 1.16.4 (ccusage#1973)
3e31edd chore(deps): update hustcer/setup-nu action to v3.29 (ccusage#1974)
d93c260 feat(pricing): add gpt-6.1-terra fast/flex multipliers (ccusage#1975)
154e13b chore: release v20.0.45 (ccusage#1967)
f1b50e6 chore(deps): update pullfrog/pullfrog action to v0.1.102 (ccusage#1980)
4f1f470 perf: speed up CI and local builds (ccusage#1984)
0bd3d19 refactor(rust): move binary-only report helpers out of ccusage-core (ccusage#1985)
65c5837 fix(antigravity): skip unreadable conversation databases (ccusage#1992)
6372cac chore(deps): update dependency vitepress to v2.0.0-alpha.21 (ccusage#1994)
9a42066 chore(deps): update node.js to >=24.22.2 (ccusage#1995)
87fa788 chore(deps): update pnpm to v12.16.0 (ccusage#1996)
8cb2532 fix(codex): price recorded Ultrafast requests at Ultrafast rates (ccusage#1989)
128d6a0 chore(deps): update pnpm to v12.16.1 (ccusage#1997)
5aa9d3f chore: release v20.0.46 (ccusage#1982)
4712880 chore(deps): update rust crate unicode-width to 0.2.3 (ccusage#1998)
3d59863 chore(deps): update node.js to v26 (ccusage#1999)
96e98c6 chore(deps): update dependency @types/node to v26.6.6 (ccusage#2002)
60fac54 chore(deps): update pullfrog/pullfrog action to v0.1.103 (ccusage#2003)
de83d19 fix(config): let space-form command sections override generic report sections (ccusage#2006)
72b8ad4 fix(all): count OpenCode Claude Agent turns once in unified reports (ccusage#2007)
7db7a30 test(pricing): stop the alias-precedence test depending on the LiteLLM snapshot (ccusage#2009)
e7a7ee4 fix(all): keep sessions last active on the --until day (ccusage#2008)
4a3da73 chore: release v20.0.47 (ccusage#2001)
8e56c11 chore(deps): update pullfrog/pullfrog action to v0.1.104 (ccusage#2010)
e2eddf7 chore(deps): update pullfrog/pullfrog action to v0.1.107 (ccusage#2012)
e3d2dcb chore(deps): update pullfrog/pullfrog action to v0.1.108 (ccusage#2014)
8995f3b chore: release v20.0.48 (ccusage#2011)
3977fd0 chore(deps): update pullfrog/pullfrog action to v0.1.110 (ccusage#2017)
546ae51 fix(nix): make `nix flake show` work again on nixpkgs 26.11 (ccusage#2019)
1b5e8cc chore(deps): update kesin11/actions-timeline action to v3.2.1 (ccusage#1983)
23c5d62 chore(deps): update rust crate jiff to 0.2.39 (ccusage#2024)
7b7cec0 chore(deps): update rust crate ureq to 3.5.1 (ccusage#2025)
a1e4a03 chore(deps): update pullfrog/pullfrog action to v0.1.111 (ccusage#2028)
e84d142 chore(deps): update pnpm to v12.17.0 (ccusage#2029)
Fork wins kept: the SQLite on-disk cache with its per-namespace ledger,
--live-only and clear-cache, the pi adapter with replay suppression and
per-path namespaces, the OpenCode V2 loader (now wrapped as LinkedEntry),
the FxHash/Cow hot paths, parallel per-file loads with their single_thread
seam, the table renderer, the fork CI and tag-only release workflow, and the
pricing freshness, refresh and offline precompute paths.
Hand-resolved conflicts:
rust/adapters/claude/src/lib.rs: upstream's DedupedEntries/pruned dedupe
lands beside the fork's collapse_replays and requestless replay rules;
load_daily_summaries routes through load_daily_summaries_with_detection.
rust/adapters/opencode/{parser,loader}.rs: upstream's V2 session_message
parsing is wrapped as the fork's LinkedEntry, and the native Claude
session link is read from the payload so it survives a cache hit.
rust/adapters/antigravity/src/loader.rs: upstream's rewrite is taken,
keeping the fork's per-database outcome reporting and file order.
rust/crates/ccusage-core/src/pricing.rs: the fork's OnceLock embedded
loader sits beside upstream's models.dev fallback and alias resolution.
rust/crates/ccusage/src/main.rs: upstream dispatch plus the fork's
ClearCache command.
rust/crates/ccusage-core/src/cache.rs: the ledger is now generic over a
LedgerPayload trait, so it covers plain entries and OpenCode's
entry-plus-link pairs alike.
rust/Cargo.toml: the fork's exact `=` pins stay; jiff 0.2.39,
smallvec 1.16.4, ureq 3.5.1, unicode-width 0.2.3, rustls-webpki
0.103.16.
.github/workflows/{ci,release}.yaml: the fork's design is kept.
packages/ccusage-*/package.json (6 files) and
rust/adapters/claude/src/daily.rs: stay deleted.
rust/crates/ccusage-core/src/{home,last_window}.rs: upstream's crate
split moved them to ccusage-cli and ccusage-report, with their snapshots.
apps/ccusage/config-schema.json: regenerated from the merged Rust source
(32 numeric minimums `0.0` -> `0`, new pi description), plus three
snapshots regenerated in the fork layout for the codex and qwen tests.
Fixes made while landing this sync, folded in so the merge stands green:
fix(rust): decode cache blobs written before `data_session_id`. postcard
encodes struct fields positionally, so a field added mid-struct made
every blob the released 20.0.36 binary wrote undecodable. A failed
decode is not merely slow: it drops the ledger rows of deleted source
files, which no later run can rebuild. In an isolated fixture the
released binary still reported 101,570,002 pi tokens after the source
files were deleted; a warm build without the decoders reported 0.
LegacyCachedEntry and LegacyLedgerEntry decode the old layout and
reconstruct `data_session_id` as None; decode_exact requires the whole
buffer, so a newer blob can no longer "decode" into an older struct as
garbage. Four regression tests cover both layouts and the tail rule.
fix(rust): warn once per table when a cached blob decodes as no known
layout. The files table is rebuildable; the ledger table is not, so the
warning says to save a copy before clear-cache.
test(opencode): isolate the Claude-agent pairing test from the developer's
real cache; it had been writing 'agent'/'plain' ledger rows into the
opencode-db namespace.
Version: take upstream's 20.0.48 in package.json, apps/ccusage/package.json
and docs/package.json; the Rust workspace keeps version 0.0.0.
DO NOT push a v20.0.48 tag from this fork: release.yaml would publish fork
bytes under upstream identity.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Drop
x86_64-darwinfrom the flake'ssystems, and the cargo-hawk release archive that only that system used.Why
Nixpkgs 26.11 dropped x86_64-darwin and throws when it is instantiated for that system. Every command that evaluates all systems, such as
nix flake show, therefore failed on the x86_64-darwin perSystem.No output needs that system:
packages.aarch64-darwin.ccusage-darwin-x64).macos-15-intelCI job only runs the published npm package and does not use Nix.Testing
nix flake show --all-systemssucceeds (it failed before).nix eval .#packages.aarch64-darwin.ccusage-darwin-x64.drvPathstill evaluates.nix flake check --no-buildpasses on aarch64-darwin. The Linux systems were not checked locally.Summary by cubic
Fixes
nix flake showfailing on nixpkgs 26.11 by droppingx86_64-darwinfrom the flake's systems.Nixpkgs 26.11 dropped
x86_64-darwinand throws when instantiated for that system, breaking every command that evaluates all systems. Removing the system and its now-unused cargo-hawk archive is safe because the Intel macOS npm binary is cross-built on theaarch64-darwinrunner, and the Intel macOS CI job only runs the published npm package.Written for commit aac207b. Summary will update on new commits.
Summary by CodeRabbit
x86_64-darwin) is no longer listed as a supported platform, and itscargo-hawkrelease archive is no longer available.aarch64-darwin) and Linux platform entries remain supported.