13 Commits
Author SHA1 Message Date
TRIPandHKLHaoBin 6f9af89583 release: OpenLess 2.0.0-Beta.4+build.20260930 (#1126)
Integrate ASR/Omni fixes, API Route, Android IME and confirmation-based vocabulary learning. Complete settings transitions and macOS single-item credential storage. Synchronize all application versions to 2.0.0-Beta.4+build.20260930.

Integrated PRs: #1116, #1120, #1121, #1123, #1124, #1067 and #1128. Linux #1117 remains independent and is excluded from automatic release.

Validated: full cross-platform CI, 18 UI motion cases, 112 frontend test files, 1245 Core tests (1 ignored) and 572 macOS native tests.

Co-authored-by: HKLHaoBin <we3q@qq.com>
2026-09-30 20:32:53 +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 d78b35981a fix(release): stage Beta packages until verification completes 2026-09-24 17:29:12 +08:00
Jimmy LeeandChris233 42c1b31754 本地模型增加whisper相关模型的支持; 增加qwen3-asr的rust版本, 相比C版本速度更快 (#940)
* feat: add selectable local ASR backends

* fix(build): 修复本地 ASR 多平台构建与旧渠道兼容

* fix(asr): 修复 MLX 权重跨线程 stream 错误

* fix(ci): exclude MLX Qwen3 from non-macOS jobs

* fix(ci): use app-relative ASR submodule path

* fix(android): skip qwen-asr C backend

* fix(android): guard qwen-asr by target triple

* fix(ci): 修正语法错误

* fix(ci): remove invalid checkout step options

* fix(asr): harden local backend integration

* fix(asr): 处理 PR #940 审查发现(9 项)

- strip: 全局保留 symbols,macOS release profile 单独退回 debuginfo(Homebrew rustc 的 LINKEDIT 问题仅限 macOS)
- 转录超时改为驱逐引擎而非无效 cancel():spawn_blocking 解码任务无法被中止,驱逐后下次会话加载新引擎而非排队
- Turbo/Q5 共享目录模型在 is_downloaded/downloaded_bytes/delete_model 上互相认账
- MLX 临时 WAV 用 RAII guard 兜底清理;HF tree API 改 Link rel=next 游标分页(offset 被服务器静默忽略),带防御上限与 5 个单测
- Intel Mac 渠道下拉不再闪现 MLX 预设;MetalToolchainGuide 默认折叠并标注仅源码构建期要求
- qwen3-asr-rs 子模块 URL 与 gitlink 指向 Open-Less org 镜像,嵌套 mlx-c 同步改指 org(供应链 N-6)
- README/注释补充:所有平台源码构建均需递归初始化子模块(path 依赖跨 target 解析)

* fix: harden local whisper model lifecycle and downloads

* fix(asr): address PR 940 review findings

* fix(ci): add local ASR model stub to backend tests

* fix(linux): bundle and sync fcitx5 selection plugin

* fix(macos): avoid duplicate whisper test module

* fix(history): make detail sibling keys unique

* fix(ci): stub macos whisper model constant

* test(ci): avoid macOS streaming timeout race

---------

Co-authored-by: Chris233 <h-chris233@outlook.com>
2026-08-20 20:22:02 +08:00
KingandChris233 c84bfb98f3 chore(ci): optimize CI caching, concurrency, and Tauri security (#937)
* ci: optimize CI caching, concurrency, and Tauri security

Address multiple CI/CD efficiency and security gaps identified during
project optimization analysis. The changes reduce PR build times,
prevent wasteful concurrent runs, tighten the Tauri security boundary,
and eliminate unnecessary submodule fetches on non-macOS jobs.

CI workflow improvements:
- Add swatinem/rust-cache@v2 to both ci.yml jobs (android-check and
  cross-platform), matching the caching already present in
  release-tauri.yml. This converts PR Rust compilation from full
  rebuilds to incremental builds, saving an estimated 60-80% of
  compile time per run.
- Add concurrency groups to all three workflows. PR pushes cancel
  superseded runs to free concurrency slots; tag pushes and manual
  dispatches are isolated by run_id to avoid mutually canceling
  release builds. Previously, rapid PR pushes triggered redundant
  parallel CI runs with no cancellation.
- Unify Node version to 22 across release-tauri.yml and
  android-apk.yml, which were previously pinned to 20. This ensures
  consistent build environments across all workflows.

Submodule and security hardening:
- Conditionally fetch the vendor/qwen-asr submodule only on macOS
  jobs across all three workflows. The submodule is compiled
  exclusively by build.rs on macOS (build_qwen_asr_macos); Linux,
  Windows, and Android builds never reference it. Removing the
  unconditional recursive checkout eliminates a network fetch and
  a submodule-availability failure point on every non-macOS job.
- Set withGlobalTauri to false in tauri.conf.json. The frontend
  exclusively uses @tauri-apps/api imports and never references the
  window.__TAURI__ global, so disabling it removes an unnecessary
  XSS attack surface without functional impact.

Dependency hygiene:
- Move @types/dompurify from dependencies to devDependencies in
  package.json. Type declaration packages are build-time only and
  should not ship in the production bundle.

* fix(ci): address review findings

* fix(ci): isolate manual CI workflow runs

---------

Co-authored-by: Chris233 <h-chris233@outlook.com>
2026-08-10 23:06:12 +08:00
浩彬(^-^)andCursor ead09481bd feat(android): 可选 Shizuku 与三层跨应用粘贴回退 (#932)
* feat(android): add optional Shizuku accessibility recovery path

Integrate best-effort OpenLessAccessibilityService recovery via Shizuku UserService with safe rollback, manifest/Gradle scaffolding, JNI bridge, settings UI, and contract tests.

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

* fix(android): add primary constructor for Shizuku UserService Stub

Kotlin requires an explicit supertype initializer when extending AIDL Stub; fixes Gradle compile error on CI.

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

* fix(android): replace accessibility heartbeat with IPC paste results

Remove SharedPreferences cross-process heartbeat gating, use structured PASTE/PING IPC with safe retry rules, tighten editable target validation, and fix Shizuku manifest attribute merging for mixed-quote providers.

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

* fix(android): use literal const values in accessibility command receiver

Kotlin const val cannot reference enum codes; fixes release APK compile.

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

* fix(android): 修复无障碍组件短名与全名匹配误判

Settings.Secure 常以 pkg/.Class 存储服务列表,主检测路径改用 ComponentName 规范化比较,避免 enabled=false 误报未授权;同步 Rust JNI 路径并补齐测试。

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

* fix(android): 为 JNI 调用的无障碍检测方法添加 @Keep

Release 构建中 R8 会剥离仅由 JNI 反射调用的 pingAccessibilityProcess,导致 NoSuchMethodError 与 operational=false 误报;同步保护 isEnabled 并补充契约测试。

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

* fix(android): 恢复无障碍粘贴的可编辑目标回退查找

粘贴失败日志为 NO_FOCUSED_EDITOR:过严的 isFocused 校验与移除树遍历导致找不到输入框。恢复 FOCUS_ACCESSIBILITY、宽松焦点匹配与 findEditableInTree 回退,并保留严格缓存校验。

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

* fix(android): 跨窗口扫描与缓存优先修复粘贴目标查找

微信等场景下 rootInActiveWindow 非输入窗口导致 NO_FOCUSED_EDITOR;改为缓存优先、遍历全部无障碍窗口,并加深树搜索。

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

* fix(android): 识别非 isEditable 的粘贴目标节点

微信等 App 不向无障碍暴露 isEditable;扩展为 EditText/ACTION_PASTE/ACTION_SET_TEXT 目标,并订阅文本变更事件以预热缓存。

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

* fix(android): 三层粘贴回退(无障碍 → Shizuku → 剪贴板)

无障碍失败后尝试 Shizuku 注入 KEYCODE_PASTE,再回退剪贴板;精简 Tier1 为 findFocus + ACTION_PASTE。

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

* fix(android): 粘贴结果校验与 Shizuku processNameSuffix

ACTION_PASTE 返回 true 但文本未写入时降级为 PASTE_REJECTED 并走 Tier2;修复 UserService 绑定 NPE;Tier1 成功后跳过 Shizuku。

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

* fix(android): 恢复无障碍可编辑目标查找以修复微信等应用粘贴

aaa3fbf2 将 Tier1 简化为 findFocus 导致微信等应用 PASTE_REJECTED;恢复跨窗口/树扫描与焦点缓存,保留粘贴结果校验与 Promise.allSettled 容错。

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

* fix(android): 通过 IPC 传递粘贴文本修复后台剪贴板读取被拒绝

无障碍子进程在应用未聚焦时无法读剪贴板,导致 Tier1 直接 PASTE_REJECTED;主进程将听写文本经 EXTRA_PASTE_TEXT 传入粘贴流程。

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

* fix(android): Tier2 粘贴改用 Shizuku.newProcess 绕过 MTK UserService 崩溃

联发科/小米 ROM 上 UserService 进程在 LoadedApk.makeApplicationInner 因 procName 为 null 而 NPE;粘贴键注入优先走 Shizuku.newProcess,失败再回退 UserService。

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

* fix(android): Tier2 粘贴改用 Shizuku daemon UserService

newProcess 为私有 API;粘贴键注入改走 daemon(true) 绑定,避免 MTK 上 :shizuku 子进程 Application NPE。

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

* test(android): 修正 daemon 粘贴契约断言

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

* fix(android): daemon 粘贴绑定补全 processNameSuffix

Shizuku UserServiceArgs 要求 suffix 非空;daemon(true)+suffix=paste 避免此前 null NPE 与 MTK :shizuku 子进程崩溃。

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

* fix(android): Tier2 粘贴经反射调用 Shizuku.newProcess

MTK 上 UserService 子进程仍触发 LoadedApk NPE;粘贴键注入优先反射 newProcess 执行 input keyevent 279,UserService 作回退。

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

* chore(android): 移除粘贴调试日志

微信等应用三层粘贴回退已在真机验证通过,清理 DBG-21a66f/DBG-53a00d 临时 instrumentation。

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

* fix(android): 修复 CI 单元测试在无 Robolectric 下失败

ComponentIds 改为纯 Kotlin 规范化(对齐 Rust);isValidServiceComponent 拒绝首尾空白;Target 测试改用 action id 常量。

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

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 21:50:09 +08:00
sim 6b33ba21e0 fix(updater): prepare 1.3.15-Beta.2 after repository transfer 2026-07-19 00:11:34 +08:00
sim 8d74b3e0eb chore(release): prepare 1.3.13-Beta.1 2026-06-25 14:59:31 +08:00
TRIP fbe40ab583 feat(android): 集成 #704 安卓自动更新 + 同步 PC updater 修复(#705/#708)到安卓 (#712)
合并 #704(安卓应用内自动更新 + JNI 修复)并把 PC updater 修复同步到安卓:①安卓公钥回退 6F4B5994→1DEAA803(同步#705)②installError 安装失败兜底+去 throw(同步#708)③还原被自动合并误删的桌面 logClientError。桌面机制零变更。CI 全绿 + @claude 审核通过。取代 #704 及 #694 安卓部分。
2026-06-19 13:55:53 +08:00
HKLHaoBinandCursor 0fe5fbfdcf feat(android): align release pipeline with desktop updater rules
Add signed release APK builds on v*-tauri tags, minisign manifests per ABI, custom Android in-app updater, and CI cargo check for aarch64-linux-android.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 19:48:07 +08:00
HKLHaoBin 1ea467a001 feat(android): port Android APK runtime onto beta 2026-06-12 18:13:12 +08:00
HKLHaoBinandCursor cb63eaa766 ci(android): harden Gradle wrapper download in APK workflow
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 17:55:06 +08:00
HKLHaoBinandCursor dbc2643583 Add Android APK CI workflow for manual dispatch on beta.
Sync android-apk.yml from openless-android so the workflow appears in Actions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 17:55:06 +08:00