更新日期:2026-08-23。本文件只保留当前状态和下一步;完成事项合并成结论,不追加按日期排列的开发流水账。
maingit status 和相关 diff,不要重置来源不明的改动Wire(span)rungs=[] 启动和保存,不再预置“网络 1”;第一次添加条件、横线或输出时由编辑服务原子创建网络,删除最后一个网络后也能回到空逻辑Node / Wire 和输出连接才绘制导线。连续追加单格横线满十列后,下一次追加自动进入新网络并可一次撤销Wire,保证每条支路视觉上都接到右侧汇合点320~1600、高 200~800,默认新建页面为 800×400,页面缩小导致控件越界时由服务层原子拒绝docs/二次开发/ 是已有未跟踪资料,不能因当前任务删除performance_tests 性能目标以及真实 PLC 人工验收;不再保留 Qt UI 自动化目标,长期测试规则见 docs/测试约定.md1.0,保存多 HMI 页面、初始页、报警定义、M/D 注释、多控制逻辑和结构化梯形图;不读取旧 dataPoints 或 stages/branches 格式textColor 使用 #RRGGBB,字体使用 fontSize、fontBold 和 fontItalic;缺失时使用原有默认样式,属性经现有 properties 保存,无需升级 JSON 版本Node / Wire / Series / Parallel 表达式树和正交网格,不保存自由线段;前 10 列为条件区,输出最多位于第 11 列Wire(span) 和真实条件节点Wire 也按单格提供点击目标;在其中一格插入触点时,服务层原子拆分为前置横线、触点和后置横线,继续点击条件工具会逐格消费右侧横线,保持原总列宽以及撤销/重做语义docs/用户使用/数量边界确认方案.md,核心常量集中在 app/src/domain/project_limits.h收敛提交测试体系:删除 Qt UI 自动化目标及其 2689 行测试代码,功能回归只保留 9 个 Domain、Service、JSON 和 Fake PLC 目标;性能测试改为通过 -Suite Performance 独立运行并输出 CSV,真实 PLC 继续人工实测和记录
整理寄存器仓库文件边界:register_repository.h 只保留访问契约和结果类型;新增 virtual_register_repository.h/.cpp 承载离线内存实现;应用与测试 qmake 清单及具体使用点均改为显式包含新头文件,PLC 仓库继续位于 infrastructure
调整控制逻辑网络生命周期:新建工程和新建逻辑不自动创建网络,首次实际编辑才创建网络 1;首次条件不生成隐式 Wire,首次横线只保存一格 Wire(span=1),首次输出生成无条件输出网络;删除最后网络允许恢复为空逻辑
收窄梯形图导线投影:空网格和并联补线格不再绘制真实水平线,无输出网络不再绘制条件末端到输出槽的长线;保留网格、选择态和必要的模型导线
增加横线连续追加的十列边界处理,普通追加达到十列后自动新建下一网络;自动建网与编辑共用一条撤销记录,串联、并联领域表达式和执行语义保持不变
修复短并联支路右端断线:新增支路宽度小于主支路时,渲染层补齐支路输出到右侧汇合点的水平结构连接,保留空网格不落盘和不绘制无逻辑横线的规则
修复首次横线自动建网后撤销再插入失败:梯形图重载时清除已被撤销的过期当前网络 ID,横线可以再次自动创建网络
修复并联补线格选中后横线视觉消失:补线格继续使用分支插入目标,但在选中框上层按运行激活状态重画派生横线,普通空网格仍不绘制真实导线
修复横线单格选区建立并联旁路时误使用整条横线宽度:新增按横线表达式 ID 和列偏移处理的服务接口,选中范围会原子拆分前置、旁路和后置横线,旁路宽度严格等于选中格数
修复视觉连续横线由多个相邻 Wire 表达式组成时误提示“必须来自同一条横线”:服务层按同一串联路径的绝对列合并相邻横线网格,仍拒绝跨触点、跨并联支路和跳列选区
明确拒绝空白并联格直接建立并联支路或竖线连接;空白格与节点/横线混选时给出明确提示,真实节点和横线网格分别路由到对应编辑用例
统一梯形图可见横线网格交互:新网络空格、持久横线格和并联补线格都可直接点击添加条件;并联远端格会只保存必要的中间 Wire(span),不改变空网络、JSON 或运行语义
新增 LogicEditorService::insertConditionInBranchAtColumn(),校验目标必须位于直属并联分支的视觉补线范围内,并保持失败回滚、脏标记和一次撤销语义
网络背景图元命中范围收窄到标题栏,点击线路内容区不再意外选中整条网络;删除网络仍可通过点击标题栏完成
修复梯形图编辑失败回滚后错误保留工程脏标记的问题:回滚同时恢复工程内容和操作前的 modified_ 状态;保存后超出十列的条件插入不会再触发退出保存提示,已有未保存修改也不会被失败操作清除
根据编程器面向设备交付、调试和验证工程师的需求定位,不恢复旧的纯 HMI 操作员窗口;新增职责明确的 RuntimeMonitorWindow,承载离线和真机共用的完整运行监控大屏
主窗口已移除运行监控页签和运行时布局切换;点击离线或真机运行会弹出最大化监控窗口,运行期间只允许监控界面内的返回按钮退出,系统窗口关闭路径被忽略,应用退出时才关闭顶层窗口,且全应用只创建一份 RuntimeMonitorWidget
CTU/CTD 输出节点保持现有梯形图网格宽度,将 CV 和 PV 拆成带水平内边距的两行显示,避免 D4000、32767 等边界配置在右侧电源轨处被裁剪
报警列表标题输入上限为 12 个字符,报警文本输入上限为 20 个字符;运行消息保持单行并在空间不足时显示省略号
新建报警列表默认尺寸调整为 360×136,默认字号比应用字体小 2pt;运行态按当前页 1~5 条记录收缩高度,超过 5 条可通过表头按钮翻页且确认命中使用当前页索引
主窗口默认工具栏布局调整为运行模式栏第一行,HMI 或梯形图编辑工具栏第二行;编辑工具栏仍允许用户拖动重新停靠
新增 HMI 保留外观属性键和领域校验:颜色为严格 #RRGGBB,字号为 6~72,粗体和斜体为 true/false
HMI 页面属性面板新增宽度和高度编辑;HmiEditorService::resizePage() 复用页面边界校验并纳入撤销/重做,成功后画布和工程树尺寸摘要同步刷新;JSON 页面尺寸也统一按 320~1600 × 200~800 校验
属性面板新增颜色输入与选择按钮、字号、粗体、斜体;通过既有 HmiEditorService::updateControl() 原子提交并保留撤销/重做
HmiGraphicsItem 统一应用文字外观,保留地址提示、按钮禁用色、指示灯状态色、控件边框和选中框的原有语义
更新工程格式和数量边界文档;领域、HMI 编辑服务和 JSON 往返由自动化测试覆盖,主窗口工作流改为交付前人工验收
梯形图编辑器新增按绝对条件列插入和按横线单格替换的服务接口;UI 统一将空格、横线格、已有条件和无选择状态路由到对应编辑用例,选中条件后串联插入会优先替换紧邻的右侧横线格,再考虑扩展网络宽度
梯形图条件工具提示已明确支持在选中空网格或横线处插入;线圈等输出指令仍写入独立的固定输出槽
0.145 ms,4001 个 M 寄存器完整读写约 0.052 ms;CSV 位于 build/tests/release/performance_tests/benchmark.csvbuild/release-submit/release/integrated_platform.exe 构建并链接成功,git diff --check 通过COM3 / 9600 / 8E1 / 站号 1 完成真实 PLC 安全读写:D4000 从原值 0 临时写入并读回 1,随后恢复并读回 0;未下载 PLC 程序,未执行 RUN 动作json/motor_forward_reverse.json 完成真实 PLC RUN 联动人工验收:正转启动、反转启动、停止和运行状态反馈正常git status --short,确认当前未提交和未跟踪文件仍在HmiAppearanceProperty 的保留属性键、领域校验和统一绘制路径,避免把样式逻辑放入寄存器或运行服务Node / Wire / Series / Parallel 表达式进入工程;条件区继续统一使用 ProjectLimits::kMaximumConditionColumnsAGENTS.md 做 COM3 读写及恢复验证