Skip to content

PageLinkMode v0.4.0

Choose a tag to compare

@Zenith-Angle Zenith-Angle released this 22 Apr 07:54
· 6 commits to main since this release

版本简介

v0.4.0 是 PageLinkMode 自 v0.3.3 之后的一次次级版本升级。这一版不再只提供“全局 / 站点 / 页面”三层粗粒度模式,而是把插件内部已有的跳转判断能力显式产品化,升级为一套可查看、可覆写、可调试的“分类化跳转策略系统”。

这次发布的核心目标,是让用户能够真正精确控制网页内导航:哪些跳转应当留在当前标签页,哪些应该在新标签页打开,哪些又应该完全保留网页自己的原生行为。

核心改动

1. 新增分类化跳转策略层

  • 将网页内导航拆分为 12 类可识别、可配置的跳转类型,而不是继续把所有行为压缩成单一模式。
  • 当前版本支持的分类包括:
    • 同站内容链接
    • 跨站内容链接
    • 站点壳层 / 首页导航
    • 传统分页
    • 图片预览 / 原图查看
    • 认证相关链接
    • GET 表单提交
    • 非 GET 表单提交
    • 普通 window.open(...)
    • 认证相关 window.open(...)
    • 图片相关 window.open(...)
    • 命名窗口 / 弹窗式 window.open(...)
  • 每一类都可以独立配置为:同标签页、新标签页、保持原生。
  • 默认策略仍保留此前产品边界:普通内容链接偏向新标签页,分页和图片查看保持原生,站点壳层导航与认证流程偏向当前页。

2. 明确新的规则优先级

  • 在保留现有页面级和站点级整体规则的前提下,引入“站点分类覆写”和“全局分类策略”两层。
  • 最终优先级固定为:
    1. 页面整体规则
    2. 站点整体规则
    3. 站点分类覆写
    4. 全局分类策略
  • 这样既保留了原来的一键强制模式,也允许用户只对特定类型的跳转做精细化调节。

3. 设置页重构为规则工作台

  • Options 页面不再只是平铺规则列表,而是升级为“规则工作台”。
  • 新版设置页包含三个核心工作区:
    • 全局分类策略矩阵
    • 站点分类覆写卡片
    • 最近命中的调试记录
  • 每个站点现在都可以展开查看,并针对各类跳转单独覆写动作为“继承全局 / 同标签页 / 新标签页 / 保持原生”。
  • 旧的页面规则没有移除,而是降级为“高级规则”区,只继续负责页面级整体强制模式。

4. 新增调试记录能力

  • 后台新增最近 50 条导航决策记录,保存到 chrome.storage.session。
  • 每条记录都会展示:
    • 时间
    • 当前页面 URL
    • 目标 URL
    • 触发来源(anchor / form / window.open)
    • 命中的分类
    • 最终动作
    • 生效来源(页面整体 / 站点整体 / 站点分类 / 全局分类 / 站点已停用)
    • 判断 reason
  • 设置页支持按站点筛选和一键清空,便于排查“为什么这次跳转走了当前页 / 新标签 / 原生行为”。

5. 内核与兼容性调整

  • content script、page bridge、后台消息协议、存储结构、规则解析链路已整体升级到分类策略模型。
  • 旧配置导入时会自动补齐新的 schemaVersion: 2 结构,不会丢失已有全局规则、站点规则、页面规则和站点停用状态。
  • 现有的运行时恢复能力和 SPA 站点保护逻辑继续保留:
    • 扩展重新启用后,已打开页面仍能恢复接管。
    • 对 linux.do 这类站点的 capture 阶段普通锚点处理仍然有效。
  • 产品边界保持不变:不会扩大到浏览器原生 UI、站点业务自动化或通用 history.pushState 接管。

6. 设置页交互细节打磨

  • 对规则工作台里的分类按钮组做了交互优化,补上更顺滑的切换过渡、选中态滑动底板与更轻的按压反馈。
  • 修复了 hover 状态下的配色冲突,避免出现“深色背景 + 深色文字”的可读性问题。
  • 站点卡片展开、次级按钮与状态提示也统一了动效节奏,让设置页的操作反馈更稳定,不再生硬跳变。

代码与工程更新

  • 扩展状态结构新增:
    • schemaVersion
    • globalCategoryRules
    • siteCategoryRules
  • 运行时消息新增:
    • 分类规则读写
    • 调试记录获取 / 清空 / 追加
  • 新增自动化测试:
    • 导航分类与默认动作测试
    • 规则优先级测试
    • 旧配置导入兼容测试
  • 新增独立测试脚本,避免测试阶段引入额外运行时依赖。

验证结果

  • npm test
  • npm run typecheck
  • npm run build
  • 重新生成并上传 dist.zip
  • 确认发布版本号提升为 v0.4.0

升级说明

  • 已安装旧版本的用户,下载本 release 附带的 dist.zip,解压后在 Chrome 扩展页重新加载即可。
  • 旧配置会自动兼容新结构,无需手动迁移。
  • 如果你此前只使用整体模式,这一版不会强迫你改用分类策略;但当你需要更细致地区分“分页 / 内容链接 / 图片查看 / 表单 / window.open”时,现在可以直接在设置页中完成。