1.0.0
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%)大小写不敏感展开,兼容 Windowsos.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}。
- PascalCase 变量(如
- 解析真实
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.log、build_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等内置清理能力,尚未集成社区规则与适配器。