Releases: panando/APIBypass
APIBypass v0.8.8
New Features
- Protocol Switch Restart Confirmation — When switching communication protocol (Chat Completions ↔ Responses API) while Codex APP is running, show a confirmation dialog informing the user that a restart is required. Unsaved model changes are merged into a single dialog when applicable.
Technical Changes
- Move config mirror file from
~/.codex/to~/Library/Application Support/com.apibypass.APIBypass/for better separation from Codex APP's directory - Add
ProtocolSwitchDecisionMakercomponent with unit tests for protocol switch logic
APIBypass v0.8.7
v0.8.7
New Features
-
Verbose Logging Toggle - Add a "Verbose" switch in Codex Adaptor's Logs tab. When disabled, only errors are logged and consecutive duplicate events are skipped, reducing log noise.
-
Automatic Parameter Error Retry - When upstream returns a 400 error due to parameter issues (e.g., thinking budget exceeded, signature mismatch), the proxy automatically retries with corrected parameters.
Bug Fixes
- Model Resolution - Fix model name resolution in Codex Adaptor to prioritize the
model(slug) field overdisplayNamewhen matching catalog entries, improving compatibility with Codex's identifier handling.
Technical Changes
- Consolidate logging by removing redundant
CodexLoggingService, usingCodexLogStoreas the single logging component with OSLog integration - Add
ParamErrorRetryutility for parsing upstream error responses and determining retry actions - Improve request logging with unique request IDs for better traceability
APIBypass v0.8.6
v0.8.6
Bug Fixes
-
WireAPI persistence - Fix communication protocol (Chat Completions / Responses API) setting not persisting correctly in Codex adaptor. The selection now persists across app restarts.
-
CancellationError handling - Fix potential crash from not properly propagating CancellationError in async sleep calls.
Technical Changes
- Add hasLoadedConfig and oldValue != newValue guards in onChange
- Use DispatchQueue.main.async to clear isHandlingProtocolSwitch flag after state updates
- Fix error handling in CodexAppLauncher, CodexAdaptorService, and CodexAppInjector
APIBypass v0.8.5
What's New
Menu Bar Redesign
The menu bar now displays real-time status for each service with intuitive symbols:
- Status indicators — ● (solid) = running, ○ (hollow) = stopped
- Launch Codex — New one-click menu item that launches Codex.app with debug port, auto-starting Codex Adaptor service if needed
- Reorganized structure — Logical grouping: services first, then launch actions, then configuration
Codex Adaptor Improvements
- CDP connection state tracking — Real-time status indicator showing: disconnected → scanning → connected → injected
- Model whitelist unlock — New toggle to unlock hidden models in Codex's model selector
- Statsig model patch — Enables model selector to show all available models
- Fixed model duplication — Resolved white screen on Codex startup caused by duplicate model entries
- Enhanced logging — Diagnostic events for CDP injection, plugin patches, and model whitelist operations
Help Documentation
- New menu bar section — Documents all menu items with status indicator explanations
- Codex usage guide — Step-by-step instructions for launching and configuring Codex
- New FAQ entries — Common questions about Codex adaptor, CDP injection, plugin settings
- Fixed punctuation — Added missing punctuation to Chinese help strings
Documentation Updates
- Updated screenshots — All screenshots replaced with current UI
- Launch Codex section — New quickstart section with screenshot
- Status indicator explanation — Documents ●/○ symbols in README
Bug Fixes
- Fixed menu bar "Launch Codex" to actually launch Codex.app (previously only started adaptor service)
- Fixed CDP state polling task lifecycle management
- Fixed proxy port propagation to injector settings
- Fixed thinking parameter defaults for Kimi K2.5/K2.6
- Fixed model config reading with snake_case field names
APIBypass v0.8.4
What's New
Responses API Support
This release adds support for OpenAI Responses API as a new provider type, alongside the existing OpenAI Chat Completions and Anthropic formats.
- Add Responses API provider option when creating new providers
- Add
/v1/responsesendpoint to the HTTP server - Group providers by API type in the provider list for better organization
Protocol-Bound Model Configuration
The Codex adaptor now maintains separate model lists for each protocol type:
- Chat Completions protocol shows only Chat/Anthropic provider models
- Responses API protocol shows only Responses API provider models
- Switching protocols automatically switches to the appropriate model list
- Unsaved changes are detected and handled before protocol switch
Bug Fixes
- Fix infinite alert loop when switching protocols with unsaved changes
- Fix false unsaved changes alert on app launch
- Fix model catalog not reflecting protocol-specific model lists
- Fix race conditions during config load by disabling interactions until fully loaded
- Improve NewProviderView window sizing for Responses API providers
Migration
- Existing custom models are automatically migrated to the Chat protocol list
- Configuration is backwards compatible with previous versions
APIBypass v0.8.3
What's New
Auto-inject max_tokens for Anthropic API
Anthropic API requires the max_tokens field, but OpenAI-format clients (like Codex Adapter) don't always include it. This release auto-injects a default value when converting OpenAI requests to Anthropic format.
- When
FormatTranslator.openAIToAnthropicRequest()converts a request withoutmax_tokens, it now injects a default value of8192. - If the client already provides
max_tokens, the value is preserved. - Added unit tests covering auto-injection, preservation of existing values, and non-injection for OpenAI format.
Codex Adapter Pipe Deadlock Fix
Fixed a potential deadlock in CodexConfigService when reading Codex template output:
- Pipe data is now read before
waitUntilExit()to avoid blocking when output exceeds the pipe buffer (~64KB). - Previously, large outputs could cause the process to hang indefinitely.
APIBypass v0.8.1
What's New
Claude Code Launcher Compatibility Fix
The launcher now finds the claude binary regardless of which official installation method was used. Previously, it failed on machines using Homebrew Cask, fnm, or Volta installs, and could not find Claude Code at all on some systems.
Supported install methods:
| Install Method | Path |
|---|---|
Native (curl | bash) |
~/.local/bin/claude |
| Auto-updater / Desktop app | ~/.claude/bin/claude |
| Homebrew (Apple Silicon) | /opt/homebrew/bin/claude |
| Homebrew (Intel) | /usr/local/bin/claude |
| Homebrew Cask | Claude.app/Contents/MacOS/claude |
| npm + nvm | ~/.nvm/versions/node/v*/bin/claude |
| npm + fnm | ~/Library/Application Support/fnm/.../installation/bin/claude |
| npm + Volta | ~/.volta/bin/claude |
| Any other | Login-shell zsh -l -c "which claude" fallback |
Key fixes:
- Replaced
/usr/bin/which(doesn't inherit user PATH) with login-shellwhichto pick up nvm/fnm/volta paths - Removed hardcoded nvm Node version paths; now dynamically scans all installed versions
- Added
~/.claude/bin/claude, Homebrew Cask, fnm, and Volta search paths - Added
FileSystemprotocol for testability with 11 unit tests
Full Changelog: v0.8.0...v0.8.1
APIBypass v0.8.0
What's New
Distribution Package Fixes
This release fixes the Apple Silicon macOS packaging flow for users downloading APIBypass from GitHub Releases.
- The final
.appbundle is now ad-hoc signed after assembly, soInfo.plistand bundled resources are sealed correctly. - The build script removes local Xcode toolchain rpaths from the executable before signing.
libswiftCompatibilitySpan.dylibis embedded intoContents/Frameworkswhen required, avoiding launch failures on machines without the same Xcode toolchain installed.- The DMG build now verifies both the local
.appand the app mounted from the generated DMG.
Release Verification
A new release verification script checks the generated app bundle before shipping:
- strict codesign verification
- rejection of
/Applications/Xcode.app/...load paths - Gatekeeper distribution precheck with only the expected no-certificate failures accepted
Unsigned Build Documentation
The README now explains that current releases are ad-hoc signed and not Apple-notarized, and includes beginner-friendly steps for opening the app when macOS reports that it is damaged.
Note: APIBypass still does not have a Developer ID certificate. Gatekeeper may still require manual approval or quarantine removal for downloaded releases.
APIBypass v0.7.9
What's New
Help Page Overhaul
The in-app help window was rewritten end to end — new table of contents, new sections, and a proper typographic hierarchy.
- Reorganized TOC: Quick Start, Menu Bar, Model Mapping, Parameter Injection, Thinking Protocol, Bypass Mode, Launcher, Codex Adaptor, Custom Models, Settings, FAQ — ordered to follow the natural setup flow.
- New sections: Thinking Protocol (explains the three protocols and the auto-inference), Custom Models (alias / source / context window), plus expanded Codex Adaptor and Launcher coverage (configurable port, reasoning override, auto-detect, cache optimization, rectifier, keychain, templates).
- Typographic hierarchy: section titles bold/black/large; body, bullets, and notes de-emphasized in gray. Feature names inside list items are bolded (e.g. Custom Models — ...) so the term is distinguishable from its description.
- Bordered group cards: multi-subtopic sections are wrapped in individual cards with separator borders, mirroring the FAQ styling.
- Stable sidebar toggle: the sidebar visibility button is now pinned to the toolbar's leading edge via
ToolbarItem(.navigation)— it no longer jumps left/right when clicked. - Wider default window (960×640) and increased in-paragraph line spacing for readability.
Settings Window Redesign
- Language on a single row: the segmented picker sits inline with the title instead of on a second line.
- Auto-sizing window: the settings window is now resizable and miniaturizable, sizing to its content.
- Trace log group tightened: the toggle is placed directly next to its title, and when enabled the log file path appears below the description in monospaced, selectable text.
- Renamed "服务端口" → "API中转服务端口" and shortened the trace-log description.
- Consistent
cardStyle()across all three groups with tighter spacing.
About Panel
- The GitHub link (
https://github.com/panando/APIBypass) now actually renders.Credits.rtfis bundled via SPM resources and loaded throughBundle.moduleinto the standard About panel. - Panel widened to 480pt and centered; copyright set to "MIT License" via
NSHumanReadableCopyrightin Info.plist. - An About entry was added to the menu-bar menu (previously only accessible via the app menu).
Trace Log Directory Renamed
The trace log folder moved from ~/Library/Logs/com.apibypass.app/trace/ to ~/Library/Logs/APIBypass/trace/. The old reverse-DNS name made Finder render it as an app-bundle icon rather than a normal folder. The logger also no longer opens a file handle when trace logging is disabled.
APIBypass v0.7.8
What's New
Redesigned Thinking Control Field
The "Reasoning Mode Override" section was rebuilt around a single Thinking Field picker with three protocols, replacing the previous four-case design:
enable_thinking— Qwen3 series (DashScope). A switch toggles the boolean field on/off.thinking.type(Anthropic native) — Claude / GLM / Kimi / DeepSeek / Doubao. A switch togglesthinking.typebetweenenabledanddisabled.none— Models that control thinking internally (OpenAI o-series, gpt-5, DeepSeek-R1). No switch field is emitted; an optional Reasoning Effort free-text input lets you injectreasoning_effort(e.g.low/medium/high/xhigh).
The protocol is auto-inferred from the provider baseURL and model name, and can be manually overridden per mapping. Backward compatible: configs saved with the old reasoning_effort protocol value decode to the new none case.
Collapsible Mapping Sections
In the expanded mapping card, the Reasoning Mode Override and Custom Parameters sections now collapse to a single title row when their switch is off, instead of greying out their contents. This keeps the editor compact and the inactive state unambiguous.
Grouped Section Borders
The four editor sections — Basic Info, Reasoning Mode Override, Parameter Injection, Custom Parameters — are now wrapped in individual bordered cards inside the mapping card, making the grouping clearer at a glance. The provider info line under Basic Info is left-aligned.
Other
- Removed the divider between the thinking-protocol picker and the enable-thinking toggle.
MappingCardViewno longer carries athinkingBudgetstate (budget fields were dropped from the model).