Commit Graph
28 Commits
Author SHA1 Message Date
baiqing ac2edbe961 ci(release): wxs 用 env 绝对路径定位 IME DLL
之前 light.exe 失败的根因:openless-ime.wxs 的 Source 写的相对路径
src-tauri\target\windows-ime-msvc\... ,要从 openless-all/app/ 才能
resolve;但 Tauri 内置 wix bundler 的 candle/light cwd 是 src-tauri/,
路径错位,文件找不到 → light 失败。

本地 windows-package-msvc.ps1 通过 Repair-TauriMsiBundle 从 appRoot 手动
跑 light 兜底,CI 没有这个兜底所以挂掉。

修法:wxs Source 改用 $(env.OPENLESS_IME_DLL_X64) / _X86 绝对路径变量;
工作流的 IME build 步骤把绝对路径写到 $GITHUB_ENV。这样无论 candle/light
cwd 在哪,都能拿到正确的 DLL 路径。

本地脚本本就 set 这两个 env var(windows-package-msvc.ps1:213),改后
本地 + CI 共用同一条 absolute-path 路径,Repair fallback 不再必需。
2026-05-04 20:04:18 +08:00
baiqing f0040d0dd1 ci(release): build Windows IME DLLs before tauri bundle
openless-ime.wxs 引用 src-tauri\target\windows-ime-msvc\{x64,x86}\Release\
OpenLessIme.dll;release-tauri.yml 之前没有构建这两个 DLL 的步骤,导致
WiX light.exe 链接 MSI 时找不到文件,Windows 发版全挂。

复用本地 windows-package-msvc.ps1 同款方案:在 tauri build 之前调
windows-ime-build.ps1 编译 x64 + Win32 两个 Release DLL 到对应路径。
windows-latest runner 自带 VS Build Tools / vswhere,windows-ime-build.ps1
里的 Find-MSBuild 会自动定位。
2026-05-04 19:30:08 +08:00
H-Chris233 c8ccff0669 Avoid macOS updater asset collisions across architectures
Intel and Apple Silicon macOS jobs produced the same updater bundle filename,
which let one matrix job overwrite the other release asset and could point
both architecture manifests to a single binary. Rename macOS updater bundles
per architecture before release upload and prefer arch-specific artifact lookup
when generating updater manifests.

Constraint: Keep existing updater manifest format and release action usage
Rejected: Split macOS uploads into separate release jobs | larger workflow churn
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Any new macOS updater lane must keep unique asset names to preserve manifest correctness
Tested: release-tauri.yml YAML parse; diff audit for rename+manifest path alignment
Not-tested: End-to-end tagged GitHub Actions release run
2026-05-04 01:02:44 +08:00
H-Chris233 fbcddc40db Add Intel macOS artifacts to Tauri release matrix
The release workflow only produced Apple Silicon macOS packages, so Intel
users had no official GitHub Release artifact. Extend the matrix with an
x86_64 macOS lane and align artifact naming and updater-manifest paths
with per-arch outputs.

Constraint: Keep existing release pipeline shape and signing flow unchanged
Rejected: Split Intel build into separate workflow file | higher maintenance and duplicated logic
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep macOS conditions architecture-agnostic so new mac runners are not skipped accidentally
Tested: YAML syntax parse via python yaml.safe_load; workflow diff reviewed for mac gating/artifact paths
Not-tested: Full GitHub Actions matrix run on tag push
2026-05-04 00:27:02 +08:00
TRIP 7f64a1b464 fix(ci): allow PR-Agent review on external PRs 2026-05-03 09:55:17 +08:00
Chris233 280b50ea17 更新 pr-agent.yml 2026-05-02 21:16:12 +08:00
Chris233 69d7f62161 更新 pr-agent.yml 2026-05-02 20:07:26 +08:00
Chris233 4027909a8c 更新 pr-agent.yml 2026-05-02 19:23:44 +08:00
Chris233 14149207a4 更新 pr-agent.yml 2026-05-02 19:15:19 +08:00
Chris233 dbb95abab7 更新 pr-agent.yml 2026-05-02 18:55:56 +08:00
Chris233 f7c0c59408 创建 pr-agent.yml 2026-05-02 17:40:27 +08:00
Cooper-X-Oak e34b3feee7 fix updater download acceleration 2026-05-01 23:47:58 +08:00
baiqing 9b2f65fe71 fix: harden Windows hotkey release handling 2026-04-30 19:26:31 +08:00
baiqing a9c81e6e0e feat(updater): 增加应用自动更新入口 (#84)
H-Chris233: closes #33。

实现 Tauri 内置 updater 集成:
- Cargo: tauri-plugin-updater v2
- tauri.conf.json: 加 updater 配置(pubkey + endpoint 指向 GitHub Releases latest)
- capabilities/default.json: 授予 updater:default 能力
- lib.rs: 注册 updater 插件 + restart_app 命令
- src/pages/Settings.tsx + i18n: 关于区域加'检查'按钮、检查/下载/安装/重启对话框流
- 新脚本 scripts/write-updater-manifest.mjs: release 侧从 build artifact 拉签名生成 manifest
- workflow: TAURI_SIGNING_PRIVATE_KEY env + 各平台 build 时 createUpdaterArtifacts true

注意:下次 v*-tauri tag 必须配 TAURI_SIGNING_PRIVATE_KEY secret,否则 CI 硬失败。
2026-04-30 17:20:32 +08:00
TRIPandbaiqing e3f91e849c ci(release): 显式 strip macOS bundle xattr 作为 defense-in-depth (#83)
GitHub Actions 输出本来就不带 com.apple.quarantine (actions/upload-artifact
不跨机器持久化 xattr, softprops/action-gh-release 上传 binary stream 也不带),
但加这一步让 "云端 artifact 一定干净" 变成可验证的承诺, 未来 release 不会因
runner 环境变化退化.

用户下载到本地后浏览器/LaunchServices 仍会加 quarantine, 依赖 release notes
里的 xattr -cr 指引或一行安装命令处理.

Co-authored-by: baiqing <lbx12309@icloud.com>
2026-04-30 14:56:22 +08:00
Cooper OakandCooper-X-Oak 61177eafc3 ci(release): 补齐 macOS Tauri 产物发布 (#75)
Co-authored-by: Cooper-X-Oak <Cooper-X-Oak@users.noreply.github.com>
2026-04-30 14:21:54 +08:00
Cooper OakandCooper-X-Oak ff694c07c1 fix(windows): 收敛启动和开发产物路径 (#48)
* fix(windows): 收敛启动和开发产物路径

* ci(windows): 校验运行时 smoke 脚本

---------

Co-authored-by: Cooper-X-Oak <Cooper-X-Oak@users.noreply.github.com>
2026-04-30 14:21:35 +08:00
Chris233 85045c3ff4 chore(repo): 统一项目目录命名 (#39)
* Remove fragile space from active app path

The Tauri app lived under a path containing a literal space, which made CI paths and local commands easy to quote incorrectly. Rename the active tree to openless-all and update repository references so scripts, docs, and release workflows use the same space-free path.

Constraint: Preserve the existing app layout and move only the containing directory name.

Rejected: Add compatibility symlinks | would keep two app paths and leave quoting hazards in place.

Confidence: high

Scope-risk: moderate

Tested: npm run build

Tested: cargo clean && cargo check

Tested: git diff --check

Tested: grep -R for old openless -all and openless%20-all references

* Keep Windows build docs aligned with space-free path

The app directory was renamed to openless-all, but the GNU/MinGW route still described the new name as if it contained a space. Update the wording so the rationale matches the current path and keeps the helper-script guidance focused on consistent GNU setup.

Constraint: Documentation-only code review follow-up.

Confidence: high

Scope-risk: narrow

Tested: git diff --check
2026-04-30 10:44:31 +08:00
baiqing d3a8d3b815 ci: remove macOS from CI matrix, macOS DMG uploaded locally 2026-04-29 22:27:27 +08:00
TRIP 017569f5f3 Merge pull request #23 from Cooper-X-Oak/fix/windows-runtime-feedback
fix(windows): 补齐运行时反馈和平台化交互
2026-04-29 21:25:59 +08:00
TRIP ec9bdb8b73 Merge pull request #11 from H-Chris233/main
增加Linux支持
2026-04-29 21:25:12 +08:00
Cooper-X-Oak 141303d67a ci(windows): 回填Tauri检查流程 2026-04-29 21:16:49 +08:00
Cooper-X-Oak 4d54aed8c7 docs(github): 添加中文 issue 和 PR 模板 2026-04-29 19:54:56 +08:00
H-Chris233 781ef4efa3 Clarify CI build split to prevent Linux duplicate-build regressions
The workflow logic already runs Windows and Linux builds in separate conditional steps. This note makes the intended split explicit so future edits do not accidentally reintroduce a second Linux build path.

Constraint: Keep changes minimal and scoped to existing release workflow

Rejected: Restructure build steps again in this pass | unnecessary churn for a comment-only review follow-up

Confidence: high

Scope-risk: narrow

Reversibility: clean

Directive: Keep Linux bundle generation in the dedicated Linux step only

Tested: Parsed .github/workflows/release-tauri.yml with yaml.safe_load

Not-tested: Full GitHub Actions run after this comment-only change
2026-04-29 19:41:12 +08:00
Chris233 bd4c3435ec Merge branch 'appergb:main' into main 2026-04-29 19:05:08 +08:00
H-Chris233 3e2e8e5139 Enable Linux release artifacts alongside existing macOS/Windows pipeline
The repository already had a single cross-platform release workflow for macOS and Windows.
This change extends the same workflow matrix with Ubuntu so Linux packaging runs in the
same release lane and publishes deb/rpm/AppImage artifacts consistently.

Constraint: Keep existing macOS and Windows release behavior unchanged
Constraint: User requested minimum-scope change in existing workflow rather than new pipeline
Rejected: Add a separate Linux workflow file | would duplicate release logic and increase drift risk
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep Linux package paths aligned with Tauri bundle output dirs when upgrading Tauri
Tested: YAML parse check for .github/workflows/release-tauri.yml
Not-tested: End-to-end GitHub Actions run in remote CI after push
2026-04-29 18:45:47 +08:00
baiqing 7acb3b89d4 fix(mac): restore microphone permission request 2026-04-29 17:38:04 +08:00
baiqing cf9afa8057 feat: 跨平台 Tauri 2 重写 + GitHub Actions 发版流水线
整套新代码放在 openless-all/ 目录下,与原 Swift 项目并行不冲突。

代码结构:
- openless -all/app/src/             React + TS UI(参考 design_handoff_openless 实现)
- openless -all/app/src-tauri/       Rust 后端(8 模块,与 Swift 库一一对应)
- openless -all/app/scripts/         构建脚本(macOS Info.plist 后注入 + ad-hoc 重签)
- .github/workflows/release-tauri.yml  推 v*-tauri tag 触发 macOS+Windows 矩阵构建

后端模块:
- hotkey:   macOS CGEventTap 原生 FFI / 其他 rdev;自动重试,Accessibility 一授权立即接管
- recorder: cpal 16kHz Int16 PCM
- asr:      Volcengine SAUC bigmodel WebSocket(二进制帧 + 热词 context 注入)
- polish:   OpenAI 兼容 Chat Completions(中文 prompt 一字不改自 Swift)
- insertion: macOS CGEventPost 原生 FFI 模拟 Cmd+V / 其他 enigo;不再用 enigo on macOS(TSM 主线程断言坑)
- persistence: ~/.openless/credentials.json v1 schema(同 Swift dev 路径,不走 Keychain 避免 ad-hoc 签名换 hash 反复弹框)
- coordinator: 状态机(idle/listening/processing),emit capsule:state 给胶囊窗口
- permissions: AVAudioApplication.recordPermission(同 Swift,与 cpal/AVAudioEngine 共享权限轨道)

UI:
- FloatingShell 主窗 + 5 tab(概览/历史/词汇表/风格/设置)
- Capsule 浮动胶囊(176×42 浅色磨砂 + 5 根 audio bars envelope,与 Swift CapsuleView 同源)
- 菜单栏托盘(LSUIElement = true,无 Dock 图标,关红按钮 = 隐藏)
- Onboarding 首次运行权限引导(辅助功能 + 麦克风)

跨平台已知限制:
- macOS:ad-hoc 签名,首次启动需要"右键 → 打开"或在 Gatekeeper 弹窗里点"仍要打开"
- Windows:无证书,SmartScreen 会警告
2026-04-29 16:51:13 +08:00