Commit Graph
17 Commits
Author SHA1 Message Date
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