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
Copy file name to clipboardExpand all lines: CHANGELOG.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,20 @@
1
1
# Changelog
2
2
3
+
## v0.1.9 - 2026-05-09
4
+
5
+
- Switched generated exports to compact `recordsV2` rows and delta timestamps, with catalogs kept in the raw sidecar to reduce first-load `data.js` size.
6
+
- Added precomputed dashboard views for common ranges so preset filters avoid rescanning raw records in the browser.
7
+
- Exported model pricing rules from the generator so precomputed views and custom date ranges share one cost-estimation source.
8
+
- Compact precomputed chart buckets to shrink first-load dashboard views without changing the UI.
9
+
- Split raw event rows into `data.raw.js`, loaded only when custom date ranges need raw records.
10
+
- Added a raw sidecar schema marker so hot-start freshness checks do not scan the full raw export.
11
+
- Fixed custom `--raw-out` paths by writing a browser-relative sidecar path into `data.js`.
12
+
- Refactored preset view generation to aggregate summaries, charts, peak rate, sessions, and model stats in a single token-event pass.
13
+
- Date preset views now slice sorted runtime events by time range before aggregating, avoiding full-history scans for short ranges.
14
+
- Reused the already-loaded parsed cache during regeneration so runs with changed logs do not parse the large cache JSON twice.
15
+
- Bumped cache output stamping to regenerate once after the data-shape upgrade while still reusing readable parsed log cache.
16
+
- Slimmed release packages by removing bundled README docs from platform zips and stripping Go build ids.
17
+
3
18
## v0.1.8 - 2026-05-09
4
19
5
20
- Switched trend chart anchors to market-style adaptive time grains.
The dashboard is a static HTML app: no backend, no account connection, and no hosted telemetry. Your real usage export stays local in `data.js`, which is intentionally ignored by git.
11
+
The dashboard is a static HTML app: no backend, no account connection, and no hosted telemetry. Your real usage export stays local in `data.js` and `data.raw.js`, which are intentionally ignored by git. Recent exports keep precomputed dashboard views in `data.js`; compact catalogs and raw rows are loaded from `data.raw.js` only for custom date ranges.
12
12
13
13
## Why
14
14
@@ -34,8 +34,8 @@ To view your real local Codex usage, normal users should download the platform p
34
34
-**macOS**: download `CodexScope-mac.zip`, unzip it, then double-click `Open CodexScope.command` in the extracted folder
35
35
-**Windows**: download `CodexScope-windows.zip`, unzip it, then double-click `Open CodexScope.cmd` in the extracted folder
36
36
37
-
Release zips include a prebuilt generator, so normal users do not need to install Go. The launcher generates `data.js` from your local Codex logs and then opens `index.html`. Source checkouts can still fall back to `go build` when the prebuilt generator is absent.
38
-
Subsequent runs reuse a local `.codexscope-cache.json` file and only rescan changed session logs, so repeated launches should be much faster.
37
+
Release zips include a prebuilt generator, so normal users do not need to install Go. The launcher generates `data.js`and `data.raw.js`from your local Codex logs and then opens `index.html`. Source checkouts can still fall back to `go build` when the prebuilt generator is absent.
38
+
Subsequent runs reuse a local `.codexscope-cache.json` file and only rescan changed session logs. If nothing changed, the generator can skip rewriting the export files; if a log grew, it appends from the previous cached offset.
39
39
40
40
Note: GitHub's automatic **Source code (zip)** asset is for developers, not the recommended user download. It may require Go or local compilation. Prefer `CodexScope-mac.zip` / `CodexScope-windows.zip`.
41
41
@@ -73,15 +73,15 @@ If your Codex sessions are stored elsewhere, pass the path explicitly:
73
73
go run .\generate_codex_data.go --root "$env:USERPROFILE\.codex\sessions"
74
74
```
75
75
76
-
The generator writes `data.js` next to `index.html`. Once that file exists, the dashboard automatically uses your real local data instead of the bundled demo. `data.js`and `.codexscope-cache.json` may contain private project names, session ids, timestamps, usage patterns, and quota status, so both are excluded by `.gitignore`.
76
+
The generator writes `data.js`and `data.raw.js`next to `index.html`. Once those files exist, the dashboard automatically uses your real local data instead of the bundled demo. `data.js`, `data.raw.js`, and `.codexscope-cache.json` may contain private project names, session ids, timestamps, usage patterns, and quota status, so they are excluded by `.gitignore`.
77
77
78
78
## Project Structure
79
79
80
80
-`index.html`: the static dashboard shell.
81
81
-`styles.css`: dashboard layout and visual styling.
82
82
-`app.ts`: TypeScript source for charts, filters, rankings, quota display, and cost estimation.
83
83
-`app.js`: compiled browser script loaded by `index.html`.
84
-
-`generate_codex_data.go`: the local data generator. It scans Codex JSONL session logs, extracts usage metadata, and writes `data.js`.
84
+
-`generate_codex_data.go`: the local data generator. It scans Codex JSONL session logs, extracts usage metadata, and writes `data.js` plus `data.raw.js`.
85
85
-`data.sample.js`: bundled demo data used when no local `data.js` exists.
86
86
-`CHANGELOG.md`: release notes for each published version.
87
87
-`macos/open-dashboard.command`: macOS launcher that runs the generator and opens the dashboard.
@@ -94,8 +94,8 @@ The generator writes `data.js` next to `index.html`. Once that file exists, the
94
94
95
95
1. Codex writes local JSONL session logs under `~/.codex/sessions`.
96
96
2.`generate_codex_data.go` scans local `.jsonl` files and extracts only usage metadata: token counts, model names, session ids, timing, failures, and rate-limit metadata.
97
-
3. The generator writes those records to `data.js` as `window.CODEXSCOPE_DATA`.
98
-
4.`index.html` loads `data.sample.js` first and then `data.js`. If real local data exists, it overrides the sample data.
97
+
3. The generator writes precomputed range views to `data.js` as `window.CODEXSCOPE_DATA`, and compact catalogs plus raw event rows to `data.raw.js` as `window.CODEXSCOPE_RAW_DATA`.
98
+
4.`index.html` loads `data.sample.js` first and then `data.js`. If real local data exists, it overrides the sample data; `data.raw.js` is loaded only when custom date ranges need raw rows.
99
99
5. Date filters, charts, rankings, quota status, and cost estimates are computed in the browser from that local record set.
100
100
101
101
## What Gets Displayed
@@ -104,11 +104,11 @@ The generator writes `data.js` next to `index.html`. Once that file exists, the
104
104
-**Quota and risk**: remaining short-window and weekly quota when Codex local logs include rate-limit metadata.
105
105
-**Distribution**: request count or token volume grouped by time bucket.
106
106
-**Rankings**: busiest sessions and models for the selected period.
107
-
-**Cost estimate**: a local estimate using token counts and the built-in model price table.
107
+
-**Cost estimate**: a local estimate using token counts and model pricing rules exported by the generator.
108
108
109
109
## Cost Estimates
110
110
111
-
The cost card is an estimate, not an official bill. It uses local token counts and a built-in table based on OpenAI's published USD model prices. Actual ChatGPT/Codex billing, credits, and subscription quota status should always be checked with the official account or billing page.
111
+
The cost card is an estimate, not an official bill. It uses local token counts and generator-exported rules based on OpenAI's published USD model prices. Actual ChatGPT/Codex billing, credits, and subscription quota status should always be checked with the official account or billing page.
112
112
113
113
USD is the source currency. The CNY view is only a display conversion. When available, CodexScope fetches the USD/CNY rate from the Frankfurter API with the ECB provider selected. If that request fails, it falls back to the last bundled reference rate and marks the conversion as offline fallback in the UI.
114
114
@@ -149,7 +149,7 @@ CodexScope does not send data to a server. `generate_codex_data.go` reads local
149
149
150
150
It does not export prompt text, assistant messages, tool output, or file contents.
151
151
152
-
Review `data.js` before sharing screenshots or artifacts generated from your own usage.
152
+
Review `data.js`and `data.raw.js`before sharing screenshots or artifacts generated from your own usage.
0 commit comments