Releases: panando/APIBypass
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).
APIBypass v0.7.7
What's New
Fix: Subagent Empty Returns and Thinking Context Loss
Fixed two bugs in the Anthropic→OpenAI request translation path that caused Claude Code subagents (Task tool) to return empty results when routed through APIBypass to GLM / Kimi / DeepSeek upstreams:
tool_resultarray content dropped: Claude Code sendstool_result.contentas an array of content blocks, but the translator only handled the string form viaas? String, falling back to an empty string. Parent agents then received empty tool results. Now both string and array forms are parsed correctly.thinkingblocks in assistant history dropped: Assistant messages carryingthinkingblocks fell through thedefaultbranch and were silently discarded. GLM / Kimi / DeepSeek requirereasoning_contentto be preserved across turns for multi-turn tool calling — losing it caused 400 errors or degraded reasoning continuity.thinkingblocks are now carried through asreasoning_content.
TraceLogger
Added an internal trace logger that dumps upstream/downstream SSE events keyed by request ID, wiped and rebuilt on each app launch. Logs are written to ~/Library/Logs/com.apibypass.app/trace/.
APIBypass v0.7.6
What's New
Streaming Token Usage for OpenAI-Compatible Providers
Added a provider-level switch: Request streaming token usage . When enabled, APIBypass adds stream_options.include_usage=true to OpenAI-compatible streaming requests for that provider, allowing clients such as Claude Code to display context percentage and token usage when the upstream provider requires explicit usage reporting.
- Enabled by default for existing and new providers
- Only applies to OpenAI-compatible streaming upstream requests
- Preserves client-provided
stream_optionswithout overriding them - Can be disabled per provider if an upstream API does not support
stream_options/include_usage - Includes an info popover explaining when to enable or disable the option
UI Improvements
- Improved the provider settings UI with a compact stream-usage switch and clearer help text
- Renamed the global model-name option to Model Name Fix
- Improved the sidebar model-name toggle layout for better visual consistency
- Added drag handles and drag-and-drop reordering for provider model mappings
- Added drag-and-drop reordering for Codex Adaptor custom models
- Refined Codex Adaptor custom model column sizing and header hierarchy
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.7.6
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.7.5
What's New
Return Requested Model Name
Added a global toggle in the config window sidebar: "Return Requested Model". When enabled, the model field in API responses matches the client's requested model name instead of the upstream actual model name.
This solves a common problem: some AI clients strictly validate that the response's model field matches the request. For example, if you request glm-5.1-ark (mapped to upstream glm-5.1), the response would normally return glm-5.1 — causing validation failures. Enabling this toggle ensures the response returns glm-5.1-ark, consistent with what the client sent.
- Works for both streaming and non-streaming responses
- Works across all API format combinations (OpenAI, Anthropic, with or without format translation)
- Toggle is located at the bottom of the config window sidebar, separated from the provider list
- Click the info icon next to the toggle for a detailed explanation with example
APIBypass v0.7.4
What's New
Codex Adaptor: Custom Models UI Overhaul
- Unified row style: Adding a model now inserts a standard row (with trash button) instead of a separate inline form with X/checkmark buttons. Deleting via trash button saves immediately — no double confirmation needed
- Context Window: New model entries no longer pre-fill 128000. The field is empty with placeholder text, preventing accidental saves of default values
Codex Adaptor: Reasoning Configuration Improvements
- Auto-Detect button repositioned: Moved from the override toggle row to inside the override panel, appearing next to the toggle when enabled. It now only fills parameters without automatically enabling the override switch
- Info popover: Added an info button (ℹ) next to the "auto-detection is used when no override is set" hint. Clicking it shows how inference works, which providers are supported, and what happens when no match is found
Settings Panel
- Section titles: Changed from
.subheadlinesecondary style to.headlinefor clearer visual hierarchy - Language picker: Left-aligned instead of centered; removed the "takes effect immediately" hint text
Localization
- Menu bar: "启动 CodexAdaptor 服务" → "启动 Codex 适配服务" (Chinese)
APIBypass v0.7.3
What's New
Menu Bar Dual Status Indicator
The menu bar icon now shows two status dots — one for each service:
- Bottom-left: Codex Adaptor (green = running, gray = stopped)
- Bottom-right: APIBypass server (green = running, gray = stopped)
Same dot style and color logic as before (5px oval, systemGreen / systemGray). You can now see the status of both services at a glance.
Menu Bar Start/Stop for Codex Adaptor
- New menu item: "Start/Stop CodexAdaptor" — control the Codex Adaptor proxy directly from the menu bar
- Renamed existing item: "Start/Stop APIBypass" (was "Start/Stop Server") for clarity
- Removed status text: The running/stopped text and port number have been removed from the menu. Status is now shown exclusively via the icon dots — cleaner and less visual noise
Codex Adaptor Custom Models: Save/Cancel Buttons
The Custom Models section now uses a draft-working-copy pattern with explicit Save and Cancel buttons:
- Edits to model aliases, mappings, and context windows are held in a draft until you commit them
- Save persists changes and syncs to UserDefaults +
~/.codex/providers.json - Cancel reverts all changes to the last saved state, including any in-progress add form
- Add and delete operations only modify the draft — no more auto-save
- Buttons only appear when there are unsaved changes, keeping the UI clean
Other Changes
- README: All "Codex CLI" references replaced with "Codex"
- Updated icon assets
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.7.3
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.7.2
What's New
Config Auto-Recovery from providers.json
When Codex Adaptor configuration is missing from UserDefaults (e.g., after clearing app data), the app now automatically recovers settings from ~/.codex/providers.json — the derived output generated during the last service startup. This prevents data loss for custom models, wire API, and reasoning configuration.
- Wire API: Restored from
upstreamWireAPI - Reasoning config: Full recovery including all thinking/effort overrides
- Custom models: Model slugs matched against APIBypass mappings by
incomingModel, restoring aliases and context windows - Recovered config is persisted back to UserDefaults immediately
Bug Fixes
- Menu bar language switching: Fixed menu bar not re-rendering when switching between Chinese/English — changed
private letto@ObservedObject private varforLocalizationManager
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.7.2
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.7.0
What's New
Codex Adaptor — Built-in Responses API Proxy for Codex CLI
The codex-adapter project is now fully integrated into APIBypass as a built-in feature. Launch from the menu bar "Codex适配器" (Codex Adaptor) to run a local proxy that translates Codex CLI's Responses API calls into Chat Completions format, then forwards them through APIBypass for model mapping and parameter injection.
Architecture: Codex CLI → Codex Adaptor proxy (:15721) → APIBypass server (:8390) → upstream API provider
- Communication Protocol: Choose between Chat Completions or Responses API wire format, with contextual guidance
- Reasoning Configuration: Auto-detect or manually configure thinking/effort parameters per provider (DeepSeek, OpenRouter, SiliconFlow, MiniMax, Qwen, etc.)
- Custom Models: Define model display names that map to APIBypass model mappings via dropdown selector, with configurable context windows
- CDP Enhancements (switch-toggle style): Force entry unlock, plugin marketplace unlock, and force plugin install for the Codex Electron app
- Real-time Logs: Built-in log viewer with filtering, auto-scroll, copy all, export, and clear
Thread Safety Architecture
- CodexLogStore: Removed
ObservableObject/@Publishedto eliminate Combine → SwiftUI → AutoLayout crashes from background threads. UI now polls viaTimerfor thread-safe log updates, following the same data/UI separation pattern established inConfigDataStore/ConfigManager - CodexProxyServer: Fixed stop button — server now properly shuts down via
Task.cancel()propagating through Hummingbird'sServiceGroupgraceful shutdown, instead of just dropping the reference - ModelCatalog: Added
Sendableconformance toModelCatalogandModelCatalogEntryto resolve Swift 6 concurrency warnings - ConfigDataStore: Added
getFirstEnabledMapping()for fast lookup
UI Refinements
- Sidebar navigation redesign matching the original codex-adapter project layout
- Card-style sections with consistent styling (rounded corners, subtle borders)
- Custom Models section with proper column headers, inline add/delete, and confirmation dialogs
- Communication Protocol description explaining when to use Chat Completions vs Responses API
- Switch toggles with right-aligned layout and smaller control size in Codex Enhancements
- Removed unused debug port option from Codex Enhancements
- Empty placeholder text for context window field
Bug Fixes
- Double /v1 URL: Fixed upstream path construction — removed
/v1prefix fromupstreamPath()since base URL already includes it - Request loop: Fixed proxy forwarding back to itself — pointed upstream URL to APIBypass server (127.0.0.1:8390) instead of proxy port
- Model name resolution: Codex Adaptor now resolves Codex model aliases → APIBypass model names through model catalog in proxy handler, enabling the full Codex CLI → proxy → APIBypass → upstream flow
- Stop button: Proper server shutdown with Task cancellation
Localization
- Menu bar "Codex Adaptor" displays as "Codex适配器" in Chinese UI
- 25+ new localization keys for Codex Adaptor UI (en/zh), with descriptions matching the original project
- Communication protocol guidance localized
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.7.0
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+
APIBypass v0.6.6
Removed Responses API Support
- Removed OpenAI Responses API (
/v1/responses) endpoint: The project now focuses exclusively on Chat Completions API and Anthropic Messages API. Responses API format conversion will be reintroduced later via a dedicated CodexAdaptor module.
Simplified Architecture
- Removed
APIFormat.responsesenum case: The core format routing now only supports two formats: OpenAI Chat Completions and Anthropic Messages. - Removed
APIProvider.openaiResponsesprovider type: Provider configuration UI no longer shows the Responses API option. - Cleaned up ~500 lines of Responses-specific translation code: Removed 8 format conversion methods and 5 usage mapping helpers from
FormatTranslator.
Changelog
- refactor: remove
/v1/responsesendpoint from HTTPServer - refactor: remove
APIFormat.responsesfrom ProxyEngine - refactor: remove
APIProvider.openaiResponsesfrom APIProvider model - refactor: remove Responses request/response translation methods from FormatTranslator
- refactor: remove Responses usage mapping helpers from FormatTranslator
- refactor: remove
.openaiResponsescase from NetworkService auth switch - refactor: remove Responses option from provider UI pickers
- refactor: remove
provider_type_openai_responseslocalization key
Download
Build from Source
git clone https://github.com/panando/APIBypass.git
cd APIBypass
git checkout v0.6.6
swift build -c releaseRequirements: macOS 14.0+, Swift 6.0+, Xcode 16.0+