Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
183 commits
Select commit Hold shift + click to select a range
6a58890
refactor(linux): move shared runtime assets out of Tauri
aeoform Sep 4, 2026
759d188
feat(linux-egui): adopt redesigned native shell
aeoform Sep 4, 2026
94ff585
feat(linux-egui): add typed popup process bridge
aeoform Sep 5, 2026
33128ec
feat(linux-egui): add native desktop services
aeoform Sep 5, 2026
deb18d4
feat(linux-egui): add verified AppImage replacement
aeoform Sep 5, 2026
84bd210
feat(linux-egui): render native popup processes
aeoform Sep 5, 2026
c61188c
feat(linux-egui): bind vocabulary corrections and styles
aeoform Sep 5, 2026
d631bfd
feat(linux-egui): add real history actions
aeoform Sep 5, 2026
1d029a6
feat(linux-egui): wire native popup supervisors
aeoform Sep 5, 2026
239c63a
feat(linux-egui): bind marketplace and device login
aeoform Sep 5, 2026
685ca63
fix(linux-egui): do not overreport update capability
aeoform Sep 5, 2026
09fb8ff
feat(linux-egui): honor minimized startup
aeoform Sep 5, 2026
91cfbc2
test(linux-egui): lock Tauri-free parity contracts
aeoform Sep 5, 2026
baf0234
fix(core): keep provider URL validation clippy-clean
aeoform Sep 5, 2026
fedfabd
refactor(linux-egui): keep view data clippy-clean
aeoform Sep 5, 2026
43ca9c2
feat(settings): transact launch at login effects
aeoform Sep 5, 2026
5f5dc83
feat(linux-egui): complete verified AppImage updater
aeoform Sep 5, 2026
f635084
feat(linux-egui): restore native desktop lifecycle
aeoform Sep 5, 2026
a940d19
feat(linux-egui): restore history audio workflows
aeoform Sep 5, 2026
4139c7c
feat(linux-egui): complete local model controls
aeoform Sep 5, 2026
07dbf6e
feat(linux-egui): add native style pack editor
aeoform Sep 5, 2026
83d090b
feat(linux-egui): complete marketplace workflows
aeoform Sep 5, 2026
234cc06
feat(linux-egui): merge dirty settings on revision conflict
aeoform Sep 5, 2026
8e95ce5
feat(linux-egui): complete fcitx5 desktop hotkeys
aeoform Sep 5, 2026
2f12d88
feat(linux-egui): harden and restore native popups
aeoform Sep 5, 2026
9af7c3b
feat(linux-egui): bind shared vocabulary presets
aeoform Sep 5, 2026
f932b0e
feat(linux-egui): edit style hotkeys without blocking frames
aeoform Sep 5, 2026
23b04f6
feat(linux-egui): persist and export diagnostic logs
aeoform Sep 5, 2026
6f8672f
feat(linux-egui): edit all fcitx5 hotkeys
aeoform Sep 5, 2026
a779417
fix(linux-egui): follow terminal capture cancellation
aeoform Sep 5, 2026
eb1121f
docs(linux-egui): record parity and device limits
aeoform Sep 5, 2026
e95e365
docs(linux-egui): track latest 1019 head
aeoform Sep 6, 2026
b594a60
fix(linux-egui): reload fcitx5 after addon update
aeoform Sep 6, 2026
aedd7de
feat(linux-egui): restore recording and appearance settings
aeoform Sep 6, 2026
a30f7ed
feat(linux-egui): restore Core-backed overview
aeoform Sep 6, 2026
051553b
feat(linux-egui): restore native recording feedback
aeoform Sep 6, 2026
d241b1e
ci(linux-egui): lock release artifacts and checksums
aeoform Sep 6, 2026
d14a304
feat(linux-egui): localize native interface
aeoform Sep 6, 2026
649e60f
fix(linux-egui): tolerate legacy fcitx addon methods
aeoform Sep 6, 2026
3c2ced4
[pi] Work in progress
aeoform Sep 7, 2026
2f2eb63
[pi] Work in progress
aeoform Sep 7, 2026
213e547
[pi] All tasks are complete. Here's a summary of what w...
aeoform Sep 7, 2026
1b58a39
fix(linux-egui): preserve original frontend content geometry
aeoform Sep 7, 2026
40980c1
Merge branch 'beta' into feat/linux-egui-tauri-parity
aeoform Sep 11, 2026
4ad4b41
fix(linux-egui): align beta contracts and slim release
aeoform Sep 11, 2026
b4d29a6
ci: make Linux PR and release gates reliable
aeoform Sep 11, 2026
7e93d47
fix(linux): remove dead frontend artifacts and restore autostart
aeoform Sep 11, 2026
b2a306f
fix(settings): handle launch-at-login in Tauri restore
aeoform Sep 11, 2026
2724e96
fix(ci): follow relocated Linux remote input assets
aeoform Sep 11, 2026
72c5927
fix(ci): normalize Windows contract paths
aeoform Sep 11, 2026
4987d7a
refactor(linux): rely on packaged fcitx addon
aeoform Sep 11, 2026
92ab5b4
feat(linux): add audio backend fallback and fcitx clipboard
aeoform Sep 11, 2026
73a76c2
ci(linux): use native deb and rpm packaging
aeoform Sep 11, 2026
fcebd1d
fix(linux): bound addon reload and use app version
aeoform Sep 11, 2026
04c97af
fix(linux-egui): restore input and CI build
aeoform Sep 11, 2026
fbde862
fix(linux-egui): align window input regions
aeoform Sep 11, 2026
0303488
fix(linux-egui): restore frontend input routing
aeoform Sep 11, 2026
70c35c1
wip(linux-egui): 2.0 parity checkpoint before parallel page rewrites
Sep 13, 2026
5be7d66
chore: parity agent orchestration script
Sep 13, 2026
1157fe5
[pi] 我负责的三个功能性 bug 全部修完,全量测试通过。报告如下。
aeoform Sep 14, 2026
718e640
[pi] 全绿(24 个 test binary 全 ok;`coding_agent` 那条是已知时序 fl...
aeoform Sep 14, 2026
a6110c9
[pi] 快捷键与选区做完了,全量验证通过。
aeoform Sep 14, 2026
7e44b1d
[pi] 三个浮窗按 Tauri 重做完了,旧的臆造实现已整段删除。
aeoform Sep 14, 2026
e10d472
[pi] 四项遗留全部做完,并回答了 Vulkan 的问题。
aeoform Sep 14, 2026
567b09e
[pi] Siri 光效 GPU 化(GLSL 移植)+ 圆角矩形扫光着色器,接胶囊与思考态;Vulkan 结论附证据
aeoform Sep 14, 2026
bb654d2
[pi] 实现完成,验证全绿并打好包。
aeoform Sep 14, 2026
a18a80f
[pi] Work in progress
aeoform Sep 15, 2026
778b5f4
[pi] Work in progress
aeoform Sep 15, 2026
378c726
[pi] **任务 1(胶囊 wlr-layer-shell 主路径)完成并出包。**
aeoform Sep 15, 2026
983fd62
[pi] 任务 2 完成。**开工时先核对了前任的产物,结果发现任务 1 其实从未真正生效**——两个阻塞性 ...
aeoform Sep 15, 2026
114bec8
[pi] 三个问题里属于我这个工单的(③ 吞键、④ 选区助手)已经修完并出包。**其中「吞键」我现在就把你机器...
aeoform Sep 15, 2026
a5a016a
[pi] 任务2:静音失败归一化 + 胶囊终态自动收起
aeoform Sep 15, 2026
857341d
[pi] 修复热键:修饰键触发不再吞键、Shift+符号键匹配(Ctrl+Shift+;),插件更新后自动重启 fcitx5
aeoform Sep 15, 2026
7fce1fb
[pi] 任务2:报错路径胶囊收回(Core reset 时序 + 宿主兜底 + 宿主断开自退场)
aeoform Sep 15, 2026
eae372b
[pi] Work in progress
aeoform Sep 15, 2026
fd91463
[pi] 执行完了。取证结论很明确,而且**deb 打包没问题**。
aeoform Sep 15, 2026
0f59c27
[pi] Work in progress
aeoform Sep 15, 2026
a0104ba
[pi] 修复:启动不再被插件探测/重载阻塞(主窗口必现)+ /usr/local 手工残留不再冒充随包插件 + 指纹持久化(消除每次启动…
aeoform Sep 15, 2026
67843ad
fix(linux-egui): 胶囊去掉自造外圈扫光(Tauri 经典药丸只有 1px 中性描边)+ 风格包草稿行不再误改已有行 + 打…
aeoform Sep 15, 2026
5358d04
fix(linux-egui): Ctrl+Shift+; 热键被 CapsLock 状态位吃掉——插件按 fcitx 的 normali…
aeoform Sep 15, 2026
500859e
fix(linux-egui): fcitx5 缺席/插件过旧不再拖死后端——启动链对 fcitx5 失败改为警告降级(heatkey l…
aeoform Sep 16, 2026
e731f93
ci(release): 共用一条跨平台发布流水线(-tauri/-egui 按后缀分流)+ 末端聚合 zip
Sep 16, 2026
30d5f3c
fix(linux-egui): 关闭键改为退回托盘(不退出进程)+ 托盘唤起按 最小化恢复→显示→聚焦 回任务栏;QA 热键主键被输入法…
aeoform Sep 16, 2026
3242999
ci(release): Linux egui 发布 job 换到 ubuntu-24.04(与 ci.yml 同因)
Sep 16, 2026
3d1221b
ci(release): 单一 -egui tag 触发同一 run 内四平台并发(macOS arm64/x64 + Windows +…
Sep 16, 2026
9a8d6cb
fix(linux-egui): 关闭键真正隐藏(Wayland 塌缩 1x1,不能 unmap/最小化)+ 事件泵用真线程保活 + Ct…
aeoform Sep 16, 2026
96824e9
ci(release): 四平台真正并发——egui job 去掉 needs: build,Linux 资产的 release 写入交给…
Sep 16, 2026
cf18715
ci(release): 聚合 zip 只装 Linux 平台产物(用户口径:all 指 Linux 各产物)
Sep 17, 2026
8a76c32
fix(linux-egui): 最小化键改为退回托盘(Wayland 无法取消最小化,最小化的窗口会永久停掉 egui 重绘循环 → 热…
aeoform Sep 17, 2026
d477c5e
fix(linux-egui): 发布门禁单测不再依赖宿主是否装了 deb
aeoform Sep 17, 2026
4fb6816
fix(linux-egui): 删除自动改写输入法配置的逻辑,并用契约测试锁死
aeoform Sep 17, 2026
02f2935
Merge origin/beta into feat/linux-egui-tauri-parity
aeoform Sep 17, 2026
d77cf86
[pi] Work in progress
aeoform Sep 17, 2026
b5b6b7d
fix(linux-egui): 恢复被清理删掉的 provider/凭据编辑能力,发布门禁不再被拦
aeoform Sep 17, 2026
56957f2
ci(release): 聚合 zip 改成「手动安装」散装包(不再装 deb/rpm)+ 附 install.sh
aeoform Sep 17, 2026
ede7a79
ci(release): Linux 腿内联成平级 job(不再折叠)+ deb/rpm 与 manual zip 合并到一个 job +…
aeoform Sep 17, 2026
5fd40ab
ci(release): 统一发布语义——任何 v* 标签都出全平台(Tauri 三平台 + Linux egui + 安卓)
aeoform Sep 17, 2026
cd0f659
feat(linux-egui): 关窗后切到无窗口宿主(窗口进程真退出)+ 事件泵不再依赖窗口绘制
aeoform Sep 17, 2026
927d959
feat(linux-egui): 常驻无窗口宿主 + 独立 UI 窗口进程(真实时 IPC,关窗不再重开后端)
aeoform Sep 18, 2026
57010ea
feat(linux-egui): 设置页排版对齐 Tauri(行=200px 标签列+1fr 控件列/左对齐、卡片与分区标题 14px)…
aeoform Sep 18, 2026
e863394
feat(linux-egui): 补齐设置页剩余排版对齐(行标签 500 字重 / 输入框 32·13.5 / 分段选中片阴影 / 无热…
aeoform Sep 18, 2026
337aeed
feat(linux-egui): 在 Linux 实现 Less Computer 浮窗(420×540 / 常驻宿主唯一所有者 / 事…
aeoform Sep 18, 2026
b408ad1
[pi] # 选区读取为什么是「缓冲区里最后一次」——调查结论
aeoform Sep 20, 2026
282e3b9
feat(linux-egui): 设置页顶栏/录音行/胶囊设置与试听按 Tauri 补齐 + 模态居中修正
aeoform Sep 20, 2026
c7d6c5e
fix(linux-egui): 补齐 P0 —— 窗口边缘拉伸光标 + 锁定胶囊按钮可点
aeoform Sep 20, 2026
d69642a
test(linux-egui): 锁住两个被报为回归的交互(拖标题栏移窗口 / 分组开合)
aeoform Sep 20, 2026
59ff451
test(linux-egui): 补上分组开合测试用的 test-only 入口
aeoform Sep 20, 2026
9a10996
[pi] Work in progress
aeoform Sep 20, 2026
7c04457
feat(linux-egui): 润色结果并入「选区助手」面板(收尾 9a109965 的半成品)
aeoform Sep 20, 2026
0660f86
[pi] Work in progress
aeoform Sep 20, 2026
8379b28
fix(linux-egui): 标题栏拖动补两点 —— 未聚焦时先要回焦点、最大化时先还原再拖
aeoform Sep 20, 2026
8f0da28
fix(linux-egui): 设置弹窗降到 Order::Foreground,修「点开的控件被弹窗盖住」
aeoform Sep 20, 2026
a663446
fix(linux-egui): 设置遮罩改用 Area 排序(不再盖在弹窗上)+ 去掉「模拟粘贴快捷键」选项
aeoform Sep 20, 2026
df02288
Merge remote-tracking branch 'origin/beta' into feat/linux-egui-tauri…
aeoform Sep 20, 2026
74bdacd
feat(linux-egui): 接入上游 #1082 的「稳定模式(先录音后识别)」
aeoform Sep 20, 2026
4119369
fix(linux-egui): 遮罩与卡片合并成同一个 Area(点遮罩不再盖住卡片)+ 条带提到 Tooltip
aeoform Sep 20, 2026
403a37b
refactor(tauri): 删除 Tauri Linux 专有文件(linux_fcitx.rs / tauri.linux.con…
aeoform Sep 21, 2026
d932eec
refactor(tauri): 删除 Tauri 的 Linux 桌面实现(Linux 已改用 egui 前端)
aeoform Sep 21, 2026
951f7fd
feat(linux-egui): 图标装多档 hicolor 尺寸 + 提示音与 Tauri 逐参数对齐
aeoform Sep 21, 2026
1b676a1
refactor(tauri): 清掉已删除的 linux_fcitx 模块的残留调用点
aeoform Sep 21, 2026
1a70ddb
refactor: 把 Remote Input TLS 身份实现移到平台中立目录 shared/remote_tls
aeoform Sep 21, 2026
01994c5
fix(linux-egui): 修风格市场对官网 API 的请求放大
aeoform Sep 21, 2026
f2c25d8
[pi] 盘点完成(只读,未改任何仓库文件)。报告已落盘 `/tmp/ime-inventory-report...
aeoform Sep 21, 2026
4036d2d
refactor(fcitx5): 删除插件里已无人调用的候选词下方状态弹窗
aeoform Sep 21, 2026
f9dc76e
mod(selection): 划词润色预览独立弹窗下线,改为复用选区助手(qa)面板
aeoform Sep 21, 2026
0099fdc
docs(linux-egui): 注释改为指向 Tauri 侧合并后的选区助手面板
aeoform Sep 21, 2026
1a47f76
refactor(tauri): 删除 Tauri 侧剩余的 Linux 专用实现
aeoform Sep 21, 2026
d192d3a
chore(tauri): 移除 Linux 专用依赖与 wayland-scanner vendor 补丁
aeoform Sep 21, 2026
5a3a23d
refactor(react): 移除前端里的 Linux 分支与专属文案键
aeoform Sep 21, 2026
a5e3f6f
test(contracts): 新增 tauri-linux-free 契约并修受影响的既有契约
aeoform Sep 21, 2026
73c59cf
fix(linux-egui): 胶囊边距按实测面板高度计算,不再依赖 exclusive_zone(-1)
aeoform Sep 21, 2026
b021905
Revert "fix(linux-egui): 胶囊边距按实测面板高度计算,不再依赖 exclusive_zone(-1)"
aeoform Sep 21, 2026
4622179
fix(fcitx5): 选区探针自行读 PRIMARY,修「旧选区被当成当前选区」
aeoform Sep 21, 2026
dd08273
fix(fcitx5): 探针不可用时才回退 PRIMARY 缓存,并加契约双向覆盖
aeoform Sep 21, 2026
40b2c5f
refactor(linux-egui): 市场/风格弹窗遮罩统一为「单 Area」,历史确认框加固
aeoform Sep 21, 2026
7e6053e
fix(linux-egui): 自己窗口里的热键本地兜底,弹窗崩溃重启加预算,QA 热键按 Tauri 切面板
aeoform Sep 21, 2026
67592af
fix(linux-egui): openless --help/--version 只打印并退出,不再启动应用
aeoform Sep 21, 2026
b0f1f89
fix(linux-egui): 润色结果沿用选区助手面板的外壳
aeoform Sep 21, 2026
c349803
docs: Linux egui 依赖升级计划(依赖批次 / Rust 1.98.1 / Vulkan-wgpu 工作量评估)
aeoform Sep 22, 2026
0837693
fix(linux-egui): 修「alt+X 弹出空面板」与「录音热键误弹选区助手」
aeoform Sep 22, 2026
7a4e6ad
alt+X 不再弹空润色面板:快照要带选区且结果非空,否则只在语音窗报错
aeoform Sep 22, 2026
8caeeab
fix(core): 缓冲转写后台挂接改走注入的 TaskSpawner
aeoform Sep 22, 2026
b85734e
chore(linux-egui): 清掉全部编译警告(死代码与残留状态)
aeoform Sep 22, 2026
d055873
[pi] Work in progress
aeoform Sep 24, 2026
3cd9136
[pi] Work in progress
aeoform Sep 24, 2026
5935544
test(linux-egui): 跟上 egui 0.36 的测试侧 API,并消费 FullOutput 的纹理增量
aeoform Sep 24, 2026
7929333
test(linux-egui): 光效测试跟上「着色器路径已摘除」的现状
aeoform Sep 24, 2026
ab142fe
[pi] 搞完了,包给你:
aeoform Sep 24, 2026
90ff265
fix(linux-egui): refine titlebar and hotkey capture
aeoform Sep 24, 2026
e9980be
fix(linux-egui): synchronize provider channel editing
aeoform Sep 24, 2026
440ee61
fix(linux-egui): align shortcut handling and settings UI
aeoform Sep 24, 2026
f4d5631
fix(linux-egui): refine Siri capsule and popup layout
aeoform Sep 24, 2026
42c8026
fix(linux-egui): keep capsule within desktop work area
aeoform Sep 24, 2026
165234b
fix(linux-egui): keep capsule native on Wayland
aeoform Sep 24, 2026
0b1ed18
fix(linux-egui): keep Wayland capsule from stealing focus
aeoform Sep 24, 2026
17c8a62
fix(linux-egui): align settings controls in fixed columns
aeoform Sep 24, 2026
0bee4c0
fix(linux-egui): refine Siri capsule and settings identity
aeoform Sep 24, 2026
4820971
fix(linux-egui): 设置行固定标签列,模型块照 Tauri 重写
aeoform Sep 25, 2026
2ebdf7e
fix(linux-egui): 对齐上游 Beta.2 的窗口层次、侧栏与历史详情
aeoform Sep 25, 2026
e7e2eb1
fix(linux-egui): 纯图标按钮的图标居中
aeoform Sep 25, 2026
f21f904
feat(linux-egui): 对齐历史、词典、风格与市场的第一批交互
aeoform Sep 25, 2026
fd01ba0
fix(ci): 用 basename 判定 lib.rs,兼容 Windows 路径分隔符
aeoform Sep 25, 2026
2c33de4
feat(core): 速记采用独立历史语义(永久录音、同一 id 更新、免于普通清理)
aeoform Sep 25, 2026
3b2b283
feat(linux-egui): 速记页、快捷键、风格包图标与翻译页缩放修复
aeoform Sep 25, 2026
5a64968
chore(release): 同步上游 Beta.2 的两条发版约定
aeoform Sep 25, 2026
e96e749
feat(linux-egui): 风格编辑器改为上游 Beta.2 的右侧抽屉
aeoform Sep 25, 2026
b72a578
feat(linux-egui): 编辑器补齐运行时指令卡片,市场详情补安装中状态
aeoform Sep 25, 2026
202b001
chore(release): 应用版本对齐上游 Beta.2
aeoform Sep 25, 2026
a95273a
chore: 移出会话编排脚本 .agents/run-parity-agents.mjs
aeoform Sep 25, 2026
00c4338
refactor(linux-egui): 删掉无调用方的死代码,补上界面读不到的快捷键
aeoform Sep 25, 2026
35f9b89
refactor(linux-egui): 删掉遗留 GL 路径与无人显示的字段,接通 AppImage 自更新
aeoform Sep 25, 2026
e2c19d3
refactor(linux-egui): 不出 AppImage,整条自更新链删除
aeoform Sep 25, 2026
1a0d752
Merge origin/beta into the Linux egui parity branch, keeping this bra…
aeoform Sep 25, 2026
918cb26
docs: 更新说明不再把 AppImage 当作 Linux 发布格式
aeoform Sep 25, 2026
3df26fd
chore(linux-egui): 清掉 270 条早期 egui 页面留下的旧 i18n key
aeoform Sep 25, 2026
000dd2f
fix(linux-egui): 恢复 5 条被误删的词条——Tauri 有同名 key,是待补的界面文案
aeoform Sep 25, 2026
d7ee1ef
ci: Linux 构建装 liblzma-dev —— 冷缓存下 openless-core 链接失败
aeoform Sep 25, 2026
d326ada
fix(linux-egui): retain local text edits across host snapshots
aeoform Sep 25, 2026
b70c0e6
fix(linux-egui): declare host and IME runtime libraries
aeoform Sep 25, 2026
16b6eed
fix(linux-egui): keep beta-owned platforms and Core unchanged
aeoform Sep 25, 2026
ffe9731
refactor(tauri): reuse QA polish preview and drop Linux desktop host
aeoform Sep 25, 2026
9db71c1
ci(linux-egui): verify deb and rpm in PRs and attach on shared tags
aeoform Sep 25, 2026
1e48c4f
docs: publish contributor guide and retire stale audit scripts
aeoform Sep 25, 2026
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
133 changes: 124 additions & 9 deletions .github/workflows/check-linux-egui.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,131 @@
name: Linux egui build and backend checks

# CI and tag releases call this exact deb/rpm build and verification path.
# PRs already invoke it from ci.yml; avoid running it twice.
on:
pull_request:
branches: [beta]
paths:
- 'openless-all/app/**'
- 'openless-all/scripts/linux-*/**'
- '.github/workflows/*linux-egui.yml'
push:
branches: [Linux-egui]
workflow_dispatch:
workflow_call:

permissions:
contents: write
contents: read

concurrency:
group: linux-egui-build-${{ github.workflow }}-${{ github.event_name == 'workflow_dispatch' && github.run_id || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
native:
uses: ./.github/workflows/release-linux-egui.yml
build-linux-egui:
# PipeWire/libspa in this host needs 24.04. Packages target glibc >= 2.39.
runs-on: ubuntu-24.04
env:
RELEASE_TAG: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && endsWith(github.ref, '-tauri') && github.ref_name || '' }}
steps:
- uses: actions/checkout@v6
with:
submodules: false

- name: Install native build and packaging dependencies
run: |
sudo add-apt-repository -y universe || true
sudo apt-get update
sudo apt-get install -y \
appstream build-essential cmake cpio desktop-file-utils \
fcitx5-modules-dev file libasound2-dev libdbus-1-dev \
libfcitx5config-dev libfcitx5core-dev libfcitx5utils-dev \
liblzma-dev libpipewire-0.3-dev libpulse-dev libssl-dev \
libwayland-dev libx11-dev libxkbcommon-dev pkg-config ripgrep rpm

- uses: dtolnay/rust-toolchain@stable
with:
components: clippy

- uses: actions/setup-node@v4
with:
node-version: '22'

- name: Resolve package version and validate release tag
id: version
working-directory: openless-all/app
env:
VERSION_TAG: ${{ env.RELEASE_TAG }}
run: |
set -euo pipefail
VERSION=$(node -p "require('./package.json').version")
if [ -n "$VERSION_TAG" ]; then
TAG_VERSION=${VERSION_TAG#v}
TAG_VERSION=${TAG_VERSION%-tauri}
if [ "${VERSION%%+*}" != "$TAG_VERSION" ]; then
echo "::error::tag $VERSION_TAG does not match package.json version $VERSION"
exit 1
fi
fi
# Keep the existing package upgrade scheme. Build metadata stays in
# the app, while the package version matches the numeric Beta.N tag.
echo "version=${VERSION%%+*}" >> "$GITHUB_OUTPUT"

- uses: swatinem/rust-cache@v2
with:
workspaces: 'openless-all/app -> target'

- name: Build and test fcitx5 plugin
working-directory: openless-all/scripts/linux-fcitx5-plugin
run: |
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build --parallel
ctest --test-dir build --output-on-failure
test -s build/libopenless.so
test -s build/openless.conf

- name: Test Core, Linux host, and platform boundaries
working-directory: openless-all/app
run: |
cargo test --locked -p openless-core
cargo clippy --locked -p openless-core --all-targets
cargo test --locked -p openless-linux-egui --all-targets
cargo check --locked -p openless-linux-egui --all-targets
node scripts/linux-egui-tauri-free-contract.test.mjs
node scripts/linux-egui-release-contract.test.mjs
node scripts/tauri-linux-free-contract.test.mjs
pwsh -NoProfile -File ./scripts/check-core-deps.ps1
pwsh -NoProfile -File ./scripts/check-core-deps.ps1 openless-linux-egui
pwsh -NoProfile -File ./scripts/check-core-secret-surface.ps1
pwsh -NoProfile -File ./scripts/check-core-test-isolation.ps1
pwsh -NoProfile -File ./scripts/check-core-runtime-seam.ps1
pwsh -NoProfile -File ./scripts/check-linux-public-surface.ps1

- name: Validate Linux desktop metadata
run: |
desktop-file-validate openless-all/app/linux-egui/packaging/openless.desktop
appstreamcli validate --no-net openless-all/app/linux-egui/packaging/top.openless.OpenLess.metainfo.xml

- name: Build Linux egui host
working-directory: openless-all/app
run: cargo build --locked --release -p openless-linux-egui

- name: Package deb and rpm without Tauri
working-directory: openless-all/app
env:
OPENLESS_LINUX_VERSION: ${{ steps.version.outputs.version }}
OPENLESS_LINUX_ARCH: x86_64
run: |
# CI runners are disposable. Ignore old outputs restored by a cache.
rm -f target/linux-egui-packages/*.deb target/linux-egui-packages/*.rpm \
target/linux-egui-packages/SHA256SUMS
bash scripts/package-linux-egui.sh

- name: Generate checksums and verify distributable packages
working-directory: openless-all/app
run: |
set -euo pipefail
OUTPUT=target/linux-egui-packages
( cd "$OUTPUT" && sha256sum ./*.deb ./*.rpm > SHA256SUMS )
bash scripts/verify-linux-egui-packages.sh

- name: Upload verified Linux packages as workflow artifacts
uses: actions/upload-artifact@v7
with:
name: openless-linux-egui-x86_64
path: openless-all/app/target/linux-egui-packages/*
if-no-files-found: error
9 changes: 8 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ name: CI
# 多平台跨语言质量门禁。release-tauri.yml 是发版流水线(仅打包构建),这里负责
# 在合并前快速验证两件事:
# 1. 全部前端/契约测试与 vite bundle 通过(捕获行为、合同及跨 locale 类型 drift)
# 2. Tauri 后端在 macOS / Windows、移动端在 Android 编译;Linux 只测试共享 core。
# 2. Tauri 后端在 macOS / Windows、移动端在 Android 编译;Linux Core 单独测试,
# egui 复用发版构建链打包和验 deb/rpm(PR 不上传 Release)。
# 跑 build-mac.sh / windows-package-msvc.ps1 / Tauri bundle 太重;只跑轻量 cargo check + vite build。

on:
Expand Down Expand Up @@ -188,6 +189,12 @@ jobs:
- name: Test remote input TLS identity and Unix key permissions
run: cargo test --locked --manifest-path src-tauri/backend-tests/Cargo.toml --test remote_tls

linux-egui-package:
name: Linux egui deb/rpm build and verification
permissions:
contents: read
uses: ./.github/workflows/check-linux-egui.yml

cross-platform:
name: ${{ matrix.label }} checks
strategy:
Expand Down
Loading
Loading