Skip to content

修复配置编辑器光标错位,简化执行输入 - #3

Open
raozhiyong11 wants to merge 167 commits into
Adsryen:mainfrom
raozhiyong11:main
Open

raozhiyong11 wants to merge 167 commits into
Adsryen:mainfrom
raozhiyong11:main

Conversation

@raozhiyong11

Copy link
Copy Markdown

修复

配置编辑器光标错位(重点修复)

  • 修复高亮层与光标层字体宽度不一致导致的横向偏占位:瞄着文字点击,光标精确落位,行尾也不偏(此前在部分字体环境下每 15 个字符左右错 1 个占位,越往行尾偏得越多)
  • 修复长内容滚动到底后再点击光标错行的问题(切断滚动到底后的链式滚动)

其他修复

  • 批量替换场景下应用计划不再在执行前被误判 stale(freshness 指纹基准改用生成计划时的原始来源值)
  • 应用计划确认面板被 dry-run / 执行进度块顶起、把变更工作台压塌的布局问题:主列改为纵向滚动
  • 配置浏览分组下拉在纵向筛选栏中被撑到异常高度;移除筛选栏多余的"分组"标签

改进

  • 生产目标的应用计划强确认简化为输入固定关键字 APPLY(容忍大小写与首尾空格),不再要求复制完整长确认文本
  • 应用计划确认面板新增执行条件提示:按钮禁用时逐条显示原因(未确认、无选中项、存在阻断项、任务执行中、已执行成功),满足时显示"已满足执行条件"

Adsryen added 30 commits June 27, 2026 17:41
- 引入 Vitest 并覆盖前端核心纯函数与状态模块

- 新增配置归一化和审计矩阵计算逻辑

- 拆分 Nacos client 结构并补充后端单元测试

- 完善 todo 阶段规划与后续 UI 承接事项
- 补充环境间配置应用和晋级流程

- 增加操作历史与回退规划

- 调整 Apollo 和 WebDAV 后续里程碑顺序
- 引入 React Testing Library 和 jsdom 测试依赖

- 新增 DiffPanel、Pager、Select、ConfirmModal、CopyButton 组件测试

- 提供组件测试专用 setup,避免影响纯函数测试环境
- 覆盖连接管理保存、删除、测试连接和 SSH 配置路径

- 覆盖配置浏览列表加载、搜索、编辑校验、发布和删除确认路径

- 补齐连接管理必填校验的中英文文案
- 覆盖新建配置发布、格式校验、发布失败和必填校验路径

- 覆盖删除确认的精确输入、取消和失败恢复交互

- 覆盖历史加载、版本对比和回滚发布流程

- 修复配置编辑与历史回滚提示的本地化占位符问题
- 在近期执行顺序中明确检查更新为下一项任务

- 补充应用检查更新的版本来源、更新源、后端接口和前端交互规划

- 同步当前自动化测试覆盖状态与后续检查更新测试项
- 新增 manifest 更新检查、版本比较、国内加速线路回退和 HTTPS 下载校验

- 在关于页接入检查更新、下载入口和全局代理配置持久化

- 补充 Go、Wails 绑定、前端 API、设置存储和 About 组件测试

- 同步 todo 中检查更新和代理支持的阶段状态
- 增加 MAJOR、MINOR、PATCH 和预发布版本规则

- 将待办按版本和 P0/P1/P2 优先级重新组织

- 收敛重复主题章节为能力池和取舍清单
- 新增通用 provider 模型、接口和 Nacos 适配器

- 在 App 中注册 NacosProvider,为后续统一分发做准备

- 补充 provider 适配器和 App 注册测试

- 同步 todo 中 v1.1.0 P0 的第一批完成状态
- 在 App 暴露 ConfigCenter 通用 provider 分发方法

- 新增前端 configCenter API 类型包装和 Wails 绑定

- 补充 Go 分发测试和前端 API 包装测试

- 同步 todo 中 v1.1.0 P0 的前端 API 边界进度
- 将 Nacos 命名空间、配置和历史读取迁移到 configCenter API

- 保持前端 Nacos API 签名和返回结构兼容

- 补充 MSE Nacos 的 v1.1.0 阶段规划

- 增加 Nacos API 兼容桥接测试
- 增加 MSE Nacos 的 AccessKey 鉴权请求头注入

- 扩展连接模型和 provider profile 传递 MSE 认证信息

- 在连接管理中加入 MSE 类型和 AK/SK 表单入口

- 补充 MSE 鉴权、连接迁移和 API 桥接测试
- 标记 MSE Nacos 连接第一阶段已完成

- 同步 MSE 鉴权和连接迁移测试状态

- 调整下一步工作指向组件回归和连接管理收口
- 废弃SSHConfig中的remoteHost和remotePort字段,仅保留兼容旧数据
- 从连接的baseUrl中自动提取远程主机和端口用于SSH隧道
- 移除页面上的远程主机/端口输入组件和对应多语言文案
- 更新测试用例适配新的配置推导逻辑
- 清理保存连接时的冗余SSH配置字段
- 补充多语言国际化文案,新增项目、环境、来源相关翻译
- 扩展连接数据结构,新增项目、环境、来源等元字段
- 添加连接展示标签生成函数,整合项目/环境/来源信息
- 重构连接列表渲染,按项目和环境分组展示
- 新增连接编辑表单,支持配置项目、环境、来源和默认来源标记
- 更新测试用例,覆盖新增的元数据存储和展示逻辑
- 优化多处选择框和页面标题的展示文本,使用整合后的连接标签
- 新增多语言国际化文案,包含审计、备份、任务中心、设置等模块
- 重构应用布局,添加可折叠侧边栏与全新导航系统
- 实现连接管理、审计、备份等页面的基础框架
- 为About组件新增嵌入式渲染支持
- 新增页面通用样式与未开发页面占位页面
- 持久化侧边栏折叠状态到本地存储
- 新增Wails后端方法:选择本地目录、校验本地快照目录结构
- 实现LocalProvider配置源,支持读取标准目录结构的本地配置快照
- 新增连接管理相关字段与逻辑:本地路径、强制使用、校验状态
- 添加本地快照类型连接的表单、校验与展示逻辑
- 完成本地快照源的测试用例与国际化适配
- 限制本地快照源为只读,禁止发布/删除配置操作
- 新增SSH配置档案持久化存储与管理逻辑
- 为连接模型添加sshProfileId字段支持配置复用
- 实现SSH连接测试后端接口与前端页面
- 重构SSH隧道解析逻辑优先使用档案配置
- 新增SSH管理页面与国际化文案
- 完成对应单元测试与文档更新
- 新增阿里云MSE AKSK连接测试逻辑
- 重构侧边栏折叠按钮位置与样式
- 实现本地快照目录自动识别分组功能
- 添加配置对比排序偏好设置
- 新增SSH连接测试防抖与错误复制功能
- 优化Nacos请求错误日志携带请求路径
- 完善多语言文案与本地化提示
- 新增DiffView组件与单元测试
- 修复About页代理配置逻辑
- 优化连接测试状态管理与表单交互
- 移除truncate截断逻辑,保留完整响应文本用于错误排查
- 前端连接测试结果自动截断展示,保留完整内容用于复制
- 标准化Nacos地址,自动补全协议前缀
- 重构MSE鉴权签名逻辑,兼容public命名空间为空处理
- 自动重试缺少nacos前缀的API请求路径
- 完善各类测试用例覆盖新逻辑
- 新增 errorCenter 全局错误管理模块,支持错误聚合、合并与持久化
- 为删除、编辑、加载配置等多个场景添加统一错误上报逻辑
- 新增 MessageCenter 侧边栏消息入口与消息面板,支持查看、复制、删除消息
- 新增 ErrorDialog 详情弹窗,支持查看完整错误信息与重试操作
- 新增测试链路可视化组件 TestTraceView,优化连接测试展示
- 更新待办文档,同步当前开发进度
- 为多个页面组件添加单元测试,覆盖错误上报与消息中心功能
- 调整侧边栏布局,新增消息中心入口与折叠适配逻辑
- 优化样式系统,新增消息中心、错误弹窗与测试链路相关样式
- 为Nacos配置中心适配阿里云MSE AK/SK鉴权场景,空group自动补全为DEFAULT_GROUP
- 新增DiffPanel组件受控模式、仅显示变更开关隐藏功能
- 新增命名空间手动选择后不再跟随连接默认配置的逻辑
- 新增批量对比视图全局仅显示变更开关
- 新增加载失败内联提示框,支持复制错误和重试操作
- 优化App组件命名空间同步逻辑
- 补充多组测试用例覆盖新增功能和修复场景
- 新增样式类美化内联错误和批量对比工具栏
- 新增updateConnection工具函数用于更新连接配置
- 为DiffView组件添加连接变更回调,支持同步更新连接配置
- 新增多语言文案用于命名空间加载相关操作
- 优化DiffView和连接管理器的命名空间选择UI,添加设为默认按钮
- 为连接管理器添加命名空间批量加载功能
- 新增对应测试用例验证新增功能
- 新增多语言国际化文案,支持重试、环境提示等新功能文本
- 重构DiffView组件,添加项目分组、环境标签展示功能
- 实现来源面板折叠/展开、自动匹配配置功能
- 新增配置加载失败时的重试按钮和错误复制功能
- 新增测试用例覆盖智能筛选对比源和重试逻辑
- 优化样式,添加环境徽章样式和错误提示面板样式
- 新增连接复制功能,支持将现有连接生成为可编辑的草稿
- 添加中英文国际化文案,包括复制按钮、副本后缀和复制成功提示
- 优化连接列表操作区样式,新增复制按钮并调整布局
- 改进连接ID生成逻辑,加入序列数字避免重复
- 新增复制连接的单元测试用例
- 新增多平台进程分离相关的Go代码
- 添加代理仅用于更新检查的设置项
- 实现更新下载、进度上报和安装重启逻辑
- 重构About页面支持更新全流程交互
- 完善多语言文案和CI打包脚本
- 更新全局版本变量appVersion的数值
- 同步项目版本号至1.1.0
- 添加空release note时的默认值生成逻辑,避免无内容的release note
- 重构update.json生成方式,使用jq传参替代内联模板,提升可读性和可维护性
- 提取下载地址基础路径为变量,减少重复代码
- 移除代理仅用于更新的配置,统一全局代理使用逻辑
- 重构连接管理表单,新增配置中心类型选择与分组
- 更新多语言文案与设置页面布局
- 优化批量对比错误提示与汇总展示
- 调整gitignore忽略规则
- 修复部分测试用例与样式问题
- 新增Prettier配置文件并添加相关格式化脚本
- 配置ESLint并添加代码检查脚本
- 开启TS严格模式的未使用变量/参数检查
- 更新依赖包并完善todo清单中的工程质量项
- 修复代码中的变量声明和空值处理问题
- 添加缺失的ESLint禁用注释
Adsryen and others added 29 commits August 30, 2026 03:46
- normalize.ts 新增 extractDuplicateKeys():按缩进层级+key 分组,同层同 key 出现 ≥2 次即上报 key 与全部行号(纯函数,6 条单测)
- DiffPanel 新增 warnings prop,顶部渲染黄色 .diff-warning 提示条(含 key 名、行号、后值覆盖说明、人工确认建议)
- DiffView 单文档/批量对比左右两侧各自检测并生成 i18n 文案(diff.duplicateKeyWarning)
- ApplyPlanView item 详情:非 fatal 的 parse warning(duplicate key)不再隐藏,改为黄色 .apply-parse-warning
- 新增 e2e T-DIFF-06:注入重复 logging key 的 A 侧断言警告条内容(key/行号)
- state-management spec 补录 parse warning 可见性规则
- withEditedAfterValue 纯函数:编辑后重算解析/fingerprint/action(4 条单测)
- ItemDetail 新增"编辑目标内容":CodeEditor + validateConfig 校验 + diff 预览即时更新
- 保存后持久化计划并写 apply_edit_target 会话事件(含完整编辑后内容)
- 修复 .apply-edit-editor 无定位高度导致编辑面板遮挡"全选"按钮的布局 bug
- 全选改为只增减可执行项,不清空已勾选项(防遮挡误触)
- i18n(editTarget 等 3 键)+ 样式;e2e T-AP-05 全链路回归(编辑→执行→B 侧落库→恢复基线)
- 误提交的 retest 生成文件与 pyc 移出 git,加入 .gitignore
- extractDuplicateKeys 改为维护缩进→父 key 栈,按完整路径归并(payment.mock.enabled 与 alipay.enabled 不再误报)
- 列表项内部字段跨项同名不再误报;奇数/tab 缩进行跳过
- 测试数据 svc-gateway.yaml 注入真实同父路径重复(A: logging.elk / B: security.tls)
- T-DIFF-06 断言升级为完整路径 + 负向断言(不同父路径同名 key 不得出现)
- 新增 4 条 extractDuplicateKeys 单测(父路径区分/同父重复/列表项/前缀区分)
- 文案微调:强调'同一层级下'重复
- workflowStep4/Step4Detail 中英文案强化:右侧此时不会被修改,「应用后」列仅为执行后预览
- 明确只有第五步执行变更才会真正写入右侧目标
- 同步更新 ApplyPlanView 单测的步骤文案断言
- 每个计划项的目标值/应用后对比上方新增蓝色提示:预览尚未写入右侧目标
- 明确仅第五步执行变更后才真正应用,降低把预览误认为已应用的概率
- UX-01: 进入第四步计划页未执行时,断言提示条「尚未写入右侧目标」可见、无残留已应用文案、B 侧 Nacos 内容零变化
- UX-02: 配置浏览编辑流:合法内容走格式校验后被「直接写入已禁用」拦截且草稿保留;重复 key 被格式校验弹窗拦截;取消后未落库
- 全量 retest 31/31 通过(workers=1)
- 91-browse-guard: A6 删除被禁拦截且 Nacos 未删、A7 新建空 dataId 校验与发布被禁、A12 刷新列表、B7 dataId 不存在不崩溃
- 92-browse-flows: A8 历史变更 tab 与回滚被禁拦截、A9 批量替换生成变更计划跳转、B6 来源切换对比正确
- 93-matrix-history: C1 配置矩阵双环境审计生成、E2 沙箱验证标记与晋级入口、E3 生成回退计划零写入、D7 执行后返回无已执行残留
- 同步更新 PRD 场景清单勾选状态
- F1/A11 快照创建入口 + 任务中心出现任务,备份快照页可达
- I1-I4 连接管理:新建必填校验/连接测试/编辑/删除/无效地址真实网络错误
- K2/K3 语言切换无漏翻;设置持久化双段断言(uncheck 落盘 + 重新挂载读回)
- L1 连接不可达:浏览页错误卡 + 重试/连接管理按钮 + 消息中心聚合条目
- L2/L3 消息中心 hover 打开、关于页版本信息
- 诊断 spec 95-diag 移除;PRD 勾销 F1/A11/I1-I4/K2/K3/L1-L3
- C2 矩阵行「跳转 Diff 对比」左右预填同 dataId + 「生成变更计划」计划页含该配置
- C3 抽查 server.port 矩阵单元格与 Nacos 双侧回读一致
- D6 B 侧外部修改后执行触发 Change plan is stale + 变更执行失败,B 侧保持外部值
- F2 快照创建→任务中心 success→备份快照页查看配置列表(bridge 补 configType 兼容字段)
- G2 任务详情字段完整(UI 无失败重试入口,按现状断言)
- H2 审计 jsonl 按 sessionId 聚合 compare/audit 会话完整事件链
- PRD 勾销 C2/C3/D6/F2/G2/H2,仅剩 A10 导出与 J1 SSH 待补
- 96-export:导出当前列表走真实 download 事件 + blob 内容断言({metadata,items} 结构),目录导出无原生弹框时优雅报错
- 97-snapshot-restore:浏览页创建快照 → 备份快照条目「生成变更计划」,成功出计划工作区/失败出错误卡片,断言不得静默停留在加载态
- 浏览器桥 ConfigCenterGetConfig 补 local-snapshot 分支(按 snapshot:<id>/快照路径定位快照缓存取内容),修复快照恢复计划生成静默卡死
- 清理诊断探针 spec 与临时调试代码
- runSingleApply 落库断言改为 B 侧与 A 侧源内容一致(B 侧目标是生产变体,原「开发环境」子串断言与数据自相矛盾)
- E3 回退计划:桥 local-snapshot 读路径已支持,成功生成回退计划(来源=快照、目标=B);保留失败路径断言兜底,不得静默卡死
- E2/E3 均复跑通过
- 执行完成断言从「success/failed 任一出现」收紧为「必须 success」,防止执行静默失败却被误判通过
- svc-gateway B 侧 elk 重复块内 index-prefix 为 elk 子键,YAML 解析器不视为重复 → 补第二处 elk 键使 B 侧重复 key 数据真实存在
- T-DIFF-06 用例开头重新播种测试数据(防其他 apply 用例写入污染基线),断言改为「完整 key 路径 + 行号对」正则,防行号漂移
- E3 回退计划在全量顺序下复跑通过(此前失败为测试顺序污染)
- E4:apply A→B 沙箱 → 标记验证通过 → 晋级到 A → dry-run → 执行
  · 晋级前在 A/retest-qa 注入差异标记 dataId + 覆盖目标内容,执行后断言
    目标侧被沙箱内容覆盖、计划外 dataId 保持原样(范围受控)
- B7-fix:dataId 手填不存在值 → .diff-loaderr 明确报错且不回退
- 落库断言用任务进度 success + 回执文本 + Nacos 回读特征值,
  替代对全文相等的过度假设(apply 计划项为字段级分类执行)
- republishData 新增 publishNacosContent 通用发布 + 回读校验
- republishData: Nacos v1 最终一致性,apply 后轮询 20×500ms 再回读
- 93-matrix-history: 晋级按钮文案从「晋级到生产」对齐为「生成变更计划」
- 98-remaining: 执行落库断言改为轮询等待,消除并行数据竞争
- installRetestBridge: 覆盖 window.go 前先 delete,修复内联桥时序冲突
- retestBinding: ListSnapshots 按 createdAt 倒序(修复 S7 选中旧快照)
- retestBinding: ImportSnapshotWebDAVPackage 改返回完整 Snapshot
- retestBinding: 移除 node:crypto/node:fs,md5 改 djb2,浏览器兼容
- 80-pages: S5 SSH 测试成功/失败路径断言对齐
- ui.ts: 新增 snapshot/ssh 相关 UI 辅助选择器
- gen.py: 补充 retest 测试数据生成
- 99-s-browse-extra: S1 搜索高亮 / S2 鼠标拉选复制 / S3 文本替换
- 99-s-diff-extra: S4 对比高亮 / S5 SSH 隧道 / S6 WebDAV 快照包
- 99-s-history-extra: S7 快照列表 / S8 操作历史回退 / S9 回退计划执行
- 99-s-misc: S10 审计筛选 / S11 设置持久化 / S12 语言切换 / S13 消息中心
- 新增 j1-ssh-probe.test.ts:ssh2 密钥认证握手 + exec + forwardOut 断言
- 新增 ssh-keys/:ed25519 密钥对(confscope-retest-sshd2 容器用)
- state.ts:ssh 端点改为 2223 端口 + retuser + privateKeyPath
- PRD 08-31:J1 勾销([-] → [x]),A-L + S 组 68 场景全绿
- 新增 ssh2 devDependency
- package.json version: 1.8.0 → 1.9.0
- retest 桥 mock 版本号对齐 1.9.0(GetAppInfo/CheckForUpdates/快照 toolVersion)
- storageSeed 版本字段对齐
- index.html 删除 /manual-bridge-sync.js 的 script 引用(retest 临时桥,曾在用户 profile 首启时写入测试数据覆盖真实数据)
- 修复 <title> 乱码,统一为「配置中心管理工具」
- 新增 scripts/check-production-bundle.mjs:扫描 dist/ 中 retest/manual-bridge 脚手架字符串,命中即失败
- wails.json 的 frontend:build 改为 pnpm build:web && pnpm check:bundle,生产包混入测试脚手架时构建中断
- 根目录新增 build-latest.ps1(Windows:-Launch/-ForceClean)与 build-latest.sh(Linux/WSL:--launch/--clean),一条命令用最新代码重编可执行文件
- 更新 build/appicon.png、build/windows/icon.ico 图标产物
- scripts/launch-confscope-portable.vbs:注入 CONFSCOPE_DATA_DIR=portable/ConfScopeData 后启动 build/bin/ConfScope.exe
- 桌面快捷方式统一走该入口,保证正式数据目录唯一
- 数据文档契约 schemaVersion 2,含 connections/settings/sshProfiles 等 11 个数据分区,与 .csbackup payload 字段对齐
- SaveAppDataDocument 原子写:临时文件 + 读回校验(大小/SHA-256)+ rename,失败返回错误供前端重试
- GetAppDataDocument 读取校验失败时隔离为 .corrupt-<ts> 保留原文件,返回 valid=false 供前端回退浏览器缓存
- wailsjs 绑定同步新增 GetAppDataDocument / SaveAppDataDocument
- Go 单测覆盖往返、缺失、损坏隔离、旧版本拒绝、无效文档、覆盖写
- 新增 src/lib/appDataDoc.ts:启动引导(文件优先水合/缺失时一次性迁移/损坏时回退提示)、setItem 拦截 + 2s 防抖推送(失败 2s/5s/10s 重试并报错误中心)、pagehide 尽力落盘
- main.tsx 渲染前完成数据文件引导,保证首帧读到的是文件水合后的数据
- App 启动提示:已导入 N 条连接 / 已从数据文件恢复 N 条连接 / 文件损坏已隔离
- 清理缓存后从数据文件重新水合,主数据文件本身不受影响
- 设置页备份区展示数据文件位置、最后保存/备份时间
- v2 数据文档水合后旧 fixture 仍可被全部 loader 读取(文件→localStorage)
- 旧 localStorage 收集为 v2 文档再水合回读(localStorage→文件)往返一致
- 文件缺失时一次性迁移写入;缓存比文件新时回写文件(覆盖上次退出前写文件失败场景)
- 文件损坏/版本回退:回退浏览器缓存并给出 corrupt-fallback 提示
- 数据键写入触发防抖推送,保存失败按 2s/5s/10s 重试共 4 次
- >500KB applyPlans 大 payload 文档往返不丢失
- 清缓存后从文件重新水合恢复全部数据
- 取消跟踪 retest SSH 测试密钥对(私钥不入库,改为本地自生成,.gitignore 忽略)
- 取消跟踪 Playwright 运行产物 tests/retest/results-run/ 并加入忽略
- 取消跟踪 .trellis 内部任务文档(.gitignore 已有 .trellis/ 规则,历史遗留跟踪)
- 取消跟踪 scripts/launch-confscope-portable.vbs(含个人绝对路径,仅本地保留)
- ssh-keys README 改为自助生成密钥说明;本地已重新生成密钥对完成轮换
- 恢复跟踪 build/linux/confscope.desktop(release CI 打包 .deb/.rpm 依赖,此前被误移除)
- build-latest.ps1 注释不再引用已取消跟踪的本地启动脚本
- gen.py 上游服务 IP 由 10.0.x.x 改为 192.0.2.x(RFC 5737 文档专用保留段)
- 避免开源仓库中出现形似真实内网拓扑的私有地址
- 编辑器高亮层 code 补 font:inherit,修复两层字体宽度不一致导致的光标横向偏占位
- 编辑器 textarea 增加 overscroll-behavior:contain,修复滚动到底链式滚动导致的光标错行
- 生产强确认简化为输入 APPLY 关键字,确认面板新增执行条件提示
- 修复批量替换场景 freshness 误判 stale:指纹基准改用原始来源值
- 应用计划主列改纵向滚动,确认面板增高不再压塌变更工作台
- 修复分组下拉被纵向筛选栏撑高,移除多余的分组标签
@Adsryen

Adsryen commented Sep 21, 2026

Copy link
Copy Markdown
Owner

感谢提交这个 PR,也很抱歉现在才注意到。平时工作比较忙,没有及时关注历史提交节点中的 PR,导致这次 review 被耽搁了,向你说声抱歉。

我已经认真看过这次提交,里面几个问题的定位很准确,尤其是:

  • 配置编辑器高亮层与输入层字体不一致导致的光标横向错位;
  • 编辑器滚动到底后可能出现的点击位置错行;
  • Apply 页面执行条件不够直观、确认区域可能挤压工作台的问题。

这些改进方向我认可,也希望能够合并到主线。

不过这个分支基于较早版本的 main,而主线在 2026 年 9 月 7 日之后已经继续演进,当前产生了较大的历史分叉和合并冲突。其中“批量替换后 freshness 误判 stale”和“浏览页分组下拉布局”两项,也已经在主
线通过后续提交处理了。直接合并整条分支会带入较多无关历史,风险比较高。

这不是对本次贡献的否定。为了让其中有效的改动能尽快、安全地进入主线,建议基于最新的 Adsryen/ConfScope:main 新建一个干净分支,并拆成较小的 PR:

  1. 优先 PR:编辑器光标与滚动错位修复
    只包含高亮层字体继承和 overscroll-behavior 相关修复;这部分独立、价值明确,我会优先 review。

  2. 后续 PR:Apply 页面确认提示与布局优化
    包含执行条件提示、确认区增高后的滚动布局等体验优化。

  3. 将生产环境确认从“与计划和目标绑定的确认文本”改成固定 APPLY,涉及写入保护策略的取舍,建议单独讨论确认后再合入。

如果你愿意拆分,我会优先协助 review 和合并。再次感谢你的贡献,也抱歉让你久等,期待你的后续 PR!

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.

2 participants