EddieLin
4d011df66a
fix(model-store): 接受 HF tree API 返回的裸 LFS oid,修复本地模型下载失败 ( #1072 )
...
* test(model-store): 复现 HF tree API 返回裸 LFS oid 时模型下载被拒
huggingface.co 与 hf-mirror.com 的 /api/models/{repo}/tree 接口里 lfs.oid
是不带 sha256: 前缀的 64 位十六进制,现有解析只认前缀形式,导致本地模型
下载直接报 unsupported Hugging Face LFS oid。
* fix(model-store): 接受 HF tree API 返回的裸 LFS oid,修复本地模型下载失败
2.0 起 parse_lfs_sha256 只接受 sha256: 前缀,但 huggingface.co 与
hf-mirror.com 的 tree 接口返回的是裸 64 位十六进制,导致下载 Qwen3-ASR
等本地模型时直接报 unsupported Hugging Face LFS oid。改为前缀可选,
仍校验 64 位十六进制。
2026-09-13 18:04:51 +08:00
Chris233
c8bd7aa295
fix(foundry): keep local ASR warm and stream transcripts ( #1052 )
...
* fix(foundry): keep local ASR warm and stream transcripts
* fix(foundry): cancel stale release schedules
2026-09-13 12:28:41 +08:00
c4e8e88782
fix(providers): 支持火山 Agent Plan / Coding Plan,并修正 temperature 参数序列化 ( #1069 )
...
* fix(llm): 保留温度参数的简短十进制表示
* feat(asr): 接入火山 Agent Plan 语音识别
* feat(providers): 添加火山套餐服务与模型控制台入口
* docs(volcengine): 保留原有结构并补充套餐配置
* chore(asr): 明确套餐鉴权注释并清理未用导入
* fix(core): require API keys for Ark plan endpoints
Apply the official-endpoint API key requirement to Agent Plan and
Coding Plan across configured state, validation, and LLM construction.
Reuse the Core policy in both credential adapters and preserve optional
keys for custom endpoints and the dedicated plan request addresses.
Add regression coverage for missing, empty, whitespace-only and nonempty
keys, endpoint normalization, and all three LLM builder protocols.
This fix addresses a finding from a user-initiated AI red/blue review
of PR #1069 . Implementation assistance: Codex.
Validation on macOS:
- Core: 962 tests passed, 1 ignored; new regressions failed before the fix.
- Linux Host: 57 tests passed (run on macOS, not native Linux validation).
- Tauri: cargo check --locked passed.
- git diff --check passed. Workspace and Tauri format checks report only
unchanged baseline differences, verified against the parent commit.
- GUI/manual platform acceptance and live plan API calls were not run.
Co-authored-by: Codex <noreply@openai.com >
* test(core): consolidate provider regression coverage
Share the HTTP test setup for omitted custom-provider temperature and
Ark's default 0.3 representation. Keep both request assertions and the
polished response check.
Reduce the Ark builder matrix from 48 to 24 cases: exercise every key
state once per endpoint and keep successful construction for all three
protocols. Production behavior is unchanged.
Validation: focused regressions and the full Core suite pass (961 passed,
1 ignored). Changed files pass rustfmt; workspace formatting still reports
only existing differences outside this change. git diff --check passes.
Matt Standards and Spec reviews reported no findings for this increment.
Implementation assistance: Codex.
Co-authored-by: Codex <noreply@openai.com >
* fix(core): require keys for Ark Messages endpoints
---------
Co-authored-by: Codex <noreply@openai.com >
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-13 02:49:42 +08:00
82357e8df3
fix(android): 对齐应用内更新 minisign 并修复凭据 vault ( #1061 )
...
* fix(android): parse Tauri-wrapped minisign keys so in-app APK install can open
Android updater called PublicKey::from_base64 on the wrapped tauri.conf pubkey, so install died before installApk. Also keep vault envelope failures from looking like an unconfigured Volcengine ASR provider.
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(linux-egui): 补齐根证书指纹字段并让 fcitx5 门禁匹配实际安装调用
Release Linux egui 在 beta 上因 RemoteInputStatus 缺字段、match 臂类型不一致,以及门禁要求 ensure_fcitx5_ready(?) 而失败;安装调用本身已在监听器之前,错误会展示在 UI 里。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): Keystore 暂时不可用时不要让 Tauri setup abort
Core.start() 会走 configuration_snapshot → load_credentials_for_update;信封读失败若返回 Err,setup hook 直接 SIGABRT。改为记录 last_read_error 并返回未缓存默认值,应用可以启动。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): 凭据信封暂时读失败时不要挡住 2.0 启动握手
Core.start() 在 setup 成功后还会被 event bridge 和 get_startup_snapshot 再调一次;此时 last_read_error 已记下,require_readable_vault 把 Persistence 抛成「暂时无法启动」。握手改为降级空凭据状态继续运行。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): 创建渠道时重试 Keystore,失败不覆盖空信封
启动时信封暂时读失败后,require_readable_vault 会在真正 load 之前短路,导致添加提供商一直操作失败。改为每次读写都重试 Keystore;读失败返回 Persistence 且不缓存/不写入默认空根;前端展示后端具体错误。
Co-authored-by: Cursor <cursoragent@cursor.com >
* debug(android): 把 Keystore 暂时不可用的具体异常名带回日志
添加提供商已会重试信封,但 Keystore 仍返回 temporarily unavailable。JNI 原先丢掉 Kotlin 异常与 JNI 失败路径,无法区分 class load、status 3 还是 BackendBusy。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): 无法用于 Cipher 的 Keystore 密钥按失效信封恢复
真机 open 稳定抛出 InvalidKeyException(非 UserNotAuthenticated)。继续当成 temporarily unavailable 会让已保存凭据永远读不出来。改为走密钥缺失路径,删除无法解密的信封后可以重新配置提供商。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): 凭据 Keystore 写入改走主线程并换用 v3 别名
清掉失效信封后,增加提供商仍在 seal 上失败(ProviderException/KeyStoreException)。HyperOS 上 Keystore2 从 JNI 后台线程调用常失败;改为主线程执行,并换用未损坏的 v3 别名,失败时删除别名再生成一次。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): KeyMint AES-GCM 失败时回退到应用私有软件密钥
HyperOS 上 seal 稳定返回 KeyStoreException 10,主线程与 v3 别名仍无法写信封。Keystore 不可用时改用 UID 私有软件 AES-GCM,避免增加提供商失败。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(android): preserve credentials across key fallback
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-13 01:58:26 +08:00
Jimmy Lee and Chris233
7971df2199
fix/cannot-use-local-mlx-qwen3-asr: 修复不能使用本地qwen3-asr模型的问题 ( #1058 )
...
* fix/cannot-use-local-mlx-qwen3-asr: 修复不能使用本地qwen3-asr模型的问题
* 修复单元测试问题
* fix(asr): correct local channel validation semantics
---------
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-13 01:57:37 +08:00
TRIP
867a0d8ce7
Merge pull request #1059 from Open-Less/fix/omni-view-apple-speech-validation
...
fix(settings): 多模态管线 Omni 视图入口与 Apple 语音验证误报
2026-09-11 13:17:58 +08:00
sim
b25678ca39
fix(providers): Apple 语音渠道验证走原生引擎真实探针
...
本地 ASR 提供方此前一律 ValidationProbe::Unsupported,渠道卡「验证」必然
失败(provider validation is not available),而听写实际可用——用户看到
「验证失败 · …」误报。新增 AsrNativeSilence 探针:Apple 语音无需下载、
即时可用,验证经宿主注入的原生转写引擎跑同一段静音 WAV,真实检验授权
与识别器可用性;下载型本地引擎(whisper/qwen/sherpa)保持 Unsupported,
就绪状态仍由本地模型页报告。
- ProviderService 新增 with_native_transcription 注入点,Tauri 宿主传入
转写路由(与听写同源);未注入宿主维持 Unsupported 语义
- 描述符 fixture 同步 apple-speech 探针值;新增描述符与验证往返测试
2026-09-11 12:48:33 +08:00
sim
2c760b490f
fix(settings): 多模态总开关打开即在 AI 服务与模型展示 Omni 视图
...
管线模式切换器位于 OmniChannelSection(挂在 kind=all 的 ProvidersSection 内),
而新版 ServicesTab 只有 pipelineMode=multimodal 时才生成 omni 视图——总开关
打开后没有任何入口切换模式,配置区域因此消失(回归)。
availableServiceViews 改为按「总开关」「生效模式」两个条件生成视图:
开关打开即出现 omni 视图(内含传统/多模态切换器),切到多模态模式后才
按既有语义隐藏传统 llm/asr 页。
2026-09-11 12:48:02 +08:00
Chris233
615d6ac463
fix(core): accept legacy Sherpa Qwen tokenizer layout ( #1056 )
2026-09-11 01:00:30 +08:00
Chris233
04719aac37
方->圆
2026-09-10 23:51:30 +08:00
Chris233
cb5438a9d4
feat(docs): 更新 README 和 README.zh.md 中的贡献者信息
2026-09-10 23:51:30 +08:00
TRIP
7e2e48b5dd
Merge pull request #1053 from Open-Less/feat/cloud-sync-backend
...
feat(sync): 云同步专用端口 apic.openless.top:9443、按钮间距与云同步服务端交接文档
2026-09-10 21:55:22 +08:00
sim
110f1f631f
feat(sync): 云同步指向专用端口 apic.openless.top:9443 并补充服务端交接文档
...
- MarketplaceConfig 新增 cloud_sync_base_url:production 用同一市场主机的独立端口 9443,new() 默认同源以兼容本机假服务合同测试
- cloud_sync 改用 cloud_sync_url 生成 /me/sync 请求地址
- 新增生产同步地址合同测试(主机一致、端口 9443、HTTPS)
- docs:cloud-sync.md 更新地址说明;新增 cloud-sync-server-handoff.md 交接文档(请求行为、状态码映射、验收清单)
2026-09-10 21:17:47 +08:00
sim
00914cebc5
style(settings): 云同步操作按钮间距由 8px 放宽到 12px
2026-09-10 21:08:14 +08:00
TRIP
d3aa3c5cbd
Merge pull request #1051 from Open-Less/feat/ui-2.0-model-settings-page
...
2.0 模型设置页与使用页:目录元数据、使用中模型选择、残留清理
2026-09-10 19:50:13 +08:00
sim
3b93d7421a
feat(models): 2.0 模型设置页与使用页——目录元数据、使用中模型选择与残留清理
...
模型设置页:新增 settings/models/LocalModelsSection 替换旧 LocalModelSection,
管理看板条目接入 Core 目录元数据快照(displayName / languages / sizeBytes),
基础信息展示不再依赖实时访问 HuggingFace;详情面板新增「清理未完成下载」
(local_asr_cleanup_incomplete,仅在有 staging 残留时出现)。
模型使用页:渠道编辑器本地引擎分支内嵌 LocalModelPicker——直接切换使用中的
模型(qwen/whisper 切换后预载引擎;sherpa/foundry 走各自 set 接口),显示引擎
可用性与残留清理入口;通过 ServicesTab 提供的 LocalModelsNavContext 一键跳到
「服务 → 本地模型」管理页(复用此前闲置的 localAsrManage 文案键)。
八语文案补齐(activeModelLabel / partialDownloads* / cleanupIncomplete /
languagesLabel / partialBytesLabel 等 7 键)。tsc 0 错误,前端全套通过。
2026-09-10 18:17:36 +08:00
TRIP
fe95354e25
Merge pull request #1050 from Open-Less/feat/ui-2.0-model-settings
...
2.0 模型设置界面 + macOS 修复批次(合入 beta 最新四项)
2026-09-10 17:47:28 +08:00
sim
4ec44b2b0b
merge: 汇入 origin/beta 第二轮(#1048 根证书指纹核验、#1049 录音保亮屏)
...
- 五语 PC/手机页文案取云端指纹核验版;de/es/fr 全套补译(指纹 6 键、保亮屏 4 键、恢复 4 键、中断/离线 2 键)
- index.html:帮助块改为指纹核验流程 + 录音屏新增保亮屏开关(默认开)
- RemoteInputStatus 补 caFingerprintSha256;Linux egui 面板移植指纹显示与复制
- remote-input-audio-queue 测试取云端(#1049 音频队列改造),我方仅格式差异
2026-09-10 17:16:58 +08:00
sim
576592f221
style(app): 合并后统一 prettier 格式(i18n/设置页/热键录制/凭据草稿等 22 处)
2026-09-10 16:59:07 +08:00
sim
3ff3df1626
fix(merge): 落实合并后的契约与目录对齐
...
- build-mac.sh 移除 hdiutil DMG 兜底:bundle contract 测试显式禁止手搓 DMG
绕过签名/公证链路;DMG 缺失即失败(保留 qwen3-asr-rs 剪枝与 BUILD_START_TS
新鲜度校验)
- 红绿灯 y=26 契约:tao 几何下视觉顶距≈y-14,x==y 并不相等(实测左 21.5px)
- 胶囊几何契约同步 typeless 206×57(原 460×128 的 1/5 面积)
- LLM_LABELS 补 tencentTokenHub 静态目录项(ASR_LABELS 已含 tencent-cloud)
2026-09-10 16:54:34 +08:00
sim
0ac0fbd391
merge: 汇入 origin/beta(#1037 远程输入持久 CA、#1040 F13-F20/Mac 听写键、#1020 腾讯云实时语音、#1044 统一模型字段与异步保存隔离)并完成 2.0 UI 适配
...
冲突解决原则:2.0 重写的界面以本地为准,云端功能语义全部移植——
- ProviderForm 离开收敛接入 SettingsModal / ChannelList / LlmProtocolFields / CredentialField(关闭、切节、换供应商前冲掉防抖写入并等待在途写完成)
- 腾讯云三段式密钥 + 固定模型档分支移植进 2.0 ChannelCredentialFields;OAuth 静态模型走描述符
- Mac 听写键进入 ShortcutRecorder(allowMacDictationKey)并改用 refresh 拉新偏好
- 远程输入手机页新证书信任流程(持久本地 CA + 描述文件/CA 下载 + 复制链接),de/es/fr 补齐全套新文案
- 纯格式分歧文件取云端后 prettier 归一;双方新增内容(i18n、测试)两侧保留
2026-09-10 16:47:30 +08:00
sim
786e4b4d07
feat(local-asr): 模型状态透出目录元数据、新增中断下载清理命令与 Zipformer 目录项
...
LocalAsrModelStatus 补齐 display_name/family/mode/languages/size_bytes,
前端无需为基础元数据实时访问 HuggingFace;新增 local_asr_cleanup_incomplete
命令(LocalAsrApi 默认实现 + Service 实现 + 前端包装)清理 staging 目录;
sherpa 目录新增 zipformer-bilingual-zh-en-streaming 流式中英模型并补齐八语文案。
修复测试里 LocalAsrTarget::parse 的 .into() 类型推断歧义。
2026-09-10 16:09:00 +08:00
zhou zhichao
f39a68a795
修复远程录音息屏丢失并默认保持亮屏 ( #1049 )
2026-09-10 16:01:55 +08:00
zhou zhichao
b72ec9671a
远程输入:补充首次信任前的根证书指纹核验 ( #1048 )
2026-09-10 16:01:29 +08:00
sim
bd5656b5fc
build(macos): 构建前清理重复的 qwen3-asr-rs 目录;新鲜度基准改为构建开始时间
...
- 本地混跑 cargo check/test/build 会按 feature 上下文生成多份 qwen3-asr-rs
构建目录,多份 metallib 会让暂存脚本拒绝猜测
- 打包后原始二进制还会被签名触碰,bundle 新鲜度不能与它比,改与本构建
开始时间比
2026-09-10 13:46:19 +08:00
sim
7204c282f1
feat(capsule): typeless 放大到原版 1/5 面积、黑底白波纹;Siri 预览改用真实光效舞台
...
- 窗口 174×48 → 206×57,CSS zoom 0.378 → 0.447(面积 = 原版 460×128 的 1/5)
- typeless 配色改为黑色胶囊 + 白色波纹(深色主题同调)
- VoiceOrbStage 提取为独立组件;设置页 Siri 预览直接渲染缩放 0.5 的真实
SiriGL 光条,与实际胶囊样式一致
2026-09-10 13:15:49 +08:00
sim
105fb99dc0
fix(core): volcengine 配置判定不再要求 resource id——运行时留空会回落默认资源
...
听写运行时对空 resource id 回落 volc.seedasr.sauc.duration(resolve_resource_id),
但 volcengine_configured 把它当硬门槛:合法的「密钥齐全、资源 id 留空」配置被误报
「语音识别未配置」并每次启动弹配置提示。认证是否就绪只取决于密钥本身。
2026-09-10 13:15:49 +08:00
sim
e3f63e97fc
build(macos): 兜底校验加新鲜度——打包失败时旧 bundle 不允许再通过校验
2026-09-10 12:15:03 +08:00
zhou zhichao and Chris233
882fac63f0
fix(remote-input): preserve phone trust across restarts and IP changes ( #1037 )
...
* fix(remote-input): preserve phone trust with a persistent local CA
* fix(remote-input): disclose LAN certificate MITM risk
---------
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-10 06:36:12 +08:00
Eclock2000 and Chris233
7584091464
fix(hotkeys): support F13–F20 and the native Mac Dictation key ( #1040 )
...
* fix(hotkeys): 支持专用 F20 与 Mac 原生听写键
* fix(hotkeys): make the Mac Dictation key a single trigger option
* refactor(hotkeys): remove optional Dictation key status UI
* fix(hotkeys): re-enable disabled Mac Dictation event tap
---------
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-10 02:00:30 +08:00
sim
ce43e1b11b
build(macos): DMG 兜底(hdiutil + Applications 替身)并按第一性原则收紧注释
...
- tauri build 退出码非零不再夭折脚本:.app 已生成时用 hdiutil 兜底打包 DMG,
内容含 /Applications 替身,保留拖拽安装
- Cargo.toml Xcode 27 beta 构建注释压缩为一行事实 + 对策
2026-09-10 00:27:19 +08:00
sim
417ad38ce9
fix(macos): 四项修复——typeless 胶囊 1/7 缩放贴底、红绿灯对齐、ASR 误报、Keychain 节流
...
- typeless 胶囊窗口 460×128 → 174×48(面积 1/7),内容 CSS zoom 0.378 同步缩放;
底部间距按样式区分,typeless 贴紧工作区底边(Dock 可见时贴其上沿,自动隐藏时贴屏幕底)
- 红绿灯 trafficLightPosition y 16→26:实测左间距 21.5、上间距 12,下移 9.5px 后两边距相等
- 启动时把偏好 active ASR 同步进凭据库(原仅 Windows):get_credentials 按凭据库
active 渠道取密钥,脱钩会误报「语音识别未配置」并弹设置提示
- Keychain 节流:credentials.v2 补写与旧版逐账户扫描每进程只做一次并缓存结果,
失败重放同一错误;新增凭据来源一次性日志
2026-09-10 00:26:36 +08:00
kevinlin and Chris233
bf1237c6b1
feat(provider): 增加腾讯云实时语音处理链路 ( #1020 )
...
* feat: add Tencent TokenHub and realtime ASR
Rebase onto Core 2.0: Hunyuan realtime ASR and TokenHub polish now live
in openless-core with the shared provider registry, credentials, and
cloud transcription session lifecycle.
* fix: harden Tencent ASR and TokenHub
---------
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-09 23:39:11 +08:00
Chris233
5113eaf245
feat(providers): 统一模型字段、搜索与异步保存隔离 ( #1044 )
...
* feat(providers): unify model fields and isolate asynchronous updates
* fix(providers): preserve pending credential drafts
2026-09-09 14:57:35 +08:00
sim
68f94b788b
fix(tauri): 重建 settings.rs 合并——保留 2.0 effect-plan 架构并应用 set_settings 返回保存后 prefs 的契约
...
首次合并遗留的未解决冲突:以 1d29f8a6 干净版为底(2.0 SettingsRuntime
effect-plan 架构),叠加 fix/settings-experimental-consistency 的返回值
契约(桌面 set_settings 返回 UserPreferences,与前端 setSettings 对齐)。
2026-09-09 13:34:07 +08:00
sim
e9185e48ce
fix(i18n): 补齐 de/es/fr 的 OrcaRouter 与实验性徽标键,统一实验性措辞
...
- de/es/fr(2.0 新增语言)补 common.experimental、providers.orcarouter、
searchModels/noMatchingModels/orcarouterCatalogHint/orcarouterAsrCatalogHint
- streamingInsertTitleLinux/sherpaTitle 等按 experimentalTitles 测试统一措辞
- 移除 locale 强制同步输出语言的 effect:2.0 设计为 UI 语言独立于输出/
识别语言(locale-lifecycle 测试守护),保留偏好写入门控本身
2026-09-09 13:28:48 +08:00
sim
cd18fe7174
Merge fix/settings-experimental-consistency into codex/ui-2.0-details(偏好写入门控 + 语言区域同步与 2.0 布局偏好并存)
2026-09-09 13:22:00 +08:00
sim
0fa21daaf0
Merge origin/beta into codex/ui-2.0-details(汇入 #1022/#1023/#1041/#1042,保留 2.0 渠道卡片结构并整合 OrcaRouter 目录选择)
2026-09-09 13:14:35 +08:00
sim
1d29f8a6cd
feat(app): finalize 2.0 channel settings UI, 8-language alignment and cloud-sync groundwork
...
- 渠道设置界面:ChannelList/LlmProtocolFields/ProvidersSection 渠道级协议与模型配置
- 8 种界面语言 1711 项文案对齐(de/en/es/fr/ja/ko/zh-CN/zh-TW)
- Core 协议层 llm_protocol 与 provider_service 配套、云同步准备
- linux-egui 后端与 Android updater 配套调整
2026-09-09 13:04:10 +08:00
sim
9a88bee5c6
feat(app): polish desktop UI, expand languages and prepare cloud sync
2026-09-09 01:13:16 +08:00
AnKaifeng and Chris233
66915405fd
feat(providers): add OrcaRouter model catalog, LLM, and ASR support ( #1022 )
...
* feat(providers): add OrcaRouter model catalog integration
* fix(providers): harden OrcaRouter catalog integration
---------
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-09 00:41:55 +08:00
a3fc7171d2
feat(llm): add OpenCode Zen polish provider, default deepseek-v4-flash ( #1023 )
...
* feat(llm): add OpenCode Zen polish provider, default deepseek-v4-flash
Dictation polish uses OpenAI-compatible chat/completions. For OpenCode Go, change the Base URL to /zen/go/v1.
* fix(macos): 避免 Fn 长按与功能键误触发听写 (#1008 )
Auto 和 Toggle 模式只在 Fn 短按松开且未叠加功能层操作时触发听写;长按及亮度、音量等 systemDefined 事件留给 macOS。
保留显式 Hold 模式的按住说话语义,并跳过 Fn 短按释放后的冗余仲裁延迟。
Co-authored-by: Chris233 <h-chris233@outlook.com >
* fix(asr): 百炼 WebSocket 优先走 IPv4,避开本机 IPv6 黑洞 (#1036 )
* fix(asr): 百炼 WebSocket 优先走 IPv4,避开本机 IPv6 黑洞
dashscope 的 AAAA 在部分 Windows 双栈网上 TCP 443 会挂死,connect_async 先试 IPv6 会卡满 5 秒超时,听写进不了 Listening。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(asr): preserve websocket ports and retry handshake addresses
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Chris233 <h-chris233@outlook.com >
* fix(updater): Beta 构建默认跟随 Beta 渠道 (#1041 )
* fix(updater): default beta builds to beta channel (#1034 )
* fix(updater): persist channel switches atomically
* feat(llm): 支持渠道级 Chat Completions、Responses 和 Messages (#1042 )
* feat(llm): add channel request formats and compatibility presets
* fix(llm): harden channel protocol handling
* feat(llm): integrate OpenCode Zen with shared request formats
---------
Co-authored-by: Mark <shawninjuly@gmail.com >
Co-authored-by: Chris233 <h-chris233@outlook.com >
Co-authored-by: 浩彬(^-^) <146098469+HKLHaoBin@users.noreply.github.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-08 20:54:01 +08:00
Chris233
2b7c9d13c1
feat(llm): 支持渠道级 Chat Completions、Responses 和 Messages ( #1042 )
...
* feat(llm): add channel request formats and compatibility presets
* fix(llm): harden channel protocol handling
2026-09-08 18:52:45 +08:00
Chris233
a9ee22f334
fix(updater): Beta 构建默认跟随 Beta 渠道 ( #1041 )
...
* fix(updater): default beta builds to beta channel (#1034 )
* fix(updater): persist channel switches atomically
2026-09-08 15:41:36 +08:00
sim
ee002a15bd
test(core): 限定沙箱权限段的路径断言
2026-09-08 14:42:05 +08:00
sim
4519f19c92
style(app): 统一前端与平台源码格式
2026-09-08 14:35:28 +08:00
sim
d686406a70
refactor(app): 清理废弃代码并明确模块注释
2026-09-08 14:27:29 +08:00
sim
7ae366e2aa
Merge remote-tracking branch 'origin/beta' into codex/ui-2.0-details
2026-09-08 14:21:03 +08:00
sim
a6ed77c0d0
feat(ui): 完善设置子页与自定义风格图标
2026-09-08 14:16:24 +08:00
af9eaa3e16
fix(asr): 百炼 WebSocket 优先走 IPv4,避开本机 IPv6 黑洞 ( #1036 )
...
* fix(asr): 百炼 WebSocket 优先走 IPv4,避开本机 IPv6 黑洞
dashscope 的 AAAA 在部分 Windows 双栈网上 TCP 443 会挂死,connect_async 先试 IPv6 会卡满 5 秒超时,听写进不了 Listening。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(asr): preserve websocket ports and retry handshake addresses
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Chris233 <h-chris233@outlook.com >
2026-09-08 12:47:09 +08:00