Skip to content

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

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

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

Conversation

@Mucheen

@Mucheen Mucheen commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

主要改动

补齐 Windows 契约插件安装、市场、构建与宿主工作流,并将分阶段交付统一保留在本 PR;当前阶段继续保持 Draft 和能力门控。

  • 安装、市场与详情:Ed25519 发布者签名、完整包摘要、审批字节绑定、事务安装/更新/回滚;多仓库来源、受控 HTTPS 下载、重定向与预算、来源隔离;概览/更新/权限/设置/依赖五页签及状态解释。清理失败保留原包、owner 和重试入口。
  • 构建、运行与测试:复用 Core catalog/model/plan/decoder、统一执行与进程 owner;静态/命令/Provider 模型、工具候选、完整程序审批、输出/诊断跳转、模型选项与依赖、语言导入和网页构建入口。无效显式配置直接失败;运行/测试沿用保存同步、Core discoverTests/testPlan、原生复验、精确 case 与取消回收。
  • 设置和作用域重载:按语言/构建页注册,保留全局/项目来源、草稿、保存/取消、继承重置、字节 CAS、原子替换和读回。global reload 保留跨窗口插件屏障;project reload 绑定真实原生窗口实例、项目登记、保存设置与包身份,暂停并排空该窗口/工作区/插件的构建、设置/网页/原生面板函数与 VCS owner,再只合并目标模型。其他插件及窗口保持有效。持久私有设置修订拒绝晚 prepare/approval;Provider 清理失败重试会实际重试原初始化/owner,所有原 sibling 都会尝试清理。原生预检不可取消,进入模型审批后提供取消;取消后不继续模型准备。
  • 函数与原生界面:设置 action、网页 functions.list/invoke/cancel、原生面板 load/action 复用同插件独立 Core Provider、正式函数协议、审批、进度/结果/错误、取消和清理。完成凭据绑定真实窗口实例,清理失败保留主界面可见的精确 owner Retry;关闭/替换及迟到启动/销毁不清新 owner。native schema 1 的树/列表/表单使用公共控件、虚拟化、键盘/IME、列与窄宽回退,状态按完整包/窗口/工作区隔离并累计限制 64 KiB;全部当前字段先交 Core 校验。生产工具窗口注入 typed NativeFunctionPort,原生 catalog 登记决定面板/唯一构建实例/函数/程序。打开顺序在首个 await 前固定,旧 open 不能覆盖新面板;模型/设置使成功句柄失效后,Retry 先成功关闭原句柄再重新登记,失败不能绕过清理。工具栏消费批准的 15 个 host 图标,10 个新增 IDEA SVG 逐字节保留浅深资源;公共 InfoTip 统一延迟悬停、点击或键盘固定/切换、Escape/外点击、可访问说明与卸载清理,字段或动作禁用时说明仍可用。共享语言服务、通用 backend 与 host services 明确 unavailable;ui:3 继续关闭。
  • 原生面板停靠:按契约将 left/bottom/right 接入现有活动栏、侧栏及底部插槽,复用 NativeToolWindow 和 typed 函数端口;位置覆盖只在当前窗口/工作区内存保存。移动/关闭/同槽替换使用精确句柄,关闭后按当前入口恢复焦点,底部终端保持挂载。未新增布局系统或公共拖动循环。
  • 项目生成:Core catalog/form/plan 驱动 files/command/archive、JDK、Git 初始化与工程打开;同级私有 staging、受限 HTTPS、有界解压、路径/链接/预算、原子不覆盖发布与清理重试。停用生成器可显式启用,requirements 可跳市场;表单、审批与需求绑定包身份并拒绝旧结果。保留真实 Core Maven/sample 宿主事务回归。
  • VCS:保留 Git 独立工作流;插件根/ownerOf、原生目录/登记/代次/包隔离、短会话 status、根映射/CAS 与有界 FileWatcher 被动失效、历史/文件历史/只读基线 Diff。增加一次性 status receipt 的选中提交/回滚、冲突文件 resolve、整根 update/cleanup 及普通文件 add/delete:确认冻结根、全部端点、数量、消息与风险,写前重新读取完整状态并复验 Core ownerOf、包授权/签名与原生 scope。只允许可证明的普通文件;缺失/目录端点、会隐式提交 added/replaced/renamed/copied 祖先的选择、Windows 路径别名跨嵌套根均拒绝。resolve 只接受当前完整状态中的现存冲突普通文件,不展开 oldPath;cleanup 使用协议规定的空参数和整根范围。update/cleanup 只允许工作区恰好等于完整无歧义根且不存在嵌套根。明确失败与未知结果分别展示,取消/丢失回复/非法回复不自动重发;Retry 只清理原 owner。写入失效标记持续到下一次完整检测,覆盖 owner 回收后迟到的元数据事件;完成/失败在原 scope 刷新同根 status/history,watch 不触发写入。add 仅允许根直属现存 unversioned 普通文件,拒绝隐式添加父目录;delete 确认全部端点及磁盘删除风险,无 keep-local/宿主备份。展开的 oldPath 若有独立状态,也复验其冲突、忽略、未受控、外部和子模块状态,不能借重命名混入拒绝项。
  • 资源与证据:继续使用平台可写存储,不写发行包或插件安装资源;新增 settings-only API3 受控包、设置双窗口/CAS/reload/生命周期/资源哈希驱动,输入计划、当前源码提交、目标架构、冻结配置与 exe 哈希绑定,SkipBuild 保留配置并拒绝旧宿主;reload 保存走真实注册语言设置页。observer 先恢复原 invoke,对已观测调用有界排空并记录晚回复,再退出产品,最后比较资源快照;未退出或未排空不能报告资源工作流通过。函数完整包缺口保持非零预检,不改生产门控。同步工作树资源清单、复用拒绝与文档;40 个共享契约夹具完成分类(6 wired、34 known gaps),最新 preview 的两项 debug adapter 夹具如实记未接入。
  • move 安全证据:固定 Subversion Provider v0.1.0 与历史 SDK 源码身份,明确 v1 fileOperations:1 没有 atomic no-replace/精确叶子保证。当前控制器拒绝 move 不能证明竞态安全;未新增死菜单、未接线 helper、宿主磁盘 fallback 或生产执行入口。同步两篇 owning Notes 和五项矩阵,保留实现与验收的区别。
  • CI:InfoTip 和图标测试新增独立逐文件进程与已有 Vite SVG preload,图标测试移出有 mock 污染风险的宽泛 group,避免重复注册;逐文件隔离注册真实 MainLayout/catalog/活动栏/三侧插槽与 typed 原生函数端口组合回归,以及 VCS add/delete 确认、控制器和端点边界回归;Python settings/functions helper 共 23 项。专用 Core stdio 入口显式执行 resolve/cleanup/add/delete 四操作的唯一 ignored 用例,设置 90 秒进程预算并要求唯一 passed。不得把 ignored 或零用例计为验证。

验证

  • R15 本轮最终去重 890 项通过、5 项跳过,HTML/JUnit 为 0 失败、0 错误、0 超时:前端 10 文件 74 通过,Windows 宿主 762 通过/4 个既有夹具跳过,Node 54 通过/1 项平台跳过。显式 Core stdio resolve/cleanup/add/delete 用例 1480ms 通过,预算 90 秒。
  • 正式 Windows x64 Release 通过(18.4 分钟);320 个 PR 范围内 Windows/Core/i18n 文件构建前后 SHA-256 一致。官方脚本使用 --no-bundle,不代替签名安装包或产品交互验收。
  • 完整 TypeScript(133.6s)、格式/lint、测试稳定性、Windows 边界、runtime bundle 只读静态门禁、共享契约、插件隔离、i18n/应用语言、Agent Notes、功能矩阵实际暂存树及最终提交门禁、diff 检查通过。既有构建/lint 提示保留。
  • 原生 UI 专项、VCS 证据审查及独立最终复审通过,未发现本轮必须修复项。M9 的 6 项一次性 FS 演示/147 断言仅作为诊断,18 次拒绝触发“不支持 move”分支,没有执行 Provider/SVN,未加入已提交产品回归测试总数。M10 本轮没有源码修改和产品验收,不沿用 R14 helper 计数作为本轮结果。

剩余范围

  • 保持 Draft;ui:3/vcsProviders 等未完整验收能力关闭,矩阵 partial/pending。受控端口/Provider 和原生测试不能代替完整包、系统 SVN 与真实进程树工作流验收。
  • M10 设置八项产品验收仍未执行。R15 修正 Bun 真实路径并验证独立资源后,锁定 tree-sitter-cli 0.26.9/0.23.2 的官方 GitHub release-assets 下载均遇 TLS ECONNRESET;局部 Node 代理 transport 修复未解除阻塞。没有当前提交身份的隔离宿主,未 Cargo/Release/产品启动;函数七项、arm64 与人工视觉继续 pending。
  • M7 的 MainLayout/公共组件组合回归不能替代 WebView2 中文输入、真实键盘、屏幕阅读器、焦点、浅深主题、窄窗口、滚动、双窗口及完整包生产链。Happy DOM Enter/Space 测试显式补发浏览器默认 click,不视为真实键盘证据;位置覆盖仅当前进程的窗口/工作区内存,不承诺重启恢复或 macOS 六组停靠已对齐。
  • VCS move、缺失节点类型证明、嵌套文件 add 与 gutter/Annotate 保留后续范围。固定 Provider 源码身份不等于 Windows 正式包及 SVN 运行证据;只有 Darwin 发布资产,未取得固定 Windows Provider 包和 SVN 的字节/版本/架构/许可与竞态验收。目录与常见 rename 的缺失端点继续拒绝。
  • 正式签名插件、受信任 HTTPS 市场完整安装/重启/同源更新、生成后构建,以及 macOS 原生/Swift bridge、Windows arm64 无本轮运行证据。

本地证据:.artifacts/integration-round15/ 与 .artifacts/test-stability/r15-combined.{json,html,junit.xml};生成报告不提交。用户原有 Cargo.toml、pycache 与主树修改保留;本轮测试和构建进程已检查清理。

@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.

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