mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
* feat(accounts): save MiniMax and GLM Coding Plan keys on the Settings host The usage poller on an SSH, `orca serve` or paired server reads these keys from that machine's ~/.orca, but Settings could only write them on this computer, so those hosts never showed the meters. New accounts.* RPC methods (advertised as accounts.usage-credentials.v1) save, clear and report the keys on the host and refresh its usage. Settings routes the MiniMax and GLM sections, and their endpoint/site settings, to the host picked in the page; an older host is asked to update instead of the key being saved locally. Co-Authored-By: Claude <noreply@anthropic.com> * fix(accounts): a host whose desktop owns its accounts refuses usage keys instead of storing them unread A WSL host's server has no usage poller, so a key saved there was reported saved yet never read. Every usage-credential method now throws the same desktop-owns-these-accounts message as the other account methods, and the host stops advertising accounts.usage-credentials.v1. Co-Authored-By: Claude <noreply@anthropic.com> * fix(accounts): a paired client never overwrites a usage key the other Orca app on that machine sealed The desktop app (safeStorage) and orcad (its own host key) share ~/.orca but cannot open each other's sealed files. A remote save or forget of a MiniMax or GLM key that this host cannot read is now refused, and the status reports it so Settings locks that key and says to change it in the other app. Blank keys now fail parameter validation. Co-Authored-By: Claude <noreply@anthropic.com> * fix(accounts): only blame the other Orca app for a key it really sealed, and always allow forgetting Any read failure was treated as "saved by another Orca app", so a corrupt file, a permission error or a host that cannot decrypt at all locked the key with a false message and refused Forget, the only recovery. The host now reads the file itself: only a well-formed encrypted envelope that a working store cannot open counts as sealed elsewhere and blocks Replace; anything else is reported as unreadable and stays editable. Forget is always allowed, and the check logs nothing per status poll. Co-Authored-By: Claude <noreply@anthropic.com> * test(e2e): fail clearly when the orcad slot is missing instead of passing null as the program Co-Authored-By: Claude <noreply@anthropic.com> * fix(settings): name the host in remote key descriptions, give the MiniMax API key its own failure toast, and treat malformed sealed files as unreadable --------- Co-authored-by: Jinwoo-H <e2e@test.local> Co-authored-by: Claude <noreply@anthropic.com>