Releases: panando/APIBypass
APIBypass v0.5.9
Bug Fix
- SSE streaming lost events: Fixed
SSEDecoderto yield events immediately upon receiving eachdata:line, rather than waiting for blank line separators. Some upstream providers (e.g., Fireworks) send SSE events without blank line boundaries, causing all events to be buffered until stream end and appear as non-streaming output in Claude Code terminal.
APIBypass v0.5.8
Fixes
- iTerm2 cold-start: AppleScript app name corrected to
"iTerm"(was"iTerm2"), fixing the-2741syntax error when iTerm2 is not already running. - Terminal window detection: Uses
CGWindowListCopyWindowInfoto detect visible windows. If no visible window exists, launches directly without prompting; only shows the "New Tab / New Window / Cancel" dialog when a visible window is present. - Upstream 400 error fix: Strips Anthropic-specific fields (
context_management,output_config) before sending to OpenAI-format upstream. Removes unconditionalenable_thinking: falsethat caused upstream rejection. - Reasoning content support: Converts OpenAI
reasoning_contentto Anthropicthinkingcontent blocks in both streaming and non-streaming responses, preserving reasoning display in Claude Code terminal for OpenAI-format models. - SSE debugging: Adds upstream error body logging to simplify troubleshooting proxy errors.
APIBypass v0.5.7
What's New
Concurrency Performance Optimization
- Connection limit control: Implemented
AsyncSemaphoreto limit concurrent connections (default: 100). Returns503 Service Unavailablewhen limit is exceeded, preventing resource exhaustion. - Backpressure control: New
streamWithBackpressuremethod with 64KB buffer (64x increase from 1KB) and 8KB checkpoint yielding for smoother concurrent performance. - Local model parameter filtering: Automatically removes 17 local-model-specific parameters (e.g.,
num_ctx,n_gpu_layers) that cloud APIs don't accept, preventing400 Bad Requesterrors from providers like Fireworks.
Streaming Response Fixes
- JSON error format fix: Error responses in SSE streams now use proper JSON serialization instead of string concatenation, fixing
AI_JSONParseErrorin clients like Cherry Studio. - Stream termination fix: Added
writer.finish(nil)call after stream completion to properly close HTTP connections, preventing clients from hanging in waiting state.
Performance Improvements
| Metric | Before | After | Improvement |
|---|---|---|---|
| Buffer size | 1KB | 64KB | 64x |
| Max concurrent connections | Unlimited | 100 (configurable) | Controlled |
| Thread yielding | None | Every 8KB | Smoother |
| Byte-by-byte processing | Yes | No | Batch processing |
Changelog
- feat: add
AsyncSemaphorefor concurrent connection limiting - feat: implement
streamWithBackpressurewith 64KB buffer and backpressure control - feat: filter 17 local model parameters (
num_ctx,n_ctx,n_gpu_layers, etc.) - fix: JSON serialization for SSE error responses (fixes
AI_JSONParseError) - fix: call
writer.finish(nil)to close streaming connections properly - perf: 64KB buffer size (was 1KB)
- perf:
Task.yield()every 8KB for cooperative multitasking
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.5.7
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.5.5
Fix: deepseek-v4-pro can now correctly recognize 1M context
APIBypass v0.5.3
What's New
Cross-Provider Model Selection in Claude Code Launcher
- Per-model provider picker: each model environment variable (ANTHROPIC_MODEL, OPUS, SONNET, HAIKU, SUBAGENT) now has an independent two-tier picker — first select the provider, then choose a mapping from that provider
- Removed top-level provider selector: the previous single provider picker at the top of the launcher is no longer needed, since each model carries its own provider context
- All five models can now route to different upstream providers simultaneously
Changelog
- feat: two-tier model selection (provider → mapping) per model in Claude Code launcher
- feat: cross-provider model support — each env var model can target a different provider
- feat: remove redundant top-level provider picker from launcher UI
- docs: update screenshot for new launcher layout
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.5.3
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.5.2
What's New
Claude Code Compatibility
- Strip
cchbilling headers: automatically removescchrequest identifiers from headers to prevent billing conflicts when using Claude Code with non-Anthropic providers - CLAUDE_CODE_ATTRIBUTION_HEADER toggle: new control in the Claude Code launcher to enable or disable the
CLAUDE_CODE_ATTRIBUTION_HEADERenvironment variable
OpenAI Responses API Support
- Added proxy support for the OpenAI Responses API endpoint (
/v1/responses) - Responses API format is handled alongside Chat Completions for seamless integration
Bug Fixes & Improvements
- Fixed URL building: proxy now correctly constructs upstream URLs for providers with non-standard paths (e.g.,
/v3) - Fixed streaming error responses: upstream errors during SSE streaming are now returned in proper SSE format with correct
data:prefix and newline termination - Build warnings cleaned up: removed unused variable initialization
Changelog
- feat: add OpenAI Responses API (
/v1/responses) proxy support - feat: add RectifierModels for Claude Code billing header handling
- feat: strip
cchbilling headers in HTTPServer - feat: add CLAUDE_CODE_ATTRIBUTION_HEADER toggle in Claude Code launcher
- fix: upstream URL building for providers with non-
/v1paths - fix: SSE streaming error response format
- chore: remove unused
baseURLStringvariable - docs: update README and README_CN with v0.5.2 features
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.5.2
./build-app.sh
./build-dmg.shRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.1.4
What's New
Switch Controls for Override Settings
Added independent switch toggles for both "Reasoning Mode" and "Custom Parameters" sections:
- A master switch to enable/disable the override
- When disabled, settings are preserved but not injected into requests
- When enabled, configured values are applied
Renamed UI Labels
- "思考模式" → "更改默认推理模式" (Reasoning Mode Override)
- "启用思考模式" → "是否启用思考模式" (Enable Thinking Mode)
Bug Fixes
- Fixed toggle states being lost after app restart (switch states now persist correctly)
- Fixed boolean and numeric values in custom parameters being incorrectly converted to strings
true/falsenow correctly parsed as booleans- Numbers now correctly parsed as Int or Double
Changelog
- c74c872: feat: Improved thinking mode and switch control of custom parameters
- 6d6e84f: fix: Fixed the issue where boolean values and numbers in custom parameters were incorrectly converted to strings
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.1.4
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.1.3
What's New
Auto-start Server
The proxy server now starts automatically when the app launches — no manual step needed. The menu bar icon shows a green dot when running and a gray dot when stopped. If you do not want the service to start automatically when entering the APP, please roll back to 4f6136b (tag v0.1.2)
Status Indicator
A small colored dot overlays the app icon in the menu bar:
- Green — server is running
- Gray — server is stopped
Bug Fixes
- Fixed config data loss when switching between mappings in the detail view
- Fixed app crash when closing the config window
- Fixed enable_thinking parameter not being injected correctly in OpenAI mode
- Fixed thinking mode section only appearing for Anthropic (now shows for all providers)
- Fixed duplicate ConfigManager instances causing config changes to not take effect at runtime
Changelog
- 69b6545: Auto-start server via labelView.onAppear (correct lifecycle hook)
- 310b192: Draw status dot directly on NSImage using CoreGraphics
- 2b50d65: Fix config duplication (.id mappingId) and window close crash (isReleasedWhenClosed)
- dbc77b1: Fix ConfigManager instance mismatch between UI and server
- 0ce7888: Fix enable_thinking:true not injected when toggle is ON
- 6d05049: Add custom JSON fields support and fix thinking mode logic
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.1.3
swift build -c release
Requirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.5.6
What's New
SSE Compatibility Fix
- Fixed SSE parsing for non-standard providers: Resolved an issue where some API providers (e.g., MiMo) return SSE events without blank line separators, causing complete response failure. The decoder now correctly handles both standard and non-standard SSE formats.
Extended Thinking Support
- Anthropic → OpenAI thinking conversion: When converting Anthropic streaming responses to OpenAI format,
thinking_deltablocks are now mapped to OpenAI's nativereasoning_contentfield, ensuring seamless display in OpenAI-compatible clients. - Redacted thinking handling:
redacted_thinkingblocks are converted to a placeholder message inreasoning_content.
Claude Code Launcher Improvements
- Simplified default templates: Reduced from 3 preset templates to 1 empty "Default" template for cleaner initial state.
- Unified UI styling: Terminal selection section now matches the environment variables section with consistent border styling.
Changelog
- fix: SSE decoder compatibility with non-standard SSE format (no blank line separators)
- feat: convert Anthropic
thinking_deltato OpenAIreasoning_contentin streaming translation - feat: handle
redacted_thinkingblocks in Anthropic → OpenAI conversion - feat: add
signature_deltahandling (ignored for single-turn, needed for multi-turn continuity) - refactor: simplify default templates to single empty "Default" template
- style: unify terminal selection section border with environment variables section
- chore: add debug logging for SSE stream processing
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.5.6
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.5.1
Fix translation problem.