v3.9.9 — Refresh Antigravity models: Gemini 3.5 Flash, Claude 4.6, GPT-OSS 120B

This commit is contained in:
Roman
2026-05-25 12:29:41 +04:00
Unverified
parent ea63eb3a3f
commit 70096fae0c
5 changed files with 47 additions and 25 deletions

View File

@@ -1,5 +1,21 @@
# Changelog # Changelog
## v3.9.9 (2026-05-25)
**Antigravity Model Refresh**
### Updated Models
- **Gemini 3.5 Flash** (High / Medium) — new flagship flash model
- **Gemini 3.1 Pro** (High / Low) — tiered reasoning control
- **Claude Sonnet 4.6 Thinking** — Anthropic partner model via Antigravity
- **Claude Opus 4.6 Thinking** — Anthropic partner model via Antigravity
- **GPT-OSS 120B Medium** — open-weight GPT model via Antigravity
- Removed stale `antigravity-*` prefixed IDs and old preview models
### Proxy Updates
- Alias map updated for tiered model IDs (high/medium/low/thinking)
- Context sizes added for all new Antigravity models
## v3.9.8 (2026-05-25) ## v3.9.8 (2026-05-25)
**Codex Desktop Model Fix & Global BrokenPipeError Protection** **Codex Desktop Model Fix & Global BrokenPipeError Protection**

Binary file not shown.

View File

@@ -3,11 +3,11 @@ set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
if [ -f "$SCRIPT_DIR/codex-launcher_3.9.8_all.deb" ]; then if [ -f "$SCRIPT_DIR/codex-launcher_3.9.9_all.deb" ]; then
echo "Installing codex-launcher_3.9.8_all.deb ..." echo "Installing codex-launcher_3.9.9_all.deb ..."
sudo dpkg -i "$SCRIPT_DIR/codex-launcher_3.9.8_all.deb" sudo dpkg -i "$SCRIPT_DIR/codex-launcher_3.9.9_all.deb"
echo "" echo ""
echo "Installed v3.9.8 via .deb package." echo "Installed v3.9.9 via .deb package."
echo " translate-proxy.py -> /usr/bin/translate-proxy.py" echo " translate-proxy.py -> /usr/bin/translate-proxy.py"
echo " codex-launcher-gui -> /usr/bin/codex-launcher-gui" echo " codex-launcher-gui -> /usr/bin/codex-launcher-gui"
echo " cleanup-codex-stale -> /usr/bin/cleanup-codex-stale.sh" echo " cleanup-codex-stale -> /usr/bin/cleanup-codex-stale.sh"

View File

@@ -26,6 +26,11 @@ model_catalog_json = ""
""" """
CHANGELOG = [ CHANGELOG = [
("3.9.9", "2026-05-25", [
"Refresh Antigravity preset: Gemini 3.5 Flash, Gemini 3.1 Pro, Claude Sonnet/Opus 4.6, GPT-OSS 120B",
"Fix Antigravity alias map for new tiered model IDs (high/medium/low/thinking)",
"Add model context sizes for Gemini 3.5 Flash, Gemini 3.1 Pro, Claude 4.6, GPT-OSS 120B",
]),
("3.9.8", "2026-05-25", [ ("3.9.8", "2026-05-25", [
"Fix Codex Desktop sending wrong model (gpt-5.4-mini) instead of selected model", "Fix Codex Desktop sending wrong model (gpt-5.4-mini) instead of selected model",
"Proxy remaps Desktop forced models to user-selected model via CODEX_LAUNCHER_MODEL", "Proxy remaps Desktop forced models to user-selected model via CODEX_LAUNCHER_MODEL",
@@ -342,13 +347,11 @@ PROVIDER_PRESETS = {
"base_url": "https://daily-cloudcode-pa.sandbox.googleapis.com", "base_url": "https://daily-cloudcode-pa.sandbox.googleapis.com",
"oauth_provider": "google-antigravity", "oauth_provider": "google-antigravity",
"models": [ "models": [
"antigravity-gemini-3-flash", "gemini-3.5-flash-high", "gemini-3.5-flash-medium",
"antigravity-gemini-3-pro", "gemini-3.1-pro-high", "gemini-3.1-pro-low",
"antigravity-gemini-3.1-pro", "claude-sonnet-4.6-thinking",
"antigravity-claude-sonnet-4-6", "claude-opus-4.6-thinking",
"antigravity-claude-opus-4-6-thinking", "gpt-oss-120b-medium",
"gemini-2.5-flash", "gemini-2.5-pro",
"gemini-3-flash-preview", "gemini-3-pro-preview", "gemini-3.1-pro-preview",
], ],
}, },
"OpenAdapter": { "OpenAdapter": {
@@ -1749,7 +1752,7 @@ class LauncherWin(Gtk.Window):
# header row # header row
hdr = Gtk.Box(spacing=8) hdr = Gtk.Box(spacing=8)
vbox.pack_start(hdr, False, False, 0) vbox.pack_start(hdr, False, False, 0)
lbl = Gtk.Label(label="<b>Codex Launcher v3.9.8</b>") lbl = Gtk.Label(label="<b>Codex Launcher v3.9.9</b>")
lbl.set_use_markup(True) lbl.set_use_markup(True)
hdr.pack_start(lbl, False, False, 0) hdr.pack_start(lbl, False, False, 0)
changelog_btn = Gtk.Button(label="Changelog") changelog_btn = Gtk.Button(label="Changelog")
@@ -3539,7 +3542,7 @@ class EditEndpointDialog(Gtk.Dialog):
auth_url = "https://codebuff.com/api/auth/cli/code" auth_url = "https://codebuff.com/api/auth/cli/code"
body = json.dumps({"fingerprintId": fingerprint_id}).encode() body = json.dumps({"fingerprintId": fingerprint_id}).encode()
req = urllib.request.Request(auth_url, data=body, req = urllib.request.Request(auth_url, data=body,
headers={"Content-Type": "application/json", "User-Agent": "codex-launcher/3.9.8"}) headers={"Content-Type": "application/json", "User-Agent": "codex-launcher/3.9.9"})
resp = urllib.request.urlopen(req, timeout=30) resp = urllib.request.urlopen(req, timeout=30)
data = json.loads(resp.read()) data = json.loads(resp.read())
login_url = data.get("loginUrl", "") or data.get("login_url", "") login_url = data.get("loginUrl", "") or data.get("login_url", "")
@@ -3564,7 +3567,7 @@ class EditEndpointDialog(Gtk.Dialog):
time.sleep(2) time.sleep(2)
try: try:
poll_req = urllib.request.Request(poll_url, poll_req = urllib.request.Request(poll_url,
headers={"User-Agent": "codex-launcher/3.9.8"}) headers={"User-Agent": "codex-launcher/3.9.9"})
poll_resp = urllib.request.urlopen(poll_req, timeout=10) poll_resp = urllib.request.urlopen(poll_req, timeout=10)
poll_data = json.loads(poll_resp.read()) poll_data = json.loads(poll_resp.read())
user = poll_data.get("user") user = poll_data.get("user")

View File

@@ -335,7 +335,7 @@ def _codebuff_get_session(token, model):
req = urllib.request.Request(url, data=body, headers={ req = urllib.request.Request(url, data=body, headers={
"Content-Type": "application/json", "Content-Type": "application/json",
"Authorization": f"Bearer {token}", "Authorization": f"Bearer {token}",
"User-Agent": "codex-launcher/3.9.8", "User-Agent": "codex-launcher/3.9.9",
"x-codebuff-model": model, "x-codebuff-model": model,
}) })
try: try:
@@ -383,7 +383,7 @@ def _codebuff_start_run(token, agent_id):
req = urllib.request.Request(url, data=body, headers={ req = urllib.request.Request(url, data=body, headers={
"Content-Type": "application/json", "Content-Type": "application/json",
"Authorization": f"Bearer {token}", "Authorization": f"Bearer {token}",
"User-Agent": "codex-launcher/3.9.8", "User-Agent": "codex-launcher/3.9.9",
}) })
try: try:
resp = urllib.request.urlopen(req, timeout=15) resp = urllib.request.urlopen(req, timeout=15)
@@ -416,7 +416,7 @@ def _codebuff_finish_run(token, run_id, status="completed"):
req = urllib.request.Request(url, data=body, headers={ req = urllib.request.Request(url, data=body, headers={
"Content-Type": "application/json", "Content-Type": "application/json",
"Authorization": f"Bearer {token}", "Authorization": f"Bearer {token}",
"User-Agent": "codex-launcher/3.9.8", "User-Agent": "codex-launcher/3.9.9",
}) })
try: try:
urllib.request.urlopen(req, timeout=10) urllib.request.urlopen(req, timeout=10)
@@ -1588,6 +1588,9 @@ _MODEL_CONTEXT = {
"claude-sonnet": 200000, "claude-haiku": 200000, "claude-sonnet": 200000, "claude-haiku": 200000,
"glm-5.1": 128000, "glm-5": 128000, "glm-4": 128000, "glm-5.1": 128000, "glm-5": 128000, "glm-4": 128000,
"deepseek": 64000, "gemini-2.5-flash": 1000000, "gemini-2.5-pro": 2000000, "deepseek": 64000, "gemini-2.5-flash": 1000000, "gemini-2.5-pro": 2000000,
"gemini-3.5-flash": 1000000, "gemini-3.1-pro": 2000000,
"claude-sonnet-4.6-thinking": 200000, "claude-opus-4.6-thinking": 200000,
"gpt-oss-120b": 128000,
"mimo": 32768, "minimax": 32768, "kimi": 128000, "mimo": 32768, "minimax": 32768, "kimi": 128000,
"_default": 32768, "_default": 32768,
} }
@@ -4312,13 +4315,13 @@ class Handler(http.server.BaseHTTPRequestHandler):
"antigravity-gemini-3-flash": "gemini-3-flash", "antigravity-gemini-3-flash": "gemini-3-flash",
"antigravity-gemini-3-pro": "gemini-3-pro-low", "antigravity-gemini-3-pro": "gemini-3-pro-low",
"antigravity-gemini-3.1-pro": "gemini-3.1-pro-low", "antigravity-gemini-3.1-pro": "gemini-3.1-pro-low",
"antigravity-claude-sonnet-4-6": "claude-sonnet-4.6-thinking",
"antigravity-claude-opus-4-6-thinking": "claude-opus-4.6-thinking",
"gemini-3-flash-preview": "gemini-3-flash", "gemini-3-flash-preview": "gemini-3-flash",
"gemini-3-pro-preview": "gemini-3-pro-low", "gemini-3-pro-preview": "gemini-3.1-pro-high",
"gemini-3.1-pro-preview": "gemini-3.1-pro-low", "gemini-3.1-pro-preview": "gemini-3.1-pro-high",
"gemini-3-pro": "gemini-3-pro-low", "gemini-3-pro": "gemini-3.1-pro-high",
"gemini-3.1-pro": "gemini-3.1-pro-low", "gemini-3.1-pro": "gemini-3.1-pro-high",
"antigravity-claude-sonnet-4-6": "claude-sonnet-4-6",
"antigravity-claude-opus-4-6-thinking": "claude-opus-4-6-thinking",
} }
model = alias_map.get(model, model) model = alias_map.get(model, model)
if model != original_model: if model != original_model:
@@ -5311,7 +5314,7 @@ class Handler(http.server.BaseHTTPRequestHandler):
headers = { headers = {
"Content-Type": "application/json", "Content-Type": "application/json",
"Authorization": f"Bearer {token}", "Authorization": f"Bearer {token}",
"User-Agent": "codex-launcher/3.9.8", "User-Agent": "codex-launcher/3.9.9",
"x-codebuff-model": model, "x-codebuff-model": model,
} }
if instance_id: if instance_id:
@@ -5477,7 +5480,7 @@ class Handler(http.server.BaseHTTPRequestHandler):
if body.get("tool_choice"): if body.get("tool_choice"):
chat_body["tool_choice"] = body["tool_choice"] chat_body["tool_choice"] = body["tool_choice"]
target = f"{_CODEBUFF_API_URL}/api/v1/chat/completions" target = f"{_CODEBUFF_API_URL}/api/v1/chat/completions"
headers = {"Content-Type": "application/json", "Authorization": f"Bearer {token}", "User-Agent": "codex-launcher/3.9.8", "x-codebuff-model": model} headers = {"Content-Type": "application/json", "Authorization": f"Bearer {token}", "User-Agent": "codex-launcher/3.9.9", "x-codebuff-model": model}
if instance_id: if instance_id:
headers["x-codebuff-instance-id"] = instance_id headers["x-codebuff-instance-id"] = instance_id
print(f"[codebuff] retry POST {target} model={model} stream={stream} run={run_id} (thinking disabled via DeepSeek native)", file=sys.stderr) print(f"[codebuff] retry POST {target} model={model} stream={stream} run={run_id} (thinking disabled via DeepSeek native)", file=sys.stderr)