0.89.0
takahirom/arbigent0.89.0Sep 25, 2026by takahirom
Upgrading?
AI Summary
Fixes packaged desktop app crashes due to missing Java modules and improves API error logging.
Key Highlights
- Bundles necessary Java modules (Compose dependencies) to fix keyring and SQL errors.
- 429 errors now display the provider's specific error body (e.g., insufficient_quota).
- API keys are masked in error logs and reports.
New Features
- Fixed packaged app Java module issues
- Enhanced 429 error reporting
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
mtkresearch/BreezeApp★ 243
BreezeAPP 是一款為 Android 和 iOS 平台開發的純手機 AI 應用程式。從 App Store下載,即可在不連網的狀態下享受多項 AI 功能。源碼由聯發創新基地(MediaTek Research)提供。我們旨在推廣兩個概念: 人人都可以在自己的手機上自由選擇並運行不同的LLM - one is free to choose one's own LLM to run on a phone,以及任何app開發者都可以輕鬆寫作創意的純手機AI應用 - any dev can create purely phone-based AI apps easily。
public-apis/public-apis★ 491,136
A collective list of free APIs
openclaw/openclaw★ 392,704
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,073
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 358,127
Reverse engineer anything with agents, from app behavior down to native binaries.