Skip to content

feat(windows): 完善 Windows 插件能力与宿主工作流 - #1478

Draft
Mucheen wants to merge 40 commits into
previewfrom
codex/windows-plugin-parity-unified
Draft

Mucheen wants to merge 40 commits into
previewfrom
codex/windows-plugin-parity-unified

Conversation

@Mucheen

@Mucheen Mucheen commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

主要改动

Windows 契约插件复用 Core 接通安装、配置、构建和运行工作流;文本及网页工具窗口接入主工作台,与原生贡献共用三处槽位、活动栏、移动和生命周期管理。未完成完整包和产品验收的能力继续关闭,本 PR 保持 Draft。

  • 安装、市场和详情:验证 Ed25519 发布者签名、完整包摘要和审批字节,支持事务安装、更新、回滚、卸载及清理重试;多仓库来源隔离,HTTPS 下载限制重定向、体积和时间。详情提供概览、更新、权限、设置、依赖五页签,完整 requires 保持原样。

  • 构建、运行和测试:复用 Core catalog/model/plan/decoder 及统一进程 owner,接通静态、命令和 Provider 模型、工具候选、程序审批、诊断跳转、模型选项、依赖与语言导入。运行/测试先保存并同步模型,再调用 discoverTests/testPlan;保留精确 case、取消及清理,无效显式配置直接失败。

  • 设置和作用域重载:语言/构建设置保留全局和项目来源、草稿、保存/取消、继承重置、字节 CAS、原子替换及读回。global reload 使用跨窗口屏障;project reload 绑定原生窗口实例、工作区、设置修订及包身份,排空目标构建、函数和 VCS owner,仅合并目标模型。不可取消的原生预检与可取消模型阶段分开;迟到 prepare/approval 失效,清理失败保留原 owner 并重试全部 sibling。

  • 函数和原生界面:设置 action、网页 functions.list/invoke/cancel、原生面板 load/action 通过独立 Core Provider、正式函数协议及 typed NativeFunctionPort 运行。进度、结果、错误、审批、取消和可见 Retry 绑定精确 owner,旧 open、启动/销毁及替包迟到结果不能覆盖或关闭新 owner。native schema 1 的树、列表、表单复用公共控件和虚拟化,完整 values 先交 Core 校验,状态按包/窗口/工作区隔离并限制 64 KiB。

  • 公共控件和交互细节:工具栏消费批准的 15 个图标,新增 10 个 IDEA SVG 保留原浅深字节。InfoTip 支持延迟悬停、点击/键盘固定、Escape/外点击、无障碍说明和卸载清理,禁用动作仍可查看说明。SearchField 清空本地化并恢复输入焦点;原生表单清空只改草稿,Enter 提交空字符串,隐藏重开保留空草稿,disabled/readOnly 拒绝清空。Input 复用 trailingAccessory;primary/normal 正确映射 accent/default。树 viewport 支持 Shift+F10/ContextMenu、滚动后定位公共菜单、精确单次 Inspect、busy/disabled 拒绝执行,尊重对话框和外点击的新焦点。动作组按整组自然宽度切换横排/纵排,保留 DOM、草稿和焦点;ResizeObserver 合并到单个动画帧并在卸载时清理。

  • 文本、网页与原生贡献共享停靠:ui1 字面文本和 ui2 网页复用稳定 parent_raw 原生子窗口、既有私有来源/CSP/桥接,绑定真实产品窗口、项目登记、目录身份、完整包摘要和不可复用的挂载凭据。每帧合并物理几何,宿主菜单/对话框/Tooltip/HoverCard 遮挡时隐藏;首次零尺寸不建 owner,恢复尺寸只挂载一次,在途挂载保留有效初始边界并按最新隐藏状态收敛。过期登记不能占满挂载槽,focus 作为一次性动作保留到实际交付,清理失败保留凭据和 Retry,替代挂载先清理前任。停靠子窗口关闭Tao阴影,客户区原点/尺寸与DOM逐项一致;可见布局在同一个界面线程按当前凭据/修订应用几何、显示、HWND_TOP同级顺序和显式焦点,不抢占全局置顶。PENDING/RUNNING/CANCELLED原子握手保证排队超时无迟到副作用,已开始同步操作交付真实结果。left/bottom/right 接入现有活动栏及插槽,位置仅保存在当前窗口/工作区内存;移动、关闭、同槽替换使用精确句柄,关闭恢复当前入口焦点,底部终端保留挂载。新增真实 Edge 八阶段 MainLayout 流程,连贯覆盖三侧打开、字段/树动作、替换、右键移动、隐藏重开、项目页签切换、逆序 open/close、替包迟到 prepare 和受控窗口身份隔离。Bun 与 Edge 共享外部边界;旧操作必须无 confirm/read,新 owner 必须实际 confirm/read,不能只靠 cancel 判断。测试专用 Vite catalog 仅绑定 loopback,显式预构建实际依赖防止中途 reload;不改变生产 alias 或能力准入。

  • 项目生成器:Core catalog/form/plan 驱动 files/command/archive、JDK、Git 初始化及打开项目;私有同级 staging、受限下载、路径/链接/解压预算和原子不覆盖发布均有清理重试。支持显式启用停用项及跳转 requirements;表单、审批和需求绑定包身份,拒绝旧结果,保留真实 Core Maven/sample 事务回归。

  • VCS Provider:保留 Git 独立工作流,增加插件根和 ownerOf、原生目录/代次/包隔离、短会话 status、根映射/CAS、有界监听、history/file history 及只读基线 Diff。一次性 status receipt 支持选中提交/回滚、冲突普通文件 resolve、完整根 update/cleanup、根直属普通文件 add 和普通文件 delete;确认全部端点、消息、数量及磁盘风险,写前完整重读状态并复验 Core ownerOf、签名授权和 scope。拒绝缺失/目录端点、嵌套根、路径别名和会隐式提交祖先的选择;取消/未知回复不自动重发,Retry 只清理原 owner,完成后刷新同根状态/历史,watch 不触发写入。move 不新增生产入口:固定 Provider 与真实 SVN x64 的反例已证明目标竞态和 WC 元数据副作用,现有协议不足以保证安全。

  • 资源、验收与 CI:运行时只写平台可写存储,发行包和已安装插件资源只读。设置、ui:2 回退和 ui:1 字面文本驱动绑定 plan、源码库存、配置、架构及 EXE 哈希,SkipBuild 拒绝旧或漂移 identity;观察器保留冻结 invoke,退出先恢复 fetch、排空 callback、关闭产品再比较资源。网络观察不能证明零 postMessage IPC。原生 Bun 预检及安装期限逐层传递;manifest 只在同一独占句柄确认精确换行变化时恢复,并发语义编辑保留并报错;JDTLS 解压固定原生 tar,失败在复制/launcher 生成前停止。浏览器通过既有 Windows Job gated bootstrap 先归属再释放,成功/早退/超时都核实零成员后清理 profile/cache。CI 串行运行五个 120 秒 Edge 场景及两个 25 秒生命周期场景,组合上限 12 分钟;前端逐文件隔离、Python/Node helper、Core 唯一 ignored 用例均有有界逐项 HTML/JUnit。同步资源排除清单、拒绝路由/回归、工作树操作文档、Agent Notes 和矩阵;未增加可复用二进制缓存。

  • 外部打包候选的交付边界:上游固定 717d23cd417f796d8487b3b7cbc8150a8356b512 的 12 文件完整补丁为 70,317 字节,SHA256 69fa2cf61b10a6a0b284ce0ba3b736871cf3baaa6351783f9c1f4f195f64afce。候选保留 v0.1.0、SDK 和完整 requires,新增双目标打包、严格四资产集合、existing-release 校验、checksum 硬链接防护和 gated process owner。统一测试入口先 owner 再 packaging/release,Linux 三项退出/超时/短命 root 回归接入 CI/release 并 always 上传报告。它仍是本地 unsigned、未发布 0.1.1 候选;上游源码未复制进主仓产品。

  • 依赖安装与 ui:1 正式验收:将 1,050 个 lock 显式 npm 镜像 URL 迁到官方源,1,057 个节点的精确版本、完整依赖图、SRI 和 workspace 声明不变;三个 packageManager 同步固定 Bun 1.3.14,复用其安装 TLS/HTTP/isolated linker 修复。Windows worker 为原始 tree-sitter-cli install.js 提供仅当前 lifecycle 的 Node 原生 proxyEnv 适配,保持上游解压/落盘及 TLS;无代理沿用直连,不增加下载器或二进制缓存。按 Node 小写优先级选择代理,非法地址/协议/凭据在状态修改前脱敏拒绝,避免静默直连。补齐安装夹具 preload;四种安装生命周期回归改为握手时保留原句柄与创建身份,等待线程退出后才关闭句柄,失败仅清理原成员。SUBST 源码库存解析真实路径;原始 progress JSON 改存 run evidence,最终报告聚合保留严格断言。同步 CI、资源拒绝清单/测试、工作树文档、Note 和矩阵。

  • 脚本布局、源码身份与探测边界:整合当前 preview 的 scripts 分类路径,补齐 fixture 覆盖、CI 路由和复用基础设施规则。所有验收覆盖已跟踪、未忽略的新源码和第三方输入;Git 枚举、空文件及分块哈希共用截止时间,短路径先解析真实根。SkipBuild 绑定完整源码库存、提交、x64 配置和 EXE;版本交易检查安装目录与原 ZIP 的字节和目录清单。build.detect 对普通文件/缺失根返回空实例,保留真实目录错误,通用扫描器保持严格。缓存复用保留源目录只读、临时目标及原子发布后复验,验证默认300秒且可显式限定1–1200秒;Bun哈希最多8个流并发,失败等待在途读取结束,完整文件集合及每项SHA-256验证不变。

验证

  • 前端相关51项通过。acb36e0阶段资源/CI/i18n及原生Web等聚焦检查共208通过、1项macOS环境跳过;另有原生命令路由3项通过。本轮重编当前c933fbe7的Web原生范围50/50通过,含新增2项原子取消回归(93/94毫秒),替代原48项结果而非重复累计。AppSession清理回归21通过、1个可选DOM跳过。
  • 完整Windows宿主首轮771通过、5跳过、2个进程超时;两例在同一产物、原15秒预算下复测通过,保留首轮失败。
  • 完整类型检查、前端构建、正式x64 Release、i18n、矩阵语义门禁、共享契约、Agent Notes和原始发行目录只读门禁通过;只检查本轮Rust文件的格式,未改已有其他模块格式。
  • acb36e0与0b03109均完成各自冻结源码的正式x64验收Release和ui:1九阶段;旧镜像/identity与首次失败逐字节保留。150% DPI实机先发现Tao阴影客户区偏移,关闭停靠阴影后修正;随后原13阶段通过仍不足以证明可见,原生层级与鼠标命中确认主WRY遮住私有子窗口,因此增加本轮同级顺序修复与原生输入断言。旧证据只归属旧冻结SHA,未写成当前完整通过。
  • 同步固定preview fbb5e5781,整合为 a9b864d2f:保留后台磁盘命令与LSP诊断合批,同时保留本PR的安装provenance、live包验证、设置CAS/reload和运行计划owner。设置写入沿用单一WRITES,最后项目覆盖重置删除空文件;Windows按句柄核对精确SHA,POSIX不支持时独占重开并复验后再执行传统删除,有reader或访问失败时无迟到删除。新增5项真实存储/并发回归。合并后相关原生123通过/2既有夹具跳过、LSP48项、工作台21项和真实弹层2项通过;完整宿主与正式重建结果见后续项。
  • 当前集成提交 a9b864d2f2dea0570c0d0638d2d627f4bfa55076 完成正式隔离x64 Release与ui:1九阶段,入口退出0;冻结5043项源码、配置和EXE SHA256 69210699ceb243d80c482ea19a1f9580435d65b263a7d6291f9d0a2cce953582。当前普通生产配置的历史构建仍属于acb36e0,不把隔离验收构建写成安装包/签名验收。
  • 同一冻结产物原生停靠14/14:屏幕上实际可见,Computer Use物理点击到私有页,原生命中自身子树,150% DPI客户区/视口/DOM一致;左/下/右移动和右/下外缘命中保护、真实外框缩放、modal隐藏恢复、物理关闭焦点、两个真实产品窗状态与布局隔离、停用/卸载/重装、带两个活动子窗口退出均通过。所属进程、profile无残留,发行镜像/安装包/ZIP未变。第一次外框拖点落在客户区,按原生NCHITTEST确认可见外框后在原期限内完成,不改产品/期限。
  • ui:2原始回退入口9/9、退出0,保持真实fetch故障→原Promise真实postMessage→后续sticky状态与transport/callback不变量。受控设置复验9/9;第一次原生选择器等待超时保留,未改产物/断言/10秒预算复验通过。完整设置入口仍按设计退出1,真实functions/Provider/完整M10前提缺失,不声明完整成功。
  • 当前完整宿主785通过、5既有夹具跳过、零失败/超时;相关123通过/2跳过是其中子集,不重复累计。合并后LSP48、工作台21、弹层2及资源/CI路由73通过。普通安装交易/LSP生命周期19通过、5项既有待验跳过、退出0:真实服务器与子进程、关闭重开/初始化中断、两窗停用启用、篡改拒绝、替换/升级/回滚/卸载及8个包检查点通过。所有链结束后再次逐字节核对发行镜像2526项记录/504365757字节与原快照一致,源码/config/EXE仍精确匹配,验收进程、profile和app-data隔离目录无残留。

剩余范围

整体保持partial/pending与Draft。ui3、functions、vcsProviders、buildProviders/buildSystems、签名完整包、ARM64和完整M10继续保持各自原有准入边界;三处内存停靠不宣称六组停靠、自由拖动或重启恢复。历史产品证据只归属其冻结源码与EXE,受控unsigned子集不代表正式签名完整包验收。

本地证据:.artifacts/r27/final-validation-summary.json、final-source-resource-proof.json、final-merge-review.md、docking-runtime-15/、ui2-fallback-final/、settings-final-02/、lsp-final/及逐项HTML/JUnit报告。首次失败、取消的编译和旧冻结镜像分别保留,生成物未提交。

远端分类门禁修正:最终HEAD 09ca988ea09f1dc29a954663c9651bda78ec9f5d 相对功能冻结提交a9b864d2f只增加五条安装器原生看门狗原因注释,产品代码/期限/握手/清理/门禁不变;Git字节对比已证明。真实OS子进程TCP和句柄完成不能由手动时钟证明,因此按write-stable-tests规则紧邻标记有界例外。精确preview→HEAD的all平台稳定性门禁通过;首次远端失败日志保留。当前产品运行证据仍归属a9b864d2f,不把测试注释提交写成重新构建的产品。四项真实Windows安装器生命周期回归通过(原60秒逐项预算、内部5秒期限不变),最慢14.536秒;各原生创建身份waitStatus=0,serverListening=false、sockets=0、cleanupErrors=[]。

最终远端检查:HEAD 09ca988ea保持Draft且MERGEABLE,12项成功、7项按Draft规则跳过、零失败/等待。Linux Remote Workspace CI首轮在preview未改动的concurrent_connections_share_one_daemon停止等待断言失败(此前60项通过);原日志/HTML/JUnit归档。只重跑失败Linux job,源码、断言和期限不变,第二轮110/110通过,该例2.249秒通过。未将未复现归因为已证实的环境原因,未修改远程生产代码或增加超时。第二轮artifact ID12950009246已按上传日志SHA256 f49e09cf74d3f04993951e2f0953e093d698c20d620d71d6819aaf9252dc09ee单独核验,避免同名artifact下载到旧报告。

@ghfind-review ghfind-review Bot added the review: medium ghfind author score; see https://ghfind.com label Oct 25, 2026
@Mucheen Mucheen changed the title feat(windows): 插件能力对齐 macOS(统一交付) feat(windows): 完善 Windows 插件能力与宿主工作流 Oct 25, 2026
Connect task and test approval, output and cancellation to the native owner; validate passive Maven model snapshots and queued refreshes. Revoke stale editor attachments and queued text across buffer, workspace and package changes. Cover real WebView lifecycle workflows through the product Quit path.
Connect reviewed Provider model/dependency and page build workflows,
workspace test discovery, source-backed plugin settings, transactional
project generation, and passive VCS root ownership. Keep rollout gates
closed until product acceptance is complete.

Retain cleanup owners for Stop retry, preserve framework-specific actions
and Core reply data, and repair page refresh cancellation routing.
Merge preview d369c9a, classify its new debugger fixtures and make the
debug baseline checker resolve Windows file URLs correctly.
Integrate the reviewed R9 changes and preview 32021a8. Preserve typed archive interruptions and staging identity, global settings reload receipts, and isolated VCS session cleanup completion.

Validation: 1252 passed / 5 skipped, Windows x64 Release, shared contracts, runtime bundle immutability, Rust documentation, localization and matrix gates.
Integrate reviewed R10 settings functions, generator requirement interactions and segmented forms, and guarded VCS mappings/watch leases. Preserve original owners on late native completion, invalidate stale reviews and release late watcher publication on window destruction.

Validation: 1061 passed / 6 skipped, complete TypeScript check, Windows x64 Release, contracts, localization, runtime resource immutability and actual-tree matrix gates.
Route web function requests through the existing Core-owned provider lifecycle,
retain exact-window cleanup retries, and retire completed receipts with their
native window instance. Add native tree/list/form rendering and Core data
validation while keeping ui:3 admission closed. Extend VCS short sessions with
read-only history and baseline diffs, cancellation and cleanup recovery.

Cover approval/result shapes, form drafts, virtualized controls, deleted and
renamed paths, junction escapes and late-owner races. Update fixture coverage,
localization, capability evidence and the owning architecture note.
接入原生面板三侧布局、精确关闭与焦点恢复;新增受约束的 VCS resolve/cleanup 及真实 Core stdio 回归。补充设置实包验收驱动、源码身份校验、CI、共享翻译、资源复用规则和功能矩阵。未开放 ui:3/vcsProviders,真实完整包与系统客户端验收继续 pending。
Map all approved host icons to fixed theme resources and reuse a shared accessible InfoTip for disabled fields and actions. Register isolated UI regression suites and record remaining settings runtime and VCS move safety evidence.
Reuse the public input accessory for localized search clearing, preserve native
form draft and focus behavior, and register isolated consumer regressions.

Complete controlled settings package declarations and installation approval
checks, observe frozen Tauri IPC through fetch callbacks, and verify bounded
shutdown before resource snapshots. Record real SVN move counterexamples while
retaining capability gates and explicit runtime evidence limits.

Validation: 946 passed, 5 existing skips; full TypeScript, focused lint/format,
shared contracts, stability and platform gates; formal Windows x64 Release.
Correct primary/normal native button variants and cover shared-fixture actions.
Verify real WebView2 SearchField default keyboard activation in settings acceptance.
Add bounded fixed-input SVN move diagnostics with proven cleanup, path isolation,
and failure reporting; wire timed CI reports and resource reuse exclusions.
Update owning decisions and partial feature matrices without opening gates.
…back

Open the shared context menu for the selected virtual tree row, preserve
outside and action-owned focus, and retain expand-button keyboard navigation.
Add bounded controlled ui:2 fixture and real WebView2 postMessage fallback
acceptance with exact fault injection, identity checks and failure cleanup.
Register helper reports and nonreusable resources; document the SVN upstream
replacement boundary without opening capability gates.
Exercise real Edge defaults, disabled groups and complete form submissions through public controls. Register bounded CI and resource exclusions, and record upstream ownership fixes and the blocked ui1 build accurately.
Include untracked non-ignored source inputs and third-party files in the shared
acceptance inventory, with one deadline for Git and file hashing. Preserve the
original runtime build identity and add source-inventory regressions.

Restore build.detect compatibility for missing and non-directory roots while
retaining metadata and real directory scan failures. Add typed command and error
propagation coverage, and update the owning notes and capability records.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: medium ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant