ITADN
xcv58/Tab-Manager-v2
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Tab Manager v2

Tab Manager v2 将拥挤的浏览器会话转变为可搜索的工作区。跨窗口查找标签页,批量移动匹配的标签页,在浏览器支持的情况下管理原生标签组,并清理重复项,而无需在浏览器窗口之间来回切换。

Chrome Web Store Mozilla Add-on Node CI codecov

安装

快速入门

  • 从浏览器工具栏打开 Tab Manager v2,或将其在独立的标签页/窗口中打开以获得更大的视图。
  • / 搜索所有打开的标签页,按 > 打开命令面板,按 ? 查看快捷键帮助。
  • 选择匹配的标签页,然后批量移动、分组或关闭它们。

人们为何使用它

  • 通过一个搜索框查找所有窗口中打开的标签页,可选搜索浏览器历史记录。
  • 批量移动、分组或关闭匹配的标签页,而不是逐个处理。
  • 在浏览器支持的情况下,直接管理浏览器原生的标签页组,包括重命名、更改颜色、折叠和取消分组操作。
  • 快速清理重复的标签页,可选择在检查时忽略 URL 哈希。
  • 通过快捷键、命令面板和内置的快捷键帮助,始终保持在键盘上操作。
  • 通过主题、标签页宽度、字体大小、工具栏可见性、URL 显示等调整界面。
  • 当浏览器暴露这些 API 时,使用 Firefox 容器感知的工作流。

常用快捷键

操作快捷键
聚焦标签页搜索/
打开命令面板>
移动焦点h, j, k, l 或方向键
选择聚焦的标签页xSpace
在新窗口中打开所选标签页Shift+N
从所选标签页创建新的标签页组Alt+Shift+G
切换主题Ctrl+I
打开设置Ctrl+,
显示键盘快捷键帮助?

快捷键行为可能因平台和浏览器而略有不同。请使用应用内的快捷键帮助获取完整列表。

浏览器支持

浏览器状态备注
Chrome支持完整的核心工作流,包括标签组集成
Edge支持基于 Chromium 的行为;功能可用性遵循暴露的浏览器 API
Firefox支持核心工作流以及 Firefox 特定的容器支持
Safari不支持请参阅下方的常见问题以了解限制

隐私与权限

Tab Manager v2 使用浏览器 API 来读取和组织您当前的标签页、窗口以及可选的历史记录搜索结果。其核心的标签页和窗口管理功能保留在您的浏览器中,并且该扩展程序不添加任何分析或跟踪功能。

  • tabs:读取、移动、分组、选择和关闭标签页和窗口
  • storage:保存设置和 UI 状态
  • management:在显示 chrome-extension:// 标签页时查找已安装扩展程序的元数据
  • history:支持可选的“在结果中包含浏览器历史记录”设置
  • tabGroups:在支持的浏览器上读取和管理原生标签组
  • contextualIdentitiescookies:启用 Firefox 容器相关功能

用户首选项在可用时存储在浏览器同步存储中,并带有本地存储回退机制。请参阅 privacy_policy.md 以了解隐私政策。

常见问题

为什么不支持 Safari?

Safari 不支持 tabs.move() WebExtension API,而 Tab Manager v2 依赖该 API 来实现拖放重新排序、在窗口间移动标签页以及排序工作流。这些是核心功能而非可选附加项,因此 Safari 的支持将是不完整且具有误导性的。当前的调查记录在 issue #2545

它是否支持浏览器标签页分组?

是的,在浏览器支持的情况下。Tab Manager v2 允许你直接管理原生标签组,而无需离开扩展程序。

我可以重命名窗口吗?

自定义窗口名称仅存在于此扩展程序内部,并且会重复浏览器原生的分组功能。当前的窗口标题区域专注于窗口激活和摘要,而标签属于浏览器标签组。如果您想要命名的标签桶,请使用内置的标签组,并在浏览器支持的情况下从 Tab Manager v2 中重命名它们。

我的设置存储在哪里?

当浏览器支持时,设置会存储在浏览器同步存储中。如果同步存储不可用,Tab Manager v2 将回退到本地存储,以确保扩展功能正常运行。

所有功能在所有浏览器中的工作方式是否相同?

No. 核心标签页和窗口管理功能在 Chrome、Edge 和 Firefox 中均可使用,但某些功能依赖于特定浏览器的 API。示例包括 Firefox 容器和浏览器标签页分组。

开发

先决条件

  • Node.js
  • pnpm 9.x

安装依赖

pnpm install

以开发模式运行扩展

pnpm start

这将解包的扩展构建写入:

  • packages/extension/build/build_chrome
  • packages/extension/build/build_firefox

在目标浏览器中,将相应的文件夹作为已解包的扩展加载。

运行测试

运行默认的本地测试流水线:

pnpm test

这将运行扩展单元测试以及 Chromium Playwright 集成测试套件。

仅运行扩展单元测试:

pnpm run test:unit

运行 Chromium Playwright 集成测试套件,包括必需的 Chrome 扩展构建:

pnpm run test:integration

观看加速的端到端测试套件运行:集成测试视频

直接针对现有的 Chrome 构建运行 Playwright 测试套件:

pnpm run test:integration:run

运行 CI 中使用的 Firefox 特定覆盖率:

pnpm --filter tab-manager-v2 test:firefox
pnpm --filter integration-test-firefox test:firefox

构建生产环境包

pnpm build

这会在 packages/extension/build/ 下输出打包好的浏览器构建。

仓库结构

  • packages/extension: 主扩展源代码、资源、构建脚本和单元测试
  • packages/integration_test: 基于 Playwright 的集成测试和视觉回归测试
  • packages/integration_test_firefox: Firefox 特定的集成测试覆盖

发布说明

致谢

默认 favicon 由 Lyolya 制作,来自 Flaticon,并采用 Creative Commons BY 3.0 许可。