v3.9.7 — Forward real codebuff error messages, fix BrokenPipeError crash, fix SyntaxWarnings
This commit is contained in:
@@ -26,7 +26,38 @@ model_catalog_json = ""
|
||||
"""
|
||||
|
||||
CHANGELOG = [
|
||||
("3.8.3", "2026-05-24", [
|
||||
("3.9.7", "2026-05-25", [
|
||||
"Forward real Codebuff error messages to user (not generic 429)",
|
||||
"Return HTTP 200 with Responses API format for rate limits so Codex displays message",
|
||||
"Extract retryAfterMs from Codebuff 429 responses for accurate cooldown",
|
||||
"RateLimitError carries upstream message through session + chat error paths",
|
||||
"BrokenPipeError crash fix on 'all accounts exhausted' response",
|
||||
"Fix 3 SyntaxWarnings for invalid escape sequences in docstrings",
|
||||
"_codebuff_start_run returns actual error body instead of None",
|
||||
]),
|
||||
("3.9.6", "2026-05-25", [
|
||||
"Fix Gemini follow-up turns returning text-only instead of tool calls",
|
||||
"Enforce latest user instruction as final Gemini content turn",
|
||||
"Edit-intent detection with tool-use nudge for file modification requests",
|
||||
"Debug logging: contents count, latest user text, final content preview",
|
||||
"Thought signature preservation for Gemini 3 tool-call continuity",
|
||||
"thought_signature field on all functionCall parts (snake_case)",
|
||||
"Smart tool output compaction: old=3000, recent=20000 chars",
|
||||
"Follow-through guardrail system instruction for autonomous agent behavior",
|
||||
"Stream hang fix for function-call-only responses",
|
||||
"Multi-account rotation for codebuff, Google OAuth, API keys",
|
||||
"/v1/accounts endpoint for account pool status",
|
||||
]),
|
||||
("3.9.0", "2026-05-24", [
|
||||
"Multi-account rotation for OAuth providers (codebuff, Google, API keys)",
|
||||
"Automatic failover: when one account hits rate limit, next is used",
|
||||
"Codebuff: supports accounts[] array in credentials.json",
|
||||
"Google OAuth: supports multiple token files (google-*-oauth-token-N.json)",
|
||||
"API keys: comma-separated keys rotate on 429 errors",
|
||||
"New /v1/accounts endpoint shows account pool status",
|
||||
"Added x-codebuff-model and x-codebuff-instance-id headers",
|
||||
]),
|
||||
("3.8.4", "2026-05-24", [
|
||||
"FIXED: Codebuff streaming — SSE events now reach Codex client",
|
||||
"Root cause: stream_buffered_events was never called for codebuff",
|
||||
"Codebuff stream uses buffered flushing (30ms / 4KB / urgent)",
|
||||
@@ -1706,7 +1737,7 @@ class LauncherWin(Gtk.Window):
|
||||
# header row
|
||||
hdr = Gtk.Box(spacing=8)
|
||||
vbox.pack_start(hdr, False, False, 0)
|
||||
lbl = Gtk.Label(label="<b>Codex Launcher v3.8.3</b>")
|
||||
lbl = Gtk.Label(label="<b>Codex Launcher v3.9.7</b>")
|
||||
lbl.set_use_markup(True)
|
||||
hdr.pack_start(lbl, False, False, 0)
|
||||
changelog_btn = Gtk.Button(label="Changelog")
|
||||
@@ -3495,7 +3526,7 @@ class EditEndpointDialog(Gtk.Dialog):
|
||||
auth_url = "https://codebuff.com/api/auth/cli/code"
|
||||
body = json.dumps({"fingerprintId": fingerprint_id}).encode()
|
||||
req = urllib.request.Request(auth_url, data=body,
|
||||
headers={"Content-Type": "application/json", "User-Agent": "codex-launcher/3.8.3"})
|
||||
headers={"Content-Type": "application/json", "User-Agent": "codex-launcher/3.9.7"})
|
||||
resp = urllib.request.urlopen(req, timeout=30)
|
||||
data = json.loads(resp.read())
|
||||
login_url = data.get("loginUrl", "") or data.get("login_url", "")
|
||||
@@ -3520,7 +3551,7 @@ class EditEndpointDialog(Gtk.Dialog):
|
||||
time.sleep(2)
|
||||
try:
|
||||
poll_req = urllib.request.Request(poll_url,
|
||||
headers={"User-Agent": "codex-launcher/3.8.3"})
|
||||
headers={"User-Agent": "codex-launcher/3.9.7"})
|
||||
poll_resp = urllib.request.urlopen(poll_req, timeout=10)
|
||||
poll_data = json.loads(poll_resp.read())
|
||||
user = poll_data.get("user")
|
||||
|
||||
Reference in New Issue
Block a user