雨见浏览器PC测试版1.5.5
本阶段(1.5.4 → 1.5.5)的主线是「**图片上传处理与下载弹窗重构**」。第一块是全新的**图片上传处理弹窗**——网页选择图片上传时自动拦截,弹窗内可直接上传、视觉无损压缩、压缩到指定大小或裁剪后再上传;压缩核心为零依赖的 PNG 减色引擎(调色板 + 抖动),照片类 PNG 普遍能减 60%~80%;本地文件「图片压缩」操作同样接入本地弹窗,不再跳 TinyPNG 网页。第二块是**下载弹窗全面翻新**——文件类型图标、图片/视频系统缩略图预览、长文件名中间省略(保留扩展名)、原生右键菜单、毛玻璃外观,列表高度自适应不再被菜单裁切。其余还有**退出清理对齐 Chrome 扩到 8 项**、**扩展侧边栏 close/onOpened/onClosed 支持与空白修复**、主页可自选浏览器搜索引擎、标签栏顶边盲点可点击、书签文件夹弹窗悬停提示、广告拦截加载健壮性修复,以及 SPA hash 路由登录页的密码填充修复。
## 主要更新
### 1. 图片上传处理
- **上传拦截弹窗**(`c31b0f2`):网页通过 `<input type=file>` 选图上传时,主进程拦截并把图片交给居中弹窗处理,处理完写回网页继续上传;弹窗提供四种模式——**直接上传**(原图不做处理,`8969c7c`)、**视觉无损压缩**(保持尺寸高质量重编码、去除元数据)、**压缩到指定大小**(自动调整质量与尺寸保证不超上限)、**裁剪**(拖动选框按比例或自由裁剪,可裁完再压到目标大小)。弹窗被动的隐藏(点回网页/切标签)按取消结束挂起请求,不留死等。
- **PNG 减色压缩引擎**(`c2331df`):零依赖实现 TinyPNG 同思路——颜色 ≤256 色时直接建调色板(真无损),否则对采样像素做中位切分得 256 色调色板,再用 Floyd–Steinberg 抖动映射,肉眼几乎无差别;输出 8 位索引色 PNG(PLTE + tRNS),IDAT 用浏览器原生 CompressionStream 压缩。照片类 PNG 一般减 60%~80%,图标/截图类往往无损且更小。处理结果新增**直接下载**按钮,弹窗保持打开可继续处理下一张。
- **本地文件压缩接入**(`3ab293d`):超级拖拽/文件操作菜单的「图片压缩」改为打开本地压缩弹窗(standalone 模式,结果走浏览器下载),不再强制跳 TinyPNG 网页;gif/avif/tiff 等 canvas 无法编码的格式仍回落网页处理。
- **设置页「图片上传」分区**(`c31b0f2`):可开关上传拦截(默认开)、选择默认处理方式、配置默认目标大小与默认最长边;支持「本站总是直接上传」的站点列表管理(处理弹窗内勾选即可添加)。
### 2. 下载弹窗重构
- **类型图标与缩略图**(`6aafcce`):新增下载弹窗与下载页共用的文件类型识别 + 内联 SVG 图标组件(图片/视频/音频/压缩包/PDF/文档/表格/演示/代码/安装包等十余类);已完成任务的图片、视频取系统缩略图,exe/msi 等安装包取系统文件图标,按「id + 路径」缓存避免重复取图。
- **文件名中间省略**(`31954c4`):长文件名不再尾部一刀切,改用 canvas 按当前字体精确测量的中间截断——扩展名完整保留在尾部,文件名部分从头尾两端均匀收缩,一眼能同时看到文件名开头和扩展名。
- **菜单与布局**(`6aafcce`):每项的「⋯」下拉改为与右键共用的原生菜单,不受 BrowserView 边界裁切,弹窗无需为菜单预留高度;列表高度改用 ResizeObserver 按真实内容上报,增删任务、进度行出现/消失即时跟随;头部改为标题 + 副标题 + 文字/图标按钮的简洁布局,滚动时头部出现分隔。
- **外观统一**(`ed49d03`):弹窗圆角、边框、阴影、毛玻璃与扩展列表弹窗保持一致(18px 圆角 + 28px 背景模糊 + 高光描边),半透明背景不再发灰发脏。
### 3. 退出清理升级
- **清理项扩到 8 项**(`6de2157`):「退出时自动清理」从 4 项扩为 8 项,对齐 Chrome「清除浏览数据」——浏览记录、搜索历史、下载记录(只清列表不删文件,进行中任务保留)、Cookie 及其他网站数据(localStorage/IndexedDB/Service Worker 等)、缓存的图片和文件、已保存的密码、自动填充表单数据、网站设置(逐站授权/屏蔽 + 设备授权)。
- **扩展数据保护**:清理 Cookie 及网站数据时按来源排除所有已安装扩展(chrome.storage / 扩展 IndexedDB 不被连带清空),缓存单独走 clearCache。
- **数据量展示**(`6de2157`):设置页清理对话框每项下方显示当前数据量(N 条记录、N 个站点的 Cookie、缓存体积、「用于 example.com 等」的密码站点),单项读取失败只显示标题不报错;对话框布局对齐 Chrome「清除浏览数据·高级」,支持键盘焦点环与悬停高亮。
### 4. 扩展兼容(侧边栏与后台)
- **chrome.sidePanel 补全**(`6987ba2`):新增 `chrome.sidePanel.close()`(仅当当前可见面板属于该扩展时收起),并派发 `onOpened`/`onClosed` 事件——打开/切换/关闭/切标签恢复面板时都会通知扩展,扩展据此维护面板开关状态(快捷键/图标切换依赖它),漏发会让扩展以为面板仍开着。
- **侧边栏空白修复**(`6987ba2`):面板内容改用独立的 crx-sidepanel-preload。preload 路径参与 Electron 渲染进程复用判定,此前与扩展 Service Worker 同 preload 路径会被塞进 SW 的渲染进程,SW 空闲停止/崩溃时面板跟着死、1 秒后变空白。
- **SW 唤醒早期 API 调用修复**(`6987ba2`):Service Worker 被唤醒时会先执行扩展顶层代码,此时 preload 还没暴露 electron bridge,`declarativeNetRequest.updateDynamicRules` 等启动期调用会以「Receiving end does not exist」拒绝;现在 worker 环境下 bridge 未就绪时自动等待(约 10 秒上限)重试,不再报错。
### 5. 主页与搜索
- **主页可自选搜索引擎**(`d74b909`):主页 iframe 可请求浏览器搜索引擎列表(只下发名称/网址/快捷字词/图标等公开字段),在主页内自选本次搜索用的引擎,只影响主页、不改浏览器默认引擎;浏览器侧引擎变化主动推送到主页。主页的「使用浏览器搜索引擎」编辑入口(`ktllq://searchengines`)直接打开设置页「管理搜索引擎」分区。
### 6. 界面细节与修复
- **标签栏顶边盲点可点击**(`e13d662`):窗口最大化/全屏时,第 0 行标签上方与屏幕顶边之间有一段间隙点不中;现用透明伪元素把命中区向上补到窗口顶边(Fitts 定律,同 Chrome),鼠标顶到屏幕最上沿也能点中、悬停、拖拽标签,新建按钮同样处理;非贴顶状态保留间隙给窗口拖动与顶边缩放。
- **书签文件夹弹窗悬停提示**(`4028ebc`):书签溢出浮层(书签文件夹下拉)内的书签悬停也显示「标题 + 网址」两行原生 tooltip,与书签栏一致;文件夹不显示(悬停即展开子菜单),拖拽期间隐藏,拖拽预览不再残留 title。
- **沉浸浏览指示条**(`bf3db0d`):设置外观中的「显示顶部指示条」从属于沉浸浏览,未开启沉浸浏览时整行隐藏。
- **本地网络权限**(`3ba01b8`):权限设置新增「本地网络访问」项及描述(允许网站连接本地网络中的设备和服务),权限申请提示同步。
- **广告拦截健壮性**(`7aeddd3`):过滤引擎模块动态加载失败不再缓存 rejection(此前失败一次后永不重试);有启用订阅却拉到 0 规则时删掉引擎缓存,并在 1/2/3 分钟后自动重建,不用等重启,期间弹窗规则数不再一直是 0;启动时普通/无痕会话并发初始化改用共享 promise,修复第二个会话看到「已初始化但引擎未就绪」直接跳过启用的问题;查询规则总数时若上次加载失败且拦截开启,顺带对所有会话重试并等待加载完成。
- **SPA 登录页密码填充修复**(`736fdd2`):hash 路由单页应用(如 `/#/login?redirect_uri=...`)的登录路径只出现在 hash 中,此前 pathname 检测不到导致不识别为登录页;现在 pathname 与 hash 路由都参与匹配。同时把 `button[type="button"]` 纳入登录表单控件识别(Element UI 等组件库的登录按钮常为 type=button 由 JS 提交),误标为登录密码的误判也更准。
## 主要更新
### 1. 图片上传处理
- **上传拦截弹窗**(`c31b0f2`):网页通过 `<input type=file>` 选图上传时,主进程拦截并把图片交给居中弹窗处理,处理完写回网页继续上传;弹窗提供四种模式——**直接上传**(原图不做处理,`8969c7c`)、**视觉无损压缩**(保持尺寸高质量重编码、去除元数据)、**压缩到指定大小**(自动调整质量与尺寸保证不超上限)、**裁剪**(拖动选框按比例或自由裁剪,可裁完再压到目标大小)。弹窗被动的隐藏(点回网页/切标签)按取消结束挂起请求,不留死等。
- **PNG 减色压缩引擎**(`c2331df`):零依赖实现 TinyPNG 同思路——颜色 ≤256 色时直接建调色板(真无损),否则对采样像素做中位切分得 256 色调色板,再用 Floyd–Steinberg 抖动映射,肉眼几乎无差别;输出 8 位索引色 PNG(PLTE + tRNS),IDAT 用浏览器原生 CompressionStream 压缩。照片类 PNG 一般减 60%~80%,图标/截图类往往无损且更小。处理结果新增**直接下载**按钮,弹窗保持打开可继续处理下一张。
- **本地文件压缩接入**(`3ab293d`):超级拖拽/文件操作菜单的「图片压缩」改为打开本地压缩弹窗(standalone 模式,结果走浏览器下载),不再强制跳 TinyPNG 网页;gif/avif/tiff 等 canvas 无法编码的格式仍回落网页处理。
- **设置页「图片上传」分区**(`c31b0f2`):可开关上传拦截(默认开)、选择默认处理方式、配置默认目标大小与默认最长边;支持「本站总是直接上传」的站点列表管理(处理弹窗内勾选即可添加)。
### 2. 下载弹窗重构
- **类型图标与缩略图**(`6aafcce`):新增下载弹窗与下载页共用的文件类型识别 + 内联 SVG 图标组件(图片/视频/音频/压缩包/PDF/文档/表格/演示/代码/安装包等十余类);已完成任务的图片、视频取系统缩略图,exe/msi 等安装包取系统文件图标,按「id + 路径」缓存避免重复取图。
- **文件名中间省略**(`31954c4`):长文件名不再尾部一刀切,改用 canvas 按当前字体精确测量的中间截断——扩展名完整保留在尾部,文件名部分从头尾两端均匀收缩,一眼能同时看到文件名开头和扩展名。
- **菜单与布局**(`6aafcce`):每项的「⋯」下拉改为与右键共用的原生菜单,不受 BrowserView 边界裁切,弹窗无需为菜单预留高度;列表高度改用 ResizeObserver 按真实内容上报,增删任务、进度行出现/消失即时跟随;头部改为标题 + 副标题 + 文字/图标按钮的简洁布局,滚动时头部出现分隔。
- **外观统一**(`ed49d03`):弹窗圆角、边框、阴影、毛玻璃与扩展列表弹窗保持一致(18px 圆角 + 28px 背景模糊 + 高光描边),半透明背景不再发灰发脏。
### 3. 退出清理升级
- **清理项扩到 8 项**(`6de2157`):「退出时自动清理」从 4 项扩为 8 项,对齐 Chrome「清除浏览数据」——浏览记录、搜索历史、下载记录(只清列表不删文件,进行中任务保留)、Cookie 及其他网站数据(localStorage/IndexedDB/Service Worker 等)、缓存的图片和文件、已保存的密码、自动填充表单数据、网站设置(逐站授权/屏蔽 + 设备授权)。
- **扩展数据保护**:清理 Cookie 及网站数据时按来源排除所有已安装扩展(chrome.storage / 扩展 IndexedDB 不被连带清空),缓存单独走 clearCache。
- **数据量展示**(`6de2157`):设置页清理对话框每项下方显示当前数据量(N 条记录、N 个站点的 Cookie、缓存体积、「用于 example.com 等」的密码站点),单项读取失败只显示标题不报错;对话框布局对齐 Chrome「清除浏览数据·高级」,支持键盘焦点环与悬停高亮。
### 4. 扩展兼容(侧边栏与后台)
- **chrome.sidePanel 补全**(`6987ba2`):新增 `chrome.sidePanel.close()`(仅当当前可见面板属于该扩展时收起),并派发 `onOpened`/`onClosed` 事件——打开/切换/关闭/切标签恢复面板时都会通知扩展,扩展据此维护面板开关状态(快捷键/图标切换依赖它),漏发会让扩展以为面板仍开着。
- **侧边栏空白修复**(`6987ba2`):面板内容改用独立的 crx-sidepanel-preload。preload 路径参与 Electron 渲染进程复用判定,此前与扩展 Service Worker 同 preload 路径会被塞进 SW 的渲染进程,SW 空闲停止/崩溃时面板跟着死、1 秒后变空白。
- **SW 唤醒早期 API 调用修复**(`6987ba2`):Service Worker 被唤醒时会先执行扩展顶层代码,此时 preload 还没暴露 electron bridge,`declarativeNetRequest.updateDynamicRules` 等启动期调用会以「Receiving end does not exist」拒绝;现在 worker 环境下 bridge 未就绪时自动等待(约 10 秒上限)重试,不再报错。
### 5. 主页与搜索
- **主页可自选搜索引擎**(`d74b909`):主页 iframe 可请求浏览器搜索引擎列表(只下发名称/网址/快捷字词/图标等公开字段),在主页内自选本次搜索用的引擎,只影响主页、不改浏览器默认引擎;浏览器侧引擎变化主动推送到主页。主页的「使用浏览器搜索引擎」编辑入口(`ktllq://searchengines`)直接打开设置页「管理搜索引擎」分区。
### 6. 界面细节与修复
- **标签栏顶边盲点可点击**(`e13d662`):窗口最大化/全屏时,第 0 行标签上方与屏幕顶边之间有一段间隙点不中;现用透明伪元素把命中区向上补到窗口顶边(Fitts 定律,同 Chrome),鼠标顶到屏幕最上沿也能点中、悬停、拖拽标签,新建按钮同样处理;非贴顶状态保留间隙给窗口拖动与顶边缩放。
- **书签文件夹弹窗悬停提示**(`4028ebc`):书签溢出浮层(书签文件夹下拉)内的书签悬停也显示「标题 + 网址」两行原生 tooltip,与书签栏一致;文件夹不显示(悬停即展开子菜单),拖拽期间隐藏,拖拽预览不再残留 title。
- **沉浸浏览指示条**(`bf3db0d`):设置外观中的「显示顶部指示条」从属于沉浸浏览,未开启沉浸浏览时整行隐藏。
- **本地网络权限**(`3ba01b8`):权限设置新增「本地网络访问」项及描述(允许网站连接本地网络中的设备和服务),权限申请提示同步。
- **广告拦截健壮性**(`7aeddd3`):过滤引擎模块动态加载失败不再缓存 rejection(此前失败一次后永不重试);有启用订阅却拉到 0 规则时删掉引擎缓存,并在 1/2/3 分钟后自动重建,不用等重启,期间弹窗规则数不再一直是 0;启动时普通/无痕会话并发初始化改用共享 promise,修复第二个会话看到「已初始化但引擎未就绪」直接跳过启用的问题;查询规则总数时若上次加载失败且拦截开启,顺带对所有会话重试并等待加载完成。
- **SPA 登录页密码填充修复**(`736fdd2`):hash 路由单页应用(如 `/#/login?redirect_uri=...`)的登录路径只出现在 hash 中,此前 pathname 检测不到导致不识别为登录页;现在 pathname 与 hash 路由都参与匹配。同时把 `button[type="button"]` 纳入登录表单控件识别(Element UI 等组件库的登录按钮常为 type=button 由 JS 提交),误标为登录密码的误判也更准。
· 0 个赞
· 0 个赞