🎉 Stable Release v3.4.0
Multi-Architecture Binaries
Download the appropriate binary for your platform:
- Linux x86_64:
better-ccflare-linux-amd64 - Linux ARM64 (Raspberry Pi 3/4/5, Oracle Cloud ARM, AWS Graviton):
better-ccflare-linux-arm64 - macOS Intel:
better-ccflare-macos-x86_64 - macOS Apple Silicon:
better-ccflare-macos-arm64 - Windows x86_64:
better-ccflare-windows-x64.exe
Installation
# Linux x86_64
wget https://github.com/tombii/better-ccflare/releases/download/v3.4.0/better-ccflare-linux-amd64
chmod +x better-ccflare-linux-amd64
./better-ccflare-linux-amd64
# macOS Apple Silicon (ARM64)
curl -L -o better-ccflare-macos-arm64 https://github.com/tombii/better-ccflare/releases/download/v3.4.0/better-ccflare-macos-arm64
chmod +x better-ccflare-macos-arm64
xattr -d com.apple.quarantine better-ccflare-macos-arm64 # Required for unsigned binaries
./better-ccflare-macos-arm64macOS Users: The xattr command is required to bypass Gatekeeper for unsigned binaries. If you prefer not to run unsigned binaries, install from source instead.
Or install via npm: npm install -g better-ccflare@v3.4.0
What's Changed
🚀 Features
- feat: add Qwen reauth button to UI and reauthenticate CLI command (
0bbbec3) - feat: log provider token response fields on refresh for observability (
1723720) - feat: show combo name in request history (
359a7a8) - feat(anthropic): add OpenAI-compatible finish_reason to Anthropic SSE stream (#111) (
5643d4e) - feat: add Qwen (Alibaba Cloud) OAuth provider via device code flow (
5fcc694) - feat: add proactive token refresh for Codex accounts (
75cbc1b) - feat: detect OAuth billing type and split plan vs API cost display (
7c8d5ee) - feat: add Codex device code flow support in dashboard UI (
8c4a5df) - feat: add combo feature with data layer, proxy routing, REST API, and dashboard UI (
9d10078) - feat: add proactive token refresh for Qwen accounts (
b0ba977) - feat: add per-account billing type toggle for compatible providers (
b1cb859) - feat: add Qwen device code flow support in dashboard UI (
d6f9f25) - feat: show Zai peak hours in account view and tag peak-hour requests in log (
dd3b130) - feat: show Anthropic OAuth peak hours in account view and tag peak-hour requests in log (
ded1bac)
🐛 Bug Fixes
- fix: improve truncated tool JSON repair suffix order (
04fa65d) - fix: allow dots in account names and default Qwen to coder-model (
0a6d768) - fix: repair truncated tool-call JSON from OpenAI-compatible providers (
11a6554) - fix(openai-formats): fix incremental arg accumulation order (
15d5cf1) - fix(openai-formats): handle incremental tool call argument mode (
1d4002d) - fix: coerce PostgreSQL BIGINT values to Number before Date construction (
1f43389) - fix: update stale comment on 5h rate-limit default — applies to any provider, not just Zai (
24d7e39) - fix: classify plan-based provider requests as "plan" billing type (
321a3d0) - fix: move 429 check before content-type guard to fix combo slot failover (
3c6254f) - fix(openai-compat): emit repair+stop in flush for streams that end without [DONE] (
41bedbd) - fix(openai-formats): always buffer tool call args, mirror qwen-code StreamingToolCallParser (
48d2f34) - fix: format total tokens with thousand separators and unit label in analytics breakdown (
4c761c5) - fix(model-mappings): pass through original model name when no mappings configured (
51e656a) - fix(proxy): increase stream timeouts and make them configurable for agentic workloads (
6116af7) - fix(dashboard): include billingType in accounts list API response (
64fbf87) - fix(openai-compat): skip empty tools array to avoid DashScope validation error (
6a2a42d) - fix(proxy,load-balancer): make rate-limit failover work for streaming traffic (
73efb63) - fix(openai-formats): buffer incremental tool call chunks, emit at stream end (
748486d) - fix: await billing type DB write and deduplicate proactive Qwen/Codex token refreshes (
8daa4f6) - fix(anthropic): skip finish_reason transform for native Anthropic SDK clients (
8ded7e7) - fix: strip $schema from tool input_schema for OpenAI-compatible providers (
8f2fd7b) - fix(proxy): include billing_type in account repository queries (
9e63449) - fix(openai-formats): add missing content_block_stop for text-only responses (
9eeca80) - fix(anthropic-compatible): deduplicate path prefix in buildUrl (
b06f450) - fix(anthropic-compatible): use core mapModelName for model mapping (
b45d02b) - fix: serialize Error objects in logger and include data in SSE log events (
c202ba6) - fix: escape < character in lander HTML stat number (
c34abf7) - fix(model-mappings): pass through original model name when no mappings configured (
c780572) - fix: add aria-hidden to decorative SVGs in lander HTML (
c93f530) - fix: filter additional version bump commits from changelog (
cc4bf60) - fix: use jq for JSON escaping in issue triage workflow (
cdbf401) - fix: strip all client headers for Qwen and only send DashScope-required ones (
d302db3) - fix(proxy): fail over to next account on 429 when no model fallbacks configured (
d6398a4) - fix: add Stainless SDK headers to Qwen provider to pass portal.qwen.ai fingerprint check (
d7a2859) - fix(proxy): detect mid-stream SSE rate-limit errors and mark account (
e3e30e3) - fix(openai-formats): fix indentation in emitStreamEnd function (
f81fcc2)
🔧 Improvements
- improve(release): filter internal WR/CR review commits from changelog (
2f09f45) - improve: combo dialog scrollability, slot form layout, and token formatting (
446ad0e) - improve(release): show all changelog entries and filter dated sub-commits (
b2a4ece) - improve(openai-compat): add comment explaining cache_control preservation (
bd059d8) - improve(qwen): preserve cache_control from Anthropic client and sanitize system prompt for DashScope (
f423b40) - improve: format ternary expressions and update GitNexus index stats (
f5e3573)