decolua
bc252ea802
# v0.5.35 (2026-07-16)
...
## Features
- **xAI**: Grok Imagine video generation (`/v1/videos`) + CLI
- **CLI tools**: Grok Build setup — writes `[model.9router]` to `~/.grok/config.toml`
- **GitHub Copilot**: route Claude models through Copilot's native `/v1/messages`
- **Kiro**: add GPT-5.6 model family (#2596 )
- **RTK**: `X-9Router-Token-Saver` header to bypass token savers per request
- **Providers**: quota visibility settings
- **Translator**: drop temperature for all Claude models
- **i18n**: Thai (th) + Persian (fa) translations / README
## Fixes
- **Providers**: bulk-add API keys no longer overwrite existing keys (gap-fill `Key N`)
- **Anthropic**: lowercase `anthropic-version` header to prevent duplication on `/v1/messages`
- **Alicode-intl**: use DashScope compatible-mode endpoint so standard keys work
- **Grok CLI**: align Grok Build with current subscription protocol (#2590 )
- **Grok CLI**: surface `expiresAt` so proactive token refresh fires (#2546 )
- **Kiro**: improve direct session cache reuse
- **Models**: populate capabilities for live-catalog LLM models
- **Models**: list compatible provider models in `/v1/models`
- **Thinking**: send explicit `thinking:{type:adaptive}` alongside `output_config.effort`
- **Translator**: strip `client_metadata` when converting openai-responses → openai
## Improvements
- **Perf**: skip inactive background services on startup
2026-07-16 18:13:51 +07:00
ryanngit
59b7828237
fix(grok-cli): align Grok Build with current subscription protocol ( #2590 )
2026-07-16 15:33:19 +07:00
ann
d6761c6fb0
feat(xai): add Grok Imagine video generation (/v1/videos) + CLI
...
Async video job proxy mirroring the existing image-generation layer split:
Next routes → src/sse/handlers/videoGeneration.js (auth gate, account
fallback loop, refresh persistence) → open-sse/handlers/videoCore.js
(transparent upstream proxy, 401 refresh-once/retry-once, secret sanitization).
- POST /v1/videos/{generations,edits,extensions}: byte-exact body forward
(JSON + multipart), request_id passthrough, Idempotency-Key forwarded
- GET /v1/videos/{request_id}: status/progress/video.url passthrough
- Register grok-imagine-video (kind: "video"); add "video" to MODEL_TYPE_TO_KIND
so video models stay out of chat lists (also fixes runwayml leak)
- 9router xai video CLI: submit → poll → atomic MP4 download
- No auto-retry of creation POSTs (billable jobs); rotate accounts only on
401/403/429; sanitize Bearer tokens + credential values from errors/logs
Closes #1285
2026-07-16 15:29:52 +07:00
decolua
a6a41dfb3c
Merge remote-tracking branch 'upstream/master'
...
# Conflicts:
# .gitignore
# open-sse/handlers/chatCore.js
2026-07-16 11:59:46 +07:00
joachimBrindeau
c9926897ba
feat(rtk): add X-9Router-Token-Saver header to bypass token savers per request
2026-07-16 11:27:42 +07:00
decolua and Cursor
a625ea9fd8
refactor(log): unify request lifecycle logging with session-colored tags
...
Collapse scattered per-request console lines (request/routing/auth/pending/
usage/stream-usage/stream) into 3 correlated lines: request, transform,
done. Add stable per-session color tag so concurrent request lines are
easy to follow, surface thinking intent, always-on full error logging
for debug, re-enable warn level, and uppercase keyword labels. Also fix
usage overview cards wrapping (5 cards -> grid-cols-5).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-10 18:01:20 +07:00
Elio Bonfim Júnior
dcf1927f22
feat(pxpipe): PXPIPE token saver — multimodal prompt compression ( #2465 )
...
Add pxpipe as an experimental fifth Token Saver: Claude-format request
bodies above a configurable size threshold are rendered as dense PNGs
via the pxpipe-proxy library API (transformAnthropicMessages) before
dispatch, cutting estimated input tokens by ~35-60% on token-dense
contexts. Integration follows the Headroom pattern: applied to the final
body in chatCore just before dispatch, fail-open on any error/timeout.
Managed npm install into DATA_DIR/pxpipe, dynamic loader with per-version
cache-bust, JSONL event log with rotation, /api/pxpipe/* endpoints, Token
Saver card (marked experimental) + /dashboard/pxpipe page, and per-request
Activated/Skipped annotation in Request Details. Disabled by default.
2026-07-10 16:10:42 +07:00
newnol
ce6bdf7fc2
feat(perplexity): add Agent API provider ( #2492 )
...
Add perplexity-agent provider using OpenAI-compatible Responses API,
routing third-party models (GPT, Claude, Gemini, Grok, GLM, Kimi, Sonar)
through one endpoint. Expose /v1/models discovery, add chat-search wrapper
via web_search tool. Existing Sonar provider unchanged.
2026-07-10 11:57:15 +07:00
decolua
b10b807063
# v0.5.20 (2026-07-07)
...
## Features
- **Thinking**: per-model thinking level picker on provider page — appends `(level)` suffix to copied model names for forced reasoning effort across all formats (openai, claude, gemini, deepseek, kimi, qwen, zai, minimax, hunyuan, step)
- **RTK**: add JS-native git-log filter (#2423 )
- **Caveman**: add targeted upstream-aligned style rules (#2424 )
- **i18n**: add Farsi (fa) language support (#2385 )
## Fixes
- **Thinking**: strip `(level)` suffix from upstream `body.model` so providers no longer reject requests
- **Translator**: preserve developer instructions in openai-responses conversion (#2434 )
- **count_tokens**: count structured Anthropic blocks (#2419 )
- **Volcengine-ark**: clamp GLM-5 max_tokens to model output ceiling (#2428 )
- **Kimi**: normalize reasoning_effort to backend enum (#2427 )
- **Claude**: reconcile max_tokens vs thinking budget and lift per-model ceiling (#2381 )
- **Kiro**: deliver system prompt natively, add Opus 4.5/4.7/4.8, tolerate dash version ids (#2366 )
- **Headroom**: proxy dashboard through app (#2372 )
- **MITM**: recover from stale lock file on server start
2026-07-07 16:29:11 +07:00
hodtien and Cursor
54e3245ace
feat(usage): track cached tokens + correct input/output/cache cost ( #2209 )
...
Normalize every provider to one cache-inclusive convention via
canonicalizeUsage() before persist, and price cached + cache_creation as
subsets of prompt_tokens in calculateCostFromTokens() to stop
double-counting. usageRepo now delegates cost math to a single source.
Surface Cached tokens/cost across dashboard (overview, tokens, cost,
details). Merge Claude message_start cache with message_delta output so
cache counts survive. Compatible LLM nodes now allow multiple API-key
connections (key pool).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-03 15:18:27 +07:00
Qin Li and Cursor
960f8a0379
fix(usage): dedupe streaming request-details log entries
...
handleStreamingResponse and buildOnStreamComplete each generated their
own streamDetailId for what should be one logical record — the
placeholder row (0 tokens) and the final row (real usage) never shared
an id, so the DB's ON CONFLICT(id) upsert never merged them, leaving a
permanent 0-token stub for every streaming request.
Share the id from buildOnStreamComplete with handleStreamingResponse
so both writes hit the same row.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-03 15:14:49 +07:00
KunN-21 and Cursor
cb0135b695
fix: prevent non-SSE stream pipe crash and cross-IdP account overwrites ( #2244 )
...
- streamingHandler: when upstream returns non-SSE/JSON (e.g. Cloudflare
5xx HTML), read body, sanitize <title>, notify streamController and
return a clean JSON error instead of crashing the pipe.
- connectionsRepo: dedup OAuth connections on (email + username) so
cross-IdP accounts sharing an email no longer overwrite each other;
workspace providers keep workspace-id matching.
- kimchi: bump User-Agent to 0.1.50, add svg asset + browser-login
service, and 21 unit tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-03 11:11:07 +07:00
Nant361 and Cursor
8a664d619d
feat(kimchi): add Kimchi OAuth provider support
...
Add Kimchi as a browser-token OAuth provider routed through its
OpenAI-compatible gateway. Discover live models for /v1/models and
provider models, normalize Claude-compatible requests, and wire up
provider connection tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-29 15:29:17 +07:00
Sutarto Jordan Chrisfivo and Cursor
fb543a1f39
fix(headroom): clarify token diagnostics vs provider billing
...
Distinguish Headroom-reported token deltas from outbound payload size,
scrub credentials in logs, and warn on phantom savings when compressed
JSON barely shrinks. Refs #1998
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-26 11:12:07 +07:00
Joseph Yaksich and Cursor
c842dc8f07
fix: preserve forced streaming for json clients
...
Keep provider-required streaming when client prefers JSON. The
Accept: application/json branch no longer flips stream back to false
for forceStream providers, fixing 400 errors on stream-only providers
(e.g. Command Code) for Hermes / Claude Code / other JSON clients.
Fixes #2031
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-26 10:37:23 +07:00
nguyenha935 and Cursor
ce844899ed
fix(tts): resolve Gemini TTS models from catalog
...
Resolve Gemini TTS models from shared TTS catalog and provider registry
with a safe fallback, fixing requests resolving to models/undefined when
ttsConfig.models is empty. Add gemini-3.1-flash-tts-preview to catalogs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-26 10:32:34 +07:00
qianze and Cursor
c22f11de38
fix(stream): prevent non-JSON SSE lines and duplicate [DONE] from breaking clients
...
- Passthrough: skip non-JSON data lines instead of forwarding raw garbage
- Translate: stop emitting redundant [DONE] sentinel (message_stop terminates)
- Add streamDoneSent flag to prevent duplicate [DONE] across transform + flush
- Warn on unexpected upstream Content-Type for streaming responses
PR #2046 by @qianze0628
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-26 10:22:53 +07:00
Mink Nguyen and Cursor
0d21668917
Fix usage logging dedupe and reduce stats churn
...
- batch console log buffer events and support batched SSE log messages
- debounce usage stats update/pending events to reduce UI/runtime churn
- avoid awaiting request-success bookkeeping before returning provider responses
- deduplicate identical usage writes in usageHistory/daily aggregates
- reduce default logger verbosity from DEBUG to INFO (overridable via LOG_LEVEL)
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-26 10:22:20 +07:00
Nautilaceae and Cursor
5306bd904e
feat(antigravity): native image generation support
...
Add image generation for Antigravity provider via gemini-3.1-flash-image
and gemini-3-pro-image, exposed through Text to Image UI and
/v1/images/generations.
- registry: serviceKinds ['llm','image'] + image model entries
- executor: image model detection + image_gen request envelope
- chatCore: force stream=false for image models (generateContent)
- nonStreamingHandler: parse inlineData -> markdown image
- imageGenerationCore: useExecutor fast-path for executor delegation
- imageProviders/antigravity: image adapter with image input support
- usage/google: image models in quota whitelist
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-21 17:54:32 +07:00
decolua and Cursor
b55cf36d2e
feat(headroom): add proxy lifecycle management + dashboard UI
...
Build on the optional Headroom Token Saver from Carmelo Campos
(PR: feat: add optional Headroom token saver). Add managed start/stop
of the local headroom proxy from the dashboard, install detection,
status probing, and a simplified Token Saver UI.
- detect headroom CLI + python>=3.10, probe proxy /health
- spawn/stop proxy as a detached, pid-tracked process
- /api/headroom/{status,start,stop} routes, gated local-only in dashboardGuard
- one-click Start/Stop Headroom modal, no manual config needed
- claude<->openai shape conversion for /v1/compress via 9router translators
Thanks to Carmelo Campos (@carmelogunsroses) for the original Headroom integration.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-20 10:09:50 +07:00
fjia and Cursor
411a589781
fix(claude-to-openai): handle OpenAI-format responses in non-streaming path
...
Some providers (e.g. xiaomi-tokenplan -claude models) return OpenAI-format
responses even when request was translated to Claude. Early-return now detects
choices[]. Also strip reasoning_content only when content is non-empty so
thinking models keep their only output.
Closes #1836
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-17 09:43:58 +07:00
decolua
b282f05549
Refactor
2026-06-15 18:18:04 +07:00
decolua and Cursor
aba4c45da6
fix(translator): ESM-safe registry + tool-id pairing + responses max_tokens; add real-creds tests
...
- translator/index.js: replace require() with static side-effect imports (ESM-safe),
lazy-init registry maps to survive circular import order
- openai-responses->openai: map max_output_tokens -> max_tokens (avoid leaking field upstream)
- gemini/antigravity -> openai: derive deterministic tool_call id from name so
functionCall/functionResponse pair correctly (fixes provider tool-pairing 400s)
- add offline unit tests (finish-reason, usage, session-manager, ollama malformed args, const guard)
- add real-creds integration tests (provider-cases + all-formats matrix: 6 inbound formats x 4 scenarios)
Includes co-located provider registry refactor (pricing/capabilities/media providers) and sessionManager updates.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-15 11:38:43 +07:00
decolua and Cursor
d3f61aac2f
refactor(open-sse): translator DRY + schema enums, bug fixes, dead code cleanup
...
- Bug B1-B7: media UI m.kind||m.type, serviceKinds, gemini mediaPriority, schema kind, models/info lookup by kind
- Dead code D1-D6: safeParseJSON, drop PROVIDER_ENDPOINTS, orphan fetcher, GITHUB_CONFIG derive, getProviderConfig internal, legacy kiro file
- Translator concerns: toOpenAIUsage, toOpenAIFinish (gemini/kiro/ollama + fix kiro tool finish), thinking effort maps
- Reorg helpers/ → concerns/ (logic) + formats/ (per-format) + schema/ (pure enums: roles/blocks/finishReasons/defaults)
- Wire ~280 hardcoded role/block/finish/default literals to schema enums across 20+ files
- collapseTextParts + extractTextContent dedup
- Normalize translator fn names to openaiToXRequest / xToOpenAIResponse
- Golden tests lock behavior; 0 regression (byte-for-byte providers/alias, 26=26 known fails)
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-14 18:49:38 +07:00
decolua and Cursor
dd1e0f9bcc
refactor(registry): B2 migrate to LiteLLM-style schema — unified models[] with kind field
...
- 71 registry files: flat `media.*Config.models` → `models[]` with `kind` field
- `media` wrapper removed → serviceKinds, *Config fields promoted top-level
- `type` field renamed to `kind` (llm/image/tts/stt/embedding/embedding/video/music)
- providers/index.js: PROVIDER_MEDIA now built from flat top-level media fields
- shared/constants/providers.js: buildProviderEntry reads flat top-level media fields
- route /v1/models: modelKind() uses kind||type; removed subConfig merge block
- models/info route: removed sub-config fallback lookup (all models in PROVIDER_MODELS)
- ttsProviders/index.js: synthesizeViaConfig reads tts models from PROVIDER_MODELS
- test-models route, helpers.js, validate route: kind||type compat
- Baselines: PROVIDERS 62/62 ✅ , Alias 90/90 ✅
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-14 14:32:59 +07:00
decolua and Cursor
e53ce79abb
refactor(open-sse): B1 consolidate media endpoint URLs into registry
...
- image/embed/tts/search base URLs derive from media.*Config.baseUrl /
searchViaChat.endpoint (single source); handlers read PROVIDER_MEDIA.
- ~18 hardcoded endpoints moved: bfl/fal/stability/runway/hf/gemini/
cloudflare/recraft/sdwebui/comfyui/nanobanana image, voyage embed,
gemini/openrouter tts, chatSearch endpoints.
- Byte-identical: PROVIDERS 62 + alias 90 baselines, image buildUrl outputs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-14 13:58:12 +07:00
decolua and Cursor
bb9e9aa91f
refactor(open-sse): registry consolidation + DRY media/oauth/adhoc cleanup
...
- Single-source registry: oauth clientId/tokenUrl, usage URLs, image/embed
configs, search defaultModel, codex fixedPort, google token url derive.
- Remove 29 unused OmniRoute providers (registry 100→71); media intact.
- De-adhoc: codex literals → registry format/oauth flags; reasoningInject,
image/embed openrouter headers + xai bodyFields config-driven.
- Add REGISTRY_TEMPLATE.js + expand PROVIDER_DEFAULTS/schema JSDoc.
- Baselines updated; PROVIDERS 62 + alias 90 byte-for-byte, golden snapshots.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-14 13:15:48 +07:00
decolua and Cursor
9105dd0e25
refactor(open-sse): #11 — dedupe client-facing SSE_HEADERS_CORS
...
Gom block SSE headers + CORS lặp ở streamingHandler + responsesHandler
vào sseConstants.SSE_HEADERS_CORS. Codex format-routing giữ nguyên
(logic-driven theo kim chỉ nam DATA/LOGIC docs 07).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-13 22:06:59 +07:00
decolua and Cursor
4da1d6dad4
refactor(open-sse): D1c — forceStream hardcode → PROVIDERS schema ( #5 )
...
chatCore providerRequiresStreaming: switch provider-name →
PROVIDERS[provider].forceStream. Thêm forceStream:true vào registry
openai/codex/commandcode. verify-providers allowlist added-fields
(forceStream/urlSuffix verified bằng golden + runtime test riêng).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-13 22:05:01 +07:00
decolua and Cursor
87fe069e9e
refactor(open-sse): remove reverse coupling open-sse -> src (E2)
...
Move clineAuth into open-sse/shared (src re-exports back). Add standalone
open-sse/shared/machineId for codex session hashing (no @/lib/dataDir).
sttCore receives sttConfig via param instead of importing AI_PROVIDERS.
No behavior change; gate: no regression (26 known-fails unchanged).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-13 16:35:07 +07:00
Ngô Tấn Tài and Cursor
b33cbb0280
feat(vercel-ai-gateway): support embeddings, images and credit usage
...
Extend Vercel AI Gateway beyond chat: add OpenAI-compatible embeddings
and image generation endpoints, credit balance fetch on the usage
dashboard, retry on 429, and models catalog fetcher.
Thinking/reasoning mapping is omitted pending a project-wide refactor.
Co-authored-by: Ngô Tấn Tài <tantai@newnol.io.vn >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-13 10:54:51 +07:00
decolua
4443903900
fix: add normalization for Claude passthrough bodies
2026-06-08 15:37:01 +07:00
decolua
137a25e9ac
fix(qoder): increase timeouts for reasoning models and improve stream handling
2026-06-08 09:17:33 +07:00
9caea88528
fix(codex): harden streaming timeouts + Responses terminal events
...
Raise stall/connect timeouts to 60s (configurable per-provider), accept
codex response.done, and always emit a terminal response.failed + [DONE]
for Responses passthrough when a stream closes, stalls, or aborts before
a terminal event — preventing codex clients from hanging.
Co-authored-by: jonathanli12 <jonathanli12@users.noreply.github.com >
Co-authored-by: rifuki <rifuki@users.noreply.github.com >
Co-authored-by: nguyenha935 <nguyenha935@users.noreply.github.com >
Co-authored-by: trananhtung <trananhtung@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-06 16:07:43 +07:00
Giao Ho and Cursor
0850f0a470
fix(mitm): Kiro binary EventStream crash + add models & TTS tool filtering
...
- server.js: isBinaryData() skips binary AWS EventStream bodies (fix JSON parse crash)
- kiro.js: isBinaryEventStream detection + migrate to pipeTransformedEventStream pipeline
- base.js: add pipeTransformedSSE / pipeTransformedEventStream helpers
- chatCore.js: filter tool messages + tools for TTS models via getModelType()
- providerModels.js: add getModelType()
- cliTools.js: add gpt-5-mini (Copilot), glm-5 & minimax-m2.5 (Kiro)
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-06 11:31:52 +07:00
Mr_NoboDy and Cursor
40cfa63eb8
feat(xiaomi-tokenplan): add Claude-native MiMo V2.5 Pro alias via dedicated executor
...
Add mimo-v2.5-pro-claude alias routing to the Xiaomi TokenPlan Anthropic-compatible
/anthropic/v1/messages endpoint. Logic lives in a dedicated XiaomiTokenplanExecutor
(config-driven via targetFormat) instead of the shared DefaultExecutor.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-06 10:36:03 +07:00
41f94ce8c8
fix(minimax): Bổ sung MiniMax-M3 + cập nhật Quota Tracker coding/CN
...
Squash-merge PR #1631 (decolua/9router) — chỉ lấy file code + test, bỏ docs.
- feat(minimax): add MiniMax-M3 to intl + cn provider models (targetFormat claude)
- feat(minimax): add MiniMax-M3 pricing entry
- fix(minimax): translate Claude body khi content=null (M3 thinking-only)
- fix(minimax): hiển thị quota M-series bucket "general"/"MiniMax-M*" + percent-only
- test: minimax usage / model registration / pricing
Co-Authored-By: Claude <noreply@anthropic.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-06 10:01:05 +07:00
nguyenha935 and GoClaw Operator
7bc97eae7b
fix(embeddings): forward Gemini output dimensions ( #1366 )
...
Co-authored-by: GoClaw Operator <operator@goclaw>
2026-05-23 09:23:26 +07:00
Muhammad Mugni Hadi and Cursor
d976f4cc87
feat(xai): add xAI Grok provider with OAuth + API key auth + image
...
Adapted from PR #1286 (mugnimaestra/feat/xai-grok-provider) to match
existing app architecture. Includes:
- OAuth 2.0 with PKCE on loopback port 56121 (Grok Build)
- API key auth path (console.x.ai)
- Token refresh wiring (open-sse + sse tokenRefresh)
- Dashboard OAuth modal with fixed-port flow + manual code fallback
- Provider registry entries (OAuth + API key)
- xAI image generation via OpenAI-compatible adapter
(grok-2-image-1212 model, no size/quality/style params)
Excludes (intentionally, to match app patterns):
- Custom xAI Responses executor (DefaultExecutor handles /chat/completions)
- xAI-specific translators (app uses OpenAI as intermediate format)
- Image edits (not supported by current imageGenerationCore)
- Video endpoints (app has no video subsystem yet)
- CLI xai-login command
Refs decolua#1286
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-21 11:33:18 +07:00
YourAnsh and Ansh7473
eaccb19f59
feat: add DeepSeek TUI as CLI tool in dashboard ( #1088 )
...
Co-authored-by: Ansh7473 <your-github-email@example.com >
2026-05-13 22:40:42 +07:00
Thiên Toán
74c9879e8e
feat: add minimax tts support ( #1043 )
2026-05-13 15:34:10 +07:00
Aleksei
ea44ca049e
Add Codex GPT 5.5 image support ( #991 )
2026-05-12 09:26:13 +07:00
decolua
8f4d29caa4
# v0.4.30 (2026-05-11)
...
## Features
- MCP stdio→SSE bridge: expose local stdio MCP plugins over SSE (api/mcp/[plugin]/sse, /message)
- Dynamic Linux cert resolution + NSS DB injection (Debian/Arch/Fedora/openSUSE, Chrome/Chromium/Firefox incl. snap) (#1010 )
- Cowork tool: expanded settings UI & API
- GitBook docs (DocsContent, DocsLayout)
## Fixes
- OAuth callback postMessage scoped to expected origins (CWE-1385) (#998 )
- Re-enable TLS verification on DNS-bypass fetch (CWE-295) (#998 )
- Normalize `developer` role → `system` for OpenAI-format providers (Deepseek, Groq, …) (#1011 , closes #773 )
- Respect `PORT` env in internal model-test fetch (#1014 )
- Dropdown text readability in dark theme on usage page (#997 )
## Improvements
- Refactor Claude CLI spoof headers into shared constant
- Tool deduper utility in open-sse handlers
2026-05-12 09:19:50 +07:00
Aleksei
787d248030
Add Cloudflare Workers AI image generation ( #973 )
2026-05-09 09:53:39 +07:00
decolua
b72a443bd3
feat: add CommandCode provider support
2026-05-07 23:01:33 +07:00
decolua
d4bc42e1f5
feat: add STT support, Gemini TTS, and expand usage tracking
...
- Speech-to-Text: full pipeline with sttCore handler, /v1/audio/transcriptions
endpoint, sttConfig for OpenAI, Gemini, Groq, Deepgram, AssemblyAI,
HuggingFace, NVIDIA Parakeet; new 9router-stt skill
- Gemini TTS: add gemini provider with 30 prebuilt voices and TTS_PROVIDER_CONFIG
- Usage: implement GLM (intl/cn) and MiniMax (intl/cn) quota fetchers; refactor
Gemini CLI usage to use retrieveUserQuota with per-model buckets
- Disabled models: lowdb-backed disabledModelsDb + /api/models/disabled route
- Header search: reusable Zustand store (headerSearchStore) wired into Header
- CLI tools: add Claude Cowork tool card and cowork-settings API
- Providers: introduce mediaPriority sorting in getProvidersByKind, add
Kimi K2.6, reorder hermes, drop qwen STT kind
- UI: expand media-providers/[kind]/[id] page (+314), enhance OAuthModal,
ModelSelectModal, ProviderTopology, ProxyPools, ProviderLimits
- Assets: refresh provider PNGs (alicode, byteplus, cloudflare-ai, nvidia,
ollama, vertex, volcengine-ark) and add aws-polly, fal-ai, jina-ai, recraft,
runwayml, stability-ai, topaz, black-forest-labs
2026-05-05 10:32:59 +07:00
decolua
9c6be62a54
Feat : Skills
2026-05-04 11:29:02 +07:00
decolua
936d65ae1c
Enhance chat handling and introduce Caveman feature
...
- Refactored handleChatCore to include Caveman functionality, allowing for terse-style system prompts to reduce output token usage.
- Updated APIPageClient to manage Caveman settings, including enabling/disabling and selecting compression levels.
- Adjusted AntigravityExecutor to consolidate function declarations for compatibility with Gemini.
- Removed unnecessary console logs during translator initialization across multiple routes.
2026-04-30 18:00:38 +07:00
decolua
512e3de371
Update version to 0.4.9, enhance README with Trendshift badge, and add new embedding models to providerModels.js. Refactor TTS handling to support additional providers and improve API key validation for media providers.
2026-04-29 11:34:39 +07:00
decolua
8f81363675
Enhance token refresh functionality across multiple executors
...
- Updated refreshCredentials methods in various executors (Antigravity, Base, Default, Github, Kiro) to accept optional proxyOptions for improved proxy handling.
- Modified token refresh logic to utilize proxy-aware fetch for better network management.
- Enhanced usage retrieval functions to support proxy options, ensuring seamless integration with proxy configurations.
- Updated ModelSelectModal and ProviderInfoCard components to incorporate kind filtering for improved user experience in model selection.
- Added validation for API keys in the provider validation route, including support for webSearch/webFetch providers.
2026-04-28 17:28:57 +07:00