雨见浏览器pc测试版1.3.1

发布于

本阶段(1.3.0 → 1.3.1)的更新以「把小号(profile)从『能创建』升级成一套完整的多账号工作台」为主线,围绕小号做了一次成体系的扩容:新增独立的 **profile 数据克隆模块**,把主账号的书签 / 密码 / 历史 / 扩展 / 设置一次性快照进新小号;小号支持创建**桌面与开始菜单快捷方式**(Windows,自动把图标转成 `.ico`),并能用本地图标做个性化;PWA 安装对话框扩展出 profile 模式,可以把网页应用直接装进某个小号。书签侧也补齐了高频的「剪切 / 复制 / 粘贴 / 替换为当前网址 / 文件夹移动」一整套操作,并重做了导入性能。此外新增了「M3U8 下载分片并发线程数」配置、「popup 在新标签页打开」开关、工具栏可加入「截图 / 翻译」按钮,并在 Windows 任务栏固定、密码保存匹配、数据目录迁移安全等若干路径上做了修复与加固。

## 主要更新

### 1. 小号(profile)体系扩容:数据克隆 + 快捷方式 + PWA 装进小号

这是本阶段体量最大的一组改动,目标是让多账号真正「开箱即用」,而不是建完空号一切重来:

- **profile 数据克隆**:新增独立模块 `src/main/profile-data-clone.ts`,创建小号时可以勾选把主账号的 **书签 / 密码 / 历史 / 扩展 / 设置** 五类数据一次性克隆过去。
- 书签与 NeDB 类数据(密码、历史、表单等)按「一行一条 JSON」的格式读取,**只保留完整记录**,并在写入前做去重与删除标记压实(`$$deleted`),避免主账号仍在写入时读到末尾半行、导致新小号首次加载数据库整库解析失败。
- 扩展状态以 JSON 快照形式迁移,覆盖 `crx-dnr-rules.json`、`crx-permissions.json`、`crx-dynamic-content-scripts.json`、`crx-user-scripts.json`、`privacy-settings.json`、`font-settings.json` 等关键状态文件。
- 提供独立回归测试 `scripts/test-profile-data-clone.js` 覆盖快照路径。
- **小号桌面 / 开始菜单快捷方式**:小号现在可以生成独立的启动快捷方式(Windows),参数走 `--rainsee-profile=<name>`。
- 区分「桌面」与「开始菜单」两个目标位(开始菜单写入 `%AppData%\Microsoft\Windows\Start Menu\Programs`),可同时勾选。
- 支持**自定义本地图标**:选用本地图片后,Windows 下自动用内置的 `buildIcoFromPng` 把 PNG 转成多尺寸 `.ico` 落到小号目录,缺失时回退到默认图标,避免图标加载失败导致快捷方式变白板。
- 快捷方式管理从原来粗放的 `profiles-create-shortcut` 改为按窗口 ID 分发的 `profile-shortcut-open-<windowId>` 通道,配合错误回传,前端能正确提示「无法打开快捷方式设置」而非泛泛失败。
- **PWA 安装支持 profile 模式**:安装 PWA 的对话框重构出 profile 分支,可以把网页应用装到指定小号下;整个对话框补齐了错误信息展示(错误态独立样式),store 同时管理 PWA 与 profile 快捷方式两种确认流程。
- **安装对话框居中打开**:新增 `openCentered` 方法,`DialogStore` 改用稳定的窗口 ID 取值,避免对话框定位偏移与窗口引用错乱。
- **小号跳过引导的提醒**:旧主进程创建的小号会留下**空**的引导完成标记文件,新增 `consume-profile-onboarding-skipped-notice` IPC 做一次性消费——判定用户确实跳过了引导(标记文件为空)后,弹出对应提示并写入「已展示」标志,避免重复打扰;正常完成引导(带时间戳)的小号不受影响。

### 2. 书签:右键剪切/复制/粘贴 + 替换为当前网址 + 文件夹移动校验 + 批量导入提速

书签管理是这个阶段另一条主线,集中补齐了与 Chrome / Edge 对齐的高频交互:

- **右键菜单剪切 / 复制 / 粘贴**:菜单内部维护一份独立的「书签剪贴板」(区分 `cut` / `copy` 模式,记录被操作项的 id 与快照副本),并在复制的同时把 URL 文本同步写入**系统剪贴板**,方便直接粘贴到外部。
- 粘贴时做合法性校验(`canPasteInto`):剪切模式下不允许把节点粘进它自己或它的后代;复制模式则按快照深拷贝生成新节点,保留多级文件夹结构。
- 对文件夹提供「全部打开(N 项)/ 全部在新窗口中打开 / 全部在无痕窗口中打开」批量入口,单条则保留「在新标签页 / 新窗口 / 无痕窗口中打开」单项入口。
- **「替换为当前网址」**:右键菜单新增该项(仅在书签栏、非文件夹、且当前页 URL 与书签 URL 不同时可用),一键把书签地址更新为当前标签页 URL,并同步刷新 favicon,省去「编辑 → 改 URL → 保存」三步。
- **文件夹移动校验**:移动书签到新文件夹时新增 `canMoveItemToFolder` / `moveItemToFolder`,**禁止把文件夹移入它自己的后代目录**,从源头杜绝循环目录结构;移动失败时给出明确反馈而不是静默错位。
- **批量导入提速**:新增 `bookmarks-import-tree` IPC 与 `importBrowserBookmarks` 实现,按整棵树批量构建节点(`createImportedBookmarkId` 本地生成 `import_<时间>_<序号>_<随机>` 形态的 id),最终一次 `insertMany` 写入,取代「逐条 addBookmark」的串行多 IO + O(N²) 扫描,大批量导入从其他浏览器书签时显著更快。

### 3. 工具栏自定义:新增「截图」「翻译」按钮

- 工具栏按钮注册表新增 `screenshot`(截图)与 `translate-page`(翻译)两项,定位在地址栏右侧,**默认隐藏**,用户可在「自定义工具栏」里开启。
- 默认工具栏布局随之刷新:地址栏左侧仅保留「主页」,右侧依次为「扩展 → 下载 → 订阅 → 雨见 AI → 历史 → 书签 → 清理浏览数据 → 截图 → 翻译」,其中后五项默认放入 `hidden`,把高频与低频入口分层。

### 4. M3U8 下载:分片并发线程数可配

- 设置项新增 `m3u8DownloadThreads`(默认 `8`,范围 `1~32`,常量 `MIN/MAX_M3U8_DOWNLOAD_THREADS` 统一约束),控制 M3U8 视频分片同时下载的数量。
- 设置面板的「下载」分区新增对应输入控件,带输入校验与钳制:非法值(非有限数)回默认、小数取整、超出范围截到上下限,并在持久化加载与 `update` 写入两条路径上各做一次归一化,避免脏配置导致下载器行为异常。

### 5. popup 在新标签页打开

- 新增 `openPopupsInNewTab` 开关:开启后扩展弹窗(popup)不再以悬浮卡形式弹出,而是直接在当前窗口开一个新标签页承载,方便 popup 内做长列表 / 复杂表单操作,也避免 popup 失焦即关闭的限制。
- 设置项落到「权限」分区,URL 工具函数 `extractDomain` 同步加固了对 `null` / `undefined` 输入的兼容。

## 体验与细节打磨

- **Windows 任务栏固定修复**:主进程启动时显式 `app.setAppUserModelId('com.rainsee.pcbrowser')`,与 `electron-builder.json` 的 `appId` 对齐。此前 NSIS 覆盖更新替换可执行文件后,未显式声明进程 AUMID 会让固定在任务栏的快捷方式被判定为「过期」,更新后旧 pinned 项失效;现在 pinned 与 Start 菜单快捷方式能正确绑定到运行中进程。
- **清除浏览数据默认不再勾选 Cookie**:「清除浏览数据」面板的默认项调整,Cookie 默认不勾选,避免用户清理缓存时顺手把所有站点登录态清掉。
- **凭证(密码)保存 / 更新逻辑改进**:保存密码时按 `hostname`(优先从表单提交 URL 解析,回退到当前视图 hostname)匹配既有凭证,区分 `credentials-insert` 与 `credentials-update` 两个事件,带 `credentialId` 时精确命中、否则按 host 兜底;同步只持久化密码长度字段(`passLength`)而非明文用于显示,保存后立即广播给设置页与对应视图刷新,避免「同一站点反复弹保存提示」或更新后列表不刷新。
- **数据目录迁移加固**:迁移前对目标目录做多项校验——与当前目录相同则跳过、目标非空(且非仅有指针文件)时给出「可能与既有文件混存」的警告但不阻断、磁盘空间不足时直接报错;同时明确「小号数据由主账号统一管理,不能单独迁移数据目录」「当前已是默认数据目录」等边界,迁移逻辑整体更可读、更安全。
- **扩展存储补丁重连机制**:扩展 `storage` 注入补丁里的页面事件监听新增重连逻辑——端口断开后按指数退避(100ms 起步、上限 2000ms)自动重试 `PBarmPageListen`,并通过 `__crxPageEventSubscribe` / `__crxPageEventUnsubscribe` 维护当前订阅集合,重连后把订阅重新发给新端口;配套新增 `scripts/test-extension-storage-patch.js` 回归测试覆盖打补丁与剥离路径。
- **扩展按钮区重构**:`RightButtons` 拆分出独立的 `ExtensionActions` 组件承载扩展按钮逻辑,改进扩展按钮在工具栏中的可见性判断,并对地址栏紧凑宽度做了专门处理;侧边面板(side-panel)API 同步调整,扩展图标在窄宽下不再被误隐藏或溢出。
- **扩展 popup 窗口路由与下载处理**:会话层(`sessions-service`)改进了扩展 popup 的窗口路由与下载链路,避免扩展弹窗里的下载、新窗口请求被错误地派发到当前标签页或丢失。
- **代码结构重构**:对若干模块做了可读性与可维护性整理(独立提交 `1b7affb`),为上述新功能提供更清晰的边界。

评论

暂无评论。