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