Repository navigation
Releases: DMSQ-creator/ProxySwitch
Release list
ProxySwitch v7.11.0 — 页面请求诊断与临时试用 / Request Diagnostics & Routing Trials
中文
- 新增:弹窗“当前页面请求”入口与详细诊断页;用户主动开启后,按域名查看请求摘要、规则线路、匹配依据和错误,支持筛选与主站分流不同的域名。
- 新增:批量试用代理或直连规则,支持返回网页验证、撤销和保存正式规则;临时试用 10 分钟到期,不自动覆盖冲突的手动规则或切换代理模式。
- 界面:弹窗内快速处理,完整诊断页始终绑定原标签页;支持深浅色及英文、简体中文、西班牙语、俄语,沿用插件语言设置。
- 隐私:请求观察为可选权限,默认不采集;仅采集指定普通标签页,单次最多 60 秒,不支持无痕模式。摘要仅保存在本地,30 分钟后清理,不记录完整 URL、Cookie 或请求正文,不参加配置导出或云备份。
- 说明:规则线路不等于实际出口,HTTP 成功不等于验证通过;临时和正式域名规则均可能影响其他页面对这些域名及其子域名的请求,不保证 Cloudflare 验证通过。
- 兼容性:现有配置无需迁移,最低支持 Chrome 95;新增
alarms用于过期清理,webRequest仅在首次主动采集时申请。 - 验证:174 项自动化测试通过;真实 Chromium 验证跨域请求采集、实际代理转发、撤销、保存以及中英文和深浅色界面。
English
- Added Current page requests in the popup and a detailed diagnostics page. User-initiated captures summarize request domains, predicted routes, matching rules, and errors, with a filter for routes differing from the main site's.
- Added batch proxy/direct trials with return-to-page verification, undo, and permanent rule saving. Trials expire after 10 minutes without silently overriding conflicting manual rules or changing the proxy mode.
- UI: quick actions stay in the popup; the full diagnostics page remains bound to the original tab. Light/dark themes and English, Simplified Chinese, Spanish, and Russian follow the extension's language setting.
- Privacy: request observation uses an optional permission and is off by default. Each capture observes one selected normal tab for up to 60 seconds; incognito is not supported. Local summaries are cleaned up after 30 minutes, exclude full URLs, cookies, and request bodies, and are not included in configuration exports or cloud backups.
- Clarified that predicted routes do not prove the actual exit, and HTTP success does not prove a challenge succeeded. Trial and permanent rules also affect other pages requesting these domains and their subdomains; passing Cloudflare verification is not guaranteed.
- Compatibility: existing settings need no migration; Chrome 95 remains the minimum. Added
alarmsfor expiry cleanup; optionalwebRequestaccess is requested only when the user starts a capture for the first time. - Validation: all 174 automated tests passed. Real Chromium verified cross-domain capture, actual proxy forwarding, undo, permanent saving, Chinese/English text, and light/dark layouts.
安装 / Installation
下载下方的 ProxySwitch-v7.11.0.zip,解压后在浏览器扩展管理页开启开发者模式,选择加载已解压的扩展程序。已加载本地目录的用户可更新文件后重新加载扩展。首次主动采集页面请求时需允许可选权限。
Download ProxySwitch-v7.11.0.zip below, extract it, enable Developer mode on your browser's extensions page, and select Load unpacked. Existing unpacked installations can update their files and reload the extension. Grant the optional permission when starting your first request capture.
ProxySwitch v7.10.0 — 一键白名单与语言修复 / Direct List & Language Fixes
中文
- 新增:弹窗可一键将当前域名加入直连白名单,网页仍在加载时也可操作;明确展示域名及子域名范围,并支持只撤销白名单、保留原有代理规则
- 修复:Chrome 使用英文、插件选择简体中文时,弹窗部分文字仍为英文;语言包加载完成后重新翻译按钮、提示和动态状态,切回跟随浏览器语言同样生效
- 优化:白名单变更在自动分流模式下刷新 PAC;其他模式只保存规则并提示生效条件,避免误显示已直连或改变当前代理模式
- 修复:代理模式延迟返回时重新校正站点状态;配置临时读取失败时保留已加载的语言、主题和服务器选择
- 完善:白名单保存失败或超时时恢复操作按钮;区分“规则已保存”和“代理刷新尚未确认”,防止误报成功
- 验证:90 项自动化检查通过;在英文 Chromium 中验证简体中文显示、语言切换、白名单添加与撤销、实际 PAC 分流及浅色/深色界面
- 兼容性:现有配置无需迁移,未新增权限;最低支持 Chrome 95
English
- Added a one-click Direct for this site button in the popup, available even while the page is loading. The popup shows the hostname and subdomain scope; undo removes only that hostname's direct-list entry and keeps existing proxy rules.
- Fixed partially English popup text when Chrome uses English and the extension is set to Simplified Chinese. Buttons, tooltips, and dynamic status labels are retranslated when the language pack loads; switching back to the browser language also works.
- Direct-list changes now refresh the active PAC in Auto mode. Other modes save the rule and explain when it applies, without changing the selected proxy mode or claiming the site is already connected directly.
- Fixed stale site status when the proxy mode arrives late. Temporary configuration-read failures now preserve the loaded language, theme, and server selection.
- Improved error handling: failed or timed-out direct-list updates release the action buttons, and the popup distinguishes saved rules from unconfirmed proxy refreshes.
- Validation: all 90 automated checks passed. An English Chromium session also verified Simplified Chinese text, language switching, direct-list add/undo, actual PAC routing, and light/dark layouts.
- Compatibility: existing settings need no migration, no new permissions were added, and Chrome 95 remains the minimum supported version.
下载与校验 / Download & verification
文件 / File: ProxySwitch-v7.10.0.zip
SHA-256: a32d964d52c5a676ac93badc63901d1969374ffddcee478169bf76d38e68ca64
ProxySwitch v7.9.0 — 弹窗稳定性与故障黑匣子
- 修复:自动分流模式下,网页打不开或仍在加载时点击扩展图标,popup 偶发无响应且 Service Worker 可能显示无效的问题
- 修复:状态图标运行时 Canvas/GPU 像素读取可能卡住 Worker;改为使用构建时生成的静态 RGBA 图标数据,避免图形读取阻塞启动
- 新增:故障黑匣子从 popup 页面和 Worker 执行的最早阶段开始记录,覆盖模块加载、PAC 生成、代理应用、图标更新、popup 握手与界面渲染
- 新增:设置页可一键复制诊断报告;部分浏览器接口超时时仍会输出其他已记录证据,并自动给出 Worker、popup 和握手状态判断
- 优化:本地保留最近 500 条运行事件和 20 次 Worker 启动记录;查看报告不会修改后台诊断存储或额外唤醒 Worker
- 隐私:诊断报告自动隐藏密码、Token 和完整网页 URL,不记录服务器、规则或 PAC 正文
- 安全:配置存储读取失败或超时时,设置页自动进入只读诊断模式,避免空数据覆盖现有配置
- 文档:明确云备份为可读 JSON、不会额外加密,并补充标准 MIT 许可证文件
- 兼容性:明确最低支持 Chrome 95;现有配置无需迁移
- 验证:新增 19 项故障注入与回归测试,覆盖存储、代理、Action API 和 Worker 启动异常场景
下载校验
文件:ProxySwitch-v7.9.0.zip
SHA-256:0543259a222ea568d14ed1a62b07832b6f2cb4c7ab372b944ca7dfb411b350ee
v7.8.8
- 修复:
normalizeSet处理*.中文域名时通配符前缀丢失,IDN 域名转换前先剥离前缀、转换后再拼回 - 修复:PAC 模式下全局图标覆盖标签专用图标,导致图标闪烁或显示错误,现 PAC 模式下由
updateTabIcon统一管理 - 修复:popup 打开瞬间
currentMode默认'direct'导致模式按钮误高亮闪烁,改为null等异步结果返回 - 优化:云上传排除 UI 偏好字段(主题、语言等),避免跨设备同步时覆盖本地偏好;
backupVer升至 5 - 优化:云下载仅在数据含代理相关键时才刷新 PAC,避免无意义重生成
- 优化:统一 storage 监听器日志为
PSL.info,便于诊断页查看 - 优化:
importScripts加 try-catch 防御,加载失败时明确报错 - 优化:PAC 脚本生成时对不支持的代理协议记录警告
v7.8.7
更新说明 (简体中文)
v7.8.7
- 优化:将"错误日志"更名为"诊断日志",避免用户误解为只有报错才记录
- 优化:开关文案改为"记录详细诊断(推荐排查时开启)",更直观说明用途
- 优化:日志区域新增说明文案,提示用于排查卡顿、无响应、同步失败等问题,点击复制即可发给开发者
- 修复:俄语翻译与中/英/西不一致——标题改为"诊断日志"语义,条数上限从 100 修正为 500
v7.8.6
- 修复:页面未加载或加载失败时点击插件图标弹窗卡死的问题——语言包 fetch 改为非阻塞加载,init 流程增加 3 秒超时兜底
- 修复:页面加载中
tab.url可能为空导致域名获取失败,新增tab.pendingUrl备选方案 - 修复:后台
refreshCacheAndIcon和updateCacheAndApply在isApplyingProxy锁住时无限重试,现加上限(约 1 秒)并强制解锁 - 修复:添加/移除规则按钮在操作期间未禁用,连续点击可能触发多个并发存储写入,现已加防重复点击保护
- 修复:
chrome.tabs.query回调缺少lastError检查,异常时可能导致弹窗无响应
v7.8.5
- 修复:
generateUUID兼容性 fallback 增加crypto对象存在性检查,并添加Math.random兜底方案 - 修复:Service Worker 中
OffscreenCanvas不可用时不再尝试调用document.createElement(Service Worker 无 DOM),改为跳过图标渲染并记录警告
v7.8.4
- 修复:
renderServerList空列表时消除递归调用风险,改为直接赋值后继续渲染
v7.8.3
- 修复:重置扩展时如果清空存储失败,不再强制重新加载,避免数据丢失
v7.8.2
- 修复:Popup 弹窗在翻译文本较长或字体较大时内容被截断,添加垂直滚动条支持
v7.8.1
- 修复:日志复制 fallback 中
document.execCommand('copy')失败时会误显示成功提示,现在正确提示复制失败
v7.8.0
- 修复:PAC 模式下无可用服务器时自动回退到直连模式,避免残留旧 PAC 规则导致异常代理
v7.7.9
- 修复:网页处于加载中、超时或打不开时,popup 不再读取规则或预热 PAC,避免点击插件图标时触发额外后台计算
- 修复:后台在标签页
loading状态下不再更新图标,只在页面完成加载后再刷新一次,进一步切断"页面卡住时扩展也跟着假死"的链路 - 优化:popup 的配置变化监听增加防抖,避免高频 storage 变更导致反复重渲染
- 修复:为
crypto.randomUUID()和OffscreenCanvas添加兼容性 fallback,提升在旧版浏览器/Firefox 中的兼容性
v7.7.8
- 增强:错误日志支持记录更详细的耗时与超时信息(存储读取、PAC 生成、消息调用等),用于定位"假死/无响应"
- 增强:popup 增加与后台的长连接通道并记录打开/关闭会话,便于追踪 Service Worker 忙碌时段
- 调整:日志保留条数上限提高到 500 条
v7.7.7
- 修复:找到 popup 假死的根源之一,PAC 模式下页面加载期间
tabs.onUpdated高频触发,后台反复做图标匹配与标签校验,导致 Service Worker 被频繁唤醒并忙住 - 优化:页面加载中只显示默认 PAC 图标,等加载完成后再做一次真实规则匹配,避免点击插件图标时后台仍在高频计算
- 优化:仅对当前激活标签页做图标刷新,并在标签关闭时清理挂起定时器
v7.7.6
-
修复:页面未加载完成时点击插件图标,popup 偶发无响应/假死的问题(减少后台 PAC 刷新/生成路径的全量读取,降低阻塞)
-
优化:后台 REFRESH_PROXY 增加回包,提升 Manifest V3 Service Worker 处理期间的稳定性
-
调整:错误日志时间显示为本地时间
-
修复:页面加载中打开 popup 时不再读取/匹配 GFWList 超大规则,避免 popup 打不开(页面加载完成后再打开可得到完整匹配结果)
v7.7.4
更新说明(中文)
关键修复
- 规则编辑冲突提示:确认弹窗后会正确阻止保存
- 统一 Popup 的 checkList 与后台 checkSet 的通配符匹配逻辑
- 选项页规则类型选择器新增 tempRules
- 修复非 PAC 模式下配置变更后代理设置不刷新
- 修复切换模式时 Popup/后台重复写入冲突(新增 refreshCacheAndIcon)
中等修复
- 云端下载跳过空数组/null 值,避免覆盖本地数据
- 云备份新增 tempRules、appLanguage(backupVer: 4)
- 将硬编码中文替换为 i18n(msgRuleModified / msgMoreRules / msgNoRules)
- 修复 GFWList 下载按钮异常恢复(try/finally 保证)
- 增加 GFWList 404 网络错误提示
- 增加镜像源快捷选择按钮(jsDelivr CDN、GitMirror)
- 输入为空时自动填充默认 GFWList URL
其他改动
- 将硬编码 "Proxy Mode" 替换为 i18n MSG_popModeLabel
- 新增 logger 模块便于调试(js/logger.js)
- Options/Popup 界面调整与多语言更新(en/es/ru/zh_CN)
- 更新 manifest.json
Release Notes (English)
Critical fixes
- Rule edit conflict warning now properly prevents save with confirm dialog
- Unify popup checkList and background checkSet wildcard matching logic
- Add tempRules to rule type selector in options page
- Fix non-PAC mode proxy settings not refreshing on config change
- Fix popup/background double-write conflict on mode switch (add refreshCacheAndIcon)
Medium fixes
- Cloud download now skips empty arrays/null values to preserve local data
- Add tempRules and appLanguage to cloud backup (backupVer: 4)
- Replace hardcoded Chinese strings with i18n (msgRuleModified, msgMoreRules, msgNoRules)
- Fix GFWList download button recovery with try/finally guarantee
- Add network error hint for GFWList 404 failures
- Add mirror source quick-select buttons (jsDelivr CDN, GitMirror)
- Auto-fill default GFWList URL when input is empty
Other changes
- Replace hardcoded "Proxy Mode" with i18n MSG_popModeLabel
- Add logger module for better debugging (js/logger.js)
- Options/Popup UI adjustments and localization updates (en/es/ru/zh_CN)
- Update manifest.json
Release Notes (English)
Critical fixes
- Rule edit conflict warning now properly prevents save with confirm dialog
- Unify popup checkList and background checkSet wildcard matching logic
- Add tempRules to rule type selector in options page
- Fix non-PAC mode proxy settings not refreshing on config change
- Fix popup/background double-write conflict on mode switch (add refreshCacheAndIcon)
Medium fixes
- Cloud download now skips empty arrays/null values to preserve local data
- Add tempRules and appLanguage to cloud backup (backupVer: 4)
- Replace hardcoded Chinese strings with i18n (msgRuleModified, msgMoreRules, msgNoRules)
- Fix GFWList download button recovery with try/finally guarantee
- Add network error hint for GFWList 404 failures
- Add mirror source quick-select buttons (jsDelivr CDN, GitMirror)
- Auto-fill default GFWList URL when input is empty
Other changes
- Replace hardcoded "Proxy Mode" with i18n MSG_popModeLabel
- Add logger module for better debugging (js/logger.js)
- Options/Popup UI adjustments and localization updates (en/es/ru/zh_CN)
- Update manifest.json
v7.7.1 - Performance Optimization / 性能优化
English
-
Optimized Popup performance: Replaced linear array search with Set-based
$O(1)$ lookups, drastically reducing lag when opening the extension. - Lazy Storage Loading: Now only loads necessary UI fields instead of the full storage object, reducing memory overhead.
- Enhanced Stability: Fixed several potential race conditions in rule matching.
中文说明
-
优化弹出页性能: 将线性的数组搜索替换为基于 Set 的
$O(1)$ 查找,大幅减少打开插件图标时的卡顿感。 - 按需加载存储: 现在仅加载必要的 UI 字段,而非全量读取存储对象,降低了内存占用和加载耗时。
- 增强稳定性: 修复了规则匹配中几处潜在的竞态条件问题。
🎉 v7.7.0 - 全球化更新:新增多语言支持与手动切换
[中文] 🎉 v7.7.0 - 全球化更新:新增多语言支持与手动切换
本次更新为 ProxySwitch 带来了完整的国际化(i18n)支持,并针对全球用户优化了使用体验。
🌍 新增功能
- 多语言架构 (i18n):我们彻底重构了代码,现在插件支持多语言显示。
- 新增语言支持:
- 🇺🇸 英语(English):完整覆盖。
- 🇷🇺 俄语 (Russian):完整覆盖。
- 🇪🇸 西班牙语 (Spanish):完整覆盖。
- 手动语言切换:在“通用设置”页面中增加了 语言选择器。现在您可以强制指定插件语言(中文/英文/俄语/西语),不再强制跟随浏览器系统语言。
[English] 🎉 v7.7.0 - Going Global: Multi-language Support
This update brings full Internationalization (i18n) support to ProxySwitch, optimizing the experience for users worldwide.
🌍 New Features
- i18n Architecture: We have refactored the codebase to fully support localization.
- New Languages Added:
- 🇺🇸 English: Full support.
- 🇷🇺 Russian: Full support.
- 🇪🇸 Spanish: Full support.
- Manual Language Switcher: Added a Language Selector in the "General Settings" page. You can now manually force the extension language (English/Chinese/Russian/Spanish) instead of relying solely on the system language.
v7.6.8
v7.6.8 更新日志
本次更新主要集中在符合 Chrome 应用商店的安全政策要求,对核心功能进行了透明化重构,并修复了多个影响体验的界面 Bug。
🛡️ 合规性与核心变更
- GFWList 策略调整:为符合商店关于“远程代码”的政策,移除了所有内置和硬编码的 GFWList 规则源地址。现在用户需要手动在设置页填入信任的规则 URL。
- 云端备份重构:完全重写了云同步功能(GitHub Gist / WebDAV)。
- 配置文件现在以 纯文本 JSON 格式直接存储,移除了之前的 Base64 编码处理。
- 极大地提高了数据透明度,彻底消除了“代码混淆”的嫌疑。
- 注意:由于格式变更,旧版本的备份文件将不再被支持,请更新后重新执行备份。
🐛 问题修复
- 弹窗逻辑修复:修复了在无效页面(如新标签页、设置页、空白页)打开扩展弹窗时,仍然显示“加入代理列表”按钮的问题。现在这些按钮会在不支持的页面自动隐藏,防止误触报错。
- 服务器校验增强:修复了添加服务器时可以保存空地址的 Bug。现在对服务器地址(Host)和端口(Port)进行了严格的非空校验。
- 设置页渲染修复:修复了因界面重构(移除下拉菜单)导致
options.js出现的初始化报错问题。
📝 改进与优化
- 仓库链接修正:修正了“通用设置 - 关于”页面中指向 GitHub 仓库的链接,确保用户能正确访问项目主页。
v7.6.8 Release Notes
This update focuses on compliance with Chrome Web Store security policies, refactoring core features for transparency, and fixing several UI bugs.
🛡️ Compliance & Core Changes
- GFWList Source Policy Change: To comply with store policies regarding "Remote Hosted Code," all built-in and hardcoded GFWList URLs have been removed. Users must now manually input their preferred rule source URL in the settings.
- Cloud Backup Refactoring: Completely rewrote the Cloud Sync feature (GitHub Gist / WebDAV).
- Configuration is now saved as Plain Text JSON directly, removing the previous Base64 encoding.
- This improves data transparency and eliminates any suspicion of "obfuscated code."
- Note: Due to format changes, backups from previous versions are no longer supported. Please perform a new backup after updating.
🐛 Bug Fixes
- Popup UI Logic: Fixed an issue where "Add Rule" buttons were visible on invalid pages (e.g., New Tab, Settings, blank pages). These buttons now auto-hide on unsupported pages to prevent console errors.
- Server Validation: Fixed a bug that allowed saving empty server addresses. Added strict validation for Host and Port inputs.
- Options Page Rendering: Fixed a script initialization error in
options.jscaused by recent UI changes (removal of the dropdown menu).
📝 Improvements
- Repository Link: Corrected the project repository link in the "General Settings - About" section.
v7.6.6
v7.6.6 更新日志
本次更新主要解决了 图标状态不同步 和 点击图标卡顿 两个核心问题。
🚨 核心修复
- 修复图标切换失效:彻底修复了切换代理模式(如从“自动”切换到“全局”或“直连”)时,浏览器扩展图标颜色没有实时变化的 Bug。现在切换模式,图标会立即响应。
- 修复死循环卡顿:修复了扩展在后台因为反复写入配置而进入死循环(Infinite Loop)的问题,解决了点击扩展图标出现卡死、白屏或弹窗延迟的严重性能故障。
✨ 体验优化
- 规则实时生效:修复了在弹窗中添加/删除域名规则时,图标需要刷新页面才会变色的问题。现在添加黑白名单,图标状态毫秒级实时更新。
- 解决图标粘连:修复了自动模式下分配的图标在切换到其他模式后依然“粘”在当前标签页上的问题。
⚙️ 功能更新
- GFWList 预览:设置页面新增 GFWList 规则内容的预览功能(支持折叠/展开)。
- 设置页优化:优化了 GFWList 自定义 URL 的输入保存逻辑,并修复了刷新页面后回显错误的问题。
- IO 读写优化:优化底层存储逻辑,仅在配置真正变更时写入硬盘,大幅降低资源占用。
v7.6.6 Changelog
This update resolves critical issues regarding Icon Synchronization and Performance Freezes.
🚨 Critical Fixes
- Fixed Icon Switching: Resolved the issue where the extension icon color did not update immediately when switching proxy modes (e.g., from Auto to Global). The icon now reflects the correct mode instantly.
- Fixed UI Freezing: Fixed a "Recursive Loop" bug in the background script that caused the popup to freeze or show a blank screen when clicked.
✨ Improvements
- Real-time Rule Updates: Fixed the delay when adding/removing rules via the Popup. The icon status now updates instantly without requiring a page refresh.
- Sticky Icon Fix: Resolved an issue where tab-specific icons (from Auto mode) persisted even after switching to Global or Direct mode.
⚙️ Other Changes
- GFWList Preview: Added a collapsible preview section in the Options page to view current GFWList rules.
- Options Page: Improved the custom GFWList URL input logic and fixed display issues after reloading.
- I/O Optimization: Optimized storage logic to reduce I/O overhead significantly.