v1.0.0-beta1

ankitects/ankiv1.0.0-beta1May 23, 2026by looplj

AI Summary

A major beta release introducing significant architectural improvements, including OpenID Connect support, read-write database separation, and advanced quota management. It also adds support for new providers and enhances the LLM pipeline.

Key Highlights

  • Initial OpenID Connect (OIDC) Support
  • Optional read-write separation for the database
  • Per-channel concurrency queue and admission control
  • New provider support (Qiniu, Atlas Cloud) and Anthropic endpoints
  • Advanced quota enforcement with per-limit status tracking

New Features

  • Request logging with 'reasoning intensity' field
  • Auto reasoning effort with suffix
  • Global pass-through setting
  • Volume price mode
  • Auto enable WAL for SQLite
  • Backup usage stats
  • Model blacklist regex system setting
  • API key profile templates
  • Rotate API key functionality
  • OpenAI and DeepSeek completion API support

Full Release Notes

## What's Changed
* feat: 请求日志记录新增'推理强度'字段 by @deqiying in https://github.com/looplj/axonhub/pull/1506
* feat: per-channel concurrency queue + admission control by @suixinio in https://github.com/looplj/axonhub/pull/1503
* feat: auto reasoning effort with suffix by @looplj in https://github.com/looplj/axonhub/pull/1515
* feat: add optional read-write separation for database by @lazhenyi in https://github.com/looplj/axonhub/pull/1516
* feat(quota): add wafer, synthetic, and neuralwatt quota checkers by @djdembeck in https://github.com/looplj/axonhub/pull/1509
* fix(dashboard): align token stats by API key/channel/model with totals by @raikyou in https://github.com/looplj/axonhub/pull/1524
* feat: add Anthropic endpoints for Volcengine, AiHubMix, and Xiaomi MiMo by @banlanzs in https://github.com/looplj/axonhub/pull/1521
* display token usage in channel cards via tokenStatsByChannel API by @banlanzs in https://github.com/looplj/axonhub/pull/1528
* feat(quota): add provider quota enforcement with per-limit status tracking by @djdembeck in https://github.com/looplj/axonhub/pull/1518
* feat: customized channel endpoints by @looplj in https://github.com/looplj/axonhub/pull/1529
* fix(pipeline): prevent channels from getting stuck in processing status by @djdembeck in https://github.com/looplj/axonhub/pull/1530
* chore: reformat llm package by @looplj in https://github.com/looplj/axonhub/pull/1531
* fix(models): clicking Archive on a disabled model had no effect by @djdembeck in https://github.com/looplj/axonhub/pull/1535
* fix(ui): show used/total in NanoGPT quota display instead of used/remaining by @djdembeck in https://github.com/looplj/axonhub/pull/1543
* fix(models): resolve vision capability from modalities when explicit field is absent by @djdembeck in https://github.com/looplj/axonhub/pull/1542
* opt: disable spell check for API key textarea by @BLumia in https://github.com/looplj/axonhub/pull/1544
* opt: custom endpoint api format by @looplj in https://github.com/looplj/axonhub/pull/1545
* feat: align endpoint i18n and prompt protection preview by @looplj in https://github.com/looplj/axonhub/pull/1546
* feat(oidc): Initial OpenID Connect Support by @LazuliKao in https://github.com/looplj/axonhub/pull/1091
* scheduler: centralized cron job management by @looplj in https://github.com/looplj/axonhub/pull/1550
* chore: update issue template by @looplj in https://github.com/looplj/axonhub/pull/1551
* fix(llm): missing anthropic thinking disabled transform by @looplj in https://github.com/looplj/axonhub/pull/1552
* feat: openai/deepseek completion api, close #1458 by @looplj in https://github.com/looplj/axonhub/pull/1554
* chore: change prompt content column, close #1553 by @looplj in https://github.com/looplj/axonhub/pull/1580
* fix: max model association priority, close #1507 by @looplj in https://github.com/looplj/axonhub/pull/1581
* opt: responses stream failed handle & request executions index, close #1473 by @looplj in https://github.com/looplj/axonhub/pull/1585
* opt: openai outbound reasoning field config, close #1584 by @looplj in https://github.com/looplj/axonhub/pull/1586
* chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/1588
* feat: global pass-through setting by @raikyou in https://github.com/looplj/axonhub/pull/1591
* feat: add lowercaseModelName channel setting for cross-channel load b… by @nb5p in https://github.com/looplj/axonhub/pull/1589
* feat: expose inbound request headers to override templates by @ttttmr in https://github.com/looplj/axonhub/pull/1520
* feat(apikeys): add API key profile templates by @djdembeck in https://github.com/looplj/axonhub/pull/1590
* feat: prefer outbound format equals to inbound format by @looplj in https://github.com/looplj/axonhub/pull/1592
* 修改前端,"测试场"新增测试模型网关模型 by @zhai23 in https://github.com/looplj/axonhub/pull/1597
* fix(gc): drop nil bind args so VACUUM actually runs on Postgres by @suixinio in https://github.com/looplj/axonhub/pull/1602
* chore: add gpt-5.5 for codex plans by @qinkangdeid in https://github.com/looplj/axonhub/pull/1605
* refactor: remove the signature prefix marker to improve pass through by @looplj in https://github.com/looplj/axonhub/pull/1593
* Support image parts in Ollama chat transformer by @zhzy0077 in https://github.com/looplj/axonhub/pull/1610
* feat: add Qiniu provider support by @JackChiang233 in https://github.com/looplj/axonhub/pull/1612
* fix(channels): import Qiniu icon in config_channels by @suixinio in https://github.com/looplj/axonhub/pull/1613
* feat(openapi): add updateAPIKeyProfiles and loadApiKeyProfileTemplate by @suixinio in https://github.com/looplj/axonhub/pull/1617
* chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/1627
* fix: detect synthetic weekly quota exhausted state by @djdembeck in https://github.com/looplj/axonhub/pull/1619
* feat: auto enable wal for sqlite by @looplj in https://github.com/looplj/axonhub/pull/1633
* feat: customized channel endpoints with base url by @looplj in https://github.com/looplj/axonhub/pull/1635
* fix: prevent panic when client canceled for pass-through, close #1634 by @looplj in https://github.com/looplj/axonhub/pull/1637
* fix: should omit empty name for function call, close #1587 by @looplj in https://github.com/looplj/axonhub/pull/1639
* fix: fetch models for codex with auth.json, close #1636 by @looplj in https://github.com/looplj/axonhub/pull/1645
* feat: hide upstream error message by @LRan1028 in https://github.com/looplj/axonhub/pull/1640
* feat: gc now with options, close #1618 by @looplj in https://github.com/looplj/axonhub/pull/1647
* feat: backup usage stats by @henryz78 in https://github.com/looplj/axonhub/pull/1632
* feat(transformer): add cross-provider search citation and annotation support by @ttttmr in https://github.com/looplj/axonhub/pull/1643
* feat: add volume price mode, close #1582 by @looplj in https://github.com/looplj/axonhub/pull/1651
* doc: update add channel doc by @looplj in https://github.com/looplj/axonhub/pull/1653
* chore(llm): change openai default reasoning_field to content by @looplj in https://github.com/looplj/axonhub/pull/1656
* fix(llm): clear ReasoningEffort when DeepSeek thinking is disabled by @Lucent-Snow in https://github.com/looplj/axonhub/pull/1663
* fix: request detail preview in dark mode by @looplj in https://github.com/looplj/axonhub/pull/1666
* feat: add modelBlacklistRegex system setting to filter channel-derive… by @nb5p in https://github.com/looplj/axonhub/pull/1673
* chore: sync model developers data by @github-actions[bot] in https://github.com/looplj/axonhub/pull/1675
* fix(llm): close text block before starting thinking block in inbound stream by @hen7777777 in https://github.com/looplj/axonhub/pull/1677
* feat: opencode go channel, close #1614 by @looplj in https://github.com/looplj/axonhub/pull/1682
* Add developer-level model association rules by @zhaozhaozz in https://github.com/looplj/axonhub/pull/1672
* feat: auto decompress request body, close #1680 by @looplj in https://github.com/looplj/axonhub/pull/1688
* fix(pipeline): expose RawRequest before llm middlewares by @ttttmr in https://github.com/looplj/axonhub/pull/1687
* feat: introduce Atlas Cloud as sponsor by @looplj in https://github.com/looplj/axonhub/pull/1693
* feat: add atlascloud provider by @lucaszhu-hue in https://github.com/looplj/axonhub/pull/1695
* feat: rotate api key, close #1692 by @looplj in https://github.com/looplj/axonhub/pull/1696
* fix: should not error if can access to api keys, close #1674 by @looplj in https://github.com/looplj/axonhub/pull/1697
* fix: cache not refresh in some cache by @looplj in https://github.com/looplj/axonhub/pull/1699
* fix(gc): avoid SELECT * when querying old requests/executions for cle… by @FlyLoongZ in https://github.com/looplj/axonhub/pull/1700

## New Contributors
* @suixinio made their first contribution in https://github.com/looplj/axonhub/pull/1503
* @BLumia made their first contribution in https://github.com/looplj/axonhub/pull/1544
* @ttttmr made their first contribution in https://github.com/looplj/axonhub/pull/1520
* @zhai23 made their first contribution in https://github.com/looplj/axonhub/pull/1597
* @zhzy0077 made their first contribution in https://github.com/looplj/axonhub/pull/1610
* @JackChiang233 made their first contribution in https://github.com/looplj/axonhub/pull/1612
* @LRan1028 made their first contribution in https://github.com/looplj/axonhub/pull/1640
* @henryz78 made their first contribution in https://github.com/looplj/axonhub/pull/1632
* @Lucent-Snow made their first contribution in https://github.com/looplj/axonhub/pull/1663
* @zhaozhaozz made their first contribution in https://github.com/looplj/axonhub/pull/1672
* @lucaszhu-hue made their first contribution in https://github.com/looplj/axonhub/pull/1695
* @FlyLoongZ made their first contribution in https://github.com/looplj/axonhub/pull/1700

**Full Changelog**: https://github.com/looplj/axonhub/compare/v0.9.38...v1.0.0-beta1