# Changelog ## 1.352.2 - **自我保护**:非只读工具写入 `$DSH_HOME`(本插件配置、DSH 的 `settings.yaml` 等)一律拒绝,不受 `mode` 影响;shell 命令碰到这些目录时询问。可选 `protectPluginDir` 连插件代码目录一起保护。 - **先写脚本再运行**:写入 `.py`、`.ps1`、`.js`、`.sh` 等脚本文件时,也扫描写入内容里的路径(`scanScripts`,可关)。 - **shell**:展开 `~`、`$HOME`、`$env:X`、`${env:X}`、`%X%` 后再判定;检查 `cd` / `Set-Location` / `pushd` 的目标;识别 `/mnt/d/`、`/cygdrive/d/`、Git Bash 的 `/d/`。 - **可疑命令**:`subst`、`New-PSDrive`、`mklink`、`New-Item -ItemType 链接`、`fsutil hardlink`、`-EncodedCommand`、`net use`、`dsh plugin` 要求确认(`suspiciousCommands`,可关)。 - **路径写法**:任意主机的 `\\主机\D$`、`\\wsl$\…\mnt\d`、`file:///`、`\\.\` 与 `\\?\GLOBALROOT` 等设备路径(含卷影副本);相对的 glob 模式(`..\..\秘密\*`)。 - **兜底**:不在任何名单里的参数也搜一遍绝对路径,防止别的插件 / MCP 工具换参数名(`scanAllArgs`)。编辑前的旧内容(`old_string`)不检查。 - **拒绝原因**:明确告诉模型"不要用脚本、其他命令、链接或改插件配置等方式绕过,需要时先问用户"。 ## 1.352.1 - **界面**:新增「声音提醒 / 自制弹窗提醒 / 系统弹窗提醒 / 确认弹窗提醒」四个独立开关,可任意组合;新增开关自动保存。 - **安全**:修补多种可能绕过白名单/黑名单的路径写法 —— 绝对路径里的 `..`、`\\?\` 长路径前缀、`\\localhost\D$` 管理共享、`D:foo` 盘符相对路径、正斜杠、glob `pattern` 里的绝对路径、shell 命令里"提到白名单就整条放行"。 - **安全**:路径先按 Windows 规则解析成真实绝对路径再比对,并沿符号链接 / 目录联接 / 8.3 短名解析真实位置;黑名单对 shell 命令同样生效。 - **安全**:补齐 Windows 会忽略的尾随点与空格(`D:\2学习.` 等价于 `D:\2学习`),以及无法换算成盘符的卷 GUID 路径(按越界处理)。 - **新选项**:`alertCooldownMs`(默认 5000,提醒节流)、`failClosed`(默认 false,插件自身出错时改为拒绝)。 - **默认值**:名单默认清空,安装后在管理窗口里自行选择目录才开始拦截。 - **管理窗口**:保存时保留窗口未展示的高级选项,不再覆盖手写配置。 ## 0.5.0 - 新增第五个开关(系统托盘气泡),中文名改为「大肥鱼文件夹防窥眼罩」。 ## 0.4.0 - 托盘气泡换成自绘的无声通知窗。 ## 0.3.0 - 提醒改为独立进程;新增确认弹窗。 ## 0.1.0 - 首个版本:`tools/pre-execute` 派发前拦截、白/黑/受管根三名单、文件夹选择器 UI。