Skip to content

Hucy/split-link-router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Split Link Router

一组让"点链接 → 在分屏另一侧打开"变得自然的工具,覆盖 ObsidianChrome 两个场景。

子项目

目录 目标平台 状态
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/
  • 安装方式:见 obsidian/README.md
  • 主要功能:
    • 外链在 split pane 的 Web Viewer 里打开
    • 复用同一个 Web Viewer pane 切换 URL
    • Shift + 点击:新开 Web Viewer tab
    • Cmd/Ctrl + 点击:反转默认目标(Web Viewer ↔ 浏览器)

Chrome

  • 路径: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 点刷新图标即可。

Release 流程

两个子项目各自打独立 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

脚本会:

  1. 校验 git 工作区干净、版本号合法
  2. 更新对应 manifest.jsonversion(Obsidian 还会追加 versions.json,并把 obsidian/manifest.json 同步复制到仓库根目录 —— Obsidian 社区插件审核 bot 强制要求 manifest.json 在根目录)
  3. 提交一个 commit:
    • 单目标:release(<target>): <version>
    • 双目标:release: obsidian <ver>, chrome <ver>
  4. 为每个目标打 tag:
    • Obsidian:<version>(纯版本号,如 1.0.1)—— Obsidian 社区插件官方要求 tag 就是 manifest.json 的 version,不加前缀
    • Chrome:chrome-v<version>(如 chrome-v0.2.0

最后你手动 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

CI 工作流

  • .github/workflows/release-obsidian.yml:触发条件 纯数字型 tag(如 1.0.01.2.3
    • 校验 obsidian/manifest.json 版本号与 tag 匹配
    • 校验根目录 manifest.jsonobsidian/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 文件

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors