|
1 | | -# GitHub Conductor |
| 1 | +<p align="center"> |
| 2 | + <img src="public/icons/icon-128.png" alt="GitHub Conductor icon — a steam locomotive on a dark GitHub-themed card" width="96" height="96" /> |
| 3 | +</p> |
2 | 4 |
|
3 | | -> One click from any GitHub PR to a Conductor workspace with your prompt |
4 | | -> already running. |
| 5 | +<h1 align="center">GitHub Conductor</h1> |
5 | 6 |
|
6 | | -A lightweight Chrome extension that injects a button on every GitHub Pull |
7 | | -Request page. Click it and your configured prompt — populated with the PR's |
8 | | -metadata — opens in a fresh [Conductor](https://conductor.build) workspace via |
9 | | -the `conductor://` deep link. |
| 7 | +<p align="center"> |
| 8 | + One click from any GitHub PR to a <a href="https://conductor.build">Conductor</a> |
| 9 | + workspace with your prompt already running. |
| 10 | +</p> |
10 | 11 |
|
11 | | - |
| 12 | +A lightweight Chrome extension that adds a **Conductor** section to every |
| 13 | +GitHub Pull Request's right sidebar — directly above _Reviewers_. Click the |
| 14 | +button and your configured prompt, populated with the PR's metadata, opens |
| 15 | +in a fresh Conductor workspace via the `conductor://` deep link. |
12 | 16 |
|
13 | 17 | ## Why |
14 | 18 |
|
@@ -89,20 +93,23 @@ GitHub button runs. All presets are accessible from the toolbar popup. |
89 | 93 |
|
90 | 94 | ## Architecture |
91 | 95 |
|
92 | | -Five small, separately testable modules: |
93 | | - |
94 | 96 | ``` |
95 | 97 | src/ |
96 | 98 | ├── types.ts ← shared TypeScript types |
97 | 99 | ├── storage.ts ← chrome.storage.sync adapter + in-memory fallback |
98 | 100 | ├── template.ts ← {placeholder} substitution engine |
99 | 101 | ├── conductor-url.ts ← builds conductor:// URLs with safe encoding |
100 | 102 | ├── pr-scraper.ts ← extracts PR metadata from the DOM |
101 | | -├── content/ ← content script: button injection on PR pages |
102 | | -├── options/ ← settings page |
| 103 | +├── content/ ← content script: sidebar widget above Reviewers |
| 104 | +├── options/ ← settings page (manage presets, URL template) |
103 | 105 | └── popup/ ← toolbar popup with preset list |
104 | 106 | ``` |
105 | 107 |
|
| 108 | +The widget injects above `#reviewers-select-menu` in GitHub's PR sidebar — |
| 109 | +a stable selector from GitHub's Rails partial that's been around for years |
| 110 | +(the same anchor [Refined GitHub](https://github.com/refined-github/refined-github) |
| 111 | +uses). Three-tier fallback: reviewers → sidebar top → PR header. |
| 112 | + |
106 | 113 | Side effects live at the boundary (`storage`, `content`, `popup`). Everything |
107 | 114 | else is pure functions, which is why **34 unit tests** run in under a second. |
108 | 115 |
|
|
0 commit comments