Repository navigation
Conversation
Providers - Codex: bound window lengths to a plausible range so an absurd window_minutes can no longer throw and break every local read; read reset instants in seconds or milliseconds in both parsers. - Claude: the session token sum and waiting mark follow the main transcript, never a running subagent's file. - Claude/Codex: local reads honour cancellation and are serialised, so a timed-out read still running cannot corrupt the retry's state. - Antigravity: a revoked stored token is refreshed once before the tile reports "not signed in". - Claude discovery reports a rate-limited site as blocked. - Cache the parsed ~/.claude.json label; generated regex for gh output; share the empty snapshot helper; correct misplaced doc comments. Installer and security - Use FindWindowExW: the A form never matched, so a silent upgrade never relaunched the app. - Relaunch after an elevated in-app update through the shell, not with the admin token. - Remove Task Manager's StartupApproved marker on uninstall. - Refuse ProgramData as a moved data folder during elevated cleanup. - Runtime setup checks its download folder holds only the installer before starting it elevated. - Sanitize the 8.3 short profile path in logs; dispose signer certificates; extend .gitignore (binlogs, key stores, IDE state, backups). Services - Retry a tray icon the shell refused at sign-in. - Serialise status file writes so an older document never lands last. - Debounce theme re-application on bursts of colour notices. - Recognise fused plan tokens such as max5x. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NFFCwGNZt9EaKWfAt9JXjp
Statistics and storage - One HistoryStore is shared by the main, settings and statistics view models, so deleted history cannot be written back by another instance and a data-folder move redirects every reader. - The first index walk uses the loaded source-file list instead of a full-table query per new file. - A damaged stats.db is set aside and rebuilt from the session logs. - Negative token counts are ignored; a clock set back no longer stops history writes; leftover cache temp files are swept; the project colour cache is written atomically; the indexer's previous cancellation source is disposed. - A moved data folder created by the app is private to the user. UI - Esc inside an open popup closes the popup, not the statistics window. - The update notice wraps instead of clipping in German. - Resizing measures the tallest content once per drag and coalesces density passes. - A second sign-out while one runs no longer reports a false failure. - The widget stays hidden while the welcome dialog is open. - Settings rows are moved, not rebuilt, when tiles are reordered. - Thread-safe access to user-started fetches; frozen caption pen; trimmed filter chips; consistent padding and dimming; shared label/value format; accessible sign-in button names. - Localization work in progress: hotkey names, culture-aware day and month names, notification and WebView2 texts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NFFCwGNZt9EaKWfAt9JXjp
The custom setup messages now match Inno's own German wizard text
("Sie"), the update folder page no longer repeats the Next/Browse
instruction shown beside it, and the source link says "Fehlerberichte".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NFFCwGNZt9EaKWfAt9JXjp
- Update the tests that pinned "fast aufgebraucht" and the sign-in show sequence, and keep the sanitizer's doc comment free of a path the ship-clean scan rejects. - Release the held status file from its own thread so a busy test run cannot starve it past the writer's retries. - Move doc comments back onto the members they describe and dispose the Windows identity used for the private data folder. - Read each session file once per walk even when configured roots overlap, now that new files no longer ask the index first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NFFCwGNZt9EaKWfAt9JXjp
Importing another PC's history unpacked the token index twice, once for the schema check and once more for the import; the checked copy is now the import source. Records without a project and models past the top ones were grouped and told apart by their translated labels, so a project folder named "Ohne Projekt" or a model called "Other" merged into those groups or toggled the wrong filter. Grouping now uses a key no folder can carry, and the pooled rows and slices are marked as such; the labels shown are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NFFCwGNZt9EaKWfAt9JXjp
Owner
Author
|
Merged into main as 760d50b (squashed), with follow-up fixes on top. |
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
Fixes from a full project review covering security and privacy, code quality and performance, UI and localization. No feature was removed or redesigned.
Security and privacy
.gitignorenow also covers binlogs, key stores, IDE state and the app's own backups.Bugs and crashes
window_minutesvalue threw and broke every local read. Window lengths are now bounded.FindWindowExAnever matched the app window, so a silent upgrade never relaunched the app. It now usesFindWindowExW.max5xare recognised.stats.dbis set aside and rebuilt from the session logs instead of failing forever.Performance
~/.claude.jsonis cached by file stamp instead of parsed on every refresh.ghoutput regex is generated instead of rebuilt on every call.UI and localization
How it was tested
dotnet build tests/AiUsage.Tests -c Release: 0 warnings, 0 errors, with warnings as errors and analyzers on.Windows CI on the current head: all tests pass, and CodeQL is clean.
WPF-free tests were also run on Linux against the built app assembly. The JS discovery scripts were run in Node against stubbed routes.
New tests cover:
max5xplans, the short profile path, the ProgramData exclusion.No screenshots: the visible changes are small (wrapping, trimming, padding).
dotnet test tests/AiUsage.Testspasses (CI)New user-facing text is in both
Strings.resxandStrings.de.resxNo call to a chat or completion endpoint, no write to another tool's files
Left open on purpose
🤖 Generated with Claude Code
https://claude.ai/code/session_01NFFCwGNZt9EaKWfAt9JXjp