Repository navigation
Fix quota accuracy and proxy lifetime; add model picker, Proxy page and easier plugins (AI finder) - #357
Open
timrmcclain wants to merge 15 commits into
Open
Fix quota accuracy and proxy lifetime; add model picker, Proxy page and easier plugins (AI finder)#357timrmcclain wants to merge 15 commits into
timrmcclain wants to merge 15 commits into
Conversation
…el picker - Quota panels: a window's color now reflects whether the account is actually blocked by a different, already-exhausted window, instead of showing green just because that window's own percentage looks fine. - Fix pruneQuotaCache silently dropping a stuck-loading reset when no auth files were added or removed (length-only change detection missed it). - Fix Kimi quota parsing treating a genuinely empty (zero-usage) response as an unrecognized-format error. - Decouple the proxy kernel process from the GUI's lifetime: it no longer dies with the GUI on exit, crash, or force-kill (Windows Job Object kill-on-close removed, Linux PR_SET_PDEATHSIG removed), so closing or updating the GUI no longer interrupts active proxy connections. The GUI already had dormant logic to adopt an existing running kernel on launch; this makes that path load-bearing instead of dead code. - Fix desktop_mapping_error misattributing a config error to an inert row that shares a source model with the real offending row. - Add a "pick from catalog" flow for Claude Desktop model aliases: select from already-discovered models instead of typing each one by hand. - Flag a quota window as "just reset" when its remaining% climbs between two successful fetches, since that only happens on an actual reset. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Resolve 19 conflicted files. Where the fork and upstream built parallel versions of the same surface, both are kept when they coexist (Home keeps the account dashboard alongside upstream's overview cards; Agents adopts upstream's AgentClientList and keeps the personal-context banner). Where upstream's refactor supersedes the fork's inline version (usage token composition, events view split into UsageEventsView), upstream wins. xAI quota checks keep the fork's behavior of never sending a paid inference request as a billing fallback. Post-merge fixes: duplicate/missing imports, and version-page controls that referenced the in-app updater the personal edition removed. Verified: tsc clean; cargo test 762 passed, 0 failed; bun test 770 passed, 4 failed -- the same 4 tests fail on clean upstream main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version of the merged build currently installed locally. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream renamed the management API from /auth-files to /credentials; the fork-only dashboard components still called the old paths, so the account dashboard showed no accounts after the merge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
getVersion() was always denied without core:app:allow-version, so the App Version row stayed on "Detecting" unless the update check supplied a value. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Overview now focuses on accounts and quota, with a one-line proxy status that links to the new Proxy page. The Proxy page stays reachable while the proxy is stopped so it can be started from there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The button and the "Core {action} failed" notice shared one key, so the
button showed lowercase "start". Notices now use their own lowercase verbs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The upstream merge replaced this page's row markup, dropping the gray 'blocked by another window' treatment and the 'just reset' note that the Accounts panel and dashboard cards still show. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Advanced settings > Extensions now shows a short guide with an Open Plugins button; the raw native-plugin form sits behind Show advanced settings. - Plugin store shows a Recommended for you section matched to connected account types, with one plain sentence per plugin and a third-party/restart warning. Only entries from the official store listing are recommended. - Bump to 0.3.12+personal-desk.24. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Describe the goal in a sentence; the GUI sends that plus a trimmed public store catalog as one chat request through the local proxy, using the GUI's own client key on the Rust side so it never reaches the webview. A small, fast model is picked automatically. Replies are parsed as untrusted: only ids present in the loaded store are shown (official listing preferred, max three), each with why / what changes / watch out, and installing still goes through the normal install dialog. Bump to 0.3.12+personal-desk.25. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ask the model to name plugins by their catalog name, and replace any catalog ids it still echoes in why/changes/risk/note with the display name. Bump to 0.3.12+personal-desk.26. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An empty Kimi usage reply was recorded as a successful check without a check time, so the account card said "Quota has not been checked yet" next to "The provider did not report usage limits". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
Fixes
pruneQuotaCachecompared only key counts, so resetting an orphanedloadingentry toidlewas silently dropped whenever no accounts were added or removed.{}; that is now treated as "no data yet" instead of an "unrecognized format" error. Payloads with real but wrong-shaped content still error. The empty reply also records its check time, so the card no longer says "not checked yet" next to "no usage limits reported".PR_SET_PDEATHSIGremoved; normal exit records state instead of killing the core). Closing, crashing, or updating the GUI no longer drops active proxy connections. The existingadopt_existing_core_processespath reattaches on next launch; explicit Stop/Restart still stop the core.desktop_mapping_errorrow fix. Error matching now skips rows thathas_mapping()excludes, so a config error is no longer attributed to an inert row that shares a source model.getVersion()was always denied withoutcore:app:allow-version, so the row stayed on "Detecting" unless the update check supplied a value.Features
ask_plugin_finder), using the GUI's own client key on the Rust side so it never reaches the webview. A small, fast model is picked automatically.Merge with current
mainUpstream
mainis merged in (19 conflicted files). Where both sides built the same surface:AgentClientList).UsageEventsView)./credentialsendpoints (they still called/auth-files, so the dashboard showed no accounts after the merge).Note for reviewers
This branch comes from a personal fork and also carries fork-specific customization alongside the fixes above:
0.3.12+personal-desk.26Happy to split the fixes into a smaller PR if that's preferred. The plugin recommendations are a hand-curated list of store ids; that list may be better kept fork-only.
Test plan
tsc --noEmit: cleancargo test: 764 passed, 0 failed, 8 ignoredbun test: 780 passed, 4 failed. The same 4 also fail on unmodified upstreammain(authFileUsageSummary,operationFeedback,textContrast,uiLocalization). In one full run a fifth, timing-sensitive quota test (keeps both secondary pages consistent with Overview for resetDue) failed; it passed 3/3 when run alone.🤖 Generated with Claude Code