What's Changed
- refactor(sessions): share read-only SQLite opening by @junhoyeo in #1093
- feat(submit): expose reconciliation census gate inputs by @IvGolovach in #1083
- fix(pricing): separate estimates from submission-safe matches by @IvGolovach in #1084
- fix(cache): preserve completeness when merging retained and live messages by @IvGolovach in #1085
- fix(claude): discover sessions under CLAUDE_CONFIG_DIR instead of a fixed ~/.claude root by @Excelius-Wang in #1102
- refactor(core): consolidate direct cached parse lanes by @junhoyeo in #1094
- fix(cache): read source cache shards lazily and release consumed payloads by @junhoyeo in #1108
- fix(cache): preserve live Claude metadata when merging completeness by @junhoyeo in #1110
- fix(claude): resolve diagnostics cache from config root by @junhoyeo in #1109
- fix(pricing): reject cross-provider model-part submissions by @junhoyeo in #1111
- ci: update coverage badge [skip ci] by @github-actions[bot] (e903173)
- fix(cli): align month titles with bucket dates by @junhoyeo in #1096
- test(tui): isolate cache and widget config tests by @junhoyeo in #1097
- fix(tests): isolate core and CLI cache fixtures by @junhoyeo in #1098
- fix(senpi): discover OmO task child sessions by @ashmoonori-afk in #1113
- fix(senpi): discover OmO child sessions without duplicate scans by @junhoyeo in #1115
- feat(clients): add Cherry Studio support (#1105) by xmL (0db29e9)
- feat(clients): add Cherry Studio support by @sakuralmx in #1105
- fix(clients): follow a redirected home for the AppData scan root by @junhoyeo in #1121
- test(claude): cover retained-completed vs live-partial cross-file merge by @junhoyeo in #1118
- fix(claude): select model-scoped weekly limits by kind, not is_active by @junhoyeo in #1119
- fix(droid): attribute session usage to the replies that spent it, and bound it server-side by @junhoyeo in #1120
- fix(pricing): break equal-length candidate key ties deterministically by @Yuxin-Qiao in #1092
- test: make the #1092 tiebreak regression non-vacuous and de-flake the TUI cache tests by @junhoyeo in #1125
- fix(workspace): make workspace rows distinguishable as rendered, and bound the filesystem work behind them by @junhoyeo in #1124
- ci: update coverage badge [skip ci] by @github-actions[bot] (e8ee234)
- feat(clients): add DeepSeek Harness support by @junhoyeo in #1126
- fix(cli): force HTTP/1.1 for Windows Antigravity RPC to prevent multiplexing freeze by @marshallcodes in #1127
- feat: add ccusage import format by @aron-intframe in #1128
- fix(core): preserve records after invalid JSONL bytes by @junhoyeo in #1095
- ci: update coverage badge [skip ci] by @github-actions[bot] (05000f9)
- fix(antigravity): stop re-probing plaintext on a port already known to speak TLS by @junhoyeo in #1130
- test(claude): pin that the provenance rebuild clears a stale char estimate by @junhoyeo in #1139
- fix(core): recover BOM-prefixed Pi transcripts and align Prime's accounting walk by @junhoyeo in #1134
- refactor(core): share one SQLite driver across the OpenCode-schema parsers by @junhoyeo in #1133
- perf(cli): drop the image codecs and SVG font stacks nothing renders by @junhoyeo in #1132
- refactor(core): share SQLite, usage-struct and JSONL drivers across the session parsers by @junhoyeo in #1137
- perf: replace vendored OpenSSL with rustls by @junhoyeo in #1138
- fix(wrapped): point the OpenClaw logo at a URL that resolves by @junhoyeo in #1141
- refactor(core): put the Pi-format parsers on the shared session drivers by @junhoyeo in #1143
- fix(antigravity-cli): resolve routing-label rows from display labels by @azestkingscrown in #1131
- feat: add MiniMax Code headless usage tracking by @hetaoBackend in #1136
- fix(pricing): resolve OpenAI Daybreak Blue alias by @aravhawk in #1140
- fix(pricing): correct MiniMax-M3 first-party rates in alias regression fixture by @octo-patch in #1144
- fix(codex): stop counting reasoning tokens twice by @junhoyeo in #1146
- fix(pricing): price Kimi Work models and correct the kimi-for-coding target by @junhoyeo in #1147
- fix(frontend): make quickstart label scroll to commands by @xtianxx in #1135
- feat(clients): add fx (vercel-labs) session parsing by @thedavidweng in #1160
- fix(cursor): preserve exported token buckets and costs by @carlosflorencio in #1154
- fix(opencode): support session_v2 metadata by @nulluserid in #1156
- style(opencode): satisfy rustfmt in session_v2 tests by @junhoyeo (ee26e61)
- ci(release): fail fast when the release base is stale by @junhoyeo (b069c85)
- docs(readme): document submit exclusion warnings and the custom-pricing fix path by @thedavidweng in #1167
- fix(scanner): remove nested par_bridge to prevent futex deadlock on large directories by @aruru10313 in #1164
- fix(cli): do not wait on stdout pump thread if headless capture times out by @aruru10313 in #1166
- feat(submit): print a fix hint after unpriced-exclusion warnings by @thedavidweng in #1168
- fix(dsh): count the compaction summarize call, and close two hygiene gaps by @junhoyeo in #1162
- feat(kimi): discover Kimi Work sessions natively by @REMIXPLAYER in #1170
- fix: close two hang/double-count gaps found by adversarial review by @junhoyeo in #1173
- fix(tui): rebuild the aggregate cache when the parser generation changes by @junhoyeo in #1174
- chore(cache): delete the pre-v2 monolith once the shard cache is in use by @junhoyeo in #1176
- chore: resolve strict Clippy warnings by @aruru10313 in #1172
- feat(import): attribute ccusage --by-agent rows to the agent that reported them by @aron-intframe in #1190
- fix(antigravity): parse standalone usage timestamps by @jh-qu in #1151
- fix(core): parse kind-1 updates for VS Code Copilot Chat v3 by @aruru10313 in #1182
- feat(profile): add weekly and monthly ranks by @0thernet in #1179
- feat(embed): add weekly and monthly stats and ranks by @0thernet in #1178
- feat(tui): add light mode (white background) toggle to the interactive TUI by @YunhaoFu in #1177
- feat(usage): add OpenCode Go subscription usage provider by @stevejkang in #1189
- fix(usage): respect Retry-After on Claude 429 and block requests during cooldown by @stevejkang in #1188
- fix(pricing): resolve provider-specific model aliases by @Jackson57279 in #1186
- fix(cursor): extend timeout to 120s for explicit sync of large CSV exports by @aruru10313 in #1183
- fix(cli): work around an Antigravity RPC sync hang on Windows via curl.exe fallback by @marshallcodes in #1180
- fix(copilot): support GH_TOKEN env and legacy Windows hosts path for credential detection by @xtianxx in #1191
- feat(sessions): add Oh My Pi (omp) as a local session source by @bn852j6nky-code in #1161
- fix(leaderboard): match period rank tiebreakers across profile and embed surfaces by @junhoyeo in #1192
- fix(antigravity-cli): read the per-generation timestamp from the agy 1.1.18 gen_metadata layout by @junhoyeo in #1196
- fix(cli): show per-1M prices below a cent instead of rounding them to $0.00 by @junhoyeo in #1197
- fix(pricing): keep the Kimi subscription namespace out of provider-scoped evidence by @junhoyeo in #1200
- fix(antigravity-cli): only infer generation timestamps against a decoded session anchor by @junhoyeo in #1202
- fix(cli): isolate the Windows Antigravity curl fallback from proxy and user config by @junhoyeo in #1203
- fix(pricing): keep subscription-namespace exact matches out of submission by @junhoyeo in #1204
- fix(cli): bound the Windows Antigravity RPC response while it is read by @junhoyeo in #1205
- fix(opencode): bump the parser version for session_v2 metadata selection by @junhoyeo (06ad948)
- fix(cursor): bound the CSV export body while it is read by @junhoyeo (b6eddc4)
- fix(fx): reflect sidecar metadata changes instead of serving a cached parse by @junhoyeo (aaad3f1)
- fix(submit): bound antigravity-cli submissions by the lifetime high-water by @junhoyeo (a8329aa)
- fix(fx): keep an unreported snapshot cost out of the authoritative path by @junhoyeo (f73030f)
- fix(fx): key session-title lookup on the sessions directory, not the id alone by @junhoyeo (0479ee8)
- fix(usage): bound the OpenCode Go response body instead of buffering it whole by @junhoyeo (c802cf6)
- fix(antigravity): bound the optional trajectory enrichment during sync by @junhoyeo (97886c3)
- fix(submit): bound IDE antigravity submissions by the lifetime high-water by @junhoyeo (e3b53f7)
- fix(dsh): bound transcript reads and zstd expansion by @junhoyeo (e746d2b)
New Contributors
- @bn852j6nky-code made their first contribution in #1161
- @xtianxx made their first contribution in #1135
- @marshallcodes made their first contribution in #1127
- @aruru10313 made their first contribution in #1164
- @YunhaoFu made their first contribution in #1177
- @0thernet made their first contribution in #1179
- @jh-qu made their first contribution in #1151
- @aron-intframe made their first contribution in #1128
- @REMIXPLAYER made their first contribution in #1170
- @nulluserid made their first contribution in #1156
- @aravhawk made their first contribution in #1140
- @hetaoBackend made their first contribution in #1136
- @sakuralmx made their first contribution in #1105
- @ashmoonori-afk made their first contribution in #1113
- @Excelius-Wang made their first contribution in #1102
Full Changelog: v4.13.0...v4.14.0
