Commit Graph
1578 Commits
Author SHA1 Message Date
sim 60b43e25cf chore(release): prepare 2.0.0-Beta.3 build 20260926
Roll the Beta 3 dated build metadata from 20260925 to the publish date.
The 2026-09-26 Omni audio data-URL supplement folds into this same
Beta.3 build with the numeric Beta tag staying updater-compatible.
2026-09-26 17:56:56 +08:00
sim 51f6f4cfa7 feat(ui): integrate desktop panel refresh and session-safe voice controls 2026-09-26 17:07:38 +08:00
sim b38fc8a656 fix(sync): recover legacy empty Omni provider slot without losing credentials 2026-09-26 14:27:42 +08:00
sim fa1cf014d3 test(windows): initialize hotkey resume state in coordinator fixture 2026-09-26 12:30:12 +08:00
sim 62e09f1f1d fix(beta3): correct installer layout and refine agent progress feedback 2026-09-26 12:07:44 +08:00
sim 9731a7f082 feat(beta3): integrate encrypted sync and macOS experience updates 2026-09-26 11:09:42 +08:00
sim 6ebf1f1ad1 fix(omni): 为百炼多模态音频添加 data URL 并限定主机匹配 2026-09-26 00:22:05 +08:00
06db7d2978 chore(release): integrate reviewed changes for Beta 3 build 20260925
Integrate Android CI acceleration, modifier-only dictation chords,
Requesty, and remote-input generation guards over the verified Beta 2
baseline and macOS CI improvements. Fix review findings in signing
configuration caching, APK validation, and modifier arbitration/recording.
Keep Linux egui and its release workflows identical to Beta 2.

Co-authored-by: HKLHaoBin <we3q@qq.com>
Co-authored-by: leolulu <35873316+leolulu@users.noreply.github.com>
Co-authored-by: Thibault Jaigu <thibault.jaigu@gmail.com>
Co-authored-by: Ethan <257484394+EthanYoQ@users.noreply.github.com>
2026-09-25 23:52:47 +08:00
sim 06e7e634b6 fix(macos): 将 Metal 编译器版本纳入缓存键 2026-09-25 14:09:40 +08:00
sim f89b767fbe perf(macos): 保留 MLX 原生构建缓存 2026-09-25 14:05:26 +08:00
sim b268dcf978 perf(macos): 加速 Rust CI 与桌面打包 2026-09-25 13:11:14 +08:00
sim d9113e0b03 fix(tests): include runtime in the local model wire contract 2026-09-24 17:57:53 +08:00
sim e24ddf089f fix(tests): initialize QA handoff state in Windows coordinator fixture 2026-09-24 17:56:34 +08:00
sim a473268557 fix(release): keep dated build metadata compatible with NSIS 2026-09-24 17:49:58 +08:00
sim d78b35981a fix(release): stage Beta packages until verification completes 2026-09-24 17:29:12 +08:00
16c3f841b5 chore(release): prepare 2.0.0-Beta.2 build 20260924
Integrate the reviewed 2.0 PRs and local fixes from 03136853.
Preserve the verified subtitle behavior and model/runtime corrections.
Keep the numeric Beta tag compatible with released clients while exposing
the date as application build metadata.

Co-authored-by: DepengWang <2818245+DepengWang@users.noreply.github.com>
Co-authored-by: HKLHaoBin <we3q@qq.com>
Co-authored-by: Nahida <1139500183@qq.com>
Co-authored-by: TRIP <1933142963@qq.com>
Co-authored-by: chyuwei <weichangyuwcy@gmail.com>
Co-authored-by: leonoxo <leonoxo@gmail.com>
Co-authored-by: tayir <arnoldincredible@126.com>
2026-09-24 17:28:24 +08:00
Chris233 a8ebcf6ffa feat(dictation): 恢复录音优先并增加稳定模式 (#1082)
* feat(dictation): 恢复录音优先并增加稳定模式 (#1081)

* fix(dictation): bound buffered PCM and stop cleanly

* fix(dictation): pin provider before recording
2026-09-18 21:18:13 +08:00
cbde1fc267 fix(history): 支持已完成条目重新转录 (#1079)
* fix(history): 支持已完成条目重新转录

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs: 更新 Issue 1046 交付记录

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs: 记录上游 Issue 1046 PR

* fix(history): preserve records and split long Qwen audio

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Chris233 <h-chris233@outlook.com>
2026-09-16 22:22:48 +08:00
9b55ae1a8c fix(selection-voice): 修复 EditPlan 解析失败并支持格式/提示词配置 (#1077)
* fix(selection-voice): 可配置 EditPlan 提示词与 XML/JSON 优先解析 (#1076)

避免听写润色 framing 覆盖 EditPlan 契约;支持风格包/自定义提示词、格式优先级与解析失败时展示模型原文。

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(memory): 记录 EditPlan 修复 PR

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(selection-voice): route EditPlan framing explicitly

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Chris233 <h-chris233@outlook.com>
2026-09-15 20:36:24 +08:00
lededevandChris233 ef78a091a9 fix(llm): 通过 LM Studio preset 控制思考 (#1009)
* fix (polish): LM Studio默认对Gemma 4 12B开启思考,需要显式关闭它

摘要
通过 LM Studio 的 OpenAI 兼容接口接入 Gemma 4 12B 时,openless 默认「关闭思考」,但模型仍输出长思维链——UI 开关无效。根因是 LM Studio(llama.cpp 系服务)里 Gemma 4 等思考模型的 chat template 默认 enable_thinking=true:不下发参数不会关,必须显式下发关闭参数才生效;而现有 thinking 控制策略只按厂商域名关键字识别(minimax/deepseek/openrouter/dashscope/stepfun),本地服务无厂商域名,落入 None 分支一个 thinking 参数都不发,行为完全由模型侧默认值决定——恰好是「开」。
本 PR 新增 LmStudioThinking 策略:按 LM Studio 默认端口 1234(另登记 provider_id "lmstudio")识别该场景,显式下发 chat_template_kwargs.enable_thinking=false 关闭思考,并附两个 OpenAI 风格字段多重兜底。
修复 / 新增 / 改进
- 新增 ThinkingControl::LmStudioThinking:关闭时(openless 默认态)下发 chat_template_kwargs.enable_thinking=false + reasoning_effort="none" + reasoning.type="disabled" 三件套显式关掉 Gemma 4 12B 的默认思考(LM Studio/llama.cpp 均接受,多重兜底);用户手动开启时只显式发 enable_thinking=true,不附带后两个关闭字段。
- 识别逻辑:base_url 提取的 host 以 :1234 结尾即命中(LM Studio 默认服务端口,带冒号前缀匹配避免误伤 12345/12340 等端口);同时在已知列表登记 provider_id "lmstudio",将来若新增专属 preset 自动生效。
- doc 注释更新:openai_compatible_thinking_control_for_base_url 命中策略说明改为「厂商关键字 + 本地服务按端口」,并写明自定义端口无法自动识别的局限。
- 测试:4 个新回归用例(默认端口关闭时三字段齐全、开启时仅 enable_thinking=true、尾斜杠//v1 后缀/LAN IP 变体均命中、端口 12345 不误命中),另在既有 unknown-provider 用例补断言 chat_template_kwargs 不存在,防新策略误触发。
- 未改动:各厂商(MiniMax/DeepSeek/OpenRouter/DashScope/StepFun)thinking 参数逻辑、chat body 结构、超时预算。
兼容
- 不包含:不新增 "lmstudio" preset;用户修改 LM Studio 端口后无法自动识别(已写入注释),此时需自行确认模型侧思考默认值。
- 对现有用户 / 本地环境 / 构建流程的影响:无。仅对命中 :1234 的请求多带三个 thinking 控制字段,非思考模型忽略即可;其余 provider 行为不变。
- 改动量:单文件 openless-all/app/src-tauri/src/polish.rs,生产代码净增约 24 行(含注释/文档),测试净增 87 行。
测试计划
- 命令:cargo test --manifest-path src-tauri/Cargo.toml --lib(在 openless-all/app 下运行)
- 结果:5/5通过
- 反向验证:移除 :1234 分支后默认端口及变体用例如期失败;把关闭态三字段减为仅 enable_thinking 则三字段断言失败;若匹配放宽到不含冒号前缀,12345 防误伤用例即被打破
- 证据路径:本地终端输出,未落盘到仓库

* fix(llm): control LM Studio thinking through an explicit preset

---------

Co-authored-by: Chris233 <h-chris233@outlook.com>
2026-09-13 19:59:15 +08:00
EddieLin 83be689c19 fix(less-computer): 升级 @shadcn/react 到 0.2.1,修复聊天框不自动滚到底 (#1070)
0.2.0 的 MessageScroller 在流式输出期间有竞态:自动滚动后约 180ms 的
状态复核若恰好落在新内容已提交、ResizeObserver 尚未触发的间隙,会把
跟随底部误判为用户滚走,此后不再跟随。上游 shadcn-ui/ui#11106 已修,
随 0.2.1 发布;0.2.1 在现有 ^0.2.0 范围内,接口与 peer 依赖不变。

Fixes #1010
2026-09-13 18:09:05 +08:00
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 LeeandChris233 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 zhichaoandChris233 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