# v0.4.55 (2026-05-18)

## Features
- Xiaomi MiMo Token Plan: region selector (Singapore / China / Europe) — keys are cluster-specific
- Antigravity: risk confirmation dialog before first connection
- Gemini CLI: surface upstream retry delay on 429 errors

## Fixes
- MITM: cannot kill process on macOS under sudo (lsof not found in PATH)
- Stream: false-positive stall timeout on Claude reasoning / Kiro responses
- Tunnel: cannot re-enable after disable (stuck state)
- Tunnel: cloudflared error messages now include log tail for easier debugging
- Language switcher: applies selected locale immediately on close (#1234)
- Antigravity OAuth: metadata now matches the official client

## Improvements
- Gemini CLI: bump engine to 0.34.0
- Re-hide `qwen` (OAuth EOL) and `iflow` (not ready) providers
This commit is contained in:
decolua committed 2026-05-18 16:26:35 +07:00
1 parent 90a47c3f29
commit 613a0a819a
12 files changed
+125 -47

No files matched your search

@@ -49,8 +49,40 @@ export default function ProviderDetailPage() {
const [kiloFreeModels, setKiloFreeModels] = useState([]);
const [disabledModelIds, setDisabledModelIds] = useState([]);
const [confirmState, setConfirmState] = useState(null);
const [showAgRiskModal, setShowAgRiskModal] = useState(false);
const { copied, copy } = useCopyToClipboard();
const AG_RISK_STORAGE_KEY = "ag_risk_confirmed";
const triggerAddConnection = () => {
if (providerId === "antigravity" && typeof window !== "undefined") {
const confirmed = window.localStorage.getItem(AG_RISK_STORAGE_KEY) === "true";
if (!confirmed) {
setShowAgRiskModal(true);
return;
}
}
if (isOAuth) {
setShowOAuthModal(true);
return;
}
setAddConnectionError("");
setShowAddApiKeyModal(true);
};
const handleAgRiskConfirm = () => {
if (typeof window !== "undefined") {
window.localStorage.setItem(AG_RISK_STORAGE_KEY, "true");
}
setShowAgRiskModal(false);
if (isOAuth) {
setShowOAuthModal(true);
return;
}
setAddConnectionError("");
setShowAddApiKeyModal(true);
};
const providerInfo = providerNode
? {
id: providerNode.id,
@@ -1066,14 +1098,7 @@ export default function ProviderDetailPage() {
<Button
size="sm"
icon="add"
onClick={() => {
if (isOAuth) {
setShowOAuthModal(true);
return;
}
setAddConnectionError("");
setShowAddApiKeyModal(true);
}}
onClick={triggerAddConnection}
>
{isCompatible ? "Add API Key" : (providerId === "iflow" ? "OAuth" : "Add Connection")}
</Button>
@@ -1099,14 +1124,7 @@ export default function ProviderDetailPage() {
<Button
size="sm"
icon="add"
onClick={() => {
if (isOAuth) {
setShowOAuthModal(true);
return;
}
setAddConnectionError("");
setShowAddApiKeyModal(true);
}}
onClick={triggerAddConnection}
className="w-full sm:w-auto"
>
Add
@@ -1242,6 +1260,18 @@ export default function ProviderDetailPage() {
/>
)}
{/* AG Risk Confirmation Modal */}
<ConfirmModal
isOpen={showAgRiskModal}
onClose={() => setShowAgRiskModal(false)}
onConfirm={handleAgRiskConfirm}
title="Risk Notice"
message={providerInfo?.deprecationNotice}
confirmText="I Understand, Continue"
cancelText="Cancel"
variant="danger"
/>
{/* Confirm Modal */}
<ConfirmModal
isOpen={!!confirmState}