雨见浏览器PC测试版1.2.9
本阶段(1.2.8 → 1.2.9)的更新围绕「让用户从其他浏览器平滑迁入」与「更稳、更好用」两条主线展开。最重磅的是一组完整的迁移能力:扩展管理页新增「从本地浏览器迁移扩展」,自动探测本机 Chrome、Edge 的扩展目录并批量导入(识别不到则让用户手选安装目录,默认全选、自动去重);引导页也补上了从其他浏览器导入书签和扩展的入口,并在「设置 → 关于」底部加了重新查看引导页的通道。稳定性方面,针对「系统内存不足(OOM)」这个最致命的场景重写了恢复策略:不再用一个同样依赖渲染进程的 `BrowserWindow` 覆盖层去救场(资源不足时它本身也显示不出来),改为系统原生对话框提示后整窗重启,并修复了崩溃会导致标签页记录全部丢失的问题——崩溃前仍存活窗口的标签会被补写进数据库,下次启动用一次性参数强制恢复。此外还新增了会话 Cookie 持久化(重启后保持登录)、标签栏整理快捷键(去重 / 按域名分组 / AI 智能分组)、侧边栏分组的一系列交互增强,以及内部 flags 页地址归一化等。
## 主要更新
### 1. 从其他浏览器迁移扩展
本阶段体量最大的改动(约 1400 行新增),目标是让从 Chrome / Edge 切换过来的用户能一键把已有扩展搬过来:
- **扩展管理页(`extensions.html`)新增「从本地浏览器迁移扩展」**:主进程会去读取本机 Chrome、Edge 的用户配置目录,扫描其中已安装的扩展。识别到目录后把可迁移的扩展**逐个列出来、默认全选**,用户勾选后批量导入;**自动过滤重复**(已安装的不再重复导入),导入结果给出「成功 / 跳过 / 失败」明细。
- **识别不到时让用户手选安装目录**:若未能自动定位到浏览器扩展目录(自定义安装路径、绿色版等情形),会引导用户手动选择浏览器安装目录后再扫描,避免直接失败。
- 支持区分来源(Chrome / Edge)、profile 名称展示,多 profile 场景下能按来源目录归位;迁移对话框(`BrowserMigrationDialog`)独立于扩展列表,承担扫描进度、勾选、去重、结果反馈的完整闭环。
### 2. 引导页迁移入口与「关于」页引导回看
- **引导页新增「从其他浏览器导入书签和扩展」入口**:首次启动或重新打开引导页时,用户可从这里统一发起书签 / 扩展迁移,不再需要分别翻菜单。配套的迁移对话框(`onboarding/MigrationDialog`)与扩展页共用底层逻辑。
- **「设置 → 关于」底部新增「查看引导页」入口**:老用户后续想再走一遍引导、或补做迁移时,不必再找触发条件,随时可重新打开引导页。
### 3. 稳定性:OOM 恢复策略重写 + 崩溃不再丢失标签
这是本阶段最关键的健壮性修复,针对「系统内存不足」这个最容易让浏览器直接卡死、且旧方案救不回来的场景:
- **OOM 改用系统原生对话框**:原先整窗白屏 / 主 UI 卡死时会弹一个**独立 `BrowserWindow` 覆盖层**承载诊断日志与重启按钮。但覆盖层本身也是 Chromium 渲染进程——在系统内存不足时它同样可能无法显示。现在对 OOM 这一类资源耗尽场景改为调用 `dialog.showMessageBox` 弹**原生系统对话框**(提示语调整为「系统内存不足」措辞,让用户感知是系统资源问题而非浏览器 bug),确认后走 `app.relaunch()` + `app.exit(0)` 整窗重启。普通崩溃 / 卡死仍保留富信息覆盖层。
- **崩溃不再导致标签页记录全部丢失**:主 UI 渲染进程崩溃时,renderer 侧尚未完成的 `startupTabs` 写入也会中断,导致重启后标签记录全没了。现在在重启前由主进程把各窗口仍存活的 `BrowserView` 当前地址**补写进 NeDB**(标记旧的为非 active、写入崩溃前最新 URL),并通过一次性启动参数 `--restore-after-crash=<窗口id>` 在下次启动时**强制恢复崩溃前的标签**,不受用户平时的启动偏好(如「打开主页」)影响。
### 4. 会话 Cookie 持久化:重启后保持登录
- 新增设置项 `persistSessionCookies`(默认关闭)。开启后,那些没有 `Expires` 的**会话级 Cookie 也会落盘**,重启浏览器后仍保留登录态,不必每次重新登录常用站点。
- 作为**启动期命令行开关**实现(运行时切换需重启才生效);**无痕窗口不受影响**——其分区在启动 / 关窗 / 退出时仍被整体清理并删除目录,保证无痕语义不变。设置入口从「隐私」的清除数据对话框旁迁移并归拢到新建的「网页浏览」设置分组。
### 5. 标签栏整理快捷键
- 给工具箱「整理标签栏」子菜单里的三项操作补上了**全局快捷键**,并纳入快捷键设置注册表(可自定义):
- **标签去重**:`Ctrl+Shift+D`
- **按域名分组标签**:`Ctrl+Shift+G`
- **AI 智能分组标签**:`Ctrl+Shift+A`
- 主进程注册隐藏菜单项承载 accelerator,通过 `organize-tabs` IPC 把动作名转发到 renderer 的 `LayoutSwitcher` 执行,与工具箱点击路径合流,保证快捷键与菜单行为一致。
### 6. 侧边栏分组交互增强
一组围绕侧边栏分组(标签组)的可见性与操作改进:
- **分组头部新增「新建标签」按钮**:侧边栏分组头部、以及标签组预览浮层里都加了新建标签入口,可直接在该分组下开新标签。
- **分组计数显示优化**:`SidebarGroupCount` 在分组头部的展示位置与可见性调整,计数更醒目。
- **折叠状态下名称展示**:侧边栏收起 / 分组折叠时仍能识别分组名称,调整了折叠态的样式与标签渲染逻辑。
- **激活标签滚动到视图**:`SidebarTab` 在被选中 / 激活时会自动滚动进可视区域,长标签列表中定位当前标签更省心。
### 7. 内部 flags 页地址归一化
- 新增 `src/common/internal-flags.ts`:把 `chrome://flags` / `yjllq://flags` 及其带路径 / 查询 / 锚点的变体(如 `chrome://flags/?flag=…`)统一解析、归一化为一个规范内部页地址,并在地址确实发生变化时才触发重定向。让从外部链接、旧地址、不同 scheme 别名进入实验功能页时都能落到同一入口,配套测试脚本覆盖解析与重定向路径。
## 体验与细节打磨
- **密码自动填充修复**:网页自动填充会把密码错填到账号框、密码下拉列表选择也异常;地址栏钥匙图标的填充此前是正常的。修正了自动填充定位账号 / 密码框的逻辑,下拉选择与表单填充均恢复正常。
- **地址栏「主页」图标跳转特定页**:点击地址栏左侧主页图标时,若用户设置了特定主页页面,现在会前往该特定页面,而非常规主页行为。
- **标签栏工具箱 hover 显示菜单**:顶部标签栏的工具箱改为悬停即展开菜单,无需点击。
- **全屏下鼠标贴左边缘误收起优化**:鼠标移动到屏幕最左侧边缘时侧边栏会被误触收起,在全屏状态下尤为明显;优化了触发判定,避免误收起。
- **输入法(IME)提交逻辑增强**:地址栏 / 搜索框在输入法复合编辑的某些情况下未能正确提交文本与自动补全后缀,现已修正。
- **搜索时选中已打开标签页**:在搜索结果里选择一个已打开的标签建议时,会正确切换到该已存在的标签,而非新开。
- **建议悬停与键盘选择一致**:地址栏建议项在鼠标悬停高亮与键盘上下键选择之间保持一致,并增强了标签类建议的 URL 处理。
- **扩展 popup 尺寸逻辑重写**:popup 弹窗的最小尺寸与偏好尺寸计算逻辑大幅重构(点击式缩放权限 + 收缩确认),显示更稳定,切到更小内容时能正常收缩。
- **图标加载更可靠**:标签 / 侧边栏图标加载增加**失败图标源管理**,单个图标源失败时回退兜底,图标显示更稳定;同时增强 **SVG 缓存**识别与处理,确保 SVG 图标正确栅格化显示。
- **ToolbarButton 工具提示**:工具栏按钮(含扩展 BrowserAction 图标)补上 `title` 属性,鼠标悬停显示提示。
- **侧边栏拖拽区域微调**:调整侧边栏 `-webkit-app-region` 拖拽区域设置,让悬停区域正确响应、避免误触发窗口移动。
- **flags 页 Markdown 路径修复**:修复在不同启动方式(开发 / 打包)下获取 flags 页 Markdown 文件路径的解析逻辑,缺失时输出错误日志,打包构建配置同步补齐资源拷贝。
## 主要更新
### 1. 从其他浏览器迁移扩展
本阶段体量最大的改动(约 1400 行新增),目标是让从 Chrome / Edge 切换过来的用户能一键把已有扩展搬过来:
- **扩展管理页(`extensions.html`)新增「从本地浏览器迁移扩展」**:主进程会去读取本机 Chrome、Edge 的用户配置目录,扫描其中已安装的扩展。识别到目录后把可迁移的扩展**逐个列出来、默认全选**,用户勾选后批量导入;**自动过滤重复**(已安装的不再重复导入),导入结果给出「成功 / 跳过 / 失败」明细。
- **识别不到时让用户手选安装目录**:若未能自动定位到浏览器扩展目录(自定义安装路径、绿色版等情形),会引导用户手动选择浏览器安装目录后再扫描,避免直接失败。
- 支持区分来源(Chrome / Edge)、profile 名称展示,多 profile 场景下能按来源目录归位;迁移对话框(`BrowserMigrationDialog`)独立于扩展列表,承担扫描进度、勾选、去重、结果反馈的完整闭环。
### 2. 引导页迁移入口与「关于」页引导回看
- **引导页新增「从其他浏览器导入书签和扩展」入口**:首次启动或重新打开引导页时,用户可从这里统一发起书签 / 扩展迁移,不再需要分别翻菜单。配套的迁移对话框(`onboarding/MigrationDialog`)与扩展页共用底层逻辑。
- **「设置 → 关于」底部新增「查看引导页」入口**:老用户后续想再走一遍引导、或补做迁移时,不必再找触发条件,随时可重新打开引导页。
### 3. 稳定性:OOM 恢复策略重写 + 崩溃不再丢失标签
这是本阶段最关键的健壮性修复,针对「系统内存不足」这个最容易让浏览器直接卡死、且旧方案救不回来的场景:
- **OOM 改用系统原生对话框**:原先整窗白屏 / 主 UI 卡死时会弹一个**独立 `BrowserWindow` 覆盖层**承载诊断日志与重启按钮。但覆盖层本身也是 Chromium 渲染进程——在系统内存不足时它同样可能无法显示。现在对 OOM 这一类资源耗尽场景改为调用 `dialog.showMessageBox` 弹**原生系统对话框**(提示语调整为「系统内存不足」措辞,让用户感知是系统资源问题而非浏览器 bug),确认后走 `app.relaunch()` + `app.exit(0)` 整窗重启。普通崩溃 / 卡死仍保留富信息覆盖层。
- **崩溃不再导致标签页记录全部丢失**:主 UI 渲染进程崩溃时,renderer 侧尚未完成的 `startupTabs` 写入也会中断,导致重启后标签记录全没了。现在在重启前由主进程把各窗口仍存活的 `BrowserView` 当前地址**补写进 NeDB**(标记旧的为非 active、写入崩溃前最新 URL),并通过一次性启动参数 `--restore-after-crash=<窗口id>` 在下次启动时**强制恢复崩溃前的标签**,不受用户平时的启动偏好(如「打开主页」)影响。
### 4. 会话 Cookie 持久化:重启后保持登录
- 新增设置项 `persistSessionCookies`(默认关闭)。开启后,那些没有 `Expires` 的**会话级 Cookie 也会落盘**,重启浏览器后仍保留登录态,不必每次重新登录常用站点。
- 作为**启动期命令行开关**实现(运行时切换需重启才生效);**无痕窗口不受影响**——其分区在启动 / 关窗 / 退出时仍被整体清理并删除目录,保证无痕语义不变。设置入口从「隐私」的清除数据对话框旁迁移并归拢到新建的「网页浏览」设置分组。
### 5. 标签栏整理快捷键
- 给工具箱「整理标签栏」子菜单里的三项操作补上了**全局快捷键**,并纳入快捷键设置注册表(可自定义):
- **标签去重**:`Ctrl+Shift+D`
- **按域名分组标签**:`Ctrl+Shift+G`
- **AI 智能分组标签**:`Ctrl+Shift+A`
- 主进程注册隐藏菜单项承载 accelerator,通过 `organize-tabs` IPC 把动作名转发到 renderer 的 `LayoutSwitcher` 执行,与工具箱点击路径合流,保证快捷键与菜单行为一致。
### 6. 侧边栏分组交互增强
一组围绕侧边栏分组(标签组)的可见性与操作改进:
- **分组头部新增「新建标签」按钮**:侧边栏分组头部、以及标签组预览浮层里都加了新建标签入口,可直接在该分组下开新标签。
- **分组计数显示优化**:`SidebarGroupCount` 在分组头部的展示位置与可见性调整,计数更醒目。
- **折叠状态下名称展示**:侧边栏收起 / 分组折叠时仍能识别分组名称,调整了折叠态的样式与标签渲染逻辑。
- **激活标签滚动到视图**:`SidebarTab` 在被选中 / 激活时会自动滚动进可视区域,长标签列表中定位当前标签更省心。
### 7. 内部 flags 页地址归一化
- 新增 `src/common/internal-flags.ts`:把 `chrome://flags` / `yjllq://flags` 及其带路径 / 查询 / 锚点的变体(如 `chrome://flags/?flag=…`)统一解析、归一化为一个规范内部页地址,并在地址确实发生变化时才触发重定向。让从外部链接、旧地址、不同 scheme 别名进入实验功能页时都能落到同一入口,配套测试脚本覆盖解析与重定向路径。
## 体验与细节打磨
- **密码自动填充修复**:网页自动填充会把密码错填到账号框、密码下拉列表选择也异常;地址栏钥匙图标的填充此前是正常的。修正了自动填充定位账号 / 密码框的逻辑,下拉选择与表单填充均恢复正常。
- **地址栏「主页」图标跳转特定页**:点击地址栏左侧主页图标时,若用户设置了特定主页页面,现在会前往该特定页面,而非常规主页行为。
- **标签栏工具箱 hover 显示菜单**:顶部标签栏的工具箱改为悬停即展开菜单,无需点击。
- **全屏下鼠标贴左边缘误收起优化**:鼠标移动到屏幕最左侧边缘时侧边栏会被误触收起,在全屏状态下尤为明显;优化了触发判定,避免误收起。
- **输入法(IME)提交逻辑增强**:地址栏 / 搜索框在输入法复合编辑的某些情况下未能正确提交文本与自动补全后缀,现已修正。
- **搜索时选中已打开标签页**:在搜索结果里选择一个已打开的标签建议时,会正确切换到该已存在的标签,而非新开。
- **建议悬停与键盘选择一致**:地址栏建议项在鼠标悬停高亮与键盘上下键选择之间保持一致,并增强了标签类建议的 URL 处理。
- **扩展 popup 尺寸逻辑重写**:popup 弹窗的最小尺寸与偏好尺寸计算逻辑大幅重构(点击式缩放权限 + 收缩确认),显示更稳定,切到更小内容时能正常收缩。
- **图标加载更可靠**:标签 / 侧边栏图标加载增加**失败图标源管理**,单个图标源失败时回退兜底,图标显示更稳定;同时增强 **SVG 缓存**识别与处理,确保 SVG 图标正确栅格化显示。
- **ToolbarButton 工具提示**:工具栏按钮(含扩展 BrowserAction 图标)补上 `title` 属性,鼠标悬停显示提示。
- **侧边栏拖拽区域微调**:调整侧边栏 `-webkit-app-region` 拖拽区域设置,让悬停区域正确响应、避免误触发窗口移动。
- **flags 页 Markdown 路径修复**:修复在不同启动方式(开发 / 打包)下获取 flags 页 Markdown 文件路径的解析逻辑,缺失时输出错误日志,打包构建配置同步补齐资源拷贝。
评论
暂无评论。