Files
orca/tests
0ee0290cc3 feat(accounts): save MiniMax and GLM Coding Plan keys on the Settings host (#30862)
* 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>
2026-10-19 23:46:28 -04:00
..