Repository navigation
Conversation
Codex rollouts carry no cache_write_input_tokens total, so every real token_count line was skipped and Codex token usage stayed empty. The field is now optional; files an older build walked without counting a line are read once more while this PC has no Codex usage yet. A file cut between its stat and its open is no longer read again from byte 0, a schema version that is not an integer reads as unknown instead of throwing, and a custom range is clamped and drawn per week past a year. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
Codex keeps its sessions under CODEX_HOME when set. A cancellation the caller did not ask for (a hidden session closed under a running read) is a failed read instead of an exception out of the provider. Account names are not cut inside a surrogate pair, and the signer certificate is disposed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
A null entry in hiddenWindows threw on every start and on import. An empty monitor rectangle no longer counts as covered by full screen. Atomic writes flush to disk before the rename. The history CSV gains a label column so several Other series can be told apart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
A --tray start marked the window visible, so it polled at the open window pace. A double click on Copilot's add account added the same login twice. The top resize grip now has the same limits as the bottom one. The update notice and tile chart captions follow a language switch, the top projects percentage uses the number format, and the value axis of the bar chart is no bar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
A per-user in-app update passes /RELAUNCH so Setup starts the app again even when it already closed. Uninstall removes the shortcut from the user's desktop instead of the Public one, portable setup writes no log to the PC, and build.bat quotes paths echoed inside blocks so the Program Files (x86) path of Inno Setup no longer breaks it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
Owner
Author
|
This PR doesn't change Generated by Claude Code |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 changes
These are fixes for the bugs a full source audit found and confirmed. The audit covered providers, stats, services and storage, the UI, and the installer and build. Each finding was checked against the code before it was fixed. The commits are grouped by area.
Token index (Stats)
CodexUsageLogParserrequiredcache_write_input_tokens, and real Codex rollouts never write that field. The repo's own fixturecodex-null-windows.jsonlhas the real shape. The field is now optional, and a missing value keeps the previous total.metakey.TryReadSchemaVersion: a non-integer version (text, real or blob from a backup zip) returns null. Before, it threw past every catch and closed the app.Providers
CODEX_HOMEis honored.WebUsageSource: only the caller's own cancellation propagates. A hidden session that closes under a running read is now a failed read and no longer an exception out ofClaudeProvider.AuthenticodeSignatureis disposed.Services and storage
nullentry inhiddenWindowsno longer crashes start, import or backup inspection.FullscreenWatcher: with no foreground window,default.Covers(default)counted as full screen. Fixed.AtomicFileflushes to disk before the rename.labelcolumn at the end, so Cursor's several "Other" series can be told apart.UI
--traystart leftWindowVisible = true, so the widget polled at the open-window pace and the first show skipped its catch-up refresh.CanExecute.GrowManualHeight. Before, it had no content or screen limit and could slide the window off the screen.CurrentCulture.Installer and build
/RELAUNCH, andWasAppRunninghonors it. Before, the app had usually exited before Setup'sFindWindowran. A per-machine update gets no switch, because it would relaunch elevated.{userdesktop}\AI-Usage.lnk. Before, it deleted{autodesktop}, which is the Public desktop on a per-machine install.%LOCALAPPDATA%.build.batquotes paths echoed inside blocks. Before,echo Using %ISCC%withProgram Files (x86)closed theelseblock early.Not changed (found, but they need a decision first)
--resumeare counted again. That needs a design change.DelTreeon a folder the user picked is too risky to do automatically.runas.ExtraDiskSpaceRequiredmay double the size Setup asks for.How it was tested
Every fix comes with a regression test that fails without the fix. The exceptions are
App.xaml.cs,MainWindow.GrowUp, the installer andbuild.bat, which have no test harness.The build with warnings as errors is green (
dotnet build tests/AiUsage.Tests, built on Linux withEnableWindowsTargeting). The tests themselves need Windows/WPF, so they were not run locally; CI onwindows-latestruns them.dotnet test tests/AiUsage.Testspasses (CI)Strings.resxandStrings.de.resx(no new UI text)🤖 Generated with Claude Code
https://claude.ai/code/session_015EdKSSA9Z5o4FHYiLZajUL
Generated by Claude Code