Releases: looplj/axonhub
Releases · looplj/axonhub
v1.0.0-beta4
What's Changed
- fix: preserve filter state when navigating to request detail page by @MoshiCoCo in #1819
- opt: add empty tolerance for claude code read, close #1681 by @looplj in #1820
- 修复:复制渠道时同步复制模型价格 by @luoxue03 in #1811
- opt: gc & retry by @looplj in #1823
- fix(i18n): add missing translation keys for 3 anthropic channel variants by @MoshiCoCo in #1824
- chore: upgrade claude code oauth by @looplj in #1827
- fix(frontend): 允许 Codex 渠道切换协议 by @llc1123 in #1808
- feat:在渠道配置中新增“重试错误信息”规则 by @xuyufengfei in #1828
- chore: sync model developers data by @github-actions[bot] in #1830
- feat: update default models for bailian, xiaomi, volcengine, zhipu channels by @MoshiCoCo in #1829
- feat: codex image gen/edit, close #1816 by @looplj in #1831
- chore: channel action dialog minor ui by @looplj in #1832
- docs: correct dev Go version floor to 1.26 to match go.mod by @Dashsoap in #1833
- opt: openai response schema by @looplj in #1834
- feat: toggle IP ban icon by @nb5p in #1848
- feat: add GLM-5.2 to zai channel default models by @qinkangdeid in #1842
- fix(oidc): avoid privacy-deny error on every sign-in by @qinkangdeid in #1841
- fix: model circuit breakder, close #1821 by @looplj in #1854
- fix(model_fetcher): avoid duplicate /v1 for anthropic-like endpoints by @KremeCN in #1852
- feat: add array_remove override op by @cesaryuan in #1851
- feat: reset codex quota right now, close #1849 by @looplj in #1855
- fix(frontend): correct api key creator filter scope by @KremeCN in #1856
- fix: allow third-party Codex channels to edit Base URL by @brynne8 in #1835
- fix: enforce strict local channel RPM admission by @lihaojiee in #1840
- fix: openai video schema, close #1845 by @looplj in #1857
- fix(frontend): hide api key creator column without system user permission by @KremeCN in #1859
- feat: test all api keys, close #1853 by @looplj in #1858
- opt: init channel performances async, close #1861 by @looplj in #1864
- fix(frontend/dashboard): align channel success rate card height with daily overview by @lihaojiee in #1862
- fix: should drop the invalid signature for unknown openai/anthropic, … by @looplj in #1866
- fix: api key token usage scope, close #1865 by @looplj in #1867
- feat: highlight low cache hit rate, close #1837 by @looplj in #1868
- fix: hide prefixed model, close #1732 by @looplj in #1869
- fix: codex image generation by @looplj in #1870
- chore(deps-dev): bump vite from 7.3.2 to 7.3.5 in /frontend by @dependabot[bot] in #1874
- feat: add transformer for cerebras, close #1777 by @looplj in #1876
- fix: image generation bypass, close #1802 by @looplj in #1877
- feat: record request url & pass-through flag, close #1798 by @looplj in #1878
- opt: add busy timeout for sqlite dsn, close #1768 by @looplj in #1880
New Contributors
- @luoxue03 made their first contribution in #1811
- @Dashsoap made their first contribution in #1833
- @KremeCN made their first contribution in #1852
- @cesaryuan made their first contribution in #1851
- @brynne8 made their first contribution in #1835
- @lihaojiee made their first contribution in #1840
Full Changelog: v1.0.0-beta3...v1.0.0-beta4
v1.0.0-beta3
What's Changed
- chore: 调整图像输入size大小限制 by @sxueck in #1769
- feat: add modalities field to /v1/models API response by @MoshiCoCo in #1772
- feat: add IP blocklist settings by @hen7777777 in #1771
- fix(frontend): guard execution channel query by permission by @MoeMion in #1770
- opt: backup/restore usages logs seprated, close #1712 by @looplj in #1766
- chore: upgrade claude code headers by @looplj in #1774
- fix: allow users to update language preference by @evanhon0110 in #1782
- fix: cache did not refresh sometime by @looplj in #1783
- fix(datastorage): remove unbounded in-memory cache of request/response bodies (OOM) by @suixinio in #1781
- fix(llm): claude code quota check header by @looplj in #1785
- feat(openapi): add apiKeyQuotaUsages query for service-account keys by @suixinio in #1779
- fix(openai): aggregate stream choices by index to avoid nil panic by @SAY-5 in #1775
- chore: upgrade quic by @looplj in #1786
- feat: add OpenAI audio APIs (TTS / STT) with SSE streaming by @EmccK in #1784
- chore: sync model developers data by @github-actions[bot] in #1795
- fix(audio): 修复 TTS 流式 Accept、外部存储与持久化内存占用 by @EmccK in #1792
- feat(channels): adding Anthropic messages API format support to the OpenCodeGo channel (#1751) by @MoshiCoCo in #1791
- feat: support redis multi mode by @wangYX657211334 in #1788
- refactor(neuralwatt): replace current_period_start/end with kwh_reset_date by @djdembeck in #1794
- fix: preserve Responses function call namespace by @DevilSi0722 in #1797
- feat: 添加响应超时重试配置 by @xuyufengfei in #1804
- feat: add evolink provider by @EvoLinkAI in #1773
- feat(quota): add Apertis quota monitoring and refactor openai_responses handling by @djdembeck in #1793
- feat: channel retryable statu codes, close #1803 by @looplj in #1807
- feat: route with media condition, close #1729 by @looplj in #1809
New Contributors
- @MoeMion made their first contribution in #1770
- @evanhon0110 made their first contribution in #1782
- @SAY-5 made their first contribution in #1775
- @EmccK made their first contribution in #1784
- @DevilSi0722 made their first contribution in #1797
- @xuyufengfei made their first contribution in #1804
- @EvoLinkAI made their first contribution in #1773
Full Changelog: v1.0.0-beta2...v1.0.0-beta3
v1.0.0-beta2
What's Changed
- chore: sync model developers data by @github-actions[bot] in #1706
- fix: scroll for the channel rate limit dialog, close #1701 by @looplj in #1708
- feat: render structured request log content, close #1698 by @looplj in #1711
- fix: 修复了多图输入情况下转发失效的问题 by @sxueck in #1714
- feat: add advanced model route conditions, close #1670 by @looplj in #1717
- 修复 Responses 非透传模式下工具原语保真 by @deqiying in #1703
- feat: support non-stream fallback to require-stream channels by @ttttmr in #1661
- fix(llm): accept structured response item arguments by @llc1123 in #1728
- fix(channels): show real i18n label for single-variant types like opencode_go by @qinkangdeid in #1734
- chore: add claude-opus-4-7 to claudecode DefaultModels by @qinkangdeid in #1733
- feat(llm): support responses websocket sessions by @llc1123 in #1730
- Preserve request log filters on detail navigation by @zhaozhaozz in #1723
- chore: 添加了登陆后页面标题自定义配置项 by @sxueck in #1720
- fix: model settings dialog, close #1716 by @looplj in #1718
- Support case-insensitive model filter patterns by @zhaozhaozz in #1725
- chore: add claude-opus-4-8 to claudecode DefaultModels by @qinkangdeid in #1739
- feat: opencode trace, close #1740 by @looplj in #1744
- feat: reactivate api key, close #1735 by @looplj in #1745
- fix: model association page throws Invalid input for channels without endpoints by @djdembeck in #1746
- chore: sync model developers data by @github-actions[bot] in #1754
- fix(anthropic): handle server-side tool blocks without panicking by @xdqi in #1750
- opt: request detail sheet annimation, close #1749 by @looplj in #1757
- fix: should set default model type if type not present, close #1752 by @looplj in #1760
- feat: support disabling db auto migration by @wangYX657211334 in #1727
- fix(frontend): avoid leaking "{{resource}}" placeholder in NOT_FOUND errors by @qinkangdeid in #1762
- fix: auto reasoning effort for qwen max, close #1751 by @looplj in #1765
New Contributors
- @sxueck made their first contribution in #1714
- @xdqi made their first contribution in #1750
- @wangYX657211334 made their first contribution in #1727
Full Changelog: v1.0.0-beta1...v1.0.0-beta2
v1.0.0-beta1
What's Changed
- feat: 请求日志记录新增'推理强度'字段 by @deqiying in #1506
- feat: per-channel concurrency queue + admission control by @suixinio in #1503
- feat: auto reasoning effort with suffix by @looplj in #1515
- feat: add optional read-write separation for database by @lazhenyi in #1516
- feat(quota): add wafer, synthetic, and neuralwatt quota checkers by @djdembeck in #1509
- fix(dashboard): align token stats by API key/channel/model with totals by @raikyou in #1524
- feat: add Anthropic endpoints for Volcengine, AiHubMix, and Xiaomi MiMo by @banlanzs in #1521
- display token usage in channel cards via tokenStatsByChannel API by @banlanzs in #1528
- feat(quota): add provider quota enforcement with per-limit status tracking by @djdembeck in #1518
- feat: customized channel endpoints by @looplj in #1529
- fix(pipeline): prevent channels from getting stuck in processing status by @djdembeck in #1530
- chore: reformat llm package by @looplj in #1531
- fix(models): clicking Archive on a disabled model had no effect by @djdembeck in #1535
- fix(ui): show used/total in NanoGPT quota display instead of used/remaining by @djdembeck in #1543
- fix(models): resolve vision capability from modalities when explicit field is absent by @djdembeck in #1542
- opt: disable spell check for API key textarea by @BLumia in #1544
- opt: custom endpoint api format by @looplj in #1545
- feat: align endpoint i18n and prompt protection preview by @looplj in #1546
- feat(oidc): Initial OpenID Connect Support by @LazuliKao in #1091
- scheduler: centralized cron job management by @looplj in #1550
- chore: update issue template by @looplj in #1551
- fix(llm): missing anthropic thinking disabled transform by @looplj in #1552
- feat: openai/deepseek completion api, close #1458 by @looplj in #1554
- chore: change prompt content column, close #1553 by @looplj in #1580
- fix: max model association priority, close #1507 by @looplj in #1581
- opt: responses stream failed handle & request executions index, close #1473 by @looplj in #1585
- opt: openai outbound reasoning field config, close #1584 by @looplj in #1586
- chore: sync model developers data by @github-actions[bot] in #1588
- feat: global pass-through setting by @raikyou in #1591
- feat: add lowercaseModelName channel setting for cross-channel load b… by @nb5p in #1589
- feat: expose inbound request headers to override templates by @ttttmr in #1520
- feat(apikeys): add API key profile templates by @djdembeck in #1590
- feat: prefer outbound format equals to inbound format by @looplj in #1592
- 修改前端,"测试场"新增测试模型网关模型 by @zhai23 in #1597
- fix(gc): drop nil bind args so VACUUM actually runs on Postgres by @suixinio in #1602
- chore: add gpt-5.5 for codex plans by @qinkangdeid in #1605
- refactor: remove the signature prefix marker to improve pass through by @looplj in #1593
- Support image parts in Ollama chat transformer by @zhzy0077 in #1610
- feat: add Qiniu provider support by @JackChiang233 in #1612
- fix(channels): import Qiniu icon in config_channels by @suixinio in #1613
- feat(openapi): add updateAPIKeyProfiles and loadApiKeyProfileTemplate by @suixinio in #1617
- chore: sync model developers data by @github-actions[bot] in #1627
- fix: detect synthetic weekly quota exhausted state by @djdembeck in #1619
- feat: auto enable wal for sqlite by @looplj in #1633
- feat: customized channel endpoints with base url by @looplj in #1635
- fix: prevent panic when client canceled for pass-through, close #1634 by @looplj in #1637
- fix: should omit empty name for function call, close #1587 by @looplj in #1639
- fix: fetch models for codex with auth.json, close #1636 by @looplj in #1645
- feat: hide upstream error message by @LRan1028 in #1640
- feat: gc now with options, close #1618 by @looplj in #1647
- feat: backup usage stats by @henryz78 in #1632
- feat(transformer): add cross-provider search citation and annotation support by @ttttmr in #1643
- feat: add volume price mode, close #1582 by @looplj in #1651
- doc: update add channel doc by @looplj in #1653
- chore(llm): change openai default reasoning_field to content by @looplj in #1656
- fix(llm): clear ReasoningEffort when DeepSeek thinking is disabled by @Lucent-Snow in #1663
- fix: request detail preview in dark mode by @looplj in #1666
- feat: add modelBlacklistRegex system setting to filter channel-derive… by @nb5p in #1673
- chore: sync model developers data by @github-actions[bot] in #1675
- fix(llm): close text block before starting thinking block in inbound stream by @hen7777777 in #1677
- feat: opencode go channel, close #1614 by @looplj in #1682
- Add developer-level model association rules by @zhaozhaozz in #1672
- feat: auto decompress request body, close #1680 by @looplj in #1688
- fix(pipeline): expose RawRequest before llm middlewares by @ttttmr in #1687
- feat: introduce Atlas Cloud as sponsor by @looplj in #1693
- feat: add atlascloud provider by @lucaszhu-hue in #1695
- feat: rotate api key, close #1692 by @looplj in #1696
- fix: should not error if can access to api keys, close #1674 by @looplj in #1697
- fix: cache not refresh in some cache by @looplj in #1699
- fix(gc): avoid SELECT * when querying old requests/executions for cle… by @FlyLoongZ in #1700
New Contributors
- @suixinio made their first contribution in #1503
- @BLumia made their first contribution in #1544
- @ttttmr made their first contribution in #1520
- @zhai23 made their first contribution in #1597
- @zhzy0077 made their first contribution in #1610
- @JackChiang233 made their first contribution in #1612
- @LRan1028 made their first contribution in #1640
- @henryz78 made their first contribution in #1632
- @Lucent-Snow made their first contribution in #1663
- @zhaozhaozz made their first contribution in #1672
- @lucaszhu-hue made their first contribution in #1695
- @FlyLoongZ made their first contribution in #1700
Full Changelog: v0.9.38...v1.0.0-beta1
v0.9.43
Full Changelog: v0.9.42...v0.9.43
v0.9.42-beta1
Full Changelog: v0.9.40...v0.9.42-beta1
v0.9.42
Full Changelog: v0.9.40...v0.9.42
v0.9.40
Full Changelog: v0.9.39...v0.9.40
v0.9.39
Full Changelog: v0.9.38...v0.9.39
v0.9.38
What's Changed
- fix(list_models): respect API key profile filtering in full model data mode by @djdembeck in #1480
- feat: success rate page for all channels by @banlanzs in #1483
- feat: array override ops (array_append, array_prepend, array_insert) by @paopaoandlingyia in #1481
- fix: deepseek reasoning content content aggregator by @looplj in #1485
- chore(deps): bump go.opentelemetry.io/otel from 1.39.0 to 1.41.0 in /integration_test/gemini by @dependabot[bot] in #1479
- feat(anthropic): perserve top level cache control, close #1484 by @looplj in #1486
- fix: should not mark as completed if upstream error, close #1444 by @looplj in #1488
- fix: force keep reasoning content for deepseek by @looplj in #1491
- feat: add NanoGPT API quota monitoring support by @djdembeck in #1490
- chore: sync model developers data by @github-actions[bot] in #1494
- fix: should pass through response/stream, close #1442 by @looplj in #1495
- feat: add stream condition to the model association by @looplj in #1498
- opt: enable vacuum by default, close #1492 by @looplj in #1500
- fix(xiaomi): map models provided mimo token plan as xiaomi models by @trim21 in #1501
- feat: api key prefix config, close #1475 by @looplj in #1502
- feat: deepseek anthropic adaptive thinking by @looplj in #1505
New Contributors
- @paopaoandlingyia made their first contribution in #1481
- @trim21 made their first contribution in #1501
Full Changelog: v0.9.37...v0.9.38