Repository navigation
feat(windows): #1495 阶段 D 的 Windows Build、Provider Run 与服务 Debug(从 #1558 拆出) - #1722
xiaoyumuxi wants to merge 98 commits into
Conversation
…sue-1495-workspace-capabilities
…sue-1495-workspace-capabilities # Conflicts: # macos/Resources/en.lproj/Localizable.strings # macos/Resources/zh-Hans.lproj/Localizable.strings # macos/Sources/LitheModuleAPI/Plugins/PluginTypes.swift # shared/i18n/messages.json
…onfiguration transfer
…-stage-d-integration-b87 # Conflicts: # shared/contracts/plugins/v1/README.md # shared/i18n/locales/en-US.json # shared/i18n/locales/zh-CN.json # shared/i18n/messages.json
Merges origin/preview (5705732) into the stage D branch. Conflict decisions: - MavenService.swift and MacMavenDependencyOutputStore.swift stay deleted; the preview logging v2 wiring they received has no replacement path because the Build Provider owns those flows now. - Generated i18n outputs (Localizable.strings, shared.generated.ts, locales, messages.json) were regenerated from the merged shared/i18n sources. - Feature matrix, rust-core-api.md, docs/ci-builds.md, worktree resource registry and reuse script keep both sides' entries. - ci-windows.yml keeps the preview queueing structure and re-adds the Build provider and plugin-native-errors test entries from this branch. - Swift conflicts (RustCoreBridge, MacServiceContainer, AppModel+RunConfiguration, MacBuildToolResolver, IdeCapabilitiesFeatureModel, PluginTypes) keep the preview structured logging changes together with the Build Provider and toolchain wiring from this branch. Follow-ups required by preview rules and by this branch's last commits: - Satisfy the new log-usage verifier: record build option encoding failures in IdeCapabilitiesFeatureModel, and mark the two expected-missing / already recorded catch sites in MacRunConfigurationStore and MacBuildToolResolver. - LegacyMavenConfigurationMigrationTests: the storage double now fails the metadata-preserving replace that the run store uses since cc6fc7d. - ProjectGenerationTests: the split Java Support fixture drops debugAdapters and toolDefinitions from the template half and declares the debug permissions the language half's adapter needs. - cargo fmt on the lithe-core files this branch touches.
Merges the three preview commits after 5705732 (git ownership resolution, log window test deadlines, git/Core/user action traces). - RunView keeps this branch's staleProviderModel condition and preparing-run stop branch inside the preview UserActionTrace wrappers. - git/mod.rs takes the new command_trace module; lithe-core re-formatted. - Localizable.strings regenerated from the merged shared/i18n sources. The remaining-plan document records this integration, the two stale test fixtures fixed in the previous merge, and why the tool-default migration exit condition is bound to the Java consumer migration of stage E rather than to this branch.
…re and its diagnosed path
prepareCurrentProviderGeneration threw CancellationError whenever the build-systems feature was absent, so a javaMain run with no enabled build plugin silently never launched. Skip the Provider model refresh in that case and keep validating provider generation; an enabled plugin whose feature is not active still cancels. Fixes the five deferred-run RunEntryPointTests and corrects the cause recorded in the stage D plan.
…ges to a separate PR Restore windows/, the Windows CI workflow, the Windows test-stability script and reference, and the Windows declarative plugin host note to the preview base 9e1a270. Feature-matrix Windows entries return to their base state (new capabilities recorded as missing on Windows), and 69 Windows-only i18n messages are removed while shared messages added in this PR are scoped to macOS. Shared contracts, fixtures, the resource reuse manifest and docs/ci-builds.md stay because they describe both platforms. The Windows changes will be restored in a follow-up PR.
…plit from #1558 Bring back, byte for byte from 8a52a4b, the Windows parts that #1558 dropped to stay macOS and Core only: windows/ (native Build tool resolution, publisher signature verification, Provider Run, Agent Build, local Build options, service Debug), the Windows CI workflow, the Windows test-stability script and reference, the Windows declarative plugin host note, Windows feature-matrix entries and the Windows-only i18n messages.
- toolchains/README.md 状态段原说 Windows 已有目录固定、声明式扫描、shell 候选和提供者查询的 Build 管道;这些代码在未合入的 Draft #1722,preview 的 Windows 宿主没有工具链适配器,也不声明 toolDefinitions、toolchainProviders。改为如实说明,并写明 Core 在 Windows 上拒绝需要这两项能力的包。
* docs(contracts): 插件契约 fixtures 按功能分目录并修正能力版本表 - fixtures/ 下的平铺文件按契约领域移入 manifest、languages、backend、editor、ui、 settings、build-systems、build-providers、debug-adapters、vcs、keymap-import、 project-generators、toolchains、package-trust、marketplace 子目录 - toolchains.md 移为 toolchains/README.md,proposals/toolchains/ 并入 toolchains/proposal/(示例与用例在 fixtures/toolchains/proposal/) - 项目生成器模板移入 fixtures/project-generators/templates/,Java 示例原样保留 - 三个顶层 schema 路径与 $id 不变 - verify-shared-contracts.sh 新增检查:fixtures/ 根目录不得有散落文件、 fixture 文件名在各子目录间唯一(用例文件只按文件名引用基础清单) - Rust Core、macOS、Windows 测试与 Agent Note、功能矩阵证据路径同步更新; Windows plugin_host 测试改为按文件名在子目录中查找 fixture - 契约 README 能力版本表:serverProcess 补版本 2,合并重复的 executableResolution 行,补 keymapImportProviders 行,API 级别补 4; schema 的 requires.buildSystems 枚举补 4 * docs(contracts): 注明 serverProcess 2 只有 Core 支持,两个宿主只声明 1 macOS 的 PluginManifest.hostCapabilities 与 Windows 的 host_capabilities() 都只声明 serverProcess 1,需要 serverProcess 2(debugAdapters 的 runSelectedRuntime)的插件目前在两个平台都会被宿主拒绝。 * docs(contracts): litheBuild 协商版本列表补到 11 构建提供者一节写的宿主提供版本还停在 [8…1],与同文件前文和 Core build_provider.rs 的 SUPPORTED_VERSIONS(11…1)不一致;补上 9(语义测试选择器)、10(类型化运行选项与服务/任务运行准备)、11(注册表连接调试)的说明。 * docs(contracts): 修正工具链、快捷键导入、VCS 与 Windows 宿主现状的过时说明 - 契约目录表和工具链 fixtures 说明:macOS 已为设置页、Build 与运行工具使用插件工具链,Windows 未接入 - 工具链一节:Build 工具和运行计划里指向插件定义工具的 toolchain 可执行文件走独立的新鲜解析 - 能力表 toolDefinitions/toolchainProviders/executableResolution 的宿主说明同步 - Shared executable candidates 锚点改为 -12(两处) - 快捷键导入:macOS 已声明能力,三个官方 SDK 已实现 - Current Windows availability:Windows 声明 ui 1、2,不声明 3、4 - 工具链提案 README 的示例目录改为 fixtures/toolchains/proposal/ - vcs-provider-v1 状态行:macOS 已启动提供者 * docs(contracts): 工具链契约去掉 preview 上不存在的 Windows Build 管道说明 - toolchains/README.md 状态段原说 Windows 已有目录固定、声明式扫描、shell 候选和提供者查询的 Build 管道;这些代码在未合入的 Draft #1722,preview 的 Windows 宿主没有工具链适配器,也不声明 toolDefinitions、toolchainProviders。改为如实说明,并写明 Core 在 Windows 上拒绝需要这两项能力的包。 * docs(contracts): Windows 市场现状与 Lua 模板平台说明对齐 Core 的 validateIndex 规则 Core 的 plugins.marketplace.validateIndex 只在 darwin-* 平台把没有 requires 的级别 2 版本标为可用,Windows 只支持从磁盘安装声明式插件、没有市场浏览入口。Lua 模板第 5 步原写可列 macOS 和 Windows,改为只列 darwin-*;顶部工具链说明不再写死命令数量。 * docs(contracts): 按 Windows 已合入的磁盘安装实现改写其现状说明 Windows #1424 已实现私有快照、installReview 和用户确认的磁盘安装,原文仍写 Windows 没有这套流程。改为写明它做了什么,以及与 macOS 的差距:不验证发布者签名、只比对 plugin.json、不记录已批准程序和来源、没有市场安装入口。 * docs(contracts): 签名向量的说明不再声称 Windows 已有签名模块 Windows 的签名验证还在未合入的 Draft #1478,preview 上只有 macOS 的 PluginPackageSignature 测试使用这组向量。
Lithe Review结论: 未发现需要阻塞合并的问题。以下均为 P2 建议,涉及准入仍关闭的新链路。 Findings
Scope Check
Suggestions
Summary新链路对操作身份、取消、迟到结果和清理已有较完整的保护。主要缺口是显式许可在跨层传递时丢失、最终启动仍触发旧工具发现,以及部分共享语义尚未进入 Core。 Verification
|
Lithe 运行验收版本: 执行未完成:GitHub API GET /repos/1lck/Lithe-IDEA/pulls/1722 - 401: { 本次未形成完整验收结果,详见执行原因。 |
从 #1558 拆出的 Windows 部分(issue #1495 阶段 D):同一 Core 上的 Windows 原生 Build 工具解析、发布者验签、Provider Run、Agent Build、本机 Build 选项与服务 Debug,以及对应的 Windows CI 入口、测试稳定性脚本、Windows 声明式插件宿主笔记、功能矩阵 Windows 状态和 69 条 Windows 专用 i18n 词条。
依赖 #1558,请在它合入后再评审和合入。 本分支在 #1558 拆分提交
2f581dc31之上只加一个提交e5dcd3dde,把上述内容恢复到拆分前8a52a4b52的状态。#1558 合入 preview 之前,GitHub 显示的差异包含 #1558 的全部改动;合入之后只剩 Windows 内容。改动
project-maven-jdk特例,共享消费 fixture 用两个命名空间工具和显式版本证明通用性;产品准入保持关闭。resolvedExecutables工具 ID 绑定;缺失或跨根冲突明确失败。Rust Serialize 与真实 TypeScript Run 编排共用原生上下文 fixture,保留 argv、环境、代次、校验和清理。inherit:tool),经定义/版本/文件事实链验证并在探测后重查字节;Windows 设置写入、全局默认及旧默认转换仍待完成。验证
e5dcd3dde相对拆分前8a52a4b52只差计划文档里的一段拆分说明,Windows 代码、CI、脚本、笔记、矩阵和 i18n 逐字节一致;i18n 生成检查与 14 项静态检查在本分支通过(中英各 10185 条)。96f10837e的 Windows CI 41558993167 五个 job 全部通过,覆盖前端、Rust 与真实 JDT;同提交 Core 全量 1636 项、Project 108 项及相关 macOS 回归本地通过。SDK/Maven 协议和源码未改,固定组合通过记录如下。cc6fc7d8f的 Windows CI 41550723054 全部通过,覆盖 Windows 前端、原生 Rust 与真实 JDT。该批保留 Draft;SDK/Maven 协议未改变,既有固定组合通过记录如下。aa8a4a7e1单次新验证:Windows 41466245542、SDK 41466252742、Maven 41466259510,全部通过;Windows host 398/3 跳过、Project 107/1 跳过、Core 与真实 JDT 各 1595 项。报告前缀stage-d-tool-preferences-*。f51968cf4的 Windows CI 41435122086 全通过:Project 104/1 跳过,host 394/3 跳过,Core 与真实 JDT 各 1587 项。对应 SDK 41435126121 和 Maven 41435128254 也全通过;Java 8 两种 Maven、真实配置、13 步 TypeScript/Agent、框架 JDI 与包字节不变均覆盖。b810a0abe单次新验证:Windows 41440877663、SDK 41440952515、Maven 41440957155 全部通过;Windows 计时产物验证 host 398/3 跳过、Project 104/1 跳过、Core/真实 JDT 各 1587 项,Run 366、Build 132、Debug 14、LSP 86 项。剩余退出条件
Windows 完整插件准入、官方适配器、Windows 设置写入与全局默认、Windows 实机 UI/安装包验收;完整 Build/Debug 准入仍关闭。