context-attachment-manager
Codex and Claude Code plugin (works in Claude Desktop): choose which past images go to the model with your next message. Unchecked images become placeholders, the conversation goes on, and requests st
翻译准备中
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Arc-style vertical tabs sidebar for Chrome: child tabs, spaces, pinned tabs and favorites, synced with Chrome's tab strip.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗把标签页放到侧边栏:垂直排列,支持子标签和空间,常用的固定在顶部。
Arc 风格的 Chrome 侧边标签栏。基于 Manifest V3 和 chrome.sidePanel,纯原生 JS/CSS,无构建步骤、无依赖;不联网,数据只存在本机。
| 子标签与别名 | 空间与深色模式 |
|---|---|
快捷键见下文的快捷键与操作。
Ctrl/⌘+点击选中多个标签页,Shift+点击连选,和顶部标签栏的多选同步;拖动其中一个就一起移动,右键其中一个可以一起关闭、休眠或移到别的空间。点空白处或按 Esc 取消。# 锚点),会直接切到已有的那个并关掉新开的;如果地址和某个还没打开的收藏或本空间的固定标签相同,新开的标签页会直接成为它的标签页,显示在收藏夹或固定标签里。Chrome 自带的「复制标签页」和恢复关闭的标签页不受影响。从网页里特意新开的标签页(Ctrl/⌘+点击、鼠标中键、在新标签页打开的链接)不合并,地址重复也照样单独打开。/、Ctrl/⌘+F 展开;输入即过滤;回车跳到第一个匹配项,没有匹配时打开网址或用默认搜索引擎搜索。输入两个字以上,下面还会列出最近 30 天里匹配的历史记录(最多 8 条,已经开着的不重复),点一下打开,点叉号从历史记录里删掉。Ctrl/⌘+W 关的,仍按 Chrome 自己的规则。sidearc-<版本号>.zip 并解压。想跟着最新代码走,也可以直接克隆本仓库。chrome://extensions,开启右上角的「开发者模式」,点「加载已解压的扩展程序」,选择解压出的文件夹(或仓库所在文件夹)。Alt+S(Mac 上是 ⌥ Option+S)打开/关闭侧边栏。需要 Chrome 116 或更高版本。
Chrome 的侧边栏默认在右侧。想让它像 Arc 一样在左边,打开 chrome://settings/appearance(设置 → 外观),把「侧边栏位置」改为「显示在左侧」。这是 Chrome 自己的设置,对所有侧边栏生效,扩展无法代为修改。
| 操作 | Windows / Linux | Mac |
|---|---|---|
| 打开 / 关闭侧边栏 | Alt+S | ⌥ Option+S |
| 撤销(焦点在侧边栏时) | Ctrl+Z | ⌘+Z |
| 展开搜索 | / 或 Ctrl+F | / 或 ⌘+F |
| 搜索栏:跳过匹配项,直接打开网址或搜索 | Ctrl+回车 | ⌘+回车 |
| 搜索栏:清空并收起 | Esc | Esc |
| 键盘选择:移动(从当前页面开始;在搜索栏里按 ↓ 从第一项开始) | ↑ ↓ ← → | ↑ ↓ ← → |
| 键盘选择:打开 / 关闭 / 右键菜单 | Enter / Delete / Shift+F10 | Enter / Delete / Shift+F10 |
| 键盘选择:文件夹展开 / 收起 | → / ← | → / ← |
| 右键菜单 | 鼠标右键 | 鼠标右键、Control+点按 或触控板双指点按 |
| 关闭标签页 | 鼠标中键或 ✕ | 鼠标中键或 ✕(触控板没有中键,用 ✕) |
| 重新打开刚关闭的标签页(Chrome 自带) | Ctrl+Shift+T | ⌘+Shift+T |
回车打开标签页后,Chrome 会把键盘焦点交给那个网页;要接着在侧边栏里选,按 F6 把焦点切回侧边栏(可能要按几次)。
打开侧边栏的快捷键可以在 chrome://extensions/shortcuts 里修改;如果它和别的扩展或系统快捷键冲突,Chrome 可能不会自动分配,需要在那里手动设置。
Sidearc 不收集、不上传任何数据,代码里没有网络请求。空间、收藏夹、固定标签、别名都保存在浏览器本地,卸载扩展即删除。完整说明见隐私政策。
| 权限 | 用来做什么 |
|---|---|
sidePanel | 全部界面都显示在浏览器侧边栏里。 |
tabs | 读取标签页的标题、网址和图标来列出它们,并执行切换、移动、关闭、新建。 |
storage | 在本地保存空间、收藏夹、固定标签、别名,以及重启后恢复用的标签页状态。 |
favicon | 显示收藏夹和固定标签的网站图标。 |
search | 在搜索栏输入关键词回车时,用浏览器的默认搜索引擎搜索。 |
clipboardWrite | 「复制链接地址」时把网址写入剪贴板,不读取剪贴板。 |
sessions | 撤销「关闭标签页」时,从最近关闭的记录里恢复它。 |
history | 只用于「不记录历史」的空间和文件夹:删除刚从里面访问的网址,不读取其他历史。 |
webNavigation | 判断新标签页是不是从某个页面里的链接打开的(子标签),以及它载入的地址是否已经打开(相同地址只开一份)。 |
tabGroups | 把每个空间显示成顶部标签栏里的一个标签页分组,切换空间时折叠其他空间的分组。 |
| 文件 | 作用 |
|---|---|
manifest.json | 扩展清单 |
background.js | 后台:点击图标开关侧边栏;子标签归属;相同地址查重;「不记录历史」;记录足迹和离开标签页的时间;标签页关闭后的清理;重启后的数据恢复 |
sidepanel.html / .css | 侧边栏的页面和样式 |
sidepanel.js | 侧边栏入口,只做初始化 |
boot.js | 打开侧边栏时先显示上次的画面,等数据读好再替换 |
src/store.js | 状态,以及读写状态的函数 |
src/render.js | 把状态画到页面上 |
src/tabs.js / items.js / spaces.js | 对标签页、收藏/固定项、空间的操作 |
src/menus.js / ui.js | 右键菜单的内容;提示条、撤销、菜单外壳、对话框 |
src/drag.js / events.js | 拖拽;事件绑定 |
src/keys.js | 键盘操作和选中框 |
src/leaves.js | 落叶 |
src/history.js | 搜索时的历史记录 |
src/groups.js | 后台:让顶部标签栏的顺序和分组跟侧边栏一致 |
src/folders.js | 固定标签里的文件夹 |
src/dom.js | 生成页面元素的小工具 |
src/i18n.js | 界面文案(中文和英文)和语言选择 |
_locales/ | 扩展名称下的简介、快捷键说明的中英文(由 Chrome 按浏览器语言显示) |
src/logic.js | 不碰浏览器的纯逻辑(网址判断、树形排列、拖拽落点、文件夹等) |
src/protocol.js | 侧边栏和后台共用的约定:会话存储的键、消息格式 |
test/ | src/logic.js、src/protocol.js 和 src/i18n.js 的测试 |
icons/ | 扩展图标 |
store/ | Chrome 应用商店的上架资料、截图和宣传图;store/screenshots/make.js 用来重新生成截图 |
README.en.md | 英文版说明 |
PRIVACY.md | 隐私政策 |
LICENSE |
没有构建步骤:代码是原生 ES 模块,改完在 chrome://extensions 里重新加载扩展即可。
测试用 Node 自带的测试运行器,不需要安装依赖(需要 Node 20 或更高版本):
npm test
界面改动后,可以重新生成应用商店的截图和小宣传图,中英文各一套(英文版在 store/en/;需要本机装有 Chrome,侧边栏部分直接套用 sidepanel.css):
npm run screenshots
发版是自动的:main 上 manifest.json 的版本号一变,GitHub Actions(.github/workflows/release.yml)就会跑测试、打包,创建 v<版本号> 标签和 GitHub Release,附上 zip,说明从 CHANGELOG.md 里自动挑出这个版本包含的条目。
manifest.json 里的 version(新功能加第二位,只修问题加第三位,比如 1.4.1 → 1.5.0 / 1.4.2),和更新日志一起提交。main。几分钟后在仓库的 Releases 页面就能看到新版本;进度在 Actions 页面看。本地预览这次 Release 的说明(默认从最近的版本标签算起):
npm run release-notes
本地打包(不发布):
npm run pack
说明是按更新日志里每条末尾的提交链接挑的:条目引用的提交在这个版本范围里,就会被收进去。所以更新日志里的条目要带上提交链接。
主页 https://winzipsdo.github.io/sidearc/ 由 gh-pages 分支直接发布:分支根目录的 index.html、style.css、main.js、assets/(含介绍视频)就是主页本身,store/、icons/ 是从 main 复制过去的截图和图标。生成主页和介绍视频的脚本也放在这个分支的 source/ 下,详细步骤见该分支的 source/README.md。
常见的维护场景:
gh-pages 分支,直接改 index.html,提交推送后几分钟内生效。main 上运行 npm run screenshots 并提交,再把 store/screenshot-*.jpg 和 store/en/screenshot-*.jpg 复制到 gh-pages 分支的同名位置,提交推送。source/README.md 的步骤重新生成视频。视频脚本会用到 main 上的 sidepanel.css 和 store/screenshots/brand-icons.js,所以要在 main 的检出目录里临时搭一个 site/ 来跑,跑完删掉,不要提交到 main。不建议在 main 的工作区里直接切换到 gh-pages 分支来改:两个分支的文件完全不同。可以另开一个工作目录:
git worktree add ../sidearc-pages gh-pages
Sidearc 免费、开源。觉得好用的话,可以在 GitHub Sponsors 赞助一下;侧边栏右下角的设置菜单里也有「支持 Sidearc」。
| 开源许可证(MIT) |
CHANGELOG.md | 更新日志 |
scripts/pack.js | 打包上架用的 zip(npm run pack) |
scripts/release-notes.js | 从更新日志生成 Release 说明(npm run release-notes) |
.github/workflows/release.yml | 版本号变了就自动发 Release |