Skip to content

Releases: panando/APIBypass

APIBypass v0.5.9

03 Jun 15:00

Choose a tag to compare

Bug Fix

  • SSE streaming lost events: Fixed SSEDecoder to yield events immediately upon receiving each data: 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

03 Jun 14:04

Choose a tag to compare

Fixes

  • iTerm2 cold-start: AppleScript app name corrected to "iTerm" (was "iTerm2"), fixing the -2741 syntax error when iTerm2 is not already running.
  • Terminal window detection: Uses CGWindowListCopyWindowInfo to 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 unconditional enable_thinking: false that caused upstream rejection.
  • Reasoning content support: Converts OpenAI reasoning_content to Anthropic thinking content 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

03 Jun 12:14

Choose a tag to compare

What's New

Concurrency Performance Optimization

  • Connection limit control: Implemented AsyncSemaphore to limit concurrent connections (default: 100). Returns 503 Service Unavailable when limit is exceeded, preventing resource exhaustion.
  • Backpressure control: New streamWithBackpressure method 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, preventing 400 Bad Request errors 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_JSONParseError in 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 AsyncSemaphore for concurrent connection limiting
  • feat: implement streamWithBackpressure with 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 release

Requirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+

APIBypass v0.5.5

03 Jun 12:16

Choose a tag to compare

Fix: deepseek-v4-pro can now correctly recognize 1M context

APIBypass v0.5.3

03 Jun 12:16

Choose a tag to compare

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 release

Requirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+

APIBypass v0.5.2

03 Jun 12:16

Choose a tag to compare

What's New

Claude Code Compatibility

  • Strip cch billing headers: automatically removes cch request 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_HEADER environment 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 cch billing headers in HTTPServer
  • feat: add CLAUDE_CODE_ATTRIBUTION_HEADER toggle in Claude Code launcher
  • fix: upstream URL building for providers with non-/v1 paths
  • fix: SSE streaming error response format
  • chore: remove unused baseURLString variable
  • 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.sh

Requirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+

APIBypass v0.1.4

03 Jun 12:19

Choose a tag to compare

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/false now 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 release

Requirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+

APIBypass v0.1.3

03 Jun 12:20

Choose a tag to compare

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

03 Jun 12:14

Choose a tag to compare

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_delta blocks are now mapped to OpenAI's native reasoning_content field, ensuring seamless display in OpenAI-compatible clients.
  • Redacted thinking handling: redacted_thinking blocks are converted to a placeholder message in reasoning_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_delta to OpenAI reasoning_content in streaming translation
  • feat: handle redacted_thinking blocks in Anthropic → OpenAI conversion
  • feat: add signature_delta handling (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 release

Requirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+

APIBypass v0.5.1

03 Jun 12:16

Choose a tag to compare

Fix translation problem.