0.89.0
oxc-project/oxc0.89.0Sep 25, 2026by takahirom
Upgrading?
AI Summary
Arbigent desktop app release that bundles necessary Java modules and improves error logging for API rate limits.
Key Highlights
- Desktop app now bundles required Java modules to prevent crashes.
- HTTP 429 errors now display the provider's specific error body (e.g., insufficient_quota).
- API keys and error bodies are redacted in logs.
New Features
- Java module bundling for keyring and database support.
- Enhanced 429 error logging with provider details.
Full Release Notes
The packaged desktop app no longer fails on missing Java modules, and a 429 from the AI provider now says why it was returned.
## The Packaged App Bundles the Java Modules It Uses (#456)
The dmg/msi/deb ship a trimmed Java runtime that only had the modules Compose Desktop includes by default. On Linux, saving an API key failed with `BackendNotSupportedException: No available keyring backend found`, because the keyring backend needs `jdk.security.auth`. Playing a scenario failed with `NoClassDefFoundError: java/sql/Timestamp` from Maestro's JS engine, which needs `java.sql`; this was reproduced on the macOS app, and the Linux and Windows packages use the same trimmed runtime.
The runtime now includes the modules `./gradlew arbigent-ui:suggestRuntimeModules` reports for the app's dependencies. The dmg grows by about 2 MB (from 235.5 MB to 237.6 MB on macOS), and the installed app by about 7 MB. `arbigent` CLI runs on your own JDK and is unaffected.
Thank you, @rlanyi, for the report in #449, which already narrowed both failures down to the missing modules with `--limit-modules`.
## A 429 Shows the Provider's Error Body (#457)
OpenAI returns HTTP 429 both for a temporary rate limit and for `insufficient_quota`, and Gemini, Azure OpenAI and other OpenAI-compatible endpoints send their own 429 bodies. Every 429 used to be logged as a plain `Rate limit exceeded`. The provider's body is now in the message, for OpenAI-compatible endpoints and Anthropic alike:
```
I: Rate limit exceeded: {"error":{"message":"You exceeded your current quota, please check your plan and billing details. ...","type":"insufficient_quota","code":"insufficient_quota"}}. Waiting for 10 seconds.
```
The retry behavior does not change: a 429 is still waited out and retried, so you can now see from the log whether waiting will help.
Error bodies for 429 and other API errors reach logs, step feedback and reports, so they are redacted first. The configured API key is removed as before, and API-key-like tokens that a provider echoes back (`sk-...`, `AIza...`, such as the partially masked key in OpenAI's 401 message) are replaced with `****` in full. The body is capped at 1,000 characters.
Thank you, @rlanyi, for reporting in #450 that `insufficient_quota` was hidden behind the rate limit message.
## What's Changed
* Bundle the runtime modules the packaged UI needs by @takahirom in https://github.com/takahirom/arbigent/pull/456
* Show the provider's 429 error body and mask API keys in API errors by @takahirom in https://github.com/takahirom/arbigent/pull/457
**Full Changelog**: https://github.com/takahirom/arbigent/compare/0.88.0...0.89.0
Related Repositories
farion1231/cc-switch★ 147,222
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
rustdesk/rustdesk★ 126,546
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
tauri-apps/tauri★ 112,094
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
ruvnet/RuView★ 99,052
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
oven-sh/bun★ 96,338
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one