Spaces:
Running
Running
Commit History
-
chore: update models to reflect current upstream lineup
- Remove claude-sonnet-4-6-thinking (no longer available upstream) - Replace gemini-3.1-pro-high with gemini-3.1-pro-low in Gemini preset (pro-high returns 400) - Replace gemini-3.1-flash / gemini-3-flash with gemini-3.5-flash-low for sonnet/haiku/subagent slots - Add gemini-3.5-flash-low to OpenCode config and model table - Update small_model in OpenCode config to gemini-3.5-flash-low - Bump fallback User-Agent version to 2.0.6 (matches installed Antigravity app) - Sync README, CLAUDE.md, and docs/opencode.md with current model lineup Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>8695653 -
fix: auto-detect X-Client-Version from local Antigravity product.json (#334)
Akash SharmaUnverified signatureReads X-Client-Version from the locally installed Antigravity app's product.json (macOS, Windows, Linux). Falls back to a configurable hardcoded default when detection fails. Adds ANTIGRAVITY_CLIENT_VERSION and ANTIGRAVITY_CLIENT_VERSION_FALLBACK env var overrides. Closes #3335b11160
-
Fix: Remove [1m] suffix from Gemini 1M preset (#336)
abhinavUnverified signature62e14f8
-
chore: bump fallback Antigravity version to 1.23.2 and document env var
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>50aafe8 -
update to use environment variable for setting (#330)
Callum BryantUnverified signatured04d187
-
chore: bump antigravity version to 1.20.6
7ace66d
-
fix: drop untrusted thinking signatures for Claude resume turns (#298)
its-crab +1: CodexUnverified signatureCo-authored-by: Codex <codex@local>e53c634
-
update antigravity version to 1.20.3
1530545 -
chore: update claude-sonnet-4-5 model references to claude-sonnet-4-6 (#305)
Unverified signatureUpdate all model name references from claude-sonnet-4-5 to claude-sonnet-4-6 across configuration, documentation, tests, and UI code. Files updated: - CLAUDE.md - README.md - docs/models.md - docs/openclaw.md - public/js/data-store.js - src/constants.js - tests/test-streaming-whitespace.cjsc1ef906
-
fix: only warn on max_tokens adjustment for explicit budget
When the default thinking_budget (32000) triggers the max_tokens adjustment, log at debug level since it's expected behavior. Only warn when the user explicitly provided a budget_tokens that conflicts with max_tokens. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f38212b -
fix: default thinking_budget for adaptive thinking mode
Cloud Code API requires thinking_budget to produce thinking blocks. Without it, include_thoughts alone is silently ignored and Claude falls back to <thinking> XML tags in text output. Claude Code now sends thinking: {type: "adaptive"} (no budget_tokens) for Opus 4.6, so we default to 32000 when no budget is provided. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5ba7722 -
fix: clamp Gemini thinking budget to model-specific max (#289)
Gemini 2.5 Flash rejects thinking_budget > 24576. Clamp the budget to model-specific limits before sending to the API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>c2106b9 -
fix: prevent accounts.json corruption + detect ToS-banned accounts (#283)
Unverified signatureTwo independent fixes for production reliability: 1. Storage Protection (storage.js): - Add write lock to serialize concurrent saveToDisk() calls - Validate JSON with JSON.parse() before writing to catch serialization bugs - Atomic write via temp file + rename to prevent partial writes on crash - Fixes: accounts.json corruption when multiple async callers (rate-limit updates, quota refreshes, account additions) write simultaneously 2. ToS Ban Detection (rate-limit-state.js, handlers, model-api.js, server.js): - Detect 403 'Gemini has been disabled...violation of Terms of Service' - Mark account as banned immediately (no point retrying banned accounts) - Catch bans in streaming-handler, message-handler, and model-api - Surface distinct BANNED status in /account-limits and WebUI: * Dark-red 'BANNED' label (vs red 'INVALID' for fixable auth issues) * Ban reason shown as subtitle text * APPEAL mailto button replaces useless FIX button - Prev…ed9cec7
-
Update antigravity version to 1.18.4
e0b0884
-
feat: Update Gemini model identifiers to version 3.1 across documentation and codebase
acf7d65 -
fix: update fallback Antigravity version to 1.18.3
125d7a4 -
Revert "feat: Implement and integrate a `wreq-js` based TLS client for all network requests."
This reverts commit cd5c02e53f75c6ebf44aa4633e38033f582cb2a2.b00e437 -
feat: Add verifyUrl to account limits response metadata
8c90b84
-
feat: Enhance message handling with session ID support and update headers for client identification
47e7a72 -
feat: Implement intelligent Antigravity version detection and dynamic User-Agent generation with platform-specific logic and tests.
f7b1814
-
feat: Implement and integrate a `wreq-js` based TLS client for all network requests.
e87741c -
feat: Implement runtime session ID storage mimicking the binary's per-launch generation logic for stable, per-account session IDs.
3bf5620 -
feat: include account email in session ID derivation to ensure uniqueness per account and prevent cross-account correlation.
7fd4277 -
feat: Update Antigravity client constants, platform detection, and API request bodies to align with binary specifications, including `mode: 1` and platform architecture.
392e154
-
Revert "feat(fingerprint): add persistent device fingerprinting system"
This reverts commit 3915c947bf8840def34fb50e3e5a403a0d00b776.b785611 -
Revert "fix(fingerprint): refine history management and prevent data leakage"
This reverts commit 66805bed57666dcb58840d4e1aa5e3bc837f90c2.7ffc3e3 -
fix: 403 VALIDATION_REQUIRED triggers account rotation (#248)
Badri Narayanan SUnverified signature- Detect VALIDATION_REQUIRED/ACCOUNT_DISABLED/USER_DISABLED in 403 errors - Mark account invalid with verifyUrl and rotate to next account - Parse structured JSON details[].metadata.validation_url - Persist verifyUrl to disk across server restarts - WebUI FIX button opens verification URL directly - Prevent infinite loop when all accounts are invalid (isAllAccountsInvalid guard) - 68 tests (45 unit + 23 integration)65d1e22 -
[RFC] Add opt-in request throttling for rate limit prevention (#242)
jgor20Unverified signature* feat(config): add requestThrottling config and throttledFetch utility * feat(webui): add API validation for request throttling settings * feat(webui): add request throttling toggle and delay slider UI * refactor(api): replace fetch with throttledFetch for Google API calls * fix(webui): improve request throttling toggle styling534e127 -
fix(fingerprint): refine history management and prevent data leakage
- Prevent `fingerprint` object leakage in `getStatus` and `/account-limits` (expose `hasFingerprint` boolean instead) - Fix `restoreFingerprint` to correctly remove restored entries from history - Improve `updateFingerprintVersion` regex to support non-numeric/beta versions - Initialize new accounts with a generated fingerprint in storage - Add comprehensive tests for history restoration and version parsing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>373d0b8 -
feat(fingerprint): add persistent device fingerprinting system
- Implement robust device fingerprint generation (Device ID, User Agent, API Client) - Add fingerprint persistence to AccountManager (stored in accounts.json) - Integrate fingerprint headers into all API requests for stable identity - Add WebUI support: - New Fingerprint Modal with advanced details (Session Token, Quota User) - Manual regeneration with history support (undo/restore) - Polished UI with collapsible metadata details - Fix CLI account management bug that stripped fingerprint data - Add comprehensive test suite covering generation, persistence, and CLI compatibility - Add documentation in docs/fingerprinting.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>15c4643 -
fix(config): support `CLAUDE_CONFIG_PATH` env var for systemd deployments (#273)
jgor20Unverified signature* fix(config): support CLAUDE_CONFIG_PATH env var for systemd deployments When running as a systemd service, os.homedir() resolves to the service user's home directory instead of the real user's, causing the WebUI to fail to read/write ~/.claude/settings.json. CLAUDE_CONFIG_PATH allows overriding the .claude directory path so the proxy can locate the correct Claude CLI configuration. Closes #272 * feat(cli): display CLAUDE_CONFIG_PATH in startup banner Show the active Claude config path in the startup banner when the env var is set, and list it in the environment variables reference section. * docs(config): add CLAUDE_CONFIG_PATH to env vars reference * docs(readme): add systemd deployment section with CLAUDE_CONFIG_PATH * docs(claude): document claude-config.js and CLAUDE_CONFIG_PATH1749113
-
Update opus model to 4.6 and fix missing BACKOFF_BY_ERROR_TYPE imports
Rename claude-opus-4-5 to claude-opus-4-6 across docs, constants, fallback map, presets, and placeholder data. Fix missing BACKOFF_BY_ERROR_TYPE import in message-handler and streaming-handler that caused capacity-exhausted accounts to not receive proper cooldown marking. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a556af5
-
fix(webui): hot-reload strategy on config change without server restart (#261)
jgor20Unverified signatureChanging the account selection strategy via the WebUI settings saved to disk but never notified the running AccountManager to re-initialize. The old strategy remained active until a full server restart.6918a43
-
fix(api): reject empty preset name and trim whitespace in PATCH handler
jgor20db1c79d -
fix(webui): add maxlength constraint for preset name input
jgor20Add maxlength="50" on the frontend input and enforce the same limit in POST/PATCH /api/server/presets backend handlers.3c44ec3 -
fix(api): validate preset config in POST /api/server/presets
jgor20Reject array payloads, run validateConfigFields() before saving, and return 400 when no valid config fields survive validation.5179172 -
fix(config): prevent prototype pollution in deepMerge
jgor20Skip __proto__, constructor, and prototype keys during deep merge to prevent prototype pollution attacks via crafted config payloads.291547c -
refactor(usage-stats): replace console.log/error with structured logger
jgor2099a43b6 -
Merge remote-tracking branch 'origin/main' into feat/server-config-presets
jgor20# Conflicts: # public/css/style.css # public/js/translations/en.js # public/js/translations/id.js # public/js/translations/pt.js # public/js/translations/tr.js # public/js/translations/zh.js3c9ed9d -
fix(api): add RESOURCE_EXHAUSTED prefix to rate limit error messages
Clients like OpenClaw weren't recognizing the error as a resource exhausted condition. Adding the prefix ensures proper detection. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e5c98cf -
fix(api): use numeric ideType enum for proper client identification
Centralize client metadata in constants.js with correct numeric values: - ideType: 6 (ANTIGRAVITY) instead of string "IDE_UNSPECIFIED" - platform: runtime detection (3=macOS, 1=Windows, 2=Linux) - pluginType: 2 (GEMINI) This fixes API returning "free-tier" instead of "standard-tier" due to improper client identification. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4d711c6
-
Merge branch 'main' into feat/server-config-presets
jgor209d3b339 -
fix(presets): add type guard for accountSelection in deep merge
jgor2007a973a -
feat(presets): add new fields to all 3 built-in server presets
jgor20Add switchAccountDelayMs, capacityBackoffTiersMs, and weights to Default, Many Accounts, and Conservative presets with tuned values. Fix recoveryPerHour in Default preset from 2→10.2feb64b -
feat(presets): add new keys to allowedKeys and deep merge accountSelection
jgor20Add switchAccountDelayMs and capacityBackoffTiersMs to allowedKeys. Replace shallow accountSelection spread with deep merge for sub-objects (healthScore, tokenBucket, quota, weights) to preserve partial updates.ff88e1d -
feat(webui): validate switchAccountDelayMs, capacityBackoffTiersMs, weights
jgor20Expand validateConfigFields() with: - switchAccountDelayMs: number, 1000-60000 - capacityBackoffTiersMs: array of 1-10 numbers, each 1000-300000 - weights: health/tokens/quota 0-20, lru 0-587067b1 -
feat(config): add weights, switchAccountDelayMs, capacityBackoffTiersMs defaults
jgor20Add missing config fields to DEFAULT_CONFIG: - switchAccountDelayMs (5000ms) and capacityBackoffTiersMs array - accountSelection.weights for hybrid strategy scoring - Fix recoveryPerHour 2→10 to align with health-tracker.js14fecf2 -
feat(presets): support config updates in updateServerPreset
jgor20Deep-merges validated config fields into preset with key whitelisting and nested accountSelection spread merge.f0c9c99 -
refactor(webui): extract validateConfigFields helper from POST /api/config
jgor20Moves numeric field and accountSelection validation into a reusable function shared by both POST /api/config and PATCH /api/server/presets.0d07a12 -
feat(presets): add edit support for custom server presets
jgor20Add pencil button to edit name and description of custom presets via PATCH /api/server/presets/:name. The save modal adapts its title and action based on create vs edit mode. Built-in presets remain read-only.3c7ae11