Commit Graph
116 Commits
Author SHA1 Message Date
胡飞 22d90eb2bf chore(ci): 移除临时的 Windows 便携包验证 workflow 2026-09-21 16:31:22 +08:00
胡飞 b9a36e065d chore(ci): 临时验证 workflow 改用 push 触发
workflow_dispatch 要求 workflow 先存在于默认分支 main,特性分支上无法手动触发,
因此临时增加对 feat/db-objects-batch-select 的 push 触发;inputs 为空时用统一的
env 默认值(BUILD_MODE/INCLUDE_RDP/LABEL)保证与手动触发行为一致。
2026-09-21 13:39:47 +08:00
胡飞 1a60f0cbab chore(ci): 增加 Windows 便携包临时验证 workflow
workflow_dispatch 触发,只产出 Windows x64 便携包(navop.exe + navop.portable
标记),供他人验证改动,不发布 GitHub Release,验证结束后可直接删除本文件。

- 走与正式发布一致的 windows-x64 口径:sccache(安装失败退化为无缓存)、
  NASM/CMake、MSVC 环境、RDP 探针门;include_rdp 可关闭以缩短构建时间。
- build_mode 默认 fast(thin LTO + codegen-units=16),可切 release(fat LTO)。
- 产物为 navop-win-x64-portable-<short-sha>-<label>.zip 及 sha256,
  保留 30 天,运行摘要里给出 commit 与下载位置。
2026-09-21 13:37:55 +08:00
胡飞 416b81400e ci: 发布 PR 只跑发布元数据校验,跳过全平台测试
只改 CHANGELOG.md / main/Cargo.toml / Cargo.lock 的发布 PR 此前仍要跑
macOS / Linux / Windows 三平台全量测试(Windows job 约 25 分钟),而改动里
没有任何代码,这些测试没有意义。

- ci.yml 新增 classify job:PR 场景下用 script/release_pr.py 判定是否只包含
  发布改动,是则跳过 test 与 windows-rdp-probe,改为就地校验发布元数据
- script/release_pr.py:分类规则为「改动文件全部属于发布白名单」且
  「Cargo.toml / Cargo.lock 的差异只有 version = "..." 行」;命中后校验
  main/Cargo.toml 与 Cargo.lock 中 main 包版本一致,且该版本的双语
  changelog 条目完整(更新内容/修复与优化 + What's New/Fixes and
  Improvements,含 CNB 镜像行);无法算出 diff 时回退到全量测试
- ci-gate 仍是唯一必需状态检查,分类或校验失败都会拦住合并
- .github/RELEASE.md 记录该快速通道
- windows_rdp_host 契约测试钉住 classify/needs/if 结构与脚本白名单

验证:
- python3 -m unittest discover -s script/tests -p "test_release_pr.py" — 16 passed
- cargo test -p windows_rdp_host --test contract — 40 passed
- ruby -ryaml 解析 ci.yml,核对 classify/test/windows-rdp-probe/ci-gate 的
  needs 与 if 表达式
- rustfmt --edition 2024 --check crates/windows_rdp_host/tests/contract.rs
2026-09-19 12:55:35 +08:00
胡飞 1712e6ffe1 ci: sccache 安装失败时退化为无缓存构建,不再让 job 失败
mozilla-actions/sccache-action 从 GitHub Release CDN 下载 sccache 二进制失败
(CI run 35347089674 上连续两次 HTTP 504)会直接让整个 test job 变红,
Windows 测试根本没跑到,ci-gate 随之拦截合并。sccache 只是构建加速器,
不应成为测试或发布 job 的可用性依赖。

- Setup sccache 标记为 continue-on-error: true;该 action 的 post step 复用同一个
  Pipelines.ActionStep,因此继续性错误同样覆盖 post step 失败
- Initialize sccache 在 steps.sccache.outcome != 'success' 时输出 warning,并向
  GITHUB_ENV 写入空 RUSTC_WRAPPER,让后续 cargo 走无缓存构建;空值与 ci.yml
  中 windows-rdp-probe job 的 RUSTC_WRAPPER: "" 是同一语义
- 同步 release.yml 的同一段路径,避免发布 job 被同类瞬时故障打断
- script/test-release-packaging.mjs 的共享缓存策略契约补上 best-effort 断言,
  防止后续改动把这两个步骤改回硬依赖

验证:
- ruby -ryaml 解析两个 workflow:jobs 与步骤结构不变
- node --test script/test-release-packaging.mjs:26 passed / 0 failed
- cargo test -p windows_rdp_host --test contract:39 passed / 0 failed
- 变异验证:临时删掉 ci.yml 的 continue-on-error,共享缓存策略契约立即转红
- 本地 RUSTC_WRAPPER="" cargo check 正常,确认空值等价于不启用 wrapper
2026-09-19 00:10:02 +08:00
胡飞 2b278e63fa ci: 把 Windows RDP ATL/MSVC 探针拆为独立 job
- ci.yml: test job 移除 Build ATL/MSVC probe 步骤,新增 windows-rdp-probe 独立 job(x64/i686 双 target 并行),并重新纳入 ci-gate needs,避免 Windows 测试 job 被探针编译拖长

- windows_rdp_host contract: ci.yml 结构断言改用 test / windows-rdp-probe 两段作用域,钉住探针 job 的步骤顺序、-Target 矩阵与 gate 依赖
2026-09-18 19:25:40 +08:00
胡飞 19d9177e60 chore(release): fast 模式改用 thin LTO,包体积对齐 release
fast 之前用 CARGO_PROFILE_RELEASE_LTO=false,发出的包体积回到旧档。
改为 thin + codegen-units=16(与 arm_linux 分支一致),构建仍远快于 fat。

验证:release.yml YAML 解析通过;未跑实际 fast 构建。
2026-09-17 15:51:07 +08:00
胡飞 14fcc01245 ci(release): 构建 job 超时统一 180min(fat LTO + codegen-units=1 让链接阶段更慢) 2026-09-17 12:47:08 +08:00
胡飞 29cf1d7cde chore(release): 体积回退可见 + fast 模式说明对齐新 profile
- release profile 已是 fat LTO + panic=abort,输入项说明还写着 thin LTO。
- 构建后 ls -lh 打出二进制体积,方便在日志里发现体积回归。
- .gitignore 补本地 DMG/tar.gz 产物(bundle-macos-dmg.sh 写在仓库根)。
2026-09-17 12:29:22 +08:00
胡飞 e65fa85272 fix(release): macOS DMG 前清理 target 并去掉写死的 200m 镜像大小
runner 磁盘被 release target 目录占满导致
hdiutil create: No space left on device;DMG 又写在 target/ 下。
打包 app 后清理 deps/build/incremental/.fingerprint 再制 DMG;
同时去掉 -size 200m(app 二进制已约 208MB,写死尺寸不够)。
2026-09-17 09:04:00 +08:00
胡飞 076883392b fix(release): win32 构建关闭 shell-plugins(quickjs JIT 不支持 32 位)
i686-pc-windows-msvc 下 gpui-shell → quickjs-jit-runtime 无法编译
(cranelift 仅 x86_64/aarch64,且 32 位 bindings 类型不匹配)。
win32 构建改用 --no-default-features 并只保留
wasm-components,embedded-webview,windows-native-rdp。
2026-09-16 22:21:27 +08:00
胡飞 832c259471 fix(release): 版本 bump 走发布 PR,发布脚本只校验并打 tag
main 受保护(PR + CI gate 且 enforce_admins),release-tag.sh 原先
直接提交并推送版本变更会被 GH006 拒绝。改为:版本 bump 随 dev -> main
发布 PR 合入,脚本只校验版本/changelog 后创建并推送 tag。

- release-tag.sh: 去掉直推分支与自动 bump,新增 main 分支与版本一致性校验
- 删除 bump-version.sh(会基于未推送的提交直接打 tag,与保护规则冲突)
- RELEASE.md / CONTRIBUTING.md / CLAUDE.md 同步为 PR + tag 流程
2026-09-16 20:18:59 +08:00
user.email a24f083124 chore: FUNDING 增加爱发电自定义链接
爱发电在 GitHub FUNDING 没有官方字段,走 custom 数组:
https://ifdian.net/a/xiaofei99(与已有的 ko_fi: xiaofei99 并列显示)。
2026-09-15 17:51:48 +08:00
user.email 2131a99283 chore: 新增 GitHub 资助配置(ko-fi)
仓库页 Sponsor 按钮指向 https://ko-fi.com/xiaofei99
2026-09-15 17:24:56 +08:00
user.email d548f07ab1 build: shell-plugins 进 main 的 default,四个发布产物统一带 Shell 页
`shell-plugins` 此前只在自建构建里开,于是 `crates/universal-plugins/src/
shell_plugin_host/**` 在默认构建、CI(`cargo test --all`)与发版里整段不参与
编译——改共享契约漏改构造点会静默通过(2026-09-15 给 `BindingContext` 加
`connection` 字段时就是这样漏的)。改为:

- `main` 的 `default` 追加 `shell-plugins`,于是 macOS/Linux(走 default)与
  Windows(`--features windows-native-rdp`,default 仍在)的发布产物都带上;
- portable Linux 用 `--no-default-features`,不继承 default,故显式写成
  `--features wasm-components,shell-plugins`;
- `crates/universal-plugins` 的 `default` 保持为空:该开关只关掉当前被选中包
  的 default,若给 crate 也设 default,`main --no-default-features` 会把 Shell
  页漏回来,feature 门失效。

`script/test-release-packaging.mjs` 里两处按字面量断言 default 行与 portable
命令,一并同步;`AGENTS.md` 那条 lesson 的验证方式改为「默认态与关闭态都必须
各跑一次」——漏编永远发生在没编到的那一侧。

验证:`cargo check -p main --locked` EXIT=0;关闭态 `--no-default-features
--features wasm-components,embedded-webview,windows-native-rdp` EXIT=0;
`node --test script/test-release-packaging.mjs` 26/26。
portable 目标本机无 zig/cargo-zigbuild,未预验证(该 job 现在要编 quickjs 的
C 源码,`quickjs-jit/sys/build.rs` 经 `cc` crate)。
2026-09-15 15:21:48 +08:00
user.email a0c3691e97 ci(ai): switch issue automation to Codex and pause auto triggers
- replace the Claude CLI backend with the Codex CLI in scripts/ai/agent.cjs
- default provider is codex; openai-compatible stays classification-only
- install pinned @openai/codex in classify, implement and review-fix jobs
- disable automatic triggers on the three ai workflows, keep workflow_dispatch
2026-09-12 18:01:22 +08:00
胡飞 71fe344c47 fix(ci): repair failing workspace tests and cloud_sync parallel flake
- connection-import tests: key candidates to the runner platform so they pass on Linux CI instead of being hidden as Platform::Macos
- gate the /usr/bin probe test with cfg(unix) for Windows
- notes tab-chrome test: assert against the background-task entry now following the tab switcher
- markdown-editor tests: pass App to Window::blur after the gpui-ce bump
- one-core tab_container layout/drag contract tests: track ElementExt::on_prepaint and the scroll-boundary drag region
- extension-runtime catalog/global tests: use shell_manifest() and reject a dev view via an unknown backend
- terminal command-bar contract tests: match the externalized Textarea/action API
- windows-rdp-probe contract: expect the VS version-range variable used by the build script
- cloud_sync + crypto: unify the master-key test lock to stop refresh/sync racing a concurrent set_master_key
- ci: drop the stale -p gpui-component --doc step (git dep, not a workspace member)
2026-09-09 17:27:39 +08:00
胡飞 cb723be834 perf(release): use parallel thin LTO builds 2026-09-05 08:04:37 +08:00
胡飞 a6786444e9 fix(ci): 合并 windows-rdp-probe 到 test job 并修复 CI 全红
- ci.yml: 删除独立 windows-rdp-probe job,probe 步骤并入 test job 的 Windows
  分支(保留 i686,先 rustup target add i686-pc-windows-msvc)
- contract.rs: 去掉已删除 build-windows-msi.yml 的断言,更新 ci.yml 结构断言
- test-release-packaging.mjs: main default features 断言补 builtin-mqtt
- 修复 -D warnings 下 unused imports/unused_mut 编译错误
2026-09-04 15:05:25 +08:00
胡飞 6ea5883b19 chore(ci): 移除 icon-audit job,将 api_tools 移出工作区并清理引用
- ci.yml 删除 icon-audit job 与 ci-gate 依赖,删除死代码 tools/icon-audit
- 将 crates/api_tools(含 ApiTestView)整体移出到工作区保留
- 清理 api-testing feature 全链路引用(Cargo.toml/main 源码/locales)
- 修复 markdown-editor test 对新 fork 已移除 highlighter wasm API 的引用
2026-09-04 13:10:21 +08:00
胡飞 6bd63dc3a7 chore(workflow): 精简 GitHub workflows,发布链路改从 main 触发并加 PR 合并保护
- 删除废弃 workflow:build-windows-msi / build-windows-rdp-smoke /
  repair-release-assets / validate-linux-arm64-packages / validate-linux-x64-packages
- test-release-packaging.mjs 移除对 build-windows-msi 的引用,
  Windows MSI 校验改为以 release.yml 为准
- release-trigger.yml 与 release.yml 的 dispatch --ref 由 dev 改为 main(main=release)
- ci.yml 增加 CI gate 汇总 job,供 main 分支保护强制检查
- RELEASE.md 更新分支模型:dev=beta、main=release(PR 合并)
2026-09-04 11:01:13 +08:00
胡飞 3b7e14cc19 docs: simplify issue templates 2026-09-01 10:27:02 +08:00
胡飞 84bdfdb6ae chore(release-notes): drop language headings and add CNB download line 2026-08-29 15:05:26 +08:00
胡飞 b77c2a3115 ci(release): add build_mode input to skip fat LTO for faster builds 2026-08-28 23:23:13 +08:00
胡飞 f2d1301ac8 fix(zmodem): resolve transfer races and task lifecycle 2026-08-28 09:11:20 +08:00
胡飞 dcfcddc8d1 feat(release): versioned public package names with win32 label, keep updater asset names 2026-08-24 17:37:57 +08:00
胡飞 51b57d9995 fix(release): 完善 R2 与 CNB 发布资产同步 2026-08-24 11:56:23 +08:00
胡飞 804535d81b ci: add workflow to sync release assets to CNB
Ported from dbx's sync-cnb-release-assets.yml, targeting
cnb.cool/navop-dev/navop.
2026-08-22 10:42:43 +08:00
胡飞 4982b73f90 fix(ci): repair Windows release builds 2026-08-20 09:50:05 +08:00
胡飞 8c0773bbf3 ci(windows): add native RDP smoke package 2026-08-19 17:05:45 +08:00
胡飞 ca59b22847 fix(rdp): apply native gateway credentials 2026-08-19 16:42:49 +08:00
胡飞 39c036f969 fix(ci): add NASM download fallback 2026-08-19 00:19:19 +08:00
胡飞 1e50b59313 fix(windows): configure MSVC for native RDP builds 2026-08-19 00:19:19 +08:00
胡飞 25a75d8984 fix(windows): include native RDP in app builds 2026-08-19 00:18:16 +08:00
胡飞 cda34ac94c fix(ci): expose NASM to Windows build steps 2026-08-18 22:35:20 +08:00
胡飞 cf7dd35e27 fix(ci): provision Windows native build dependencies 2026-08-18 22:35:20 +08:00
胡飞 d0f1f1abdb fix(remote-desktop): restore Windows native CI contracts 2026-08-18 22:27:01 +08:00
胡飞 ed2a9c3639 feat(remote-desktop): add Windows RDP toolchain probe 2026-08-18 22:27:00 +08:00
胡飞 73cf3bea38 fix(release): bundle Wayland runtime libraries 2026-08-15 11:33:52 +08:00
胡飞 dfeb1a4316 ci: reduce ARM64 validation resource usage 2026-08-15 10:43:33 +08:00
胡飞 a0de0586f1 ci: validate Linux ARM64 packages 2026-08-15 09:28:02 +08:00
胡飞 082721ac0e fix(ci): check cargo-zigbuild version correctly 2026-08-15 00:37:39 +08:00
胡飞 fb4f38229a ci: add temporary Linux x64 package validation 2026-08-14 23:46:35 +08:00
胡飞 02beac37a0 feat(release): add portable x64 Linux package 2026-08-14 23:35:14 +08:00
胡飞 704932df72 feat(release): add portable ARM64 Linux package 2026-08-14 23:11:49 +08:00
胡飞 37db429ea8 fix(release): support older ARM64 Linux runtimes 2026-08-14 16:04:30 +08:00
胡飞 902751cc81 feat(issue-template): add modular issue forms 2026-08-05 10:24:16 +08:00
胡飞 63ac372408 ci: add Windows x86 release packages 2026-08-04 20:25:24 +08:00
胡飞 791740fa21 merge: integrate navop UI optimization
# Conflicts:
#	main/src/home/home_connection_quick_open.rs
#	main/src/home_tab/modern_home.rs
#	main/src/persistent_connection_sidebar/context_menu.rs
2026-08-04 15:45:12 +08:00
胡飞 00b1135e07 feat(ui): establish unified desktop design system 2026-08-04 12:18:07 +08:00