{"id":50957937,"url":"https://github.com/ciuzaak/sidebrowser","last_synced_at":"2026-06-18T09:33:01.750Z","repository":{"id":354111523,"uuid":"1218839738","full_name":"ciuzaak/sidebrowser","owner":"ciuzaak","description":"A side-panel Electron browser for Windows — edge auto-hide, mobile UA emulation, persistent login. 打工人的侧边栏摸鱼浏览器。Written entirely by Claude + superpowers plugin.","archived":false,"fork":false,"pushed_at":"2026-05-28T01:45:23.000Z","size":2328,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T03:17:49.226Z","etag":null,"topics":["ai-generated","anthropic","browser","claude","claude-code","electron","electron-app","react","side-panel","superpowers","typescript","vibe-coding","windows"],"latest_commit_sha":null,"homepage":"https://github.com/ciuzaak/sidebrowser/releases/latest","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ciuzaak.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-23T09:08:55.000Z","updated_at":"2026-05-28T01:31:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ciuzaak/sidebrowser","commit_stats":null,"previous_names":["ciuzaak/sidebrowser"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/ciuzaak/sidebrowser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ciuzaak%2Fsidebrowser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ciuzaak%2Fsidebrowser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ciuzaak%2Fsidebrowser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ciuzaak%2Fsidebrowser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ciuzaak","download_url":"https://codeload.github.com/ciuzaak/sidebrowser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ciuzaak%2Fsidebrowser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34485163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ai-generated","anthropic","browser","claude","claude-code","electron","electron-app","react","side-panel","superpowers","typescript","vibe-coding","windows"],"created_at":"2026-06-18T09:32:59.605Z","updated_at":"2026-06-18T09:33:01.729Z","avatar_url":"https://github.com/ciuzaak.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sidebrowser\n\n打工人的侧边栏摸鱼浏览器。一款 Electron 应用，贴屏幕边缘自动收起、只露 3px 触发条，鼠标离开还会自动暗化/模糊，手机 UA 让网页按手机版渲染，登录态跨重启持久。挂在显示器边上随时瞟一眼推/B 站/工单，老板路过——鼠标移开，窗口自动暗下去。\n\n## 关于这个项目\n\n这个仓库的**所有代码、测试、文档和 milestone 计划**，都是 Claude（Anthropic，主要是 Opus）在 [Claude Code](https://claude.ai/code) 里、配合 [superpowers 插件](https://github.com/obra/superpowers) 写出来的。人类（仓库 owner）只负责提需求、做决策、手动冒烟测试。\n\n换句话说，这是一个\"AI 主导开发\"的实验项目，拿来给好奇这套工作流的人看的——不是产品级品质，是个人玩具，但它能用。\n\nWindows only。macOS 预计 v1.5 支持。\n\n## 核心功能\n\n- **贴边自动隐藏**（左/右均可）：窗口收起后留 3px 触发条，鼠标悬停即呼出\n- **鼠标离开自动变暗/模糊**：离开窗口后触发暗化 + 模糊滤镜，强度和效果均可在设置里调\n- **手机模拟（M10 hybrid CDP）**：UA + Client Hints 头 + Chromium device emulation + CDP touch/pointer override，让 X.com / B 站等靠 Client Hints 路由的站点也按真移动版渲染\n- **可定制搜索引擎（M11）**：默认 Google，内置 4 项（Google / DuckDuckGo / Bing / 百度）+ 用户可添加/删除自定义条目（含 `{query}` 占位符的 URL 模板）\n- **网页缩放（M11）**：Ctrl+滚轮调整当前 tab 大小（每 tab 独立、50–300% / ±10% 步进），Ctrl+0 复位 100%\n- **新标签页 + 网址栏自动补全（M12）**：about:blank 时显示最近 12 条访问记录（点击直接打开、单条可删除）；地址栏 focus 即弹出历史下拉，输入时实时按 URL/标题过滤（最多 8 条），↑/↓ 键盘选择 + Enter 跳转 + Esc 关闭。历史按 URL 去重，500 条 LRU 上限\n- **登录态持久化**：所有 tab 共享 `persist:sidebrowser` session partition，cookies 跨重启保留\n- **始终置顶**：能盖住 F11 全屏浏览器和视频播放器\n- **单实例锁**：已有实例时双击不会再开一个\n- **System / Dark / Light 三档 chrome 主题**：Settings → Appearance 切换，System 跟随 OS 深色模式\n- **所有设置项均有 reset-to-default 按钮**\n\n## 安装\n\n去 [GitHub Releases 最新发布页](https://github.com/ciuzaak/sidebrowser/releases/latest) 下载 `sidebrowser-Setup-\u003cversion\u003e.exe` 直接运行。\n\n首次安装 Windows SmartScreen 会弹\"未知发布者\"警告，这是正常的（没做代码签名）。点**\"更多信息\"→\"仍要运行\"**即可。\n\n或者本地构建：\n\n```bash\npnpm install\npnpm build:installer\n# 产出 release/sidebrowser-Setup-\u003cversion\u003e.exe，\u003cversion\u003e 取自 package.json\n```\n\n运行环境要求：Node.js ≥ 20，pnpm ≥ 9，Windows 10/11。\n\n## 开发（如果你想魔改）\n\n```bash\npnpm dev          # electron-vite 开发服务器，支持热重载\npnpm build        # 打包到 out/\npnpm build:installer  # 构建安装包\npnpm test         # 单元测试（Vitest）\npnpm test:e2e     # E2E 测试（Playwright/Electron），需要先跑 pnpm build\npnpm typecheck    # TypeScript 严格检查\npnpm lint         # ESLint\n```\n\n**环境坑**：如果你的 shell 里 `ELECTRON_RUN_AS_NODE` 被全局设置了（部分开发工具会这样），Electron 会进入 Node 兼容模式，导致应用启动失败。所有 pnpm 脚本都经过 `scripts/run.mjs` 包装，会自动剥离这个变量。如果你直接调用 `electron-vite`，记得先 `unset ELECTRON_RUN_AS_NODE`。\n\n## 键盘快捷键\n\n| 快捷键 | 功能 |\n|---|---|\n| `Ctrl+T` | 新 tab |\n| `Ctrl+W` | 关闭当前 tab |\n| `Ctrl+L` | 聚焦地址栏 |\n| `Ctrl+R` / `F5` | 刷新 |\n| `Alt+←` / `Alt+→` | 后退 / 前进 |\n| `Ctrl+Tab` | 打开/关闭 tab 抽屉 |\n| `Ctrl+,` | 打开/关闭设置抽屉 |\n| `Ctrl+滚轮` | 缩放当前 tab（desktop 模式）|\n| `Ctrl+0` | 复位当前 tab 缩放至 100% |\n| `F12` | 打开/关闭 DevTools |\n\n## 已知限制\n\n- **极端反移动端检测的站可能仍识别为桌面。** M10 用 hybrid CDP 翻 `userAgentData.mobile` / `(pointer:coarse)` / `(hover:none)` / `'ontouchstart' in window` + Sec-CH-UA-* 头，覆盖了大多数靠 UA + Client Hints + 媒体查询路由的站点（包括 X.com、B 站等）。但极端的 device fingerprinting（细到 GPU 型号 / 字体集 / 时钟偏移）仍可能被识别。\n- **Mobile tab（per-tab Mobile 开启时）的 Ctrl+滚轮 / Ctrl+0 不工作。** Chromium 的 device emulation 模式吃掉 Ctrl+wheel 事件（解释成模拟 pinch），且 `setZoomFactor` 被 emulation 锁死的 viewport scale 覆盖。Workaround：点 TopBar 的 Smartphone/Monitor 按钮切到 desktop 模式即可缩放。完整修复路径规划到 M11.1。\n- **不支持 macOS。** v1.5 计划加。\n- **关闭窗口即退出，没有系统托盘。**\n- **始终置顶对 DirectX exclusive fullscreen 无效**（极少数老游戏 / 部分 DRM 视频），这是 OS 层限制。\n- **无代码签名**，首次安装 SmartScreen 会叫，点\"仍要运行\"。\n- **无页内搜索、无下载 UI、无书签管理**。这些交给浏览器本身解决。\n- **图标是占位符**，后续版本会换正式设计。\n- **历史无 in-app 清除按钮**。M12 v1 暂不做（YAGNI）；要清空手动删 `%APPDATA%/sidebrowser/sidebrowser-history.json` 即可。\n\n## 技术栈\n\nElectron + React 19 + TypeScript + Vitest + Playwright + electron-vite + Tailwind CSS + Zustand + electron-store。不引入原生模块（Electron 本身除外）。\n\n## 文档\n\n- 主设计 spec：`docs/superpowers/specs/2026-04-23-sidebrowser-design.md`\n- Milestone 计划文档：`docs/superpowers/plans/`\n- M10 spec（mobile emulation 增强）：`docs/superpowers/specs/2026-04-27-mobile-emulation-clienthints-design.md`\n- M11 spec（搜索引擎 + 网页缩放）：`docs/superpowers/specs/2026-04-27-M11-search-and-zoom-design.md`\n- M12 spec（浏览历史 + NewTab + 网址栏自动补全）：`docs/superpowers/specs/2026-05-06-history-and-newtab-design.md`\n\n## 鸣谢\n\n- **Claude (Anthropic)** — 代码实作、测试、文档全包\n- **[superpowers 插件](https://github.com/obra/superpowers)** — brainstorming / writing-plans / subagent-driven-development 工作流，让 AI 主导开发变得可行\n- **人类 owner** — 出需求、拍板、按按钮\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fciuzaak%2Fsidebrowser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fciuzaak%2Fsidebrowser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fciuzaak%2Fsidebrowser/lists"}