2.1.26258.1936

最新

修复

  • 修复 upload_to_github.py 版本号更新逻辑:badge正则限制URL域名为github.com,实际badge URL是img.shields.io,导致无法匹配;改用字符串替换方式更可靠

新增

  • 手册文件夹重命名为英文:manual/,内部文件改为 manual.html、changelog.html、manual-dev.html、manual-dev.md,同步更新所有引用路径

2.1.26258.1528

新增

  • 新增 APP_SHOW_UPDATE 开关,可通过设置 False 隐藏帮助菜单中的「检查更新」项

修复

  • 修复动作管理表双击排序时序号列错位问题(序号现在表示行号,不参与排序)
  • 规范化 app_build.bat 步骤编号为 [1/9]~[9/9],版本号计算移至步骤5(Python检查后、PyInstaller前)

2.1.26258.1052

修复

  • 修复 app_build.bat 中所有 Python 脚本路径缺失下划线的问题,统一使用正确的文件名调用

2.1.26257.2050

修复

  • 修复检查更新功能报错:NameError: name 'layout' is not defined;EXE每次启动时强制写入VERSION文件,确保检查更新可用
  • 检查更新时当本地版本等于远程版本,提示"您已是最新版本,无需更新"并显示双版本号对比

2.1.26257.1902

修复

  • 修复编辑节点窗口右键菜单「删除/上移/下移」功能无效——分支顺序错误导致 ActionInstance 时无法到达

2.1.26257.1751

新增

  • 节点管理对话框右键菜单新增「重命名」选项
  • 编辑节点窗口动作表格右键菜单新增:新建私有动作/从公共库添加/删除/上移/下移

2.1.26257.1732

修复

  • 修复动作管理/方案管理对话框右键菜单重复弹出问题——移除多余的 mousePressEvent 方法
  • 移除动作管理右键菜单中的「重命名」选项(无对应功能按钮)
  • 步骤面板右键菜单新增:添加步骤/编辑步骤/删除步骤/上移/下移

2.1.26257.1647

新增

  • 动作管理对话框表格右键菜单增加:新建/编辑/复制/重命名/删除/上移/下移/导入/导出/运行本动作/列设置
  • 节点管理对话框表格右键菜单增加:新建/编辑/复制/重命名/删除/上移/下移/导入/导出/列设置
  • 方案管理对话框表格右键菜单增加:新建/编辑/复制/删除/上移/下移/设默认/导入/导出/列设置
  • 方案面板列表右键菜单:新建/编辑/复制/删除/设默认/上移/下移/导入/导出
  • 节点库面板列表右键菜单:新建/编辑/复制/重命名/删除/上移/下移/导入/导出/转为私有节点

2.1.26257.1514

修复

  • 修复私有节点经步骤面板「维护节点」编辑后保存变空组的问题——_edit_embedded 未包装 NodeInstance.private()

2.1.26257.1452

变更

  • 计划面板列设置对话框样式与主窗口统一:按钮样式、对话框大小、标题行高

2.1.26257.1424

修复

  • 修复节点编辑窗口动作表格右键菜单不显示的问题——补充缺失的 menu.exec(QCursor.pos()) 调用

2.1.26257.1311

修复

  • 修复「转为私有节点」后维护节点导致步骤变成空组的问题——正确包装 Node 为 NodeInstance
  • 修复选中公共动作时点击「转为私有」按钮仍提示"已是公共模板"的问题——按钮点击现在根据状态分支处理

变更

  • 移除编辑公共节点/动作时的二次确认弹窗,改为按当前属性直接处理
  • 步骤面板、节点编辑器、节点库均添加右键菜单,支持快速编辑和转换操作
  • 动作编辑器「转为公共」按钮动态切换为「转为私有」,点击即生效

2.1.26256.1603

修复

  • 编辑公共节点/动作弹窗默认焦点确认在「取消」按钮——使用 QTimer.singleShot(0) 延迟到对话框真正显示后设置焦点

2.1.26256.1545

修复

  • 编辑公共节点/动作弹窗按钮 hover 边框改为淡蓝色(#93c5fd),默认焦点确认在「取消」按钮

2.1.26256.1540

修复

  • 编辑公共节点/动作弹窗按钮 hover 时边框改为蓝色(#3b82f6),增强鼠标移入的视觉反馈

2.1.26256.1532

修复

  • 编辑公共节点/动作弹窗改用左右布局——左侧橙色警告图标,右侧标题+说明+三按钮;窗口宽度缩小至 520×140;按钮 hover/pressed 效果增强(背景色变化 + 边框加深)

2.1.26256.1514

修复

  • 编辑公共节点/动作弹窗改用左右布局:左侧橙色警告图标(48px),右侧标题+说明+三按钮;固定宽度 640×160;默认焦点在「取消」

2.1.26256.1501

修复

  • 编辑公共节点/动作弹窗宽度固定为 640×180——QMessageBox.exec_() 内部 adjustSize() 会覆盖所有尺寸设置,改用自定义 QDialog 完全控制布局;默认焦点改为「取消」按钮

2.1.26256.1454

修复

  • 编辑公共节点/动作弹窗宽度固定为 640×180——QMessageBox.exec_() 内部 adjustSize() 会覆盖所有尺寸设置,改用自定义 QDialog 完全控制布局

2.1.26256.1445

修复

  • 编辑公共节点/动作弹窗宽度固定为 640×180——QMessageBox 内部布局会覆盖 setFixedSize,改用自定义 QDialog 替代

2.1.26256.1438

修复

  • 编辑公共节点/动作弹窗宽度固定为 640×200——QMessageBox.exec_() 内 adjustSize() 会覆盖 setFixedSize,改用 QTimer.singleShot(0) 延迟到对话框真正显示后设置

2.1.26256.1412

修复

  • 新建节点 / 方案后分类未自动归入「未分类」—— NodeStore.save() 与 PlanStore.save() 保存后立即注册到分类树(补调 set_item_category),后续拖放可正常调整

新增

  • 节点管理、方案管理表格支持多选(Ctrl+点击 / Shift+点击)后拖放到分类树,批量调整分类
  • 编辑公共节点/动作弹窗固定宽度 640×200(改用 setFixedSize,避免被 Qt 布局管理器覆盖)

2.1.26256.1324

修复

  • 新建节点 / 方案后分类未自动归入「未分类」—— NodeStore.save() 与 PlanStore.save() 保存后立即注册到分类树(补调 set_item_category),后续拖放可正常调整

新增

  • 节点管理、方案管理表格支持多选(Ctrl+点击 / Shift+点击)后拖放到分类树,批量调整分类

2.1.26256.1053

修复

  • 「转为公共动作」按钮选中行错误——改用 selectionModel 获取真实选中行,避免操作第0行导致误报"已是公共模板"

新增

  • 节点编辑窗口「转为公共节点」按钮(仅私有节点显示)——发布为公共模板并存入节点库

修复

  • 节点重命名后步骤面板实时同步
  • 「转为公共节点」后步骤面板节点正确更新为公共引用(🔗)
  • StepEditDialog 中编辑私有节点并发布为公共节点后能正确同步状态

2.1.26255.2216

变更

  • 大版本升级 2.0 → 2.1
  • 编辑公共动作时的三选一确认框窗口拉宽至 640px

新增

  • 动作 / 节点新增「公共模板」与「私有实例」两种形态:公共实例(🔗)关联 动作库 / 节点库中的模板,模板改动自动同步到所有引用处;私有实例(🔒) 内嵌于当前方案或节点,不入库、不进分类树,跟着方案一起走。
  • 方案文件全面自包含:节点、动作及其全部参数都随方案文件一起内嵌保存, 单个方案文件即可直接分享给他人,接收方无需预先拥有相同的动作 / 节点库。
  • 节点编辑器新增「来源」列,逐行标出动作是公共(🔗)还是私有(🔒)。
  • 节点编辑器支持把动作「转为公共」:填写名称与分类后写入动作库并变为公共实例; 重名会提示改名,若不改名则拒绝入库(不做自动加后缀)。
  • 分享方案的导入升级为智能匹配:命中本地同 ID 的模板则保持公共并刷新快照, 未命中的节点 / 动作自动降级为私有副本,导入后即可直接运行。

变更

  • 执行引擎改为「快照执行」:运行动作时直接使用方案 / 节点内已保存的参数副本, 不再回查动作库,因此方案即使脱离原动作库也能照常运行。
  • 公共实例的改动沿引用链自动同步:保存或重命名动作 / 节点模板时,所有引用它的 节点与方案快照一并刷新;删除模板时引用处自动降级为私有副本,方案仍可运行。
  • 编辑公共实例改为每次都弹出二次确认:可「修改模板(全局生效)」、 「仅改这一份(转为私有)」或取消(默认聚焦在取消上),避免误改影响其它方案。
  • 新增动作 / 节点的入口默认创建私有实例,只有明确执行「转公共」才写入动作库 / 节点库。
  • 数据格式升级为 v2(fmt:2)。旧数据在首次启动时自动迁移为公共引用,迁移前会完整备份到 userdata/.backup/v2_<时间戳>/ 并写入 v2_done 标记; 旧格式文件在内存内自动归一,保存后即转为新格式,原有数据无需手动处理。

2.0.26255.1812

修复

  • 「OCR识别」匹配模式为"全部关键词"且命中时执行异常崩溃 (in <string> requires string as left operand, not list): 全部模式返回的是命中关键词列表,坐标定位却按单个字符串处理; 同时修复该模式下未命中全部关键词时被误判为"已命中"的问题 (空列表被当成真值)。命中坐标定位现按关键词列表逐个匹配, 并兼容 re: 正则关键词。

2.0.26255.1329

变更

  • 动作编辑器的类型下拉框按 8 组分类显示(鼠标 / 键盘 / 输入 / OCR与图像 / 窗口 / 流程控制 / 数据 / 打开),组间插入置灰 分隔行,33 种动作一目了然;组内按使用频率排序。 弹出列表最多同时显示约 14 行(按屏幕可用高度 60% 兜底限高),超出部分滚动查看,高缩放 / 小屏不会超出屏幕。 仅调整下拉框显示顺序与分组,动作数据与已有动作不受影响。

2.0.26255.1147

新增

  • 「双击后输入」「双击后输入完Tab」两个动作:左键双击定位 (选中行 / 展开列表项等场景)后粘贴输入文本,Tab 版输入完成后 自动再按一次 Tab。复用文本 / 先清空 / 密码库字段, 动作类型增至 33 种。

2.0.26255.1135

新增

  • 「滚轮滚动」:移动到坐标后滚动滚轮 N 格(方向 up/down), 补上网页 / 列表翻页能力空白。
  • 「复制选区到变量」:可选先点击聚焦,Ctrl+C 复制当前选区内容, 读剪贴板存入 {变量},与模板/设置变量配合做数据抓取。
  • 「激活窗口」:按标题关键词(逗号分隔多个)找到窗口并带到前台, 未找到可走未命中跳转;解决流程跑错窗口的问题。
  • 「等待窗口」:轮询等待标题含关键词的窗口出现,出现即激活, 超时可走未命中跳转。
  • 「找图点击」:cv2 模板匹配(阈值 0.8,区域为 0 时全屏搜索), 命中后点击中心+偏移;补 OCR 盲区——无文字的图标、按钮。
  • 「等待图片」:轮询找图直到出现或超时,支持命中/未命中跳转。
  • 「OCR偏移双击」:识别关键词位置后按偏移双击(如选中一行文本)。
  • 「随机延迟」:在基准时长 50%~150% 之间随机等待, 比固定等待更自然,也缓解固定节奏的时序问题。
  • 「写文件」:把文本(支持 {变量} 模板)追加到文件末尾, 自动加时间戳前缀,可记录每轮处理轨迹。

变更

  • 动作类型增至 31 种;动作编辑对话框各行标签按类型自动切换 (如滚轮滚动的"方向(up/down)/滚动格数"、找图点击的"模板图片")。

2.0.26255.1054

新增

  • 「单击后输入」动作:左键单击坐标获得焦点后粘贴输入文本, 复用输入文本动作的字段(文本/先清空/密码库/{变量} 模板)。
  • 「单击后输入完Tab」动作:同「单击后输入」,输入完成后自动 再按一次 Tab,用于输入后跳转下一输入框的场景。

2.0.26255.1040

修复

  • 「OCR偏移点击」「OCR偏移点击输入」点击坐标整体偏移一个识别区域 原点:OCR 返回的文本框坐标是相对区域截图左上角的局部坐标, 点击时未加回识别区域原点,导致最终点击位置 = 正确位置 −(区域左、区域上)。现在命中坐标统一换算为屏幕绝对 坐标后再叠加偏移(如内容在 (100,200)、偏移 (50,40) → 点击 (150,240),与区域原点无关)。

2.0.26255.0723

修复

  • 启动后任务栏"沉下去、失去半透明(像带阴影)":实时可视化覆盖层 (无边框+置顶+全透明的鼠标/键盘效果层)自启动起常驻显示, 且几何覆盖整个显示器(含任务栏区域)。Windows 检测到"覆盖整屏的 置顶窗口"即进入全屏应用状态——即使窗口 100% 透明也会触发—— 任务栏被降级并关闭半透明合成。现在覆盖层改为按需显示: 任一效果功能(鼠标高亮/点击效果/键盘显示/聚光灯/放大镜/鼠标坐标) 开启时显示,全部关闭时隐藏;键盘显示为瞬态绘制,按键时出现、 超时后隐藏。

2.0.26255.0603

新增

  • 「请喝杯咖啡」对话框收款码下方显示收款方名称 (收款方:xxx),名称内嵌在程序里、随 EXE 分发; 更换收款码图片后截图不再包含收款方信息,由界面文字补齐。

变更

  • 更新内嵌支付宝 / 微信收款码图片;收款方名称集中在 dev/qr/embed_qr.py 顶部 PAYEE 配置区维护, 重新生成脚本时自动烙入 rpa/qr_assets.py,留空则界面不显示该行。

2.0.26255.0543

修复

  • 分隔条布局自激死循环:拖动分隔条(或改变窗口宽度)后,布局校正在 splitterMoved 处理器里无条件 setSizes, Qt 重分配的微小抖动会再次触发信号,形成每 15ms 一圈的死循环—— 持续占用 CPU、反复写窗口状态文件,且拖动被反复顶回 (表现为方案面板拖不窄、面板绘制相互压盖)。现在加再入保护、 尺寸无变化不写回,并在窗口窄于内容所需宽度时优先拉宽窗口。

2.0.26255.0530

修复

  • 新增 / 复制方案、节点、动作时,data.json 顺序表未立即登记 (要等一次「上移/下移」整体重写才出现)。现在保存即登记, 覆盖保存与改名不重复、不破坏已有顺序。

2.0.26255.0504

修复

  • 节点管理重命名误报「名称已存在」并中断:重命名时误按新建做重名检查,导致界面残留旧名、 节点文件内容 name/category 未更新(新节点掉到「未分类」)。 现已修复,并同步保留原分类、对齐文件内容 name 字段,改名后立即刷新显示。
  • 重命名方案 / 节点、动作编辑器改名时,文件内容 name 与新文件名对齐; 动作改名后 data.json 顺序表同步原位换名。

2.0.26255.0428

修复

  • 删除 / 重命名方案、节点时未同步 .categories.json:分类树残留已删除的旧名称、 重命名后的新名称不出现在原分类(方案面板删除/导入、节点面板删除/重命名等入口)。 现已把分类树同步下沉到存储层,全部入口自动覆盖;启动前残留的旧条目会自动清理。

2.0.26255.0334

修复

  • 方案 / 节点库面板的「上移 / 下移」顺序保存后刷新即回退:顺序写入 data.json 但面板刷新读取的还是旧位置(config.json),读写不同源导致移动看起来没生效。 现在读写统一走 data.json
  • 动作 / 节点 / 方案管理对话框中,选中某个分类后「上移 / 下移」时好时坏: 交换对象取自全量列表,可能是其它分类的项(表格里看不见),显示顺序不变。 现在移动只在当前分类的可见子序列内进行。
  • 节点库面板新建 / 复制 / 导入的节点未登记进分类树(nodes/.categories.json), 「未分类」视图看不到这些节点。现在创建时自动登记(复制 / 导入跟随来源分类)。

2.0.26255.0300

修复

  • 删除节点 / 删除方案后未同步更新 data.json:顺序列表(node_order / plan_order)中会残留已删除的名称,默认方案被删后残留指向失效。现在删除时同步清理, 动作删除同样覆盖。
  • 重命名方案 / 节点时 data.json 顺序列表原位换名,自定义排序不再丢失; 重命名默认方案时 default_plan 跟随新名,不再指向失效名称。

2.0.26255.0145

变更

  • 主窗口标题栏只显示大版本号(如 v2.0),不再显示随构建变动的完整版本号; 完整版本号仍可在「关于」对话框中查看。
  • config.jsonlayout 段只保留三项真设置(自动隐藏面板、紧凑布局、允许布局操作)。 面板折叠状态不再写入:开启"自动隐藏面板"时它由窗口宽度实时推算,关闭时同样保存在 config/window_state.ini,不再在入库的 config.json 里留一份会自己变的副本。
  • 配置内容没有变化时不再重写 config.json。此前窗口尺寸一变(含自动折叠触发)都会重写整个文件, 现在只有你真正切换了上述开关才会写入。
  • 旧配置里残留的 layout.plan_collapsed / layout.node_collapsed 会在启动时自动清理, 避免旧值反向覆盖 window_state.ini 中的最新折叠状态。

2.0.26254.1652

新增

  • 首次使用即生成完整的 config/config.json:程序启动时若配置不存在(首启、被删除或损坏)会自动生成, 包含全部配置项与默认值;已存在的配置只补齐缺失键,不覆盖用户已有设置。打包时生成的种子配置同样包含完整配置项。
  • 列宽按内容自适应生成:动作管理、节点管理、方案管理、方案步骤列表、节点编辑器的各列, 首次使用时按「字段名宽度与单元格内容宽度谁大取谁」计算默认宽度,并左右各留 6px 内边距, 使名称、路径等文本默认就能完整显示;默认值在首次使用时写入 config.json*_col_widths)。
  • 列宽区分「自动 / 手动」两种状态:默认自动(每次刷新按内容重算,文本永不截断); 拖动表头或改列宽后自动切为手动,此后完全以你调好的宽度为准 (状态见 config.json*_col_widths_manual,改回 false 即恢复自动)。

变更

  • 表格列宽/列可见性改由统一模块(rpa/ui/colwidths.py)管理,五处表格行为一致; 同时修正隐藏列宽度被记为 0、取消隐藏后列看不见的问题,并放宽列宽上限 (列设置对话框 400→600px、动作与节点表格单列上限 300→600px)。
  • 运行时状态不再往 config.json 里回写,配置只保存你真正改过的设置: 列宽在自动模式下只在首次使用时写入一次(之后每次打开都按内容重算,显示效果不受影响); 窗口大小与分隔条位置统一由 config/window_state.ini 保存,不再在 config.jsonlayout 段里留一份随窗口拖动就变的副本。

移除

  • 删除 rpa/ui/action_manager.py 中已无任何调用点的旧版动作管理对话框。 程序实际使用的是 rpa/ui/main_window.py 里的 ActionMgrDialog; 旧对话框仍按淘汰的规则写入 action_col_widths,删除后列宽体系只剩一套实现。 该文件现仅保留 ActionManager 的再导出,历史导入方式不受影响。

2.0.26254.1540

修复

  • 修复"方案管理"对话框中方案名称显示不全的问题:名称列宽度不足时按内容自动撑开 (只加宽、不缩窄,超长封顶),且所有单元格支持鼠标悬停查看完整文本。
  • 修复"方案步骤"面板中节点名称显示不全的问题:节点列同样按内容自动撑开, 并解除单列 300px 的宽度上限(放宽到 600px),悬停可看全文。

2.0.26254.1531

修复

  • 修复配置被删/自动重建后布局被锁死的问题:左侧分隔条无法把"方案面板"拉到最小宽度 (打包版尤其明显)。根因是默认配置不含 layout 段,打包版兜底为"极简模式" (只能折叠不能展开、缩放跳过布局调整、启动自动收窄窗口),而源码版兜底为"自定义模式", 造成两版行为不一致。
  • 默认配置补齐 layout 段(allow_layout_operations=trueauto_collapse=true 等), 并把缺失时的兜底统一为"自定义模式"——即使配置被删后重建,源码版与打包版行为一致, 首次运行即可自由拖动分隔条;"极简模式"仍可在菜单中随时切换。

2.0.26254.1229

新增

  • 一键双发布包:新增 Releases\build_release.bat,双击一次同时产出 安装版 KeyMouseMate_installer_v<版本>.exe 与便携版 KeyMouseMate_portable_v<版本>.zip(zip 内含顶层 KeyMouseMate\ 目录,解压不会散架)。
  • 版本号全链一致:打包时自动把版本号烙进 EXE 同级 VERSION 文件, 程序标题显示、安装包命名、便携包命名三者永远同源。
  • ISCC 多路径自动查找:环境变量 → 本机配置 iscc_dirs.txt → Program Files → 注册表 → PATH,绿色版 / 自定义路径的 Inno Setup 也能被找到。

修复

  • 修复程序标题显示的版本号与发布包命名不一致的问题 (如 EXE 显示 v2.0.26254.1146 而包名却是 1131)。
  • 修复 build_release.bat 在部分情况下启动即闪退的问题。

2.0.26254.1131

新增

  • 鼠标高亮支持自定义高亮颜色。
  • 浮动工具栏图标防丢自愈:config/floatbar 中的图标被误删时, 自动从程序内置的出厂备份还原(只补缺失,不覆盖自定义图标)。
  • 版本号体系:格式 2.0.<年><年内天>.<时分>, 取 rpa/ 源码最新修改时间生成,唯一维护点 rpa/version.py; 根目录 VERSION 文件记录当前实际版本。
  • 一键上传 GitHub:双击 upload_to_github.bat 完成源码仓库提交推送 与发布主页同步(配置驱动,他人克隆后亦可直接使用)。

变更

  • 窗口 / 布局状态改存 config/window_state.ini, 程序运行不再写注册表(旧注册表数据首次启动自动迁移)。
  • README 运行方式整理为安装版 / 便携版 / 源码运行三种,并补齐 git clone 步骤。

修复

  • 修复紧凑布局下展开方案 / 节点面板后最小化到任务栏再还原,两面板被意外自动隐藏的问题。
  • 修复可视化设置「选择颜色」对话框不带入当前颜色(始终从白色开始)的问题; 「拾取屏幕颜色」「确定」「取消」按钮已汉化。
  • 修复浮动工具栏图标颜色修改后不保存的问题(配置读写路径错位), 并自动清理配置文件中的重复键。

2.0(可视化融合版)

融合重构

新增

  • 可视化助手整体并入主程序:鼠标高亮追踪、点击特效、键盘按键显示、 鼠标坐标、聚光灯、放大镜六大实时效果。
  • 可定制的浮动工具栏(SVG 图标位于 config/floatbar,可自行替换); 托盘与菜单新增「可视化」开关组,10 项可视化热键可自定义。
  • GitHub 发布主页 softhubcc.github.io/KeyMouseMateSite 与安装版 / 便携版发布物。

变更

  • 目录布局重构:程序设置统一到 config/, 使用数据统一到 userdata/(方案 / 节点 / 动作 / 日志 / 密码库), 旧版数据首次启动自动迁移,无需手工处理。
  • 热键设置改为直接输入:自动归一化修饰键、检测重复绑定、支持一键恢复默认。

修复

  • 修复启动时「启用浮动工具栏」菜单勾选状态不同步的问题。
  • 修复打包后浮动工具栏图标不显示的问题。