90 Commits
Author SHA1 Message Date
胡飞 1142f2f843 chore(deps): 依赖地址改为 gpui-kit 仓库
上游 longbridge/gpui-component 已改名为 longbridge/gpui-kit,fork 同步改名,
所有 gpui-* 依赖、patch、文档与同步脚本里的仓库地址一并更新。

同步脚本同时修掉了三处与旧仓库名绑定的匹配逻辑:守卫条件改为按 gpui-kit
仓库名匹配、Cargo.lock 校验的 rev 正则允许缺少 ".git"、依赖行允许只锁定
rev 而没有 version 字段。
2026-09-20 10:24:22 +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
胡飞 224c8c62a6 test(release): 同步发布配置断言到 fat LTO / panic=abort / 180min
这三条断言在之前的发布 profile 改造后就没跟上,CI(ci.yml 会跑
`node --test script/test-release-packaging.mjs`)一直是红的:

- 超时:改为断言统一的 `timeout-minutes: 180`(原表达式已删除)
- Cargo.toml:`lto = "thin"`/`codegen-units = 16` → `lto = "fat"`/
  `codegen-units = 1`,并补 `panic = "abort"`
- Windows 构建:feature 已收进 `$features` 数组,改断言
  `"windows-native-rdp"`(原 `--features windows-native-rdp` 不再出现)

验证:node --test script/test-release-packaging.mjs 全绿。
2026-09-17 16:41:01 +08:00
胡飞 7815ce5a28 perf(deps): gpui-component 升级到 resvg 0.46,去掉重复的 usvg/tiny-skia
component fork 的 Windows 原生菜单固定 resvg 0.45.1,gpui-pre 用 0.46.0,
每个下游二进制都链两份 usvg/tiny-skia。fork 侧 6df86ef8 把 resvg 提到 0.46.0,
navop 侧 rev 跟到 6df86ef8(含 rquickjs)。

同时清掉脚本/文档里改名前的 gpui-ce 标识:
- sync-gpui-component.sh 的 -p 包名(原值实跑报 did not match any packages)
- update_gpui_component_revision.py 的包名映射
- gpui-component-external.md 的旧仓库地址与 rev
- gpui-shell-extension-design.md / home-theme-sidebar-refinement.md 的旧包名与 rev

验证:Cargo.lock 里 resvg/usvg/tiny-skia/tiny-skia-path 各只剩 1 个版本;
cargo check -p main 通过;resvg 调用序列探针对 0.46.0 编译通过。
未跑 Windows 构建:唯一调用点是 native_menu/windows.rs(Windows 专用)。
已知遗留:update_gpui_component_revision.py 仍不能跑(依赖行需含
gpui-component.git + version =,SHELL_VERSION_FILES 锚点已不存在)。
2026-09-17 15:51:15 +08:00
胡飞 b1f41f81c7 perf(release): 关掉展开/开 fat LTO,裁剪 wasmtime 未用 feature
macOS arm64 二进制 177,369,216B → 112,557,680B(-36.5%)。

1. [profile.release] lto=thin→fat、codegen-units=16→1、panic=abort。
   __eh_frame 16.0→0.07MiB、__gcc_except_tab 8.6→0.02MiB、
   __unwind_info 2.8→0.29MiB,展开元数据共省约 27MB。
   代价:release 下 catch_unwind 不再拦 panic(terminal 录制 observer、
   windows_rdp_host event 回调);dev/test profile 不变,测试照样跑。
2. extension-wasm 只用 async/cache/component-model/cranelift/gc/runtime/std/
   threads,wasmtime 与 wasmtime-wasi 都关 default-features;
   wat 解析器移入 dev-dependencies(只有 fixtures/*.wat 测试用)。
   掉包:wiggle、wiggle-generate、wiggle-macro、witx、wast、leb128。
3. bundle-macos-dmg.sh:按 staging 目录实际大小显式 -size(首次 +512MB,
   重试逐次放大),制完删 staging 拷贝。hdiutil 自动估算偏小时会报
   "No space left on device",与磁盘剩余空间无关(已本地复现)。
2026-09-17 11:24:04 +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
胡飞 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 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 9ec827f263 docs(publish-gpui-pre-fork): use https fork-url in examples (repo is public) 2026-09-10 20:28:26 +08:00
user.email 6a1e7f6dd0 feat(remote_desktop_view): restore dynamic texture via a self-maintained gpui-pre fork
The dynamic-texture API only exists on our zed dynamic-texture branch, so
the published gpui-pre-* snapshot predates it. Instead of a path patch
that ties the build to one host, point the [patch.crates-io] block at a
git fork we own:

    feigeCode/gpui-pre, tag fork-0.3.99

The fork is cut from zed@cae01216cb with gpui-component's
script/bump-gpui.ts pipeline. Re-publish with
script/publish-gpui-pre-fork.py and move the patch with
script/migrate-to-git-fork.py; both live in script/.

With the API available again, revert the eda5371ae RenderImage fallback
in remote_desktop_view:

- surface.rs uses DynamicTexture directly; the backing framebuffer
  becomes the upload source for paint_dynamic_texture.
- render.rs paints dirty rects via update_dynamic_texture /
  paint_dynamic_texture instead of a whole-frame paint_image, and
  releases retired handles with drop_dynamic_texture.
- view.rs drops the placeholder handles; the contract tests assert the
  dynamic-texture path.

cargo check --workspace --locked: clean. cargo test -p
remote_desktop_view --lib: 241 passed.
2026-09-10 20:17:50 +08:00
user.email 0fda3ead6f merge: 同步上游 feigeCode/dev(已合并 PR #175)进本地 dev
以本地 dev 的未完成重构(资源工作台/表单引擎)为准解决冲突:
- 保留 dev 的 universal-plugins/connection_form 表单引擎与 resource-workbench 代码
- 保留 dev 内置 MQTT/TDengine 栈(mqtt_view/mqtt-runtime/taos/rumqttc)
- 恢复 dev 版本的核心存储、主程序与受影响的 crates
- 保留上游仅新增的迁移文件 20260828000001_middleware_extension_connections.sql
- 更新 workspace 依赖(mqtt-runtime/mqtt_view/taos/rumqttc)与 Cargo.lock
- cargo check --workspace 通过
2026-09-10 08:15:50 +08:00
user.email ee1f052cbc merge: 解决 PR #175 与 feigeCode/dev 的冲突并移除 .agent-teams
- 将 feigeCode/navop:dev(b8d90a629)合并入 PR 头,逐文件解决 21 处冲突
- 按 PR 意图移除内置中间件/TDengine 实现:删除 mqtt_view、middleware_form、
  navigation_quick_open、main 内 extension_connection_form(迁至 crates/universal-plugins)
- 保留 base 侧结构(universal-plugins crate、home 重构),融合 PR 的 SSH 隧道/
  统一凭据解析增强;crates/universal-plugins 与 main 全量 cargo check 通过
- 移除误提交的 .agent-teams 目录(共 8 个 JSONL/JSON 文件)
2026-09-09 23:24:51 +08:00
胡飞 d43f7e22b0 fix(ci): align release-packaging contract with universal-plugins feature and drop dead test helper
- test-release-packaging: shell-plugins optional deps moved into crates/universal-plugins; assert the new main feature forwarding there
- extension-runtime: remove unused append_executable_bytes (dead under -D warnings)
2026-09-09 18:19:01 +08:00
胡飞 cb723be834 perf(release): use parallel thin LTO builds 2026-09-05 08:04:37 +08:00
胡飞 6ce900ba55 fix(main): keep gpui shell out of default release builds 2026-09-05 05:10:32 +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
胡飞 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
胡飞 a5f7884991 chore: v0.16.0 发布前整理与测试补充
- refactor(notes): 移除 Markdown Split 分栏模式,旧配置自动迁移到 Source
- test(credential_vault): 补充列表渲染边界测试并添加 debug selector
- docs(extension-resource-plugins): 新增开发指南与 README 关联
- style: 统一 rustfmt 格式(notes/db/sftp/one_ui 等)
- chore: 同步 Cargo.lock 与脚本
2026-09-03 22:34:31 +08:00
胡飞 3d18ae010e feat(plugins): add universal resource shell views 2026-09-02 12:21:55 +08:00
胡飞 2eee74d39e chore(release): 强化 skill 与脚本对 CNB 镜像下载行的强制校验
- navop-release-notes skill: Prepare 阶段改为硬性 checklist,CNB 下载行列为必选项并附 grep 校验;Common Mistakes 新增遗漏 CNB 行条目
- script/changelog.py: 新增 CNB_MIRROR_LINE_RE,upsert 生成新条目与 validate 命令(release-tag/bump 闸门)强制包含 CNB 镜像下载行,extract 保持宽松以兼容无 CNB 行的旧条目
- 同步三层嵌套 skill 副本为同一最新版本
- 补充 upsert/validate 缺 CNB 行报错、extract 对旧条目宽松的测试
2026-08-30 17:10:00 +08:00
胡飞 84bdfdb6ae chore(release-notes): drop language headings and add CNB download line 2026-08-29 15:05:26 +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
胡飞 d42859b6dc test(db): add real database integration coverage 2026-08-22 08:52:57 +08:00
胡飞 a40c8dc161 ci(windows): allow Visual Studio 18 RDP probe 2026-08-19 16:42:49 +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
胡飞 d0f1f1abdb fix(remote-desktop): restore Windows native CI contracts 2026-08-18 22:27:01 +08:00
胡飞 81fc4760c3 feat(remote-desktop): enforce Windows RDP callback quiescence 2026-08-18 22:27:00 +08:00
胡飞 6259417a09 feat(remote-desktop): add versioned Windows RDP host ABI 2026-08-18 22:27:00 +08:00
胡飞 c9c13b8cc2 fix(remote-desktop): import the system RDP type library 2026-08-18 22:27:00 +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
胡飞 f4576839e8 fix(release): resolve usrmerge package ownership 2026-08-15 08:45:52 +08:00
胡飞 082721ac0e fix(ci): check cargo-zigbuild version correctly 2026-08-15 00:37:39 +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
胡飞 63ac372408 ci: add Windows x86 release packages 2026-08-04 20:25:24 +08:00
胡飞 27b1a39f24 fix(windows): mark MSI as bundle primary package 2026-08-03 17:34:34 +08:00
胡飞 6496088518 fix(release): verify R2 overwrites and disable stale caching 2026-08-03 15:37:57 +08:00
胡飞 bf95dc74fe feat(release): add Windows EXE installer 2026-08-03 10:26:00 +08:00
胡飞 2dde8cc36e Merge branch 'feat/terminal-optimization-rework' into dev
# Conflicts:
#	main/src/update/dialog.rs
2026-08-01 11:41:55 +08:00
胡飞 75ce08a7e8 feat(release): centralize bilingual changelog and release notes 2026-08-01 11:38:40 +08:00
胡飞 ce6991181d feat(update): add local update simulation and richer update dialog 2026-08-01 11:38:28 +08:00
胡飞 d3904a045d feat(app): register terminal recording file associations 2026-07-28 09:50:08 +08:00
胡飞 1f82fa4e47 fix(icon): 调整 macOS 应用图标尺寸 2026-07-24 10:22:12 +08:00
胡飞 66b204b3b3 feat(core): 支持便携运行模式 2026-07-23 21:01:52 +08:00
胡飞 2cd3a834b1 ci: avoid duplicate release cache writers 2026-07-20 20:10:02 +08:00