雨见浏览器PC测试版1.3.0
本阶段的更新重点,集中在「让数据更稳、更可控」和「把多窗口 / 多身份能力做完整」两条主线上。最重磅的部分是数据目录迁移流程重写:迁移从原来的 `app.ready` 之后执行,前移到 Electron `ready` 之前完成,避免 Cookie、LevelDB、扩展数据已经被 Chromium 占用后再复制,减少锁文件与脏快照风险;同时把数据目录指针固定存放在系统 AppData 中,解决覆盖安装、迁移失败回滚、指针写入失败误报成功等边界问题,并补了专项回归测试。围绕数据安全,又新增了“清理浏览数据”能力,既支持在设置页按项目立即清除,也支持工具栏里对当前站点一键清理,默认项目和退出时自动清理逻辑也做了统一。
另一条主线,是“小号 / Profile”能力从“能开”提升到“可长期使用”。现在可以创建、命名、删除并直接启动独立小号,每个小号都有隔离的数据目录、独立品牌标识和专属网络配置;在此基础上又补上了独立浏览器指纹、HTTP / SOCKS5 / PAC 代理、出口 IP 测试和代理账号认证,甚至主账号本身也可以配置独立代理。除此之外,书签栏新增了拖放收藏能力和只显示图标模式,地址栏搜索被升级为“效率搜索”,可在正常搜索、双列搜索、多引擎多标签搜索之间切换;扩展侧则重点对齐了 Chrome 的 popup 生命周期,并进一步收敛了扩展存储写入兼容层,减少重复或不完整的 `storage.onChanged` 事件。
## 主要更新
### 1. 数据目录迁移流程重写,覆盖安装与失败回滚更稳
- **数据迁移提前到 Electron `ready` 之前完成**:避免浏览器会话、Cookie、Local Storage、扩展 LevelDB 已被打开后再复制,减少 Windows 下锁文件与不一致快照问题。
- **数据目录指针固定写入系统 AppData**:不再依赖会随 `userData` 改变而变化的默认路径,正式版每次启动都能从固定位置找到当前数据目录。
- **迁移失败自动回滚且保留旧目录可用**:复制出错时会清掉目标半成品、清空 pending 状态,并在启动后提示“数据仍保留在原位置”。
- **指针写入改为临时文件 + 原子替换**:如果指针落盘失败会直接报错,避免设置页显示“修改成功”但下次启动回到默认目录。
- **覆盖安装场景更稳**:即使 NSIS 更新时删除并重建整个安装目录,只要指针和数据目录在安装目录外,升级后仍能正确定位到原数据。
- **补充回归测试脚本**:专门验证迁移成功、失败回滚、权限拒绝、覆盖安装、小号与 pending 迁移互斥等关键边界。
### 2. 清理浏览数据:支持“当前站点”与“全部网页”两种路径
- **设置页新增“清除浏览数据”对话框**:可勾选历史记录、网页缓存、Cookie、搜索历史,点击后立即清除。
- **工具栏新增“清理浏览数据”入口**:支持自定义显示在工具栏上,点击后弹出独立清理面板。
- **支持只清理当前站点数据**:对当前页面所属 origin 精确清除缓存、Cookie,并按同一 origin 删除本地历史 / 搜索历史记录。
- **支持一键清理全部网页数据**:工具栏面板里可继续执行全量清理,复用设置页里保存的勾选项。
- **勾选项会持久化**:设置页和工具栏面板共用同一组清理偏好,避免每次重新勾选。
- **对话框样式跟随主题**:清理面板与设置页对话框统一使用主题调色板,亮暗主题下观感更协调。
### 3. 登录失效可感知,不再“悄悄掉线”
- 当云账号校验接口或手机协同心跳返回登录失效时,现在会**先广播“登录已失效”提示,再清空账户信息**。
- 主界面顶部会弹出短时提示条,明确告诉用户需要重新登录,不再只是后台静默登出。
### 4. 小号(Profile)能力成型:独立窗口、独立数据、独立品牌
- **新增小号管理**:支持创建、打开、删除小号,并对名称做完整校验,避免 `..`、系统保留名、非法路径字符等问题。
- **小号使用完全隔离的数据目录**:每个小号的数据位于主数据目录下的独立 profile 子目录,`userData` 与 `sessionData` 都按小号隔离。
- **主账号统一管理数据目录位置**:小号可以查看自己的存储路径,但不能单独改动迁移计划,避免多 profile 同时迁移造成混乱。
- **品牌标识可区分**:侧边栏品牌区支持显示小号名称,并可使用专属 logo,降低多窗口同时使用时的混淆。
- **补充 profile 参数与校验测试**:覆盖启动参数解析、名称归一、大小写碰撞与非法输入等情况。
### 5. 小号与主账号都能配置独立代理,新增 PAC 支持
- **新增网络代理设置页**:可在“系统”分区配置代理类型、服务器、端口、认证信息和 bypass 列表。
- **支持 `HTTP`、`SOCKS5`、`PAC` 和直连模式**:PAC 既支持填入 `http(s)://` / `file://` 地址,也支持直接粘贴 PAC 脚本文本。
- **支持出口 IP 测试**:保存代理后可直接检测当前出口 IP,快速确认代理是否生效。
- **支持代理认证自动填充**:若站点请求的是代理认证,会自动使用当前配置的代理用户名和密码响应。
- **主账号也可配置代理**:代理配置不再局限于小号,主账号网页会话同样可单独设置。
- **抑制 WebRTC 真实 IP 泄漏**:启动时追加 `disable_non_proxied_udp` 策略,减少代理场景下真实地址外泄。
- **代理校验更严格**:补上 IPv6 方括号校验、端口范围限制、用户名密码长度限制、bypass 与 PAC 文本格式校验。
### 6. 独立浏览器指纹:小号更像“另一台设备”
- 每个小号会基于独立 seed 派生稳定的 **Canvas / WebGL / 并发数 / 内存档位** 指纹组合。
- **支持一键重新生成指纹**,站点会把该小号识别为一台新设备。
- **指纹可单独开关**,关闭后回退为不注入该层隔离。
### 7. 书签栏交互升级:能拖、能收、能只看图标
- **书签栏支持拖放收藏**:可把顶部标签页、侧边栏标签页、网页链接直接拖到书签栏;拖到文件夹时可直接收藏进对应文件夹。
- **拖拽过程中有明确投放反馈**:文件夹高亮、插入指示线、排序跟手动画都已补齐。
- **支持“只显示图标”模式**:在“个性化”设置中可切换,书签栏与“全部书签”入口都会收成图标样式,悬停时展开标题。
- **多行书签栏的溢出计算更准确**:结合真实宽度和渲染后测量结果修正可见项与溢出项,减少中文标题被裁掉或右侧留白过多的问题。
### 8. 地址栏升级为“效率搜索”
- **搜索模式从旧的“双引擎开关”升级为三挡**:
- `正常搜索`:沿用默认搜索引擎。
- `双列搜索`:主面板使用默认搜索引擎,右侧同步打开副搜索引擎。
- `多开标签`:一次输入后,按选定的多个搜索引擎分别打开多个标签页。
- **多开标签模式可独立选择引擎组合**:不再受默认搜索引擎绑定,至少保留两个搜索引擎。
- **设置页交互更直观**:从单一布尔开关改为模式卡片 + 引擎多选,定位和理解成本更低。
### 9. 扩展 popup 生命周期对齐 Chrome
- **扩展 action popup 改为真正的瞬时弹层**:只要焦点离开应用或切到别处,就会直接关闭,不再为了登录类页面保留失焦弹窗。
- 这样可以避免背景页已经完成登录持久化,但 popup 还停留在旧页面状态,整体行为更接近 Chrome。
### 10. 扩展存储写入兼容层再收敛,`storage.onChanged` 更可靠
- 继续保留对复杂对象写入前的“可克隆化”处理,避免某些扩展因为 Blob、getter、循环引用等值写入失败。
- 同时移除了本地合成的 `storage.onChanged` 事件补丁,改回由原生存储层负责变更 diff 与事件派发,减少**重复事件**、**缺少 oldValue** 或 **变更结构不完整**的问题。
## 体验与细节打磨
- **添加书签弹窗改为按需创建**:修复首次打开“添加书签 / 编辑书签”时名称、链接偶发不回填的问题。
- **书签树展开按钮点击区域增大**:`TreeToggle` 从 18px 提升到 28px,可访问性更好。
- **设置页相关入口同步补全**:工具栏按钮、自定义工具栏、系统页、个性化页都补上了对应入口与文案。
· 0 个赞