Repository navigation
feat: OpenAI compatibility improvements, build fixes, and documentation - #18
Closed
appletechie wants to merge 0 commit into
Closed
appletechie wants to merge 0 commit into
appletechie wants to merge 0 commit into
Conversation
decolua
pushed a commit
that referenced
this pull request
Jan 20, 2026
- Fix hydration mismatches and initialization errors - Add /v1/models endpoint for OpenAI clients - Add Codex response translator (Responses → OpenAI) - Fix circular dependencies and PropTypes - Add Material Symbols font and CSS fixes - Update README with deployment guide Co-merged from PR #18 (14/15 commits, skipped debug)
involvex
added a commit
to involvex/involvex-claude-router
that referenced
this pull request
Feb 28, 2026
### Bug Fixes * remove duplicated opencode prefix from model IDs and handle it in executor ([180f884](180f884)) * update opencode endpoint and model IDs ([6be8a03](6be8a03)) ### Features * add opencode provider ([03c846e](03c846e)) ## [0.2.96](5645d0a...v0.2.96) (2026-02-24) ### Bug Fixes * GitHub Copilot model ([95fd950](95fd950)) * **auth:** allow HTTP for local network ([0a394d0](0a394d0)) * **auth:** prevent auto-login after logout ([49df3dc](49df3dc)) * **codex:** use user-agent detection for Droid CLI compatibility ([8c6e3b8](8c6e3b8)) * Correct indentation for clarity in chatCore and claude-to-openai response handlers ([fa06226](fa06226)) * correct token extraction for Claude non-streaming responses ([decolua#131](https://github.com/involvex/involvex-claude-router/issues/131)) ([9fbd6e6](9fbd6e6)) * **dashboard:** resolve 'Provider not found' for free providers ([45a4d3b](45a4d3b)) * **db:** improve error handling and null checks ([e6ef852](e6ef852)) * **gemini:** improve base64 image data parsing ([5645d0a](5645d0a)) * **github:** Implement dynamic fallback for Codex models requiring /responses endpoint ([decolua#127](https://github.com/involvex/involvex-claude-router/issues/127)) ([6913129](6913129)) * improve code formatting and reduce auto-refresh interval ([7f71916](7f71916)) * improve cursor auto-import reliability on macOS ([decolua#161](https://github.com/involvex/involvex-claude-router/issues/161)) ([d7e06c3](d7e06c3)) * **login:** avoid infinite loading on settings fetch failure ([01c9410](01c9410)) * **open-sse:** emit [DONE] in passthrough SSE mode ([decolua#142](https://github.com/involvex/involvex-claude-router/issues/142)) ([b9a6979](b9a6979)) * prevent race conditions in sticky round-robin ([3ad2f8d](3ad2f8d)) * resolve SonarQube findings and Next.js Image warnings ([7058b06](7058b06)) * update Codex executor for gpt-5.3-codex support ([d7d5dc9](d7d5dc9)) ### Features * add /v1/embeddings endpoint (OpenAI-compatible) ([decolua#146](https://github.com/involvex/involvex-claude-router/issues/146)) ([e1b8361](e1b8361)), closes [decolua#117](https://github.com/involvex/involvex-claude-router/issues/117) * Add Anthropic Compatible provider support ([da5bdef](da5bdef)) * add API endpoint dimension to usage statistics dashboard ([decolua#152](https://github.com/involvex/involvex-claude-router/issues/152)) ([806bd4a](806bd4a)) * add Claude Opus 4.6 to GitHub Copilot provider ([decolua#97](https://github.com/involvex/involvex-claude-router/issues/97)) ([3d60597](3d60597)) * Add Claude Sonnet 4.6 to GitHub Copilot ([decolua#149](https://github.com/involvex/involvex-claude-router/issues/149)) ([4e2a3f8](4e2a3f8)) * add CLI entry points for claude-router commands ([62c632d](62c632d)) * add enable/disable toggle for provider connections ([ed796d2](ed796d2)) * add Gemini 3.1 Pro models to provider ([f2025cc](f2025cc)) * add Gemini embeddings support + Letta compatibility fixes ([a57a8ce](a57a8ce)), closes [decolua#148](decolua#148) * add GLM 5 and MiniMax M2.5 models to providerModels.js; add Claude Sonnet 4.6 to CLI tools ([e1e5a81](e1e5a81)) * add GLM Coding (China) provider and Usage by API Keys statistics ([1ae4e31](1ae4e31)) * add GPT 4o to GitHub Copilot provider ([decolua#98](https://github.com/involvex/involvex-claude-router/issues/98)) ([c090bb0](c090bb0)) * add GPT 5.3 Codex Spark model to pricing and provider models ([decolua#133](https://github.com/involvex/involvex-claude-router/issues/133)) ([c7d4410](c7d4410)) * Add GPT 5.3 Codex to GitHub Copilot ([decolua#150](https://github.com/involvex/involvex-claude-router/issues/150)) ([c4aa424](c4aa424)) * add GPT-3.5 Turbo to GitHub Copilot provider ([e3dbd44](e3dbd44)) * add GPT-4 to GitHub Copilot provider ([6ade8ef](6ade8ef)) * add GPT-4o mini to GitHub Copilot provider ([053e490](053e490)) * add models management and router process control commands ([c65fd42](c65fd42)) * Add OpenAI-compatible provider nodes ([0a28f9f](0a28f9f)) * add password change functionality and dependencies ([23cfb19](23cfb19)) * add pause/resume functionality for API keys ([decolua#158](https://github.com/involvex/involvex-claude-router/issues/158)) ([73388a0](73388a0)) * add Qwen3.5 Coder Model configuration ([decolua#156](https://github.com/involvex/involvex-claude-router/issues/156)) ([f933dd9](f933dd9)) * add request logging functionality and usage metrics display ([e476907](e476907)) * add round-robin routing strategy ([9ebd7d3](9ebd7d3)) * add sticky round-robin routing strategy ([4f292aa](4f292aa)) * add support for GLM 5 (if) ([decolua#123](https://github.com/involvex/involvex-claude-router/issues/123)) ([03ab554](03ab554)) * add URL-based tab state persistence in usage page ([decolua#129](https://github.com/involvex/involvex-claude-router/issues/129)) ([6caef7f](6caef7f)) * allow custom user data directory via DATA_DIR environment variable ([d83bd86](d83bd86)) * **antigravity:** initial steps for Antigravity anti-ban alignment ([a229d79](a229d79)), closes [decolua#141](decolua#141) * **antigravity:** integrate Antigravity tool with MITM support and update CLI tools ([2e854bd](2e854bd)) * **auth:** add model-level rate limit locking for multi-bucket providers ([decolua#120](https://github.com/involvex/involvex-claude-router/issues/120)) ([202fee7](202fee7)), closes [decolua#110](https://github.com/involvex/involvex-claude-router/issues/110) * **auth:** Enhance authentication flow and settings management ([249fc28](249fc28)) * **cli-tools:** update CLI tools and add new models ([a2122e3](a2122e3)) * **cli-tools:** update default local endpoint port to 20128 ([6c41573](6c41573)) * **cli:** add new CLI package with basic scaffolding ([9cf4628](9cf4628)) * **cloud:** harden sync/auth flow, SSE fallback, and update changelog ([3d43983](3d43983)) * **codex:** add GPT 5.3, fix API translation, add thinking levels ([127475d](127475d)) * **codex:** Cursor compatibility + Next.js 16 proxy migration ([1c6dd6d](1c6dd6d)) * **codex:** Cursor compatibility + Next.js 16 proxy migration ([7b864a9](7b864a9)) * **codex:** Cursor compatibility + Next.js 16 proxy migration ([e9b0a73](e9b0a73)) * **config:** add Cloudflare MCP server and account ID configuration ([67297ea](67297ea)) * **cursor:** Add cursor Provider ([0a026c7](0a026c7)) * **cursor:** Integrate Cursor IDE support with OAuth import token flow ([137f315](137f315)) * **docker:** add Docker setup, environment examples, and architecture docs ([5e4a15b](5e4a15b)) * enhance disconnect handling and request tracking in chatCore.js ([decolua#126](https://github.com/involvex/involvex-claude-router/issues/126)) ([3d29b86](3d29b86)) * enhance request handling and error management in chatCore and streamToJsonConverter ([e2db638](e2db638)) * enhance usage stats with sortable columns and improved data handling ([bf6e09b](bf6e09b)) * Enhance usage tracking across response handlers ([a33924b](a33924b)) * **executors:** Improved UI components for displaying provider limits and usage statistics in the dashboard. ([32aefe5](32aefe5)) * **iflow:** add IFlowExecutor with HMAC-SHA256 signature and enable models ([bd23ab4](bd23ab4)) * **iflow:** add kimi-k2.5 model support ([9e357a7](9e357a7)) * implement API key requirement toggle ([4cf25dc](4cf25dc)) * Implement buffer addition to usage tracking for improved context handling ([7881db8](7881db8)) * implement lazy loading for UsagePage with suspense fallback ([decolua#136](https://github.com/involvex/involvex-claude-router/issues/136)) ([05b09e6](05b09e6)) * implement provider connection reordering on create, update, and delete ([f2abcc6](f2abcc6)) * implement real project ID fetching for Antigravity ([decolua#170](https://github.com/involvex/involvex-claude-router/issues/170)) ([ea67742](ea67742)) * implement request tracking and enhance usage stats display ([e4f92cd](e4f92cd)) * implement usage tracking for AI requests ([9c3d6f4](9c3d6f4)) * Improve Antigravity quota monitoring and fix Droid CLI compatibility ([3c65e0c](3c65e0c)) * **open-sse:** add Claude Sonnet 4.6 ([b057c43](b057c43)) * OpenAI compatibility improvements & build fixes ([d9b8e48](d9b8e48)), closes [decolua#18](https://github.com/involvex/involvex-claude-router/issues/18) * **provider:** add free providers and enhance error handling ([bdbe816](bdbe816)) * **providers:** add Minimax Coding (China) provider ([7c609d7](7c609d7)) * **providers:** add provider icons to dashboard ([60bd686](60bd686)) * **providers:** auto-validate API keys on save ([b275dfd](b275dfd)) * rename app to involvex-claude-router and add lenient JSON parsing ([bec206d](bec206d)) * **responses:** respect client streaming preference + string input support ([decolua#121](https://github.com/involvex/involvex-claude-router/issues/121)) ([ac7cedd](ac7cedd)) * **translator:** add thinking parameter support in OpenAI → Claude ([54e01d6](54e01d6)) * **ui:** add cost tracking to usage dashboard and pricing settings ([f302c88](f302c88)) * **ui:** add model support for custom providers and improve UX ([a7a52be](a7a52be)) * Update response handling and logging for improved usage tracking ([df0e1d6](df0e1d6)) * **usage:** implement cost tracking backend and pricing configuration ([a36afaa](a36afaa))
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR includes a collection of improvements focused on:
Changes
🚀 New Features
/v1/modelsEndpoint (dd0272d)Adds an OpenAI-compatible models endpoint that returns available models based on active provider connections.
Why: Tools like Kilo Code, Cursor, and other OpenAI-compatible clients expect a
/v1/modelsendpoint to discover available models. Without this, users had to manually configure model names.Returns:
{ "object": "list", "data": [ { "id": "combo/my-combo", "object": "model", "owned_by": "combo" }, { "id": "cc/claude-sonnet-4", "object": "model", "owned_by": "cc" }, ... ] }Combos in Models List (ef45a31)
Combos now appear at the top of the
/v1/modelsresponse.Why: Users create combos for failover between providers. Having them prominently listed makes them easily selectable in client tools.
Codex Response Translator (c745a74)
Adds bidirectional translation between OpenAI Responses API and Chat Completions format.
Why: Codex uses the OpenAI Responses API format (events like
response.output_text.delta), but most clients expect standard Chat Completions format (choices[0].delta.content). This translator enables Codex to work with any OpenAI-compatible client.Handles:
response.output_text.delta→choices[0].delta.contentresponse.output_item.added(function_call) →tool_callsresponse.function_call_arguments.delta→ tool call argumentsresponse.completed→finish_reason: stop🐛 Bug Fixes
Codex Parameter Filtering (f48c254)
Removes unsupported parameters before sending to Codex API.
Why: Codex API rejects requests with parameters like
temperature,top_p,frequency_penalty,presence_penalty,logprobs,n, andseed. These are now filtered out in the executor.Codex Streaming Status (3a088f0)
extractUsage()to recognize Responses API formatWhy: Codex streaming requests were stuck with PENDING status in the logs because the Responses API format wasn't recognized by the usage extractor. This caused confusion about whether requests succeeded.
React Hydration Mismatches (ac53cf0, ca93c63, e50169f)
Multiple fixes for React hydration issues:
useCallbackordering to prevent "Cannot access before initialization" errorsuseTheme.jshydration mismatch usinguseSyncExternalStoreisLocalhostdetection touseEffectin OAuthModalisLoadingprop warnings in Button componentsWhy: Hydration mismatches cause the React app to re-render entirely on the client, degrading performance and causing UI flicker. These also produced console warnings in production builds.
Material Symbols Font (ef1b35f)
Adds missing
Material Symbols Outlinedfont-family to globals.css.Why: Icons were not rendering correctly because the font wasn't properly declared.
PropTypes Import (d9c2434)
Corrects PropTypes import in EndpointPageClient.
Why: Build was failing with incorrect import path.
🔧 Build & Configuration
Build Warnings Cleanup (7afc73d)
DATA_DIRandINITIAL_PASSWORDenvironment variable supportWhy: Production builds were generating numerous warnings that cluttered CI/CD logs and made it harder to spot real issues.
📚 Documentation (1fd1ac7)
Comprehensive README update including:
/v1/chat/completions,/v1/models,/v1/responses🔍 Debug Logging (79033f6)
Adds debug logging for Antigravity/Gemini empty response issues:
Why: Users were seeing "The language model did not provide any assistant messages" errors with no visibility into what Antigravity was actually returning.
Testing
/v1/modelsendpointBreaking Changes
None. All changes are backwards compatible.
🤖 Co-authored with Claude Opus 4.5