Skip to content

feat(core): 补齐工具链编辑、Debug 时序与插件设置文档 - #3

Merged
1lck merged 8 commits into
mainfrom
codex/1799-toolchain-pin-editing
Nov 10, 2026
Merged

1lck merged 8 commits into
mainfrom
codex/1799-toolchain-pin-editing

Conversation

@1lck

@1lck 1lck commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

关联 Issue / Linked issue

PR 类型 / Type

  • feat:复用原 Rust Core,补齐 Viva 所需共享接口。

最新进度与接手入口(动态设置页与跨窗口路由)

当前 Core HEAD d6d9da81b8127dcf03a178905b9619d406f9874d;客户端依赖仍为 2db0e03dcf88f319362df33de84a517aa2c53563。客户端 f105be68f86e1de516e305da74962cdf7427077b 精确固定该已验证依赖。Core 已按用户授权合并;主项目保持 Draft。整次迁移未完成。

合并前审查与验证(2026-11-09)

用户已明确授权合并本 Core PR,主项目 #1799 继续保持 Draft。审查范围为 main 0ffd327 至当前 d6d9da81b8127dcf03a178905b9619d406f9874d,不以全部 Viva 界面和发行验收完成作为本 PR 的合并条件。

  • 审查修正:settingsState 身份不匹配时的错误 field/message 参数写反;新增 ID/版本两种回归先失败,修正后通过,仍拒绝不匹配且不返回 state。修正提交 d6d9da81b8127dcf03a178905b9619d406f9874d,未改变公开插件协议。
  • 最终源码定向验证:Core 206 项(插件60、工具链80、来源3、Debug59、文档身份/URI/workspace-edit/会话选择各1)及注释工具3项通过;实际 Go cgo 消费者7个顶层用例、含子用例100条通过,使用本地 Core override 链接该源码。注释/Rustdoc、定向fmt、稳定性与只读静态检查通过,10份契约/fixture镜像逐字一致。
  • 结论:修正后未发现需要阻塞本 Core PR 合并的问题。未重跑整个 Rust workspace 或 Windows 上的最后两参数修正;之前 Windows/客户端全量证据仍对应2db0e03,不冒称为新修订复验。macOS 提供方启动策略、异常退出清理、GUI/发行和主项目#1802门禁缺口继续保留,未宣称解决。
  • 客户端仍固定已验证的 2db0e03;采用保留提交历史的 merge,保持此 SHA 可追溯。最后的错误字段修正将随客户端下次依赖更新接入,不为合并单独改动主项目源码。
  • 本次完整审查、回归失败/成功及计时证据归档到客户端 .artifacts/1799-handoff/takeover-2026-11-09/core-3-merge/。

Core #3 已合并(2026-11-09)

Core #3 已按用户授权合入 main,merge commit 482499cabd128f5c9dfec744c63c7bda1bb9e678,合入的最终 HEAD d6d9da81b8127dcf03a178905b9619d406f9874d。采用保留历史的 merge;原客户端依赖 2db0e03dcf88f319362df33de84a517aa2c53563 已包含在 main 中,SHA 仍有效。

合并前审查修复了 settingsState 身份拒绝响应的 field/message 写反问题(先失败回归、再修正)。最终 Core 定向206项、注释工具3项及 Go cgo 消费者100条(7个顶层用例含子用例)通过;10份契约/fixture镜像一致,注释/Rustdoc、定向fmt、稳定性与只读静态检查通过。完整审查和逐项报告在 .artifacts/1799-handoff/takeover-2026-11-09/core-3-merge/。

主项目 #1799 继续保持 Draft,客户端源码仍为 f105be68f86e1de516e305da74962cdf7427077b,固定 Core 2db0e03;本次没有修改客户端依赖或新增客户端提交。因此最后的 field/message 修正尚未进入客户端 pin,下次依赖更新时接入。macOS 客户端全量失败、原生 GUI、真实插件包及发行验收等限制没有因 Core 合并而消失。历史“Core 尚未合并/保持 Draft”仅描述当时状态,当前以本节为准。

已有成果与本次迁移边界(2026-11-09 核对)

本次任务是将外层客户端迁移到跨平台 Viva,继续复用已经实现的 Rust Core、插件市场和组织插件,并在已有 Viva 编辑器上完成接入与验证。以下组件是现有成果,不属于从零开发的剩余任务:

已有组件 已有实现与证据 本次迁移需要区分的工作
Rust Core Lithe-core-rust 是正在复用的原内核;客户端精确固定 2db0e03dcf88f319362df33de84a517aa2c53563 Core #3 是现有内核上的增量桌面接口与修复,不是重写内核。已有接口优先接入;只有核实接口确实缺失时才补充通用能力。
插件市场 Lithe Store 已有市场与索引;Viva 已有 市场服务、市场页面 和 插件安装链路 真实插件包在新宿主中的兼容性、能力准入和端到端验收,要按具体插件记录;不能写成“市场尚未开发”。
Java 与构建插件 Java Support 已有 JDT LS、Lombok、运行/调试、测试相关实现及 Java / Spring Boot 生成器;Maven、Gradle 是独立插件,模板归相应插件维护 复用插件与上游能力,核对实际清单、宿主接口及运行结果;插件已有实现不能重复计为宿主待开发功能,也不把插件 README 中的迁移说明直接当成 Viva 已验收结果。
Viva 编辑器 editor、editorview 已有文本编辑、撤销重做、高亮、折行、小地图与滚动;工作台已有标签/拖动分屏、文档同步、定义跳转、Hover、显式补全 在已有编辑器上核对具体语言服务接线及原生交互;不能把编辑器整体列为“尚未实现”。已有 110 项性能基准和优化记录(历史同机结果 52→3 项超预算),本次说明修订没有重跑基准。

状态必须按三类记录:已有实现、Viva 具体接入缺口、尚未完成验证。pending 表示未验收,unassessed 表示未完成盘点,都不能据此推断功能不存在;矩阵条目数不能直接换算剩余开发量。当前没有经过逐项核实的总工期、完成百分比或剩余大节点数量估算。

主项目 #1799 保持 Draft,不自动 ready 或合并。Core #3 已按用户授权合并,客户端目前仍按已验证 SHA 固定依赖,具体修订见上方合并记录。本轮只更新描述与恢复资料,没有新增实现或验证结果。

当前验证批次已收尾(2026-11-09)

按用户确认,本次仅收尾当前验证、PR和归档;整次Viva迁移仍未完成。代码保持客户端 f105be68f86e1de516e305da74962cdf7427077b / Core 2db0e03dcf88f319362df33de84a517aa2c53563,没有新增零碎提交。两份PR均保持Draft,Core尚未合并;用户允许必要时使用管理员权限合并Core,主项目继续保持Draft。

  • 新增通过证据:最终源码macOS定向race91项通过,38.163秒,包含真实提供方设置动作。原Windows最终源码全量2549 passed、13条件跳过及race71项仍有效;Linux Draft CI通过。
  • 全量仍未通过:本次macOS全量复验2538 passed、7 skipped、2 failed、1 incomplete,另1条runner error。设置动作/测试提供方启动失败,包级60秒时限中断了后续用例;不能将这次结果写为完整通过。
  • 诊断已缩小:系统日志明确记录AppleSystemPolicy拒绝相关提供方进程;采样停在 _dyld_start。新建脚本和最小C程序对照可正常启动,因此未证明是所有进程持续阻塞,也未确定具体策略触发原因。未更改系统安全配置,未以增加预算或跳过断言掩盖失败。
  • 清理与GUI:包级超时留下的一个测试提供方已手动有界清理;这也暴露出异常退出时验证器的子进程回收仍需补齐。隔离原生预览的CUA读取超时,未完成GUI交互验收;发行包/测试插件哈希保持不变,预览已停止、注销并删除。最终复查本机所属进程0、Windows独占目录不存在且所属进程0;两仓库工作区干净。
  • 恢复入口:仓库根 .artifacts/1799-handoff/takeover-2026-11-09/core-validation-closeout/ 保存本次成功/失败HTML、JUnit、系统诊断、PR快照和清理证据,并同步到原始检出的同一路径;上级 current-manifest.json 的 latestVerification 指向本批。源代码/bundle仍使用 dynamic-settings-node/,不改写历史失败证据。

已确认的验证收尾项:macOS 提供方启动失败及异常退出清理、两端原生 GUI 与发行流程验收、#1802 日志/共享边界等价门禁。功能接入按顶部已有成果逐项核对;settings2、toolchainProviders、languageServers3 等应记录新宿主具体未接通/未准入的部分,不代表原 Core 或插件未实现。下方历史节点只记录对应提交时的改动与测试,不能直接充当当前剩余任务清单;最新验证状态以上述收尾记录为准。

改动说明 / What changes

  • 复用原 settings v2 的 page/section 元数据;settingsState 返回页面分组及原设置/按钮索引,只有按钮也可形成页面,不重建偏好解析或内核。
  • plugins.settings.catalog 校验完整清单和私有安装身份,已启用插件生成语言/构建页面;多个贡献者稳定排序,显示名来自已启用声明,不透明ID兜底。64个插件、512个动态页有界。
  • plugins.settings.navigation 统一静态/动态两级导航的搜索、父节点保留、展开与顺序;512动态页另加64宿主页预算,并覆盖超过512个总节点的合法容量回归。
  • plugins.settings.delivery 只消费原生适配器给出的目录/工作区/版本/启用事实;全局或项目作用域路由、效果校验去重在Core执行。通知不携带设置值,接收方读取自己的项目层。
  • 内部dispatcher、共享契约与fixture同步,客户端类型化桥接及真实窗口/原生来源消费者一并交付。没有新增公开插件宿主RPC、SDK协议、工具专属分支或文件I/O。

类型专属:feat

  • macOS和Windows使用同一Core与Viva实现;两端cgo消费者已运行。
  • 完整原生GUI及settings2能力准入仍待验收;同一应用的窗口通知不等于跨进程同步,也不新增多工作台入口。

范围检查 / Scope checks

  • 确定性规则留在Rust,原生目录身份/存储/窗口生命周期在客户端;契约与fixture逐字节一致。
  • Core英文模块说明/Rustdoc、定向fmt与59项插件测试通过。
  • 新增内部命令不修改公共插件协议;本节点公开API表、SDK协议同步N/A。
  • 客户端功能矩阵、i18n、决策笔记、资源只读与测试稳定性门禁已更新/运行;没有新发行可写目录或可复用缓存。
  • #1802 跟踪全量迁移日志/共享边界等价门禁;完整迁移、SDK/发行验收仍未完成。

验证 / Verification

  • Core 插件59项、注释/Rustdoc、所属2021 edition定向fmt和契约/fixture镜像检查通过;本节点是内部桌面接口,未修改公开插件协议,不触发本节点SDK协议同步。
  • 本批 macOS 固定2db0e03、clean、无override的全量运行:2560 passed、8条件跳过;动态页10ms、跨窗口240ms。较早定向race91项通过。全量之后的少量日志去重/空数组防护等收尾改动,最终源码已通过普通/dev vet与dev构建,并由下述Windows全量及race验证;不把较早Mac全量冒称为全部最终字节的复验。
  • Windows Lithe-dev 最终源码与客户端提交2023个跟踪文件逐字节核对一致;正常固定2db0e03、Core clean、无override:2562条记录,2549 passed、13条件跳过;321个工作台顶层用例与枚举清单逐项匹配。动态页30ms、跨窗口920ms,定向race71项通过(跨窗口1.07s);普通/dev vet、dev构建、真实cgo缓存、i18n生成/源码与Node40 passed+1平台跳过均通过。证据SHA256 8e67ff2661b1af73388c1726a5d6221b86e34832bdb0652a1df37736d43ebed0。 已下载校验归档,独占服务器目录已删除,所属进程0。
  • Windows 首轮一个既有文件监听用例 TestCloseSavesEditsMadeDuringFinalDiskCheck 超时,最终完整复验通过;保留首次失败,未宣称已定位或修复其偶发原因。SSH控制连接曾断开,之后核验远端同一进程和完整报告,无重复启动或遗漏分组。
  • macOS 后续受影响包复验出现四个既有提供方启动失败/超时;两次最终race和最小UI复验未通过,测试进程/脚本的诊断包含系统 _dyld_start 阻塞,未进入测试。原生cgo缓存用例也因脚本入口加载阻塞超时;均保留报告、采样和有界清理,不把Windows通过替代Mac最终竞态/缓存验收,不宣称系统原因已修复。
  • 最终i18n10756条中英、Node41项、Notes227、矩阵254、精确PR base 5a54c41→HEAD能力变更及测试稳定性门禁、运行时bundle只读静态门禁通过。只读静态门禁在Mac覆盖两平台源码,未声称Windows运行了zsh脚本。未改编辑器模块,不触发编辑器预算基线;未新增依赖、下载入口或可复用缓存目录。

Draft CI:格式/脚本、Linux vet/全量Go、Notes和功能矩阵均通过(Desktop CI)。macOS/Windows CI按Draft策略跳过,不算原生验收。

客户端恢复包保留全部成功/失败报告、原生预览与清理证据。以下为历史节点,当前固定修订以本节为准。

此前Core节点与验证记录

关联 Issue / Linked issue

PR 类型 / Type

  • feat:复用原 Rust Core,增量提供 Viva 所缺的共享接口。

最新进度与接手入口

本节点提交 737e62b6283d8a5af8413886d2dd18e851eeffb9,客户端 e26033ce6260eb9012d2b18d207d94473ceb1c9c 精确固定此版本。保持 Draft,不合并;整次迁移尚未完成。

改动说明 / What changes

设置按钮需要受确认与安装身份保护的调用计划,并且只能复用所属工作区、所属版本已注册函数的现有会话。

  • 新增内部 plugins.declarative.settingsActionPlan:校验完整清单、安装ID/版本、实际启用及项目事实,返回 confirmationRequired/unavailable/invoke;只有已确认 invoke 才包含函数与空参数。没有 I/O、进程启动或设置保存。
  • 新增内部 lsp.functionProvider:候选最多64个,限制字符串/路径与重复ID,按稳定顺序筛选实际会话注册、ready和工作区;版本事实来自原生launch owner。释放注册表锁再检查各会话,不增加事件读者、不启动进程,不使用relay跨工作区回退。
  • 两种launch plan增加经过清单校验的owner ID/版本,供客户端保持不可被界面显示元数据替代的身份。
  • 复用既有函数注册、请求和取消协议;镜像契约及两份共享fixture与客户端逐字节相同,各7组。没有修改public plugins/v1、capabilities或plugin_function协议,不新增宿主方法/通知或SDK发版要求。

此前pin文档编辑、原生来源计划、插件设置投影/编辑、安装版本选择、URI归属与DAP时序改动仍包含在本Draft中,历史细节如下。

范围检查 / Scope checks

  • 共享策略保留Core,平台原生I/O及窗口所有权在客户端;未重写内核。
  • 契约、fixture、dispatcher、Go真实消费者同步验证;本节点未改变插件后端公开协议。
  • Core模块英文说明、Rustdoc、安全说明、定向fmt检查通过。
  • 全量迁移日志/边界等价门禁、SDK与发行验收尚未完成,客户端#1802跟踪现有缺口。

验证 / Verification

  • Core插件57项、function-provider1项(7组向量)通过;客户端真实会话检查覆盖同根/异根、同版本/异版本及函数注册。
  • macOS本地覆盖源码全量2544passed+8条件跳过;随后原样提交为737e62b。Windows正常固定737e62b、clean、无override,2533passed+13条件跳过,320个工作台顶层用例逐项匹配,Windows动作链race30项通过;两端cgo真实消费者已执行。
  • macOS后续固定pin及race复验遇到脚本/测试/提供方停在系统_dyld_start;保留失败与清理,不记为通过。原生GUI未验收,不能由组件测试替代。
此前Core节点记录(历史修订仅供追溯,当前固定737e62b)

最新进度(工具链原生来源保护节点)

新增提交 9bd06ef3ea732ff1d7db6e6f37280c29dab6b25e。保持 Draft,不合并;客户端 PR #1799 继续完整迁移。

新增三条内部桌面命令 pinStoragePlan/decodePinDocument/editPinSources:Core 提供来源路径、预算、严格重复键/schema检查、无变化精确字节保留及忽略编辑计划。复用原 pin 选择/继承/合并,并抽取原插件设置 JSON 解析器共享使用。ignore 0.4.33 仅作有界内存匹配,不读取全局文件或启用遍历。共享契约及24组fixture与客户端逐字节一致。

来源3项、既有工具链80项、插件56项通过;Core注释与2021 edition定向格式通过。真实macOS及Windows正常固定此提交的完整Go消费者分别2514/2503项通过(另8/13条件跳过)。首次Mac全量Provider启动失败保留,独立及完整复验通过,未声称根因已修复。原生来源所有权、权限、发布和清理属于客户端适配器。


关联与状态

Refs 1lck/Lithe-IDEA#1794;这是 Draft 客户端 #1799 的增量 Core 依赖。继续使用原 Rust Core,不重写内核。保持 Draft,不自动合并;客户端固定到 36d84b6f115d4edb697deea5a4f95cc313ce0211。

改动

Viva 已有原生工具链保存和 Debug 适配,但缺少 Core 文档编辑接口,且启动时忽略实际插件偏好。本 PR 把确定性编辑、继承和 Debug 状态转换继续留在 Core,平台只负责原生 I/O 与呈现。

  • toolchains.editPins 对捕获文档批量编辑目录 pin。复用已有工具、路径与资源校验;非法批次整批拒绝;保留 legacy 字段、其他目录/工具和 dormant pin,仅清理被编辑路径的空容器。Go 不再合并 pin schema。

  • DAP 允许先 stopped/terminated、再确认 launch/attach。确认只将仍 launching 的会话转为 running,避免覆盖暂停或复活已结束会话;完成事件仍正常返回。补齐确定性时序 fixture。

  • 新增 plugins.declarative.settingsState:Core 解析完整全局/项目文档,返回声明、全局与实际生效值、来源、归一化 scope/effect、动作和原生有界读取计划;不依赖宿主拼接或预过滤 JSON。没有设置声明时明确无需读取无关偏好文件。

  • 新增 plugins.declarative.editSettings:校验 1–32 个唯一声明的完整编辑批次,限制类型/作用范围/文档大小,null 只清除当前层覆盖;保留其他插件与 dormant 设置,返回完整文档、删除/变化状态和实际改变的效果列表。复用 serde 拒绝重复 JSON 键,拒绝时没有部分替换文本;未变化文档保留原字节。

  • 同步 Core 公开契约及共享 settings-documents.json fixture。原始声明值保留给启动规划,显式无效程序路径仍失败,不被默认值掩盖。

  • 恢复完整 Core 注释门禁:模块文档、英文注释、unsafe Safety、Rustdoc 与链接检查。旧字符匹配会把测试字符串里的注释分隔符误认成注释;改用固定 rustc_lexer token helper,只分析真实注释,不放宽 Unicode 数据或文档要求。固定 Cargo.lock,helper/文档输出仅写调用者 Cargo target 或检出内 .artifacts/rust-core-checks/,不进入发行包或跨工作树复用。

  • 设置状态增加清单元数据、Core分组、全局/项目编辑控件初值和重置值、继承/无效存储/可编辑状态;可选owner绑定安装注册的ID/版本。编辑接口接受互斥的原始text输入,整数到保存时才解析,仍整批拒绝;共享编辑样例22→28。

  • 新增 plugins.installed.select,复用原PluginVersion数字比较,对有界原生目录事实先选最新、再按需过滤停用;不复活旧版本。返回索引化拒绝原因,8组共享fixture覆盖版本/身份/重复与停用。

  • 新增 lsp.documentIdentity,复用原WorkspaceScope、file URI规范化和workspace-edit原生解码,返回工作区内诊断的原生/显示路径,拒绝Windows无盘符绝对URI误作相对路径。21组跨平台fixture覆盖盘符、UNC、大小写、越界、空格与Unicode。Core现有LSP location解码也复用同一实现,修复真实Windows clangd跳转返回 /C:/... 而被拒绝;驱动器及percent盘符回归先失败后通过。

命令没有文件 I/O,也不授予插件启动许可。确认、原生权限、字节冲突、取消、原子写入和回读由客户端负责。没有新增插件后端方法、宿主协议或 SDK 版本;没有把 settings v2 声明为完整宿主能力。

验证与边界

  • 原有工具链100项、pin14项、DAP引擎59项和注释词法helper3项在此前节点逐项计时通过;失败/修复证据保留。当前设置/安装版本相关56项、文档身份21组fixture、workspace-edit fixture和盘符低层回归通过。
  • 当前完整注释/Rustdoc门禁、修改文件定向fmt和diff检查通过。全workspace fmt有未改动agent-host格式差异,未顺手重排。
  • 客户端固定当前Core后,macOS全量2484项记录(2476passed、8conditional skipped)通过;当前相关race34项、普通/dev vet、dev构建及真实LLDB1项通过。
  • Windows标准固定当前Core36d84b6、clean、无override:完整2478项记录,2465passed、13conditional skipped,318个工作台顶层测试无遗漏。真实clangd文档同步/Hover/补全和修复后的头文件跳转通过;另三项原失败回归全通过,vet/devvet/dev构建及native-cache1通过。客户端i18n根目录漏扫已修复,Mac41passed,Windows40passed/1平台跳过。独占服务器目录已删除、进程0,原始失败和完整证据已校验归档。
  • macOS曾有Provider helper在dyld启动处停滞的失败,当前完整重跑通过,未宣称已修复系统原因;原始LLDB manifest隔离夹具不代表市场安装或settings2准入。

客户端HTML/JUnit、原生窗口证据、失败采样与源码bundle在其恢复目录。完整Viva迁移仍进行中:settings2全部动作/页面/跨窗口生效、原生GUI与正式市场准入等未验收。保持Draft,不ready、不合并;现有unused/dead-code及最低macOS链接警告继续明确保留。

@1lck 1lck changed the title feat(toolchains): 为 Viva 设置提供原子目录 pin 编辑接口 feat(core): 补齐 Viva 工具链编辑与真实 Debug 时序 Nov 9, 2026
@xiaoyumuxi
xiaoyumuxi marked this pull request as ready for review November 9, 2026 15:11
@1lck
1lck marked this pull request as draft November 9, 2026 18:15
@1lck 1lck changed the title feat(core): 补齐 Viva 工具链编辑与真实 Debug 时序 feat(core): 补齐工具链编辑、Debug 时序与插件设置文档 Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant