diff --git a/CHANGELOG.md b/CHANGELOG.md index df47562..3fed646 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## v3.10.6 (2026-05-25) + +**Freebuff Integration + Codebuff OAuth Fix + Windows Consolidation** + +### Freebuff (Free DeepSeek/Kimi) +- **Freebuff integration**: Free DeepSeek/Kimi models via codebuff.com API +- Fixed User-Agent to match official SDK: `ai-sdk/openai-compatible/1.0.25/codebuff` +- Fixed metadata fields: `freebuff_instance_id` + `client_id` (base36 random) + `cost_mode: "free"` +- Fixed session endpoint: POST empty `{}` body (not `{"model": model}`) +- GUI preset aliases: "Freebuff (Free DeepSeek/Kimi)", "FreeBuff", "Codebuff (Free DeepSeek/Kimi)" all map to same backend + +### Codebuff Fix +- Fixed Codebuff OAuth: use `www.codebuff.com` (bare `codebuff.com` returns 307 redirect) + +### Windows +- Windows GUI files consolidated into `src/` (merged by cobra91 via PR #1 and PR #2) + +### Proxy & GUI Improvements (cobra91 PR #3) +- CROF adaptive logic gated to `crof.ai` only — no more log pollution for other providers +- Data directory consolidation: all data now in `codex-proxy/` (was split across `codex-desktop/`, `codex-launcher/`, `codex-proxy/`) +- Sticky proxy port: persists in `.last-proxy-port`, reused on restart so Codex Desktop keeps connection +- Adaptive compact budget raised from 60% to 80% — avoids premature compaction on large-context models (DeepSeek v4 Pro 1M) +- Config cleanup fix: stale `proxy-*.json` cleanup moved after `_init_runtime()` to avoid deleting active config +- Windows GUI: added Clear Log, Restart Proxy, View Log buttons + ## v3.10.5 (2026-05-25) **Windows GUI + Context Compaction for Antigravity/Gemini OAuth** diff --git a/README.md b/README.md index 97bee2d..1317250 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ If you want fork it, use the Github copy, here it is:
Run OpenAI Codex CLI & Desktop with any AI provider.
- Google Antigravity • Gemini CLI • OpenCode • Z.AI • Anthropic • Command Code • Codebuff • OpenRouter • Crof.ai • NVIDIA NIM • OpenAdapter • Kilo.ai • DeepSeek • and more
+ Google Antigravity • Gemini CLI • OpenCode • Z.AI • Anthropic • Command Code • Freebuff • OpenRouter • Crof.ai • NVIDIA NIM • OpenAdapter • Kilo.ai • DeepSeek • and more
@@ -630,7 +630,7 @@ curl http://127.0.0.1:PORT/v1/accounts | OpenCode Zen | OpenAI-compat | `https://opencode.ai/zen/v1` | | OpenCode Go | OpenAI-compat | `https://opencode.ai/zen/go/v1` | | Command Code | Command Code | `https://api.commandcode.ai` | -| **Codebuff** | **Codebuff** | `https://codebuff.com` *(free DeepSeek/Kimi — OAuth login built-in)* | +| **Codebuff / Freebuff** | **Codebuff** | `https://www.codebuff.com` *(free DeepSeek/Kimi — OAuth login built-in)* | | Crof.ai | OpenAI-compat | `https://crof.ai/v1` | | OpenAdapter | OpenAI-compat | `https://api.openadapter.in/v1` | | Z.ai Coding | OpenAI-compat | `https://api.z.ai/api/coding/paas/v4` | @@ -643,14 +643,14 @@ curl http://127.0.0.1:PORT/v1/accounts | Google Antigravity (OAuth) | Antigravity OAuth | `daily-cloudcode-pa.sandbox.googleapis.com` | | Custom | Any | User-defined | -### Free Models (via Codebuff) -Codebuff provides free access to these models — no API key needed: +### Free Models (via Codebuff/Freebuff) +Codebuff/Freebuff provides free access to these models — no API key needed: - **DeepSeek V4 Pro** — Smartest model - **DeepSeek V4 Flash** — Most efficient - **Kimi K2.6** — Balanced - **MiniMax M2.7** — Fastest -*Requires: `codebuff login` via GUI OAuth button, or `npm install -g codebuff && codebuff login` (GitHub OAuth)* +*Requires: `freebuff login` via GUI OAuth button, or `npm install -g freebuff && freebuff login` (GitHub OAuth)* --- diff --git a/codex-launcher_3.10.5_all.deb b/codex-launcher_3.10.5_all.deb deleted file mode 100644 index 2fdab89..0000000 Binary files a/codex-launcher_3.10.5_all.deb and /dev/null differ diff --git a/codex-launcher_3.10.6_all.deb b/codex-launcher_3.10.6_all.deb new file mode 100644 index 0000000..ae1ef0b Binary files /dev/null and b/codex-launcher_3.10.6_all.deb differ diff --git a/install.sh b/install.sh index 11a2d27..6115c1c 100755 --- a/install.sh +++ b/install.sh @@ -3,11 +3,11 @@ set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -if [ -f "$SCRIPT_DIR/codex-launcher_3.10.5_all.deb" ]; then - echo "Installing codex-launcher_3.10.5_all.deb ..." - sudo dpkg -i "$SCRIPT_DIR/codex-launcher_3.10.5_all.deb" +if [ -f "$SCRIPT_DIR/codex-launcher_3.10.6_all.deb" ]; then + echo "Installing codex-launcher_3.10.6_all.deb ..." + sudo dpkg -i "$SCRIPT_DIR/codex-launcher_3.10.6_all.deb" echo "" - echo "Installed v3.10.5 via .deb package." + echo "Installed v3.10.6 via .deb package." echo " translate-proxy.py -> /usr/bin/translate-proxy.py" echo " codex-launcher-gui -> /usr/bin/codex-launcher-gui" echo " cleanup-codex-stale -> /usr/bin/cleanup-codex-stale.sh" diff --git a/src/codex-launcher-gui b/src/codex-launcher-gui index c7870d6..65f032e 100755 --- a/src/codex-launcher-gui +++ b/src/codex-launcher-gui @@ -1798,7 +1798,7 @@ class LauncherWin(Gtk.Window): # header row hdr = Gtk.Box(spacing=8) vbox.pack_start(hdr, False, False, 0) - lbl = Gtk.Label(label="Codex Launcher v3.10.5") + lbl = Gtk.Label(label="Codex Launcher v3.10.6") lbl.set_use_markup(True) hdr.pack_start(lbl, False, False, 0) changelog_btn = Gtk.Button(label="Changelog") @@ -3706,7 +3706,7 @@ class EditEndpointDialog(Gtk.Dialog): auth_url = "https://www.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.10.5"}) + headers={"Content-Type": "application/json", "User-Agent": "codex-launcher/3.10.6"}) resp = urllib.request.urlopen(req, timeout=30) data = json.loads(resp.read()) login_url = data.get("loginUrl", "") or data.get("login_url", "") @@ -3731,7 +3731,7 @@ class EditEndpointDialog(Gtk.Dialog): time.sleep(2) try: poll_req = urllib.request.Request(poll_url, - headers={"User-Agent": "codex-launcher/3.10.5"}) + headers={"User-Agent": "codex-launcher/3.10.6"}) poll_resp = urllib.request.urlopen(poll_req, timeout=10) poll_data = json.loads(poll_resp.read()) user = poll_data.get("user") diff --git a/src/codex_launcher_lib.py b/src/codex_launcher_lib.py index 2bff5e1..1f0a947 100644 --- a/src/codex_launcher_lib.py +++ b/src/codex_launcher_lib.py @@ -83,6 +83,20 @@ model_catalog_json = "" """ CHANGELOG = [ + ("3.10.6", "2026-05-25", [ + "Freebuff integration: free DeepSeek/Kimi via codebuff.com API", + "Fixed Freebuff User-Agent to match official SDK (ai-sdk/openai-compatible/1.0.25/codebuff)", + "Fixed Freebuff metadata: freebuff_instance_id + client_id (base36) + cost_mode: free", + "Fixed Codebuff OAuth: use www.codebuff.com (307 redirect on bare domain)", + "GUI preset aliases: Freebuff, FreeBuff, Codebuff all map to same backend", + "Windows GUI consolidated into src/ (merged by cobra91)", + "CROF adaptive logic gated to crof.ai only — no log pollution for other providers", + "Data dir consolidation: all data in codex-proxy/", + "Sticky proxy port: persists in .last-proxy-port for restart persistence", + "Adaptive compact budget raised 60% to 80% for large-context models", + "Config cleanup fix: stale proxy-*.json moved after _init_runtime()", + "Windows GUI: Clear Log, Restart Proxy, View Log buttons (cobra91 PR #3)", + ]), ("3.10.5", "2026-05-25", [ "Context compaction for Antigravity/Gemini OAuth — prevents token limit errors", "Aggressive compaction policies at 60% of model context limit",