Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions docs/releases/2.0.2-Beta.3-release-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# OpenLess 2.0.2-Beta.3+build.20261026-c9f49c60

本次为 **Beta 测试版**,比较范围为上一公开 Beta **`v2.0.2-Beta.2-tauri` → `v2.0.2-Beta.3-tauri`**。正式版用户不会自动收到本版本。

## 功能更新

- **光标上下文默认开启**:macOS、Windows 和 Android 用户首次使用时默认启用光标附近上下文;用户仍可在隐私设置中关闭。密码输入、Secure Input、Windows UIA 密码控件、已知密码管理器和终端继续被排除。相关实现见提交 [`f71ffd54`](https://github.com/Open-Less/openless/commit/f71ffd5482ee1ba2c85315418eb41be68284576e) 和合并 PR [#1268](https://github.com/Open-Less/openless/pull/1268)。
- **云同步覆盖更多设置**:历史记录、流式插入、Windows composition、选区语音、润色上下文、更新渠道和布局等可同步设置现在会进入兼容的 legacy sync 与加密同步路径。相关提交 [`f71ffd54`](https://github.com/Open-Less/openless/commit/f71ffd5482ee1ba2c85315418eb41be68284576e)。

## Bug 修复

- **Windows 麦克风启动和崩溃风险**:WASAPI/CPAL 的 COM 资源和设备对象保持在所属线程释放,增加了跨线程枚举与生命周期回归测试,覆盖 Issue #1227 报告的堆损坏风险。提交 [`f88bf246`](https://github.com/Open-Less/openless/commit/f88bf246e7b6823ecd0422475cca3802ed4a50bb)。
- **同步事件串线**:冲突、恢复和状态事件现在携带服务 origin,旧服务器或旧账户事件不能覆盖当前同步服务的本地状态。提交 [`99b05579`](https://github.com/Open-Less/openless/commit/99b05579fc0632908613f41b90624c9a508cb53f)。
- **Beta CI 合同修复**:光标上下文默认值变化同步到隐私路径测试,云同步事件 fixture 补齐 `serviceOrigin` 字段,避免 App 端 Linux Core CI 因陈旧合同失败。PR [#1268](https://github.com/Open-Less/openless/pull/1268)。

## 架构改动

- **录音优先启动路径**:`PipelineDictationEngine` 在识别器准备之前先建立麦克风捕获,使用有界 PCM 缓冲保留开头音频;取消会立即释放麦克风,准备完成后按原顺序交付暂存 PCM。已有 `capture_starts_before_slow_preparation_and_cancellation_releases_it_promptly` 回归测试和 Windows 音频生命周期测试覆盖该路径。
- **Linux egui 日志后端**:Linux 宿主日志等级和噪声处理重新整理,补齐边界诊断。PR [#1259](https://github.com/Open-Less/openless/pull/1259)。
- **iOS Beta 基线**:iOS Host、键盘和录音扩展对齐 Beta,并隔离设备构建与测试流程。PR [#1254](https://github.com/Open-Less/openless/pull/1254)。

## 构建与分发改动

- 应用版本统一为 `2.0.2-Beta.3+build.20261026-c9f49c60`。
- 新 Beta 标签为 `v2.0.2-Beta.3-tauri`,不会移动 `v2.0.2-Beta.2-tauri` 或稳定版标签。
- Tauri release workflow 构建 macOS ARM64/Intel、Windows x64 和 Android 四 ABI 产物;Linux egui 与 HarmonyOS 仍由各自手动验收流程附加。

## PR 与参与者

| PR / 提交 | 内容 | 提交者 |
| --- | --- | --- |
| [#1268](https://github.com/Open-Less/openless/pull/1268) | App 合同 fixture、默认光标上下文测试和 Beta CI 收尾 | [@appergb](https://github.com/appergb) |
| [#1259](https://github.com/Open-Less/openless/pull/1259) | Linux egui 日志后端 | [@aeoform](https://github.com/aeoform) |
| [#1254](https://github.com/Open-Less/openless/pull/1254) | iOS Beta 对齐与设备构建隔离 | [@appergb](https://github.com/appergb) |
| [`f88bf246`](https://github.com/Open-Less/openless/commit/f88bf246e7b6823ecd0422475cca3802ed4a50bb) | Windows WASAPI 生命周期修复 | TRIP / [@appergb](https://github.com/appergb) |
| [`99b05579`](https://github.com/Open-Less/openless/commit/99b05579fc0632908613f41b90624c9a508cb53f) | 同步服务 origin 隔离 | lvbaiqing |
| [`f71ffd54`](https://github.com/Open-Less/openless/commit/f71ffd5482ee1ba2c85315418eb41be68284576e) | 设置同步与默认光标上下文 | lvbaiqing |

## 验证说明

- Beta 基线 CI:App PR [#1268](https://github.com/Open-Less/openless/pull/1268) 的配置检查、Linux Core、Windows、macOS、Android、Harmony、iOS device-build、native capsule 和 UI motion 全部通过。
- 合并后 Core 合同测试:`cargo test --locked -p openless-core --test contract_2`,6/6 通过。
- 合并后前端测试:`npm test`,152/152 通过,TypeScript 与 Vite production build 成功。
- 合并前完整 `openless-core`:1391 项通过,3 项 ignored;Windows CI 包含 WASAPI COM 生命周期测试。
- Vite 构建仍输出已有的循环 re-export 和大 chunk 警告,但未导致构建或测试失败。
- 本机无法替代真实 Windows 麦克风硬件测量 P50/P95;发布包应以 Windows CI 和实际 Beta 用户设备反馈继续验证冷启动延迟。

## 下载与升级

- Beta 用户应在设置中加入 Beta 渠道,或从 GitHub Release 下载 `v2.0.2-Beta.3-tauri` 对应平台安装包。
- macOS 14 或更新版本:Apple Silicon 使用 `aarch64.dmg`,Intel 使用 `x64.dmg`。若构建未配置 Apple Developer ID 签名与公证,仍需按现有发行说明处理 Gatekeeper。
- Windows 提供 x64 NSIS 安装包;Android 提供四种 ABI 的 Beta APK。
- Stable 用户不会从 Stable updater feed 自动收到此 Beta。
4 changes: 2 additions & 2 deletions openless-all/app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion openless-all/app/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "openless-app",
"private": true,
"version": "2.0.2-Beta.2+build.20261023-dictation-71a18a77",
"version": "2.0.2-Beta.3+build.20261026-c9f49c60",
"type": "module",
"scripts": {
"pretest": "npm run build",
Expand Down
2 changes: 1 addition & 1 deletion openless-all/app/scripts/desktop-version-contract.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { readFile } from 'node:fs/promises';

const app = new URL('../', import.meta.url);
const read = async (path) => (await readFile(new URL(path, app), 'utf8')).replace(/\r\n/g, '\n');
const version = '2.0.2-Beta.2+build.20261023-dictation-71a18a77';
const version = '2.0.2-Beta.3+build.20261026-c9f49c60';
const pkg = JSON.parse(await read('package.json'));
const lock = JSON.parse(await read('package-lock.json'));
const tauri = JSON.parse(await read('src-tauri/tauri.conf.json'));
Expand Down
2 changes: 1 addition & 1 deletion openless-all/app/src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion openless-all/app/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "openless"
version = "2.0.2-Beta.2+build.20261023-dictation-71a18a77"
version = "2.0.2-Beta.3+build.20261026-c9f49c60"
license = "AGPL-3.0-only"
description = "OpenLess — local voice input that types where your cursor is"
authors = ["OpenLess"]
Expand Down
2 changes: 1 addition & 1 deletion openless-all/app/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "OpenLess",
"version": "2.0.2-Beta.2+build.20261023-dictation-71a18a77",
"version": "2.0.2-Beta.3+build.20261026-c9f49c60",
"identifier": "com.openless.app",
"build": {
"beforeDevCommand": "npm run dev",
Expand Down
Loading