本次更新重点围绕角色与记忆、插件开发、远程协议、市场发布和聊天稳定性展开。用户资料升级为 Markdown 档案,角色主题可以独立管理;ToolPkg 新增 WASM 与消息 Hook,远程 MCP 和 A2A 接入;同时修复长消息、流式渲染、取消生成、待发队列和市场修订等问题。
增加
- 用户资料升级为可自由编辑和预览的 Markdown 档案,并支持自动更新开关、锁定和自定义记忆提取规则
- 角色卡和角色组可以分别保存主题;主题编辑支持草稿、目标切换确认和未保存修改保护
- 新增独立的聊天标题生成模型配置,可根据第一条消息自动生成标题
- 工具提示、ToolPkg 和 Skill 支持拖拽排序;长粘贴文本可以自动转换为文本附件
- 消息复制新增“纯文本 / Markdown 源码”模式,表格、代码块、链接和公式可以转换为可读文本
- 远程 MCP 支持 Streamable HTTP、SSE、Bearer Token、自定义 Header、工具分页和结构化结果
- 外部 HTTP 服务新增 A2A 1.0,支持消息发送、流式输出、任务查询、取消和订阅
- ToolPkg 新增
wasm_modules和ToolPkg.wasm.call(),支持i32、i64、f32、f64参数及多返回值,并支持 AssemblyScriptabort - ToolPkg 新增
message_persisted消息持久化 Hook;聊天输入、Prompt 和 Summary 前置 Hook 增加整轮时间限制,默认 10 秒,可配置为 1–60 秒 - 新增角色卡管理工具,以及截图、聊天消息范围读取、指定终端会话操作和带地址的定位接口
- 市场发布支持直接上传文件或选择已有 GitHub Release 文件,并支持审核退回后的修订发布
- Worldbook 示例新增分组管理、条目复制、角色卡多绑定和分组删除处理
- 新增罗马尼亚语,并补充多种既有语言中的市场、工作流和设置文本
修复
- 修复多个模型服务中思考内容丢失、工具调用 ID 不稳定、历史工具调用无法正确重放等问题
- 修复五档思考深度在 Claude、DeepSeek、Gemini、NVIDIA、OpenRouter、Qwen 等服务中的映射问题
- 修复切换角色卡后,发送、重新生成或记忆处理仍可能使用错误角色的问题
- 修复取消生成时部分回复、Token 和耗时信息丢失,以及旧任务干扰新一轮生成的问题
- 修复切换聊天或页面重组后待发送消息丢失、错发到其他聊天的问题
- 修复超大消息和消息分支无法正常读取、导出或参与记忆处理的问题
- 修复流式工具调用被截断、末尾内容不刷新、Markdown 节点错误复用和表格滚动位置重置的问题
- 修复自动续写误用输入框草稿、附件和回复目标的问题
- 修复消息图片、LaTeX 公式、小屏弹窗和暗色主题市场文字的显示问题
- 修复 API Key 轮换、模型首次配置、语言重启恢复和损坏头像配置导致的异常
- 修复插件导入后列表不立即刷新、市场评论权限不准确和审核状态操作混乱的问题
- 修复终端退出后旧会话被再次复用、网页访问超时处理不明确等问题
优化
- 提升超长对话下的 Token 统计、上下文判断和摘要触发稳定性
- 文件内容搜索改为应用内置实现,不再依赖终端环境预装
rg - 优化流式消息渲染、自动滚动、长历史浏览和中断消息保存
- ToolPkg 发布支持 JavaScript AST 压缩、变量改名和可达模块裁剪,并增加市场来源与作者信息
- ToolPkg 导入增加远程阻止名单检查,QuickJS 的超时、中断、容器隔离和销毁流程更加稳定
- 远程 MCP 的工具发现、连接复用、超时处理和损坏文本拦截更加可靠
- GitHub 登录改用 Operit OAuth broker,并支持内嵌页面和系统浏览器两种方式
- 市场完善版本兼容提示、作者与来源展示、审核详情和发布权限控制
- 工作流会提前准备所需工具和插件环境,并显示更明确的失败阶段与原因
- 原生依赖、STT 模型和外部原生库增加固定版本与完整性检查
- Release 和 Nightly APK 支持 Android V3 签名轮换,Debug 使用独立包名和签名
- CI 改为按修改范围选择检查任务,并更新 WebChat、ToolPkg、文档和协作流程
- 全面更新中英文 README 与产品展示图片
特别致谢
特别感谢 @luojiaping 对本版本的持续投入。本次更新中,多项模型兼容、聊天与长消息稳定性、用户资料、构建流程和多语言改进都离不开他的贡献。
Added
- Upgraded user profiles to freely editable Markdown documents with preview, automatic-update controls, locking, and custom memory-extraction rules
- Added separate themes for character cards and character groups, with draft editing and unsaved-change protection
- Added a dedicated title-generation model configuration for automatically naming new chats
- Added drag-and-drop ordering for tool prompts, ToolPkg packages, and Skills, plus automatic conversion of long pasted text into attachments
- Added Plain Text and Markdown Source copy modes with readable conversion for tables, code blocks, links, and formulas
- Added remote MCP support for Streamable HTTP, SSE, bearer tokens, custom headers, paginated tool discovery, and structured results
- Added A2A 1.0 support to the external HTTP service, including message sending, streaming, task lookup, cancellation, and subscription
- Added ToolPkg
wasm_modulesandToolPkg.wasm.call()withi32,i64,f32,f64, multiple returns, and AssemblyScriptabortsupport - Added the ToolPkg
message_persistedhook; chat-input, Prompt, and Summary pre-send hooks now have a whole-chain timeout of 10 seconds by default, configurable from 1 to 60 seconds - Added character-card management tools, screenshot capture, ranged chat-message reading, terminal session targeting, and optional address lookup for location
- Added marketplace publishing through direct upload or existing GitHub Release files, together with revision submission after requested review changes
- Added Worldbook grouping, entry copying, multi-character binding, and group-deletion handling
- Added Romanian localization and expanded marketplace, workflow, and settings translations
Fixed
- Fixed lost reasoning content, unstable tool-call IDs, and broken historical tool-call replay across multiple model providers
- Fixed five-level thinking mappings for Claude, DeepSeek, Gemini, NVIDIA, OpenRouter, Qwen, and related providers
- Fixed messages, regeneration, and memory operations using the wrong character after switching cards
- Fixed cancellation losing partial replies, token data, or timing information, and fixed old turns interfering with new generations
- Fixed pending messages being lost or sent to the wrong chat after navigation or UI recreation
- Fixed oversized messages and variants failing during loading, export, or memory processing
- Fixed truncated streaming tool calls, missing final updates, stale Markdown nodes, and table scroll positions resetting during streaming
- Fixed automatic continuation consuming composer drafts, attachments, or reply targets
- Fixed message-image rendering, LaTeX alignment, compact dialogs, and low-contrast marketplace text in dark themes
- Fixed API-key rotation, initial model setup, language restoration after restart, and malformed avatar entries
- Fixed package lists not refreshing after import, incorrect marketplace comment permissions, and confusing review-state actions
- Fixed closed terminal sessions being reused and improved web-visit timeout handling
Optimized
- Improved token statistics, context-limit checks, and summary triggering for very long conversations
- Replaced terminal-dependent file searching with an embedded search implementation
- Improved streaming rendering, auto-scroll, long-history browsing, and interrupted-message persistence
- Added JavaScript AST minification, variable mangling, reachable-module trimming, and marketplace provenance metadata to ToolPkg publishing
- Added remote denylist checks for imported packages and improved QuickJS timeout, interruption, isolation, and shutdown behavior
- Improved remote MCP discovery, connection reuse, timeout handling, and corrupted-text rejection
- Moved GitHub login to the Operit OAuth broker with both embedded and external-browser flows
- Improved marketplace compatibility messages, author and origin display, review details, and publishing permissions
- Improved workflow environment preparation and failure-stage diagnostics
- Added fixed-source and integrity checks for native dependencies, STT assets, and externally built libraries
- Added Android V3 signing rotation for Release and Nightly APKs, with an independent Debug package identity
- Redesigned CI checks around changed scopes and updated WebChat, ToolPkg, documentation, and contribution workflows
- Refreshed the Chinese and English README files and product images
Special Thanks
Special thanks to @luojiaping for their sustained contributions to this release. Their work spans model compatibility, chat and large-message stability, user-profile improvements, build infrastructure, and localization.
What's Changed
- Fix issue #660/661/664/670/674/628 by @luojiaping in #676
- 加入skill&插件中的重排序 by @tuxKOH in #677
- ai总结对话标题 by @tuxKOH in #680
- fix: persist app language on restart by @luojiaping in #683
- fix: correct function name grepCodeWithRipgrep -> grepCodeWithNativeRipgrep by @CATMIAOZHI in #690
- Fix/issue #675 wake overlay autoglm by @luojiaping in #695
- fix issue 692 small screen dialogs by @luojiaping in #696
- 修改README.md by @YunXi-Aurora in #698
- fix: preserve DeepSeek V4 reasoning for relays by @luojiaping in #701
- refactor: restruct docs layout by @Nyashiiro in #711
- add gpt 5.6 support by @luojiaping in #703
- fix: resolve image rendering and mounting display issue by @MimicHunterZ in #713
- 修改 README.md 里的已失效链接 by @YunXi-Aurora in #719
- 修改 README(E).md 里的已失效链接 by @YunXi-Aurora in #720
- fix: remove fixed timeout from Compose DSL execution by @luojiaping in #721
- opt: add some doc for further co-operit by @Nyashiiro in #732
- feat(profile): migrate preferences to user.md and memory spaces by @luojiaping in #747
- Fix example package TypeScript errors by @luojiaping in #750
- Fix auto-continuation consuming chat drafts by @luojiaping in #754
- fix: hide provider metadata from copied messages by @luojiaping in #761
- fix: optimize API key and model configuration onboarding by @luojiaping in #762
- ci: establish contribution workflow and PR quality gates by @luojiaping in #763
- fix: repair avatar persistence and required checks by @luojiaping in #768
- ci: redesign pull request checks by @luojiaping in #773
- feat(chat): 添加纯文本复制功能 by @MimicHunterZ in #771
- fix(chat): reduce saveable state size to prevent TransactionTooLargeException by @AceGuru-mjh in #778
- fix(chat): keep auto-scroll active during AI streaming output by @AceGuru-mjh in #779
- fix(chat): integrate saved state and streaming scroll fixes by @AAswordman in #781
- fix(i18n): complete artifact ToolPkg translations by @AAswordman in #783
- feat(i18n): add Romanian locale by @luojiaping in #799
- 修正工具包预热与对话回顾 by @tuxKOH in #805
- fix(openai): preserve Responses reasoning summaries by @luojiaping in #809
- fix: complete independent Android dependency build by @AAswordman in #817
- fix: synchronize package toggle state by @luojiaping in #820
- 针对插件市场评论区的bug修复和排序优化 by @tuxKOH in #821
- fix(chat): preserve interrupted turn metrics by @luojiaping in #835
- fix(markdown): preserve table scroll during streaming by @luojiaping in #836
- fix: streaming tool call rendering truncated during execution by @CATMIAOZHI in #834
- feat: expand platform configuration and hook controls by @AAswordman in #881
- ci: skip Android lint validation by @AAswordman in #882
- fix: add low reasoning_effort mapping for DeepSeek thinking depth by @YunXi-Aurora in #883
- fix(chat): read oversized messages without CursorWindow by @luojiaping in #884
- feat(market): support revision submissions after review changes by @AAswordman in #885
- feat(docs):全面焕新readme中英界面展示效果 by @luojiaping in #886
- 修复市场评论与发布页的主题文字颜色 by @3316891527 in #888
- feat: consolidate chat and tool integration updates by @AAswordman in #893
- fix(chat): use selected character card when sending by @AAswordman in #894
- fix(market): preserve assets after registration failure by @AAswordman in #896
New Contributors
- @YunXi-Aurora made their first contribution in #698
- @Nyashiiro made their first contribution in #711
- @AceGuru-mjh made their first contribution in #778
- @AAswordman made their first contribution in #781
- @3316891527 made their first contribution in #888
Full Changelog: v1.12.0...v1.12.1