Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
1b4c4b8
fix(settings): keep experimental state consistent
Aug 16, 2026
30e580f
feat(ui): Core 2.0 入口、设置与布局整理,Linux 引导与视觉改进
Sep 7, 2026
11d9aa4
merge: Core 2.0 前端 UI 整理(feat/core-2-ux-linux → beta)
Sep 7, 2026
be1118b
style(src-tauri): 应用 rustfmt 默认风格统一格式
Sep 7, 2026
92da4fb
docs: 清理已了结的规划过程文档并同步引用
Sep 7, 2026
6608f66
chore: 将 .mimosa 运行状态目录移出版本库并加入 .gitignore
Sep 7, 2026
639c2fb
chore: 删除未使用死文件与零引用依赖
Sep 7, 2026
34cab16
docs: 以源码为准重写 1-app 文档系统(19 篇)
Sep 7, 2026
b1370b5
chore(docs): 删除已无引用的火山控制台截图
Sep 7, 2026
9d03bae
test(linux-egui): host_contract 按有效目标语义更新 Windows 键盘断言
Sep 7, 2026
69f454b
feat(ui): integrate 2.0 interface and agent work
Sep 8, 2026
a6ed77c
feat(ui): 完善设置子页与自定义风格图标
Sep 8, 2026
7ae366e
Merge remote-tracking branch 'origin/beta' into codex/ui-2.0-details
Sep 8, 2026
d686406
refactor(app): 清理废弃代码并明确模块注释
Sep 8, 2026
4519f19
style(app): 统一前端与平台源码格式
Sep 8, 2026
ee002a1
test(core): 限定沙箱权限段的路径断言
Sep 8, 2026
9a88bee
feat(app): polish desktop UI, expand languages and prepare cloud sync
Sep 8, 2026
1d29f8a
feat(app): finalize 2.0 channel settings UI, 8-language alignment and…
Sep 9, 2026
0fa21da
Merge origin/beta into codex/ui-2.0-details(汇入 #1022/#1023/#1041/#104…
Sep 9, 2026
cd18fe7
Merge fix/settings-experimental-consistency into codex/ui-2.0-details…
Sep 9, 2026
e9185e4
fix(i18n): 补齐 de/es/fr 的 OrcaRouter 与实验性徽标键,统一实验性措辞
Sep 9, 2026
68f94b7
fix(tauri): 重建 settings.rs 合并——保留 2.0 effect-plan 架构并应用 set_settings …
Sep 9, 2026
417ad38
fix(macos): 四项修复——typeless 胶囊 1/7 缩放贴底、红绿灯对齐、ASR 误报、Keychain 节流
Sep 9, 2026
ce43e1b
build(macos): DMG 兜底(hdiutil + Applications 替身)并按第一性原则收紧注释
Sep 9, 2026
e3f63e9
build(macos): 兜底校验加新鲜度——打包失败时旧 bundle 不允许再通过校验
Sep 10, 2026
105fb99
fix(core): volcengine 配置判定不再要求 resource id——运行时留空会回落默认资源
Sep 10, 2026
7204c28
feat(capsule): typeless 放大到原版 1/5 面积、黑底白波纹;Siri 预览改用真实光效舞台
Sep 10, 2026
bd5656b
build(macos): 构建前清理重复的 qwen3-asr-rs 目录;新鲜度基准改为构建开始时间
Sep 10, 2026
786e4b4
feat(local-asr): 模型状态透出目录元数据、新增中断下载清理命令与 Zipformer 目录项
Sep 10, 2026
0ac0fbd
merge: 汇入 origin/beta(#1037 远程输入持久 CA、#1040 F13-F20/Mac 听写键、#1020 腾讯云…
Sep 10, 2026
3ff3df1
fix(merge): 落实合并后的契约与目录对齐
Sep 10, 2026
576592f
style(app): 合并后统一 prettier 格式(i18n/设置页/热键录制/凭据草稿等 22 处)
Sep 10, 2026
4ec44b2
merge: 汇入 origin/beta 第二轮(#1048 根证书指纹核验、#1049 录音保亮屏)
Sep 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,6 @@ CapsWriter

.reasonix
/.codex

# Mimosa 安全钩子运行状态(不属版本库)
.mimosa/
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ For the full end-user walkthrough, see [USAGE.md](USAGE.md).

## Build from source (developers)

The active workspace lives in `openless-all/app/`. `crates/openless-core` is the framework-independent backend, `src-tauri` hosts macOS/Windows/Android, and `linux-egui` contains the native Linux UI and its platform adapters. The macOS Tauri build links a vendored C ASR engine ([`Open-Less/qwen-asr`](https://github.com/Open-Less/qwen-asr), forked from `antirez/qwen-asr`) under `src-tauri/vendor/qwen-asr/`; initialize submodules for macOS Tauri development. The root core/Linux workspace deliberately excludes `src-tauri`, so Linux core and host checks neither initialize that submodule nor parse the Tauri manifest.
The active workspace lives in `openless-all/app/`. `crates/openless-core` is the framework-independent backend, `src-tauri` hosts macOS/Windows/Android, and `linux-egui` contains the native Linux UI and its platform adapters. Initialize submodules before a Tauri source build: its manifest resolves local path dependencies even when their target-specific code is not compiled. These include macOS ASR engines such as [`Open-Less/qwen-asr`](https://github.com/Open-Less/qwen-asr) under `src-tauri/vendor/`. The root Core/Linux workspace excludes `src-tauri`, so its independent checks do not parse the Tauri manifest or require those submodules. Start with the [documentation index](docs/index.md), [architecture](docs/architecture.md), and [source structure](docs/structure.md).

Rust 1.88 is the minimum supported toolchain for source builds; the latest stable Rust is recommended. CI verifies both Rust 1.88 and stable on macOS, Windows, and Linux.

Expand All @@ -269,15 +269,15 @@ cd "openless-all/app"
npm ci

# macOS/Windows/Android: Vite at :1420 + Tauri host
# Initialize submodules first when building the macOS local-ASR target.
# Initialize submodules before resolving the Tauri manifest.
git submodule update --init --recursive
npm run tauri dev

# macOS release build (signs, installs, resets TCC)
./scripts/build-mac.sh
INSTALL=0 ./scripts/build-mac.sh # build only, skip install

# Shared backend and Linux non-UI host (no Tauri/WebKitGTK)
# Shared backend and Linux Host/UI (no Tauri/WebKitGTK)
cargo check -p openless-core
cargo check -p openless-linux-egui --all-targets

Expand Down Expand Up @@ -357,7 +357,7 @@ What features does this app still need?

…not a list of missing features.

Long-term reference rewrites are stored as `raw → polished → rule` triples and will be retrieved as similar-example references (never as conversation context) once a vector store is wired in. See [docs/polish-reference-corpus.md](docs/polish-reference-corpus.md) and [Examples/polish-reference-examples.sample.jsonl](Examples/polish-reference-examples.sample.jsonl).
Long-term reference rewrites are represented as `raw → polished → rule` triples in [Examples/polish-reference-examples.sample.jsonl](Examples/polish-reference-examples.sample.jsonl). The sample format describes reference data; current module responsibilities are documented in [Architecture](docs/architecture.md).

## Dictionary

Expand Down Expand Up @@ -389,13 +389,13 @@ React UI ── Tauri Adapter (macOS/Windows/Android) ──┐
egui UI ── Linux Adapter (no Tauri/WebKitGTK) ────┘
```

`openless-core` owns the stable DTOs, errors, semantic events, repositories, credentials contract, and host-facing use-case Interface. Host-only concerns—IPC, windows, tray, permissions, updater, keyring, fcitx5, and package resource paths—are implemented by Adapters. Legacy React command/event names stay in the Tauri compatibility Adapter; Linux calls the typed Rust Interface in process. See [`docs/linux-egui-backend-contract.md`](docs/linux-egui-backend-contract.md) and the [full migration plan](docs/linux-egui-shared-backend-plan.md).
`openless-core` owns the stable DTOs, errors, semantic events, repositories, credentials contract, and host-facing use-case Interface. Host-only concerns—IPC, windows, tray, permissions, updater, keyring, fcitx5, and package resource paths—are implemented by Adapters. Legacy React command/event names stay in the Tauri compatibility Adapter; Linux calls the typed Rust Interface in process. See [`docs/linux-egui-backend-contract.md`](docs/linux-egui-backend-contract.md).

The `v<version>-tauri` / `v<version>-Beta.N-tauri` workflows publish the macOS, Windows, and Android hosts. Linux deb/rpm/AppImage assets are built by `release-linux-egui.yml` with an independent manifest; automatic release remains gated on successful artifacts and real Ubuntu install/runtime/upgrade/rollback evidence.

The dictation pipeline: `hotkey edge → Recorder.start + ASR.openSession → [audio frames] → hotkey edge → Recorder.stop + ASR.sendLastFrame → Polish → Insert → History.save`.

See [CLAUDE.md](CLAUDE.md) for invariants and module-wiring rules.
See [AGENTS.md](AGENTS.md) for repository rules and [Architecture](docs/architecture.md) for module responsibilities and wiring.

## Roadmap

Expand Down Expand Up @@ -432,7 +432,7 @@ OpenLess ships two release channels. The branch name equals the channel name (se

### Post-release verification (always run)

Run the 5-step checklist in [`CLAUDE.md` → Branch & release-channel workflow → Channel distribution](CLAUDE.md): page status (pre-release flag), asset-filename channel correctness, Stable user flow, Beta opt-in flow, and raw endpoint sanity.
Follow [RELEASING.md](RELEASING.md) and verify the release page's pre-release flag, asset-filename channel correctness, Stable user flow, Beta opt-in flow, and raw update endpoints.

## Acknowledgements

Expand Down
14 changes: 7 additions & 7 deletions README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ OpenLess 只做一件事:**把语音变成可用的书面文字(尤其是 AI 提

## 从源码构建(开发者)

活跃 workspace 位于 `openless-all/app/`:`crates/openless-core` 是框架无关后端,`src-tauri` 承载 macOS/Windows/Android,`linux-egui` 包含 Linux 原生 UI 与平台 Adapter。macOS Tauri 构建会链接 `src-tauri/vendor/qwen-asr/` 下的 vendored C ASR 引擎([`Open-Less/qwen-asr`](https://github.com/Open-Less/qwen-asr),fork 自 `antirez/qwen-asr`),因此开发 macOS Tauri 目标时需要初始化子模块。根 core/Linux workspace 显式排除了 `src-tauri`,Linux 的 core/host 检查既不初始化该子模块,也不解析 Tauri manifest。
活跃 workspace 位于 `openless-all/app/`:`crates/openless-core` 是框架无关后端,`src-tauri` 承载 macOS/Windows/Android,`linux-egui` 包含 Linux 原生 UI 与平台 Adapter。源码构建 Tauri 前需初始化子模块:即使不编译对应平台代码,Cargo 仍会解析 manifest 中的本地 path 依赖,其中包括 `src-tauri/vendor/` 下的 macOS ASR 引擎,如 [`Open-Less/qwen-asr`](https://github.com/Open-Less/qwen-asr)。根 Core/Linux workspace 排除了 `src-tauri`,其独立检查不解析 Tauri manifest,也不要求这些子模块。阅读入口为 [docs/index.md](docs/index.md)、[架构](docs/architecture.md)和[目录结构](docs/structure.md)

Rust 1.88 是从源码构建所支持的最低工具链版本;建议使用最新 stable Rust。CI 会在 macOS、Windows 和 Linux 上同时验证 Rust 1.88 与 stable。

Expand All @@ -274,15 +274,15 @@ cd "openless-all/app"
npm ci

# macOS/Windows/Android:Vite 运行于 :1420 + Tauri 宿主
# 构建 macOS 本地 ASR 目标前先初始化子模块
# 解析 Tauri manifest 前先初始化子模块
git submodule update --init --recursive
npm run tauri dev

# macOS 发布构建(签名、安装、重置 TCC)
./scripts/build-mac.sh
INSTALL=0 ./scripts/build-mac.sh # 仅构建,跳过安装

# 共享后端与 Linux 非 UI host(不含 Tauri/WebKitGTK)
# 共享后端与 Linux Host/UI(不含 Tauri/WebKitGTK)
cargo check -p openless-core
cargo check -p openless-linux-egui --all-targets

Expand Down Expand Up @@ -362,7 +362,7 @@ OpenLess 的润色模型只重塑文本。它不回答问题、不执行任务

……而不是一份缺失功能的清单。

长期参考改写以 `raw → polished → rule` 三元组存储,待向量库接入后,将作为相似示例参考被检索(绝不作为对话上下文)。见 [docs/polish-reference-corpus.md](docs/polish-reference-corpus.md) 与 [Examples/polish-reference-examples.sample.jsonl](Examples/polish-reference-examples.sample.jsonl)。
长期参考改写的 `raw → polished → rule` 三元组格式见 [Examples/polish-reference-examples.sample.jsonl](Examples/polish-reference-examples.sample.jsonl)。该文件说明参考数据格式;当前模块职责见[架构文档](docs/architecture.md)。

## 词典

Expand Down Expand Up @@ -394,13 +394,13 @@ React UI ── Tauri Adapter(macOS/Windows/Android)──┐
egui UI ── Linux Adapter(无 Tauri/WebKitGTK)───┘
```

`openless-core` 负责稳定 DTO、错误、语义事件、repository、凭据契约和面向宿主的 use-case Interface。IPC、窗口、托盘、权限、更新、keyring、fcitx5 与打包资源路径等宿主能力由 Adapter 实现。旧 React command/event 名称只保留在 Tauri 兼容 Adapter;Linux 与 core 同进程,通过类型化 Rust Interface 调用。详细契约见 [`docs/linux-egui-backend-contract.md`](docs/linux-egui-backend-contract.md) 与[完整迁移计划](docs/linux-egui-shared-backend-plan.md)
`openless-core` 负责稳定 DTO、错误、语义事件、repository、凭据契约和面向宿主的 use-case Interface。IPC、窗口、托盘、权限、更新、keyring、fcitx5 与打包资源路径等宿主能力由 Adapter 实现。旧 React command/event 名称只保留在 Tauri 兼容 Adapter;Linux 与 core 同进程,通过类型化 Rust Interface 调用。详细契约见 [`docs/linux-egui-backend-contract.md`](docs/linux-egui-backend-contract.md)。

`v<version>-tauri` / `v<version>-Beta.N-tauri` 工作流发布 macOS、Windows 与 Android 宿主。Linux deb/rpm/AppImage 由 `release-linux-egui.yml` 使用独立 manifest 构建;自动发布仍以产物成功和 Ubuntu 真实安装、运行、升级、回滚证据为门禁。

听写流水线:`hotkey edge → Recorder.start + ASR.openSession → [audio frames] → hotkey edge → Recorder.stop + ASR.sendLastFrame → Polish → Insert → History.save`。

不变式与模块接线规则见 [CLAUDE.md](CLAUDE.md)。
仓库规则见 [AGENTS.md](AGENTS.md),模块职责与接线见[架构文档](docs/architecture.md)。

## 路线图

Expand Down Expand Up @@ -438,7 +438,7 @@ OpenLess 提供两个发布频道。分支名即频道名(见[贡献流程](#贡

### 发布后验证(始终执行)

执行 [`CLAUDE.md` → Branch & release-channel workflow → Channel distribution](CLAUDE.md) 中的 5 步清单,并额外核对 Android:
按 [RELEASING.md](RELEASING.md) 验证发布页的 pre-release 标记、产物文件名与渠道、Stable 用户流程、Beta 选择流程和更新端点,并额外核对 Android

1. Release 页面含 `latest-android-aarch64.json`(Stable 无 `-beta` 后缀混用)。
2. Beta pre-release 含 `latest-android-aarch64-beta.json`,URL 指向具体 tag。
Expand Down
Loading
Loading