一组让"点链接 → 在分屏另一侧打开"变得自然的工具,覆盖 Obsidian 和 Chrome 两个场景。
| 目录 | 目标平台 | 状态 |
|---|---|---|
obsidian/ |
Obsidian 1.8+ 桌面端 | v1.0.0 — 可用 |
chrome/ |
Chrome 140+ | 开发中 — 可本地加载 |
两个子项目都想解决同一件事:
不想每点一个链接就切屏 / 开新窗口,而是希望链接"在旁边打开" ——同一个面板原地换内容,或者多开在同一组里。
- Obsidian 版:基于 Obsidian 原生 Web Viewer,把外链分屏打开,并支持复用同一个 Web Viewer pane、Shift 开新 tab、Cmd/Ctrl 走浏览器。
- Chrome 版:基于 Chrome 140+ 的原生 Split View(
tab.splitViewId只读 API),让 Shift+Click 把链接路由到分屏的副屏 tab。
- 路径:
obsidian/ - 安装方式:见
obsidian/README.md - 主要功能:
- 外链在 split pane 的 Web Viewer 里打开
- 复用同一个 Web Viewer pane 切换 URL
- Shift + 点击:新开 Web Viewer tab
- Cmd/Ctrl + 点击:反转默认目标(Web Viewer ↔ 浏览器)
- 路径:
chrome/ - 安装方式:
chrome://extensions→ 开启开发者模式 → 加载已解压的扩展程序 → 选chrome/目录 - 主要功能:
- Shift + Click:复用 Chrome 原生分屏的副屏 tab
- 扩展图标颜色反映当前 tab 是否在分屏中(彩色=可用,灰度=不可用)
- 不干扰 Chrome 原生 Cmd/Ctrl+Click、Shift+Cmd+Click 等修饰键行为
Chrome 扩展的已知限制:Chrome 扩展 API 目前不允许程序化进入分屏,也不允许把新建 tab 加入分屏。因此 Chrome 版需要用户先手动右键 tab → Open in split view。
每个子目录都是独立工程:
- Obsidian 插件:纯 JS,无构建步骤
- Chrome 扩展:纯 JS,无构建步骤(MV3)
直接改代码 → Obsidian 里 Cmd + R / Chrome chrome://extensions 点刷新图标即可。
两个子项目各自打独立 tag,GitHub Actions 自动构建并发布 release。
# 只发布 Obsidian v1.0.1
./scripts/release.sh --obsidian 1.0.1
# 只发布 Chrome v0.2.0
./scripts/release.sh --chrome 0.2.0
# 同时发布两个(一次 commit,两个 tag,两个 workflow 并行触发)
./scripts/release.sh --obsidian 1.0.1 --chrome 0.2.0脚本会:
- 校验 git 工作区干净、版本号合法
- 更新对应
manifest.json的version(Obsidian 还会追加versions.json,并把obsidian/manifest.json同步复制到仓库根目录 —— Obsidian 社区插件审核 bot 强制要求manifest.json在根目录) - 提交一个 commit:
- 单目标:
release(<target>): <version> - 双目标:
release: obsidian <ver>, chrome <ver>
- 单目标:
- 为每个目标打 tag:
- Obsidian:
<version>(纯版本号,如1.0.1)—— Obsidian 社区插件官方要求 tag 就是 manifest.json 的 version,不加前缀 - Chrome:
chrome-v<version>(如chrome-v0.2.0)
- Obsidian:
最后你手动 git push origin main --follow-tags,CI 接管后续。
也可以直接手工改 manifest.json 版本号,然后:
# 如果改的是 obsidian,务必同步根目录的 manifest.json
cp obsidian/manifest.json manifest.json
git commit -am "release(obsidian): 1.0.1"
git tag 1.0.1 # 注意:obsidian tag 是纯版本号
git push origin main --follow-tags.github/workflows/release-obsidian.yml:触发条件 纯数字型 tag(如1.0.0、1.2.3)- 校验
obsidian/manifest.json版本号与 tag 匹配 - 校验根目录
manifest.json与obsidian/manifest.json保持一致 - 上传
main.js / manifest.json / versions.json到 release
- 校验
.github/workflows/release-chrome.yml:触发条件chrome-v*tag- 校验
chrome/manifest.json版本号与 tag 匹配 - 打包
chrome/目录为 zip - 上传 zip 到 release(Chrome Web Store 可直接上传此 zip)
- 校验
- Obsidian 社区插件:release 建完后,去 obsidian-releases 提 PR 添加条目(首次提交);后续版本社区会自动识别新 tag
- Chrome Web Store:登录 Chrome Developer Dashboard,上传 release 里的 zip 文件