Skip to content

1.0.0

Choose a tag to compare

@iBitBetter iBitBetter released this 08 Jul 07:43

1.0.0 — 2026-07-08

相对远端基线 v0.2.0-beta 的首次功能升级。核心新增 Winapp2/Winapp3 社区清理规则的 opt-in 支持,并修复了打包与解析的若干稳定性问题。

Added

  • Winapp2 / Winapp3 社区清理规则(opt-in,默认关闭)
    • 新增 winapp2_adapter.py:解析 Winapp2/Winapp3 INI 语法(FileKey / RegKey / ExcludeKey / Detect / DetectFile / DetectOS)。
      • PascalCase 变量(如 %ProgramFiles%)大小写不敏感展开,兼容 Windows os.environ 大写键。
      • 双架构目录展开(%ProgramFiles% → x64 + x86)、\os.sep 跨平台归一化。
      • 重复 key 文本预处理去重(_dedup_ini_lines),兼容真实 winapp2.ini 中大量重复选项。
      • Detect 剪枝(含注册表型 Detect 真实查表)、注册表 hive 归一化(HKLM\HKEY_LOCAL_MACHINE\)。
      • load_community() 统一返回 {file_rules, reg_rules, raw_rules, count, kept}
    • 解析真实 data/Winapp2.ini 实测:2781 文件规则 + 263 注册表规则。
  • GUI 社区规则开关
    • System Junk 面板新增「Community rules (Winapp2)」勾选框,默认关闭,含状态提示(已发现/未找到 .ini)与帮助文案。
    • 扫描结果 tree 新增 Source 列(Built-in / Community:分类),含 Warning 的规则在汇总行标注 ⚠ N 条规则含警告
    • 注册表面板新增 Community 分类(默认关闭,开启社区开关时自动勾选),扫描合并 community_reg_rules
  • CLI 社区规则开关
    • winmole_simple.py 新增 -c / --community / --winapp2(三者等价,默认关闭)。
    • 开启后加载社区文件 + 注册表规则:文件项标 [C] 并展示 warning;注册表删键前独立二次确认(Confirm.ask)。
  • 测试与样本
    • 新增 test_planb.py(6 项端到端测试:filespec 只删匹配文件保留目录、整目录保留空目录、REMOVESELF 删空目录、默认关闭无社区项、社区规则转换、注册表条目结构),全部通过。
    • 新增 data/winapp3_sample.ini(13 条真实 Winapp3 样本 + RegKey/DetectOS 语法补充)。
  • 工程化
    • 新增 .gitattributes*.bat text eol=crlf,保证 package.bat 等克隆后仍是 CRLF)。

Changed

  • package.bat 重写
    • 编码由 UTF-8+LF 改为 GBK + CRLF(修复 cmd.exe 因 LF 续行失效导致的「不是内部或外部命令」)。
    • 强制 pyinstaller>=6.0.0(兼容 version_info.txt 的裸 VSVersionInfo(...) 写法)。
    • 新增 WINMOLE_NONINTERACTIVE=1 非交互模式(跳过末尾 Test now? / pause,避免后台构建卡死)。
    • 构建日志落盘 build_logs/gui.logbuild_logs/cli.log,失败时 tail 40 行。
    • GUI / CLI 构建均增加 --hidden-import=winapp2_adapter --add-data "data;data"(adapter 与 data/ 一并打包)。
    • 自动创建/修复 venv。
  • winmole_engine.py 引擎增强
    • SystemCleaner 新增 community_rules 字段 + set_community_rules()scan() 经统一 _scan_rule_paths() 处理内置与社区规则。
    • 支持 _filespec(只删匹配文件、保留目录)、_remove_self(删空目录)、is_file() 分支(glob 同时命中文件时单独处理)。
    • RegistryCleaner 新增 _delete_community_key() 精确删键,clean() 支持 category="community"category_map 增加 community
  • locales.py:中英补充 community 相关 key(community_toggle / community_help / community_status_* / reg_cat_community / clean_col_source / clean_warn_note)。
  • .gitignore:补充 .workbuddy/build_logs/,避免本地数据目录与日志进入仓库。

Fixed

  • 修复 package.bat 在 LF 换行符下每行报「不是内部或外部命令」(改用 GBK + CRLF 写入)。
  • 修复 version_info.txt 在 PyInstaller < 6 下 KeyError(强制 >=6.0.0)。
  • 修复真实 data/Winapp2.ini 加载时 DuplicateOptionError: option 'Default' already exists(Python 3.13 configparser 先于 dict 赋值抛错;改用 _dedup_ini_lines 文本预处理合并重复值)。
  • 修复启用 Community rules 后 NotADirectoryError: [WinError 267] 目录名称无效(glob 同时匹配目录与文件,文件被传入 os.walk 崩溃;新增 is_file() 分支 + is_dir() 守卫)。

[0.2.0-beta]

远端仓库基线快照(早于本 changelog 建立)。包含早期 winmole_engine.py / winmole_gui.py / winmole_simple.py / locales.py / cleanup_rules.yaml 等内置清理能力,尚未集成社区规则与适配器。