雨见浏览器PC测试版1.2.8
本阶段(1.2.7 → 1.2.8)的更新以「让浏览器外观彻底可定制」为绝对主线,围绕主题能力做了一次从「内置几套皮肤」到「用户 / 生态自定义」的体系化升级:新增「自定义浏览器框架 CSS」编辑器,把顶部栏、侧边栏、地址栏、工具栏按钮等几乎每一处壳层结构都暴露成稳定的 `data-rainsee-*` 选择器并附带可一键复制的「AI 创作技能」与社区入口;同时打通了 Chrome 网上应用店的 `.crx` 主题包加载(颜色、图片、tints、属性全部按 Chrome 规范归一化并安全注入),并随版本预置了 6 款新主题(碳琥珀、经典紧凑、珊瑚夜、霜工作台、薄荷信号、霓虹控制台)。安全与可用性方面,针对 360 等启发式杀软把整个安装包误报为 `HEUR/QVM` 恶意软件的问题,把 Windows Hello 验证从「base64 编码无文件执行」改为「带可审计明文脚本文件执行」,显著降低误报率;并对自动填充、搜索引擎同步、顶部标签组悬停预览、扩展 popup 尺寸、数据目录选址等多个高频路径做了修复。
## 主要更新
### 1. 主题系统全面升级:自定义框架 CSS + Chrome 主题 CRX + 6 款新内置主题
这是本阶段体量最大的一组改动,目标是把「换肤」从少数内置皮肤扩展为「框架可定制 + 生态可接入」的完整能力:
- **自定义浏览器框架 CSS**:在「设置 → 个性化」新增「浏览器框架 CSS」编辑面板。用户写下的 CSS 会被包进统一的 `@scope` 作用域**只注入主窗口壳层**(顶部栏 / 侧边栏 / 地址栏 / 工具栏 / 标签等),**不会进入标签页网页内容**,因此绝不会影响页面渲染。编辑器内置一份覆盖全部公开选择器的注释示例(取消注释即生效),并带字符数上限计数与保存校验。
- 公开了一套语义化、版本稳定的 `data-rainsee-*` 选择器:区域(`data-rainsee-area="topbar|sidebar"`)、结构部件(`titlebar` / `toolbar` / `address-bar` / `bookmark-bar` / `tab-bar` / `window-controls` 等)、按钮与动作(`back` / `forward` / `translate` / `extensions` / `downloads`……)、扩展图标(`data-rainsee-extension-id` 可定位单个扩展),用户无需依赖随机 className 或 DOM 层级。
- 新增「复制 CSS 创作技能」按钮:把一套完整的主题创作 Prompt 复制到剪贴板,粘贴给任意大模型即可生成「同时覆盖顶部栏与侧边栏、只使用公开选择器、长度合规、可直接粘贴回编辑器」的成品 CSS,降低普通用户上手门槛。
- 面板内还加了「社区」入口,点击在新标签打开主题交流社区。
- **Chrome 主题 CRX 适配**:现在可以直接加载 Chrome 网上应用店的 `.crx` 主题包。新增独立的主题归一化模块,严格按 Chrome 主题规范处理 `colors`(RGB/RGBA,通道值钳制到 0–255)、`images`(路径防穿越、协议白名单、长度限制)、`tints`(HSL 并参与按钮着色计算)、`properties`,所有图片资源经专用协议(`yjllq://theme-assets/...`)安全暴露给主窗口与各标签会话;同一时刻仅一套 Chrome 主题生效,切换时旧包在磁盘保留、在管理器中标记为已禁用,便于随时换回。
- **6 款新内置主题**:新增「碳琥珀(Carbon Amber)」「经典紧凑(Classic Compact)」「珊瑚夜(Coral Night)」「霜工作台(Frost Workspace)」「薄荷信号(Mint Signal)」「霓虹控制台(Neon Console)」六套主题,覆盖暖色 / 冷色 / 紧凑 / 高对比等不同取向,并在侧边栏分组头部等细节上做了配套样式。
- **主题样式治理**:工具栏按钮样式区分出「品牌胶囊按钮(新标签搜索 / AI / 更新)」单独保留产品配色,避免被通用按钮规则误改;地址栏输入框选择器区分可见 / 不可见态,提示用户保持透明态以避免与分段网址文字重叠。
### 2. 安全性:Windows Hello 验证防杀软误报
导出密码前的「Windows 安全中心」身份验证(PIN / 指纹 / 人脸)原先用 `powershell.exe -EncodedCommand` 传一段 base64 编码的 PowerShell payload 执行——这恰好是 360 QVM 等启发式引擎的**高权重恶意软件特征**,会让整个安装包被判为 `HEUR/QVM*.Malware.Gen`。
- 现改为调用预置的**明文脚本** `win-hello.ps1`(`powershell.exe -ExecutionPolicy Bypass -File`),脚本再走 WinRT `UserConsentVerifier.RequestVerificationAsync`,验证逻辑与 Edge / Chrome 完全一致;提示语经环境变量 `RAINSEE_HELLO_REASON` 传入(走 Unicode 环境块,规避 PowerShell 5.1 命令行 argv 的中文编码坑)。
- 脚本经 `extraResources` 解包到 asar 外(`resources/win-hello.ps1`),可被外部进程读取与审计;形态从「编码无文件执行」变为「带可审计脚本文件执行」,显著降低误报率。开发态从 `static/` 读取,缺失时返回友好错误而非崩溃。
### 3. 自动填充:支持 iframe 内登录表单
- 此前自动填充只扫描主文档的 `<input>`,而友盟、阿里系等 passport 登录页常把账号 / 密码框放在**同源 iframe** 内,导致识别不到、填充失效。现在递归遍历主文档及所有同源 iframe 的 `document` 定位密码框与对应账号框(跨域 frame 访问抛 `SecurityError` 时自动跳过),并对 `getComputedStyle` 改用元素所属窗口的视图,兼容跨 frame 元素。
- 把页面 `hostname` 作为参数传入主进程匹配,不再依赖 `viewManager.selected`,避免后台标签或加载瞬间 `selected` 尚未切换时取到别的页面、填错站点凭证。
### 4. 搜索引擎同步:用户删除的引擎不再被云端加回来
- 重构启动同步逻辑,区分「首次同步」与「后续同步」:仅当本地从未成功同步过(无云端缓存)时,才用云端列表**整体填充**;之后用户的增删 / 排序 / 重命名完全由用户掌控,云端不再整体覆盖。
- 后续同步只按 `keyword`(host)匹配本地**已有**的引擎,用云端的最新参数(`url` / `keywordsUrl` / 随 url 重生成的 `icon`)替换,**不增删、不重排**——用户删掉的引擎不会被云端重新塞回来,用户新增的不会被删,顺序与数量不变因此选中下标无需调整;云端不可用时不动设置,全新安装且从未联网成功的用户沿用内置默认引擎。
## 体验与细节打磨
- **顶部标签栏标签组悬停预览修复**:顶部标签栏模式下,悬停显示标签组内容后,鼠标移向标签组浮层时弹窗会瞬间消失又重开。原因是浮层与标签组之间的阴影留白触发了离开事件并立即隐藏;现在离开时也走延迟隐藏,给另一侧的 `enter` 留出接管时间,移动过程不再闪断。
- **扩展 popup 尺寸可收缩**:扩展弹窗(popup)此前对内容尺寸采用「只增不减」策略以防 reflow 抖动,导致切到更小内容的弹窗后宽高只变大、不变小。新增「收缩确认」机制:内容尺寸变小时先记为待确认,150ms 内未再涨回才落地,既吸收 `248↔263` 这类瞬时 reflow(涨回即取消收缩、不闪),又让点击等导致的稳定收缩在确认期后正常生效;增长方向仍立即应用。
- **数据目录选址安全提示**:在「设置」更改数据存储位置时,若所选目录位于**当前安装目录内**,会弹出警告——后续版本覆盖安装时系统会先卸载旧版本,放在安装目录内的数据可能被删除;用户需明确「仍然使用」才会继续,避免升级导致数据丢失。
- **扩展存储补丁加固**:扩展 `storage` SHIM 的磁盘注入格式升级到 v2,把注入块移到 JavaScript 指令序言(如 `"use strict"`)之后、强制已打补丁的扩展恢复严格模式;分隔符并入 shim 块,重新打补丁时不再遗留多余分号;同步标记文件改为「SHIM 版本 + 格式版本」双键,并新增回归测试脚本覆盖打补丁与剥离路径。
- **脚本商店请求标记来源**:扩展商店列表请求追加 `from=pc` 参数,便于后台区分 PC 端流量。
## 主要更新
### 1. 主题系统全面升级:自定义框架 CSS + Chrome 主题 CRX + 6 款新内置主题
这是本阶段体量最大的一组改动,目标是把「换肤」从少数内置皮肤扩展为「框架可定制 + 生态可接入」的完整能力:
- **自定义浏览器框架 CSS**:在「设置 → 个性化」新增「浏览器框架 CSS」编辑面板。用户写下的 CSS 会被包进统一的 `@scope` 作用域**只注入主窗口壳层**(顶部栏 / 侧边栏 / 地址栏 / 工具栏 / 标签等),**不会进入标签页网页内容**,因此绝不会影响页面渲染。编辑器内置一份覆盖全部公开选择器的注释示例(取消注释即生效),并带字符数上限计数与保存校验。
- 公开了一套语义化、版本稳定的 `data-rainsee-*` 选择器:区域(`data-rainsee-area="topbar|sidebar"`)、结构部件(`titlebar` / `toolbar` / `address-bar` / `bookmark-bar` / `tab-bar` / `window-controls` 等)、按钮与动作(`back` / `forward` / `translate` / `extensions` / `downloads`……)、扩展图标(`data-rainsee-extension-id` 可定位单个扩展),用户无需依赖随机 className 或 DOM 层级。
- 新增「复制 CSS 创作技能」按钮:把一套完整的主题创作 Prompt 复制到剪贴板,粘贴给任意大模型即可生成「同时覆盖顶部栏与侧边栏、只使用公开选择器、长度合规、可直接粘贴回编辑器」的成品 CSS,降低普通用户上手门槛。
- 面板内还加了「社区」入口,点击在新标签打开主题交流社区。
- **Chrome 主题 CRX 适配**:现在可以直接加载 Chrome 网上应用店的 `.crx` 主题包。新增独立的主题归一化模块,严格按 Chrome 主题规范处理 `colors`(RGB/RGBA,通道值钳制到 0–255)、`images`(路径防穿越、协议白名单、长度限制)、`tints`(HSL 并参与按钮着色计算)、`properties`,所有图片资源经专用协议(`yjllq://theme-assets/...`)安全暴露给主窗口与各标签会话;同一时刻仅一套 Chrome 主题生效,切换时旧包在磁盘保留、在管理器中标记为已禁用,便于随时换回。
- **6 款新内置主题**:新增「碳琥珀(Carbon Amber)」「经典紧凑(Classic Compact)」「珊瑚夜(Coral Night)」「霜工作台(Frost Workspace)」「薄荷信号(Mint Signal)」「霓虹控制台(Neon Console)」六套主题,覆盖暖色 / 冷色 / 紧凑 / 高对比等不同取向,并在侧边栏分组头部等细节上做了配套样式。
- **主题样式治理**:工具栏按钮样式区分出「品牌胶囊按钮(新标签搜索 / AI / 更新)」单独保留产品配色,避免被通用按钮规则误改;地址栏输入框选择器区分可见 / 不可见态,提示用户保持透明态以避免与分段网址文字重叠。
### 2. 安全性:Windows Hello 验证防杀软误报
导出密码前的「Windows 安全中心」身份验证(PIN / 指纹 / 人脸)原先用 `powershell.exe -EncodedCommand` 传一段 base64 编码的 PowerShell payload 执行——这恰好是 360 QVM 等启发式引擎的**高权重恶意软件特征**,会让整个安装包被判为 `HEUR/QVM*.Malware.Gen`。
- 现改为调用预置的**明文脚本** `win-hello.ps1`(`powershell.exe -ExecutionPolicy Bypass -File`),脚本再走 WinRT `UserConsentVerifier.RequestVerificationAsync`,验证逻辑与 Edge / Chrome 完全一致;提示语经环境变量 `RAINSEE_HELLO_REASON` 传入(走 Unicode 环境块,规避 PowerShell 5.1 命令行 argv 的中文编码坑)。
- 脚本经 `extraResources` 解包到 asar 外(`resources/win-hello.ps1`),可被外部进程读取与审计;形态从「编码无文件执行」变为「带可审计脚本文件执行」,显著降低误报率。开发态从 `static/` 读取,缺失时返回友好错误而非崩溃。
### 3. 自动填充:支持 iframe 内登录表单
- 此前自动填充只扫描主文档的 `<input>`,而友盟、阿里系等 passport 登录页常把账号 / 密码框放在**同源 iframe** 内,导致识别不到、填充失效。现在递归遍历主文档及所有同源 iframe 的 `document` 定位密码框与对应账号框(跨域 frame 访问抛 `SecurityError` 时自动跳过),并对 `getComputedStyle` 改用元素所属窗口的视图,兼容跨 frame 元素。
- 把页面 `hostname` 作为参数传入主进程匹配,不再依赖 `viewManager.selected`,避免后台标签或加载瞬间 `selected` 尚未切换时取到别的页面、填错站点凭证。
### 4. 搜索引擎同步:用户删除的引擎不再被云端加回来
- 重构启动同步逻辑,区分「首次同步」与「后续同步」:仅当本地从未成功同步过(无云端缓存)时,才用云端列表**整体填充**;之后用户的增删 / 排序 / 重命名完全由用户掌控,云端不再整体覆盖。
- 后续同步只按 `keyword`(host)匹配本地**已有**的引擎,用云端的最新参数(`url` / `keywordsUrl` / 随 url 重生成的 `icon`)替换,**不增删、不重排**——用户删掉的引擎不会被云端重新塞回来,用户新增的不会被删,顺序与数量不变因此选中下标无需调整;云端不可用时不动设置,全新安装且从未联网成功的用户沿用内置默认引擎。
## 体验与细节打磨
- **顶部标签栏标签组悬停预览修复**:顶部标签栏模式下,悬停显示标签组内容后,鼠标移向标签组浮层时弹窗会瞬间消失又重开。原因是浮层与标签组之间的阴影留白触发了离开事件并立即隐藏;现在离开时也走延迟隐藏,给另一侧的 `enter` 留出接管时间,移动过程不再闪断。
- **扩展 popup 尺寸可收缩**:扩展弹窗(popup)此前对内容尺寸采用「只增不减」策略以防 reflow 抖动,导致切到更小内容的弹窗后宽高只变大、不变小。新增「收缩确认」机制:内容尺寸变小时先记为待确认,150ms 内未再涨回才落地,既吸收 `248↔263` 这类瞬时 reflow(涨回即取消收缩、不闪),又让点击等导致的稳定收缩在确认期后正常生效;增长方向仍立即应用。
- **数据目录选址安全提示**:在「设置」更改数据存储位置时,若所选目录位于**当前安装目录内**,会弹出警告——后续版本覆盖安装时系统会先卸载旧版本,放在安装目录内的数据可能被删除;用户需明确「仍然使用」才会继续,避免升级导致数据丢失。
- **扩展存储补丁加固**:扩展 `storage` SHIM 的磁盘注入格式升级到 v2,把注入块移到 JavaScript 指令序言(如 `"use strict"`)之后、强制已打补丁的扩展恢复严格模式;分隔符并入 shim 块,重新打补丁时不再遗留多余分号;同步标记文件改为「SHIM 版本 + 格式版本」双键,并新增回归测试脚本覆盖打补丁与剥离路径。
- **脚本商店请求标记来源**:扩展商店列表请求追加 `from=pc` 参数,便于后台区分 PC 端流量。
· 0 个赞