{"id":23643697,"url":"https://github.com/samzong/chrome-tabboost","last_synced_at":"2025-04-10T04:51:07.430Z","repository":{"id":268899097,"uuid":"905295763","full_name":"samzong/chrome-tabboost","owner":"samzong","description":"TabBoost is a Chrome extension that replicates commonly used features from Arc browser to enhance the Chrome user experience.","archived":false,"fork":false,"pushed_at":"2025-03-30T04:59:40.000Z","size":906,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T21:40:27.316Z","etag":null,"topics":["arcbrowser","chrome","chrome-extension"],"latest_commit_sha":null,"homepage":"https://samzong.github.io/chrome-tabboost/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samzong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-18T14:40:46.000Z","updated_at":"2025-04-04T17:50:20.000Z","dependencies_parsed_at":"2024-12-19T15:46:20.856Z","dependency_job_id":"8746507a-0d4c-4cbf-afb2-da06ffef73c5","html_url":"https://github.com/samzong/chrome-tabboost","commit_stats":null,"previous_names":["samzong/chrome-tabboost"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fchrome-tabboost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fchrome-tabboost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fchrome-tabboost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samzong%2Fchrome-tabboost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samzong","download_url":"https://codeload.github.com/samzong/chrome-tabboost/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161259,"owners_count":21057552,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arcbrowser","chrome","chrome-extension"],"created_at":"2024-12-28T11:35:09.094Z","updated_at":"2025-04-10T04:51:07.414Z","avatar_url":"https://github.com/samzong.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# TabBoost - Chrome 标签页增强扩展\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/assets/icons/icon128.png\" alt=\"TabBoost Logo\" width=\"200\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eTabBoost 是一款提高浏览器标签页效率的 Chrome 扩展，灵感来源于 Arc Browser。\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Chrome Web Store Version\" src=\"https://img.shields.io/chrome-web-store/v/pnpabkdhbbjmahfnhnfhpgfmhkkeoloe\"\u003e\n  \u003cimg alt=\"Chrome Web Store Last Updated\" src=\"https://img.shields.io/chrome-web-store/last-updated/pnpabkdhbbjmahfnhnfhpgfmhkkeoloe\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue\" alt=\"License\"\u003e\n\u003c/p\u003e\n\nTabBoost是一款提高浏览器标签页效率的Chrome扩展，它提供了一系列便捷功能，如链接预览、分屏浏览、标签页复制等，帮助您更高效地管理和使用Chrome标签页，灵感来源于 Arc Browser。\n\n## 功能特性\n\n- **🚀 链接预览**: 无需离开当前页面即可预览链接。按住 `Command` 键 (Mac) 或 `Ctrl` 键 (Windows - 可配置) 点击链接，即可在当前页面的弹出窗口中打开。\n- **📺 分屏模式**: 在单个标签页内并排查看两个网页。通过 `Shift + Command + Click` (Mac) 或类似方式 (Windows) 点击链接触发，或通过扩展菜单激活。非常适合比较内容或多任务处理。\n- **🧠 智能兼容性处理**: 自动检测无法在预览或分屏中加载的网站（由于 `X-Frame-Options` 或 CSP 限制），并提供在\"新标签页中打开\"或将其添加到\"忽略列表\"的选项。可在设置中管理忽略列表。\n- **💾 网页保存确认**: 拦截 `Command+S` (Mac) 或 `Ctrl+S` (Windows) 保存快捷键，显示确认对话框，防止意外保存网页而非文件。确认后有3秒时间使用原生保存功能。\n- **✨ 标签页复制**: 使用快捷键 (`Ctrl+M` / `MacCtrl+M`) 快速复制当前标签页。\n- **🖱️ URL复制**: 使用快捷键 (`Alt+C` / `Shift+Command+C`) 一键复制当前页面URL到剪贴板。\n- **🔧 高度自定义**:\n    - 配置扩展图标点击的默认操作。\n    - 调整预览弹出窗口的大小。\n    - 启用/禁用特定功能（如分屏、忽略列表）。\n    - 在 `chrome://extensions/shortcuts` 中自定义快捷键。\n- **🔒 安全增强**: 严格的内容安全策略(CSP)和URL验证机制保障扩展安全。\n\n## 项目结构\n\n项目采用现代化的前端构建流程，主要结构如下：\n\n```\nchrome-tabboost/\n├── dist/              # 构建输出目录\n├── scripts/           # 辅助脚本 (打包、发布等)\n├── src/               # 源代码目录\n│   ├── assets/        # 静态资源 (图标等)\n│   ├── js/            # JavaScript 源文件 (核心逻辑)\n│   ├── options/       # 设置页面\n│   ├── popup/         # 扩展弹出窗口\n│   ├── styles/        # CSS 样式\n│   └── utils/         # 工具函数\n├── tests/             # 测试文件\n├── manifest.json      # 扩展清单文件\n├── package.json       # 项目配置文件\n└── webpack.config.js  # Webpack 构建配置文件\n```\n\n- `dist/`: 包含打包后的扩展文件，用于加载到浏览器或发布。\n- `scripts/`: 包含用于开发、构建、版本管理和发布的辅助 Node.js 脚本。\n- `src/`: 包含扩展的所有核心源代码。\n- `tests/`: 包含单元测试和集成测试。\n- `manifest.json`: 定义扩展的元数据、权限、功能等。\n- `package.json`: 定义项目依赖和脚本命令。\n- `webpack.config.js`: 配置 Webpack 如何打包和处理项目资源。\n\n## 安装方法\n\n1. 从Chrome网上应用店安装：[TabBoost](https://chromewebstore.google.com/detail/tabboost/pnpabkdhbbjmahfnhnfhpgfmhkkeoloe)\n2. 或者使用开发者模式加载：\n   - 下载并解压本项目代码\n   - 在Chrome浏览器地址栏输入 `chrome://extensions/`\n   - 开启右上角的\"开发者模式\"\n   - 点击\"加载已解压的扩展程序\"按钮\n   - 选择本项目根目录\n\n## 使用方法\n\n### 主要功能\n\n- **链接预览**: 按住 `Command` 键 (Mac) 或 `Ctrl` 键 (Windows) 点击任何链接。\n- **分屏模式**: 按住 `Shift + Command` (Mac) 点击任何链接，或通过扩展弹出菜单激活。\n- **网页保存确认**: 当您按下 `Command+S` (Mac) 或 `Ctrl+S` (Windows) 时，会拦截原生保存页面功能。\n\n### 默认快捷键\n\n- `Ctrl+M` (Mac: `MacCtrl+M`): 复制当前标签页\n- `Alt+C` (Mac: `Shift+Command+C`): 复制当前网页URL\n\n*注意：所有快捷键均可在 Chrome 扩展快捷键设置页面 (`chrome://extensions/shortcuts`) 中自定义。*\n\n### 分屏模式使用\n\n1. 在任意网页按下分屏模式快捷键或通过扩展弹窗启用分屏\n2. 左侧显示当前页面，右侧可以通过点击左侧页面的链接进行加载\n3. 可以通过拖动中间分隔线调整两个视图的宽度比例\n\n## 安全性\n\nTabBoost采用严格的内容安全策略(CSP)和URL验证机制，确保扩展安全可靠：\n\n### 内容安全策略(CSP)\n\n我们在 `manifest.json` 中定义了严格的安全策略：\n\n- **`extension_pages`**:\n    - `script-src 'self'`: 只允许加载扩展自身域的JavaScript脚本。\n    - `object-src 'none'`: 禁止所有插件内容(如Flash)。\n    - `style-src 'self' 'unsafe-inline'`: 只允许扩展自身域和行内样式表。\n    - `img-src 'self' data: https://*.google.com`: 图片只能从扩展自身、data URLs和Google服务加载。\n    - `connect-src 'self' https://*.google.com`: 网络连接只能到扩展自身或Google服务。\n    - `frame-src 'self'`: 只允许扩展自身的iframe。\n    - `form-action 'none'`: 禁止所有表单提交。\n    - `base-uri 'none'`: 禁止使用BASE标签修改基准URL。\n    - `upgrade-insecure-requests`: 自动将HTTP请求升级为HTTPS。\n- **`sandbox`**:\n    - `sandbox allow-scripts allow-forms allow-popups allow-modals`: 启用沙箱并允许特定功能。\n    - `script-src 'self'`: 沙箱内脚本来源限制。\n    - `object-src 'none'`: 沙箱内禁止插件。\n\n### URL安全验证与智能处理\n\n- 内部实现严格的URL验证机制，防止XSS等攻击。\n- 智能检测网站是否允许在 iframe 中加载（通过 `X-Frame-Options` 或 CSP）。对于不允许的网站，提供在新标签页打开或添加到忽略列表的选项，以确保功能可用性。\n\n## 开发\n\n### 本地开发\n\n```bash\n# 克隆仓库\ngit clone https://github.com/samzong/chrome-tabboost.git\ncd chrome-tabboost\n\n# 安装依赖\nnpm install\n\n# 运行开发服务器 (带热重载)\nnpm run dev\n\n# 或者启动开发模式构建\n# npm run start\n\n# 构建生产版本\nnpm run build\n\n# 运行测试\nnpm test\n```\n\n### 版本管理与发布\n\n本项目采用[语义化版本](https://semver.org/lang/zh-CN/)进行版本控制。开发流程建议遵循 Gitflow 或类似模型（如功能分支 -\u003e 开发 -\u003e 合并）。\n\n#### 主要开发命令\n\n- **常用**:\n    - `npm run dev`: 启动 Webpack 开发模式 (监听文件变化)。\n    - `npm run commit`: 使用 Commitizen 进行规范化提交。\n- **构建与测试**:\n    - `npm run build`: 执行生产环境构建，输出到 `dist/` 目录。\n    - `npm test`: 运行 Jest 测试套件。\n    - `npm run test:watch`: 在监听模式下运行测试。\n    - `npm run test:coverage`: 运行测试并生成覆盖率报告。\n- **版本与发布**:\n    - `npm run version:[patch|minor|major]`: 自动更新版本号、生成 `CHANGELOG.md` 并创建 git tag。\n    - `npm run changelog`: 手动生成 `CHANGELOG.md`。\n    - `npm run release`: 执行验证、构建并打包扩展（生成 `.zip` 文件到 `builds/` 目录）。\n    - `npm run publish`: （需要配置）发布到 Chrome Web Store。\n\n#### 发布流程 (示例)\n\n```bash\n# 1. 确保在主分支且代码最新\ngit checkout main\ngit pull origin main\n\n# 2. 更新版本号 (例如：更新次版本)\nnpm run version:minor\n\n# 3. 推送更改和标签\ngit push origin main --tags\n\n# 4. 构建并打包\nnpm run release\n\n# 5. (手动或自动) 上传 builds/ 目录下的 .zip 文件到 Chrome Web Store\n# npm run publish # 如果已配置自动化发布\n```\n\n### 文件说明\n\n- `manifest.json`: 扩展的核心配置文件。\n- `package.json`: Node.js 项目配置文件，包含依赖和脚本。\n- `webpack.config.js`: Webpack 构建配置。\n- `scripts/`: 包含各种辅助脚本（版本管理、打包、发布等）。\n- `src/js/background.js`: 扩展的后台 Service Worker。\n- `src/js/contentScript.js`: 注入到网页中以实现核心功能的脚本。\n- `src/popup/`: 扩展弹出窗口的 HTML, CSS, JS 文件。\n- `src/options/`: 扩展设置页面的 HTML, CSS, JS 文件。\n- `src/utils/`: 包含共享的工具函数模块，如：\n    - `i18n.js`: 处理国际化。\n    - `iframe-compatibility.js`: 处理 iframe 加载兼容性。\n    - `storage-cache.js`: 封装 Chrome Storage API。\n    - `utils.js`: 其他通用工具函数。\n\n## 贡献指南\n\n欢迎对本项目提出改进建议或贡献代码。请通过以下步骤参与：\n\n1. Fork 本仓库\n2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交您的修改 (`npm run commit` 使用规范化提交)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 创建Pull Request\n\n## 许可证\n\n本项目采用 MIT 许可证 - 详情请参阅 [LICENSE](LICENSE) 文件\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamzong%2Fchrome-tabboost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamzong%2Fchrome-tabboost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamzong%2Fchrome-tabboost/lists"}