sourcemonkey 0.0.0-stage → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -2
  3. package/dist/bytes.js +37 -0
  4. package/dist/channel-placeholder.js +5 -0
  5. package/dist/collection-scan.js +17 -0
  6. package/dist/collections.html +353 -0
  7. package/dist/compare.html +358 -0
  8. package/dist/composed-source.js +205 -0
  9. package/dist/connect-prompt.html +47 -0
  10. package/dist/debug/icons.html +211 -0
  11. package/dist/debug/storage.html +163 -0
  12. package/dist/debug-log.js +75 -0
  13. package/dist/diagnostic-location.js +64 -0
  14. package/dist/eval-hook.js +308 -0
  15. package/dist/extension/background.js +5263 -0
  16. package/dist/extension/channel.js +133 -0
  17. package/dist/extension/code-links.js +187 -0
  18. package/dist/extension/code-tabs.js +460 -0
  19. package/dist/extension/collection-dialog.js +619 -0
  20. package/dist/extension/collection-display.js +322 -0
  21. package/dist/extension/collections.js +2905 -0
  22. package/dist/extension/compare.js +867 -0
  23. package/dist/extension/concurrency.js +186 -0
  24. package/dist/extension/connect-grants.js +109 -0
  25. package/dist/extension/connect-prompt-page.js +70 -0
  26. package/dist/extension/connect-prompt.js +266 -0
  27. package/dist/extension/copy-button.js +63 -0
  28. package/dist/extension/copy-dialog.js +502 -0
  29. package/dist/extension/copy-preference.js +66 -0
  30. package/dist/extension/debug/icons.js +203 -0
  31. package/dist/extension/debug/storage.js +365 -0
  32. package/dist/extension/deep-link.js +77 -0
  33. package/dist/extension/delete-dialog.js +432 -0
  34. package/dist/extension/delete-icon.js +40 -0
  35. package/dist/extension/details-tooltips.js +66 -0
  36. package/dist/extension/directories.js +679 -0
  37. package/dist/extension/export-backup.js +407 -0
  38. package/dist/extension/export-dialog.js +142 -0
  39. package/dist/extension/file-access.js +74 -0
  40. package/dist/extension/file-changes.js +346 -0
  41. package/dist/extension/frame-info.js +85 -0
  42. package/dist/extension/github-provider.js +336 -0
  43. package/dist/extension/glyph.js +84 -0
  44. package/dist/extension/gm-bindings.js +601 -0
  45. package/dist/extension/gm-download.js +419 -0
  46. package/dist/extension/gm-menu.js +228 -0
  47. package/dist/extension/gm-notification.js +141 -0
  48. package/dist/extension/gm-originator-map.js +23 -0
  49. package/dist/extension/gm-tab-data.js +121 -0
  50. package/dist/extension/gm-tab.js +160 -0
  51. package/dist/extension/gm-url-change.js +111 -0
  52. package/dist/extension/gm-url-scheme.js +27 -0
  53. package/dist/extension/gm-values.js +176 -0
  54. package/dist/extension/gm-window-control.js +104 -0
  55. package/dist/extension/gm-xhr-headers.js +333 -0
  56. package/dist/extension/gm-xhr.js +584 -0
  57. package/dist/extension/injector.js +3145 -0
  58. package/dist/extension/install-capture.js +277 -0
  59. package/dist/extension/line-diff.js +233 -0
  60. package/dist/extension/local-copy.js +560 -0
  61. package/dist/extension/local-delete.js +276 -0
  62. package/dist/extension/location-kinds.js +108 -0
  63. package/dist/extension/log-format.js +158 -0
  64. package/dist/extension/managed-changes.js +361 -0
  65. package/dist/extension/managed-items.js +57 -0
  66. package/dist/extension/match-index.js +375 -0
  67. package/dist/extension/missing-scripts.js +66 -0
  68. package/dist/extension/more-menu.js +109 -0
  69. package/dist/extension/move-dialog.js +197 -0
  70. package/dist/extension/offscreen.js +37 -0
  71. package/dist/extension/options.js +504 -0
  72. package/dist/extension/page-heading.js +170 -0
  73. package/dist/extension/page-links.js +199 -0
  74. package/dist/extension/parse-check-client.js +70 -0
  75. package/dist/extension/parse-check.js +161 -0
  76. package/dist/extension/parse-sandbox-host.js +172 -0
  77. package/dist/extension/parse-sandbox.js +175 -0
  78. package/dist/extension/popup-commands-open.js +41 -0
  79. package/dist/extension/popup-view.js +387 -0
  80. package/dist/extension/popup.js +703 -0
  81. package/dist/extension/prism-userscript.js +53 -0
  82. package/dist/extension/refresh-error.js +136 -0
  83. package/dist/extension/refresh-targets.js +160 -0
  84. package/dist/extension/related-versions.js +1144 -0
  85. package/dist/extension/resize-observer-loop.js +19 -0
  86. package/dist/extension/row-cache.js +387 -0
  87. package/dist/extension/script-blobs.js +413 -0
  88. package/dist/extension/script-details.js +658 -0
  89. package/dist/extension/script-enablement.js +285 -0
  90. package/dist/extension/script-identity.js +310 -0
  91. package/dist/extension/script-keys.js +54 -0
  92. package/dist/extension/script-log-id.js +155 -0
  93. package/dist/extension/script-log.js +290 -0
  94. package/dist/extension/script-rejection.js +104 -0
  95. package/dist/extension/script-sites.js +158 -0
  96. package/dist/extension/script-store.js +3507 -0
  97. package/dist/extension/script-updater.js +991 -0
  98. package/dist/extension/script-url-hash.js +61 -0
  99. package/dist/extension/select-all.js +37 -0
  100. package/dist/extension/select-open-guard.js +90 -0
  101. package/dist/extension/site-icon.js +1261 -0
  102. package/dist/extension/sm-dev-link.js +302 -0
  103. package/dist/extension/solo-click.js +58 -0
  104. package/dist/extension/sticky-numbers.js +188 -0
  105. package/dist/extension/storage-breakdown.js +253 -0
  106. package/dist/extension/storage-scan.js +86 -0
  107. package/dist/extension/storage-usage.js +194 -0
  108. package/dist/extension/structural-keys.js +29 -0
  109. package/dist/extension/sw-teardown.js +36 -0
  110. package/dist/extension/tab-status.js +403 -0
  111. package/dist/extension/toolbar-summary.js +105 -0
  112. package/dist/extension/user-scripts-access.js +43 -0
  113. package/dist/extension/userscript.js +3672 -0
  114. package/dist/extension/value-store.js +204 -0
  115. package/dist/extension/version-probe-fetch.js +68 -0
  116. package/dist/extension/worker-client.js +109 -0
  117. package/dist/extension/worker-ops.js +171 -0
  118. package/dist/extension/zip-writer.js +24 -0
  119. package/dist/external-files.js +878 -0
  120. package/dist/file-loader.js +436 -0
  121. package/dist/file-locations.js +439 -0
  122. package/dist/generated-wrappers.js +5 -0
  123. package/dist/github-auth.js +148 -0
  124. package/dist/github-urls.js +46 -0
  125. package/dist/gm-api-catalog.js +217 -0
  126. package/dist/gm-connect.js +273 -0
  127. package/dist/gm-xhr-types.js +5 -0
  128. package/dist/http-read.js +142 -0
  129. package/dist/icons/icon-128.png +0 -0
  130. package/dist/icons/icon-16.png +0 -0
  131. package/dist/icons/icon-48.png +0 -0
  132. package/dist/local-file-overrides.js +558 -0
  133. package/dist/manifest.json +38 -0
  134. package/dist/markup-response.js +126 -0
  135. package/dist/match-targets.js +305 -0
  136. package/dist/menu-captions.js +22 -0
  137. package/dist/offscreen.html +39 -0
  138. package/dist/options.html +197 -0
  139. package/dist/parse-check-protocol.js +51 -0
  140. package/dist/parse-location.js +171 -0
  141. package/dist/parse-sandbox.html +56 -0
  142. package/dist/phase-timing.js +155 -0
  143. package/dist/popup.html +197 -0
  144. package/dist/public-suffixes.js +6957 -0
  145. package/dist/run-context.js +31 -0
  146. package/dist/runtime-messages.js +34 -0
  147. package/dist/sandboxed-page.js +35 -0
  148. package/dist/script-build.js +787 -0
  149. package/dist/script-display.js +383 -0
  150. package/dist/script-icon.js +43 -0
  151. package/dist/script-links.js +204 -0
  152. package/dist/script-source-url.js +214 -0
  153. package/dist/script-world.js +65 -0
  154. package/dist/sm-dev-protocol.js +84 -0
  155. package/dist/source-map.js +177 -0
  156. package/dist/stack-link.js +138 -0
  157. package/dist/styles.css +825 -0
  158. package/dist/unsafe-window-use.js +229 -0
  159. package/dist/url-match.js +734 -0
  160. package/dist/userscript-header.js +248 -0
  161. package/dist/userscript.html +1165 -0
  162. package/dist/vendor/fflate.LICENSE +21 -0
  163. package/dist/vendor/fflate.js +2692 -0
  164. package/dist/vendor/prism/prism-line-numbers.css +1 -0
  165. package/dist/vendor/prism/prism-line-numbers.js +1 -0
  166. package/dist/vendor/prism/prism.css +1 -0
  167. package/dist/vendor/prism/prism.js +1946 -0
  168. package/dist/version-compare.js +141 -0
  169. package/dist/version-probe.js +120 -0
  170. package/lib/build-info.json +1 -0
  171. package/lib/bytes.d.ts +3 -0
  172. package/lib/bytes.js +37 -0
  173. package/lib/channel-placeholder.d.ts +1 -0
  174. package/lib/channel-placeholder.js +5 -0
  175. package/lib/collection-scan.d.ts +8 -0
  176. package/lib/collection-scan.js +17 -0
  177. package/lib/composed-source.d.ts +28 -0
  178. package/lib/composed-source.js +205 -0
  179. package/lib/debug-log.d.ts +9 -0
  180. package/lib/debug-log.js +75 -0
  181. package/lib/diagnostic-location.d.ts +8 -0
  182. package/lib/diagnostic-location.js +64 -0
  183. package/lib/eval-hook.d.ts +34 -0
  184. package/lib/eval-hook.js +308 -0
  185. package/lib/external-files.d.ts +111 -0
  186. package/lib/external-files.js +878 -0
  187. package/lib/file-loader.d.ts +48 -0
  188. package/lib/file-loader.js +436 -0
  189. package/lib/file-locations.d.ts +44 -0
  190. package/lib/file-locations.js +439 -0
  191. package/lib/generated-wrappers.d.ts +11 -0
  192. package/lib/generated-wrappers.js +5 -0
  193. package/lib/github-auth.d.ts +12 -0
  194. package/lib/github-auth.js +148 -0
  195. package/lib/github-urls.d.ts +1 -0
  196. package/lib/github-urls.js +46 -0
  197. package/lib/gm-api-catalog.d.ts +24 -0
  198. package/lib/gm-api-catalog.js +217 -0
  199. package/lib/gm-connect.d.ts +34 -0
  200. package/lib/gm-connect.js +273 -0
  201. package/lib/gm-xhr-types.d.ts +68 -0
  202. package/lib/gm-xhr-types.js +5 -0
  203. package/lib/harness/browser-extensions.d.ts +73 -0
  204. package/lib/harness/browser-extensions.js +285 -0
  205. package/lib/harness/browser-lang.d.ts +20 -0
  206. package/lib/harness/browser-lang.js +86 -0
  207. package/lib/harness/browser-launch.d.ts +14 -0
  208. package/lib/harness/browser-launch.js +184 -0
  209. package/lib/harness/checks.d.ts +110 -0
  210. package/lib/harness/checks.js +321 -0
  211. package/lib/harness/cli.d.ts +2 -0
  212. package/lib/harness/cli.js +2259 -0
  213. package/lib/harness/command-args.d.ts +91 -0
  214. package/lib/harness/command-args.js +369 -0
  215. package/lib/harness/command-lines.d.ts +80 -0
  216. package/lib/harness/command-lines.js +180 -0
  217. package/lib/harness/command-list.d.ts +206 -0
  218. package/lib/harness/command-list.js +1475 -0
  219. package/lib/harness/console-commands.d.ts +463 -0
  220. package/lib/harness/console-commands.js +3216 -0
  221. package/lib/harness/download-watch.d.ts +21 -0
  222. package/lib/harness/download-watch.js +156 -0
  223. package/lib/harness/extension-backend.d.ts +41 -0
  224. package/lib/harness/extension-backend.js +100 -0
  225. package/lib/harness/extension-host.d.ts +112 -0
  226. package/lib/harness/extension-host.js +552 -0
  227. package/lib/harness/extension-launch.d.ts +67 -0
  228. package/lib/harness/extension-launch.js +285 -0
  229. package/lib/harness/extension-link.d.ts +315 -0
  230. package/lib/harness/extension-link.js +607 -0
  231. package/lib/harness/external-manager.d.ts +146 -0
  232. package/lib/harness/external-manager.js +414 -0
  233. package/lib/harness/fixture.d.ts +165 -0
  234. package/lib/harness/fixture.js +461 -0
  235. package/lib/harness/frame-sessions.d.ts +71 -0
  236. package/lib/harness/frame-sessions.js +248 -0
  237. package/lib/harness/frames.d.ts +68 -0
  238. package/lib/harness/frames.js +216 -0
  239. package/lib/harness/help-format.d.ts +17 -0
  240. package/lib/harness/help-format.js +127 -0
  241. package/lib/harness/host.d.ts +352 -0
  242. package/lib/harness/host.js +423 -0
  243. package/lib/harness/index.d.ts +8 -0
  244. package/lib/harness/index.js +10 -0
  245. package/lib/harness/input-file.d.ts +18 -0
  246. package/lib/harness/input-file.js +61 -0
  247. package/lib/harness/json-output.d.ts +565 -0
  248. package/lib/harness/json-output.js +71 -0
  249. package/lib/harness/manager-actions.d.ts +21 -0
  250. package/lib/harness/manager-actions.js +129 -0
  251. package/lib/harness/manager-commands.d.ts +142 -0
  252. package/lib/harness/manager-commands.js +1196 -0
  253. package/lib/harness/manager-fetch.d.ts +33 -0
  254. package/lib/harness/manager-fetch.js +239 -0
  255. package/lib/harness/managers.d.ts +24 -0
  256. package/lib/harness/managers.js +27 -0
  257. package/lib/harness/output-style.d.ts +125 -0
  258. package/lib/harness/output-style.js +322 -0
  259. package/lib/harness/page-commands.d.ts +134 -0
  260. package/lib/harness/page-commands.js +1141 -0
  261. package/lib/harness/page-output.d.ts +67 -0
  262. package/lib/harness/page-output.js +139 -0
  263. package/lib/harness/page-watch.d.ts +171 -0
  264. package/lib/harness/page-watch.js +607 -0
  265. package/lib/harness/parse-check-node.d.ts +3 -0
  266. package/lib/harness/parse-check-node.js +132 -0
  267. package/lib/harness/path-args.d.ts +22 -0
  268. package/lib/harness/path-args.js +148 -0
  269. package/lib/harness/playwright-chromium.d.ts +16 -0
  270. package/lib/harness/playwright-chromium.js +86 -0
  271. package/lib/harness/prepare.d.ts +168 -0
  272. package/lib/harness/prepare.js +364 -0
  273. package/lib/harness/prompt-editor.d.ts +17 -0
  274. package/lib/harness/prompt-editor.js +354 -0
  275. package/lib/harness/prompt-history.d.ts +13 -0
  276. package/lib/harness/prompt-history.js +89 -0
  277. package/lib/harness/rebuild-advice.d.ts +6 -0
  278. package/lib/harness/rebuild-advice.js +39 -0
  279. package/lib/harness/run-log.d.ts +47 -0
  280. package/lib/harness/run-log.js +140 -0
  281. package/lib/harness/run-logs.d.ts +132 -0
  282. package/lib/harness/run-logs.js +241 -0
  283. package/lib/harness/run.d.ts +194 -0
  284. package/lib/harness/run.js +1973 -0
  285. package/lib/harness/runs.d.ts +229 -0
  286. package/lib/harness/runs.js +726 -0
  287. package/lib/harness/save-html.d.ts +39 -0
  288. package/lib/harness/save-html.js +89 -0
  289. package/lib/harness/saved-pages.d.ts +120 -0
  290. package/lib/harness/saved-pages.js +275 -0
  291. package/lib/harness/script-mark.d.ts +17 -0
  292. package/lib/harness/script-mark.js +56 -0
  293. package/lib/harness/snapshot.d.ts +143 -0
  294. package/lib/harness/snapshot.js +474 -0
  295. package/lib/harness/stuck-tabs.d.ts +19 -0
  296. package/lib/harness/stuck-tabs.js +131 -0
  297. package/lib/harness/tab-refs.d.ts +20 -0
  298. package/lib/harness/tab-refs.js +80 -0
  299. package/lib/harness/tampermonkey.d.ts +71 -0
  300. package/lib/harness/tampermonkey.js +356 -0
  301. package/lib/harness/tm-ids.d.ts +18 -0
  302. package/lib/harness/tm-ids.js +88 -0
  303. package/lib/harness/violentmonkey.d.ts +34 -0
  304. package/lib/harness/violentmonkey.js +162 -0
  305. package/lib/harness/wait.d.ts +77 -0
  306. package/lib/harness/wait.js +458 -0
  307. package/lib/http-read.d.ts +30 -0
  308. package/lib/http-read.js +142 -0
  309. package/lib/local-file-overrides.d.ts +35 -0
  310. package/lib/local-file-overrides.js +558 -0
  311. package/lib/manifest.json +38 -0
  312. package/lib/markup-response.d.ts +11 -0
  313. package/lib/markup-response.js +126 -0
  314. package/lib/match-targets.d.ts +18 -0
  315. package/lib/match-targets.js +305 -0
  316. package/lib/menu-captions.d.ts +1 -0
  317. package/lib/menu-captions.js +22 -0
  318. package/lib/parse-check-protocol.d.ts +27 -0
  319. package/lib/parse-check-protocol.js +51 -0
  320. package/lib/parse-location.d.ts +12 -0
  321. package/lib/parse-location.js +171 -0
  322. package/lib/phase-timing.d.ts +12 -0
  323. package/lib/phase-timing.js +155 -0
  324. package/lib/public-suffixes.d.ts +1 -0
  325. package/lib/public-suffixes.js +6957 -0
  326. package/lib/run-context.d.ts +2 -0
  327. package/lib/run-context.js +31 -0
  328. package/lib/runtime-messages.d.ts +10 -0
  329. package/lib/runtime-messages.js +34 -0
  330. package/lib/sandboxed-page.d.ts +5 -0
  331. package/lib/sandboxed-page.js +35 -0
  332. package/lib/script-build.d.ts +111 -0
  333. package/lib/script-build.js +787 -0
  334. package/lib/script-display.d.ts +51 -0
  335. package/lib/script-display.js +383 -0
  336. package/lib/script-icon.d.ts +16 -0
  337. package/lib/script-icon.js +43 -0
  338. package/lib/script-links.d.ts +24 -0
  339. package/lib/script-links.js +204 -0
  340. package/lib/script-source-url.d.ts +8 -0
  341. package/lib/script-source-url.js +214 -0
  342. package/lib/script-world.d.ts +6 -0
  343. package/lib/script-world.js +65 -0
  344. package/lib/sm-dev-protocol.d.ts +251 -0
  345. package/lib/sm-dev-protocol.js +84 -0
  346. package/lib/source-map.d.ts +32 -0
  347. package/lib/source-map.js +177 -0
  348. package/lib/stack-link.d.ts +15 -0
  349. package/lib/stack-link.js +138 -0
  350. package/lib/unsafe-window-use.d.ts +1 -0
  351. package/lib/unsafe-window-use.js +229 -0
  352. package/lib/url-match.d.ts +40 -0
  353. package/lib/url-match.js +734 -0
  354. package/lib/userscript-header.d.ts +33 -0
  355. package/lib/userscript-header.js +248 -0
  356. package/lib/version-compare.d.ts +6 -0
  357. package/lib/version-compare.js +141 -0
  358. package/lib/version-probe.d.ts +17 -0
  359. package/lib/version-probe.js +120 -0
  360. package/package.json +55 -3
  361. package/skills/SourceMonkey-dev/SKILL.md +868 -0
  362. package/skills/SourceMonkey-dev/references/cdp.md +293 -0
  363. package/skills/SourceMonkey-dev/references/commands.md +297 -0
  364. package/skills/SourceMonkey-dev/references/other-managers.md +63 -0
  365. package/skills/SourceMonkey-dev/references/specs.md +46 -0
  366. package/skills/SourceMonkey-friction/SKILL.md +103 -0
  367. package/skills/SourceMonkey-friction/references/template.md +59 -0
@@ -0,0 +1,197 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>SourceMonkey | Active scripts</title>
6
+ <link rel="stylesheet" href="styles.css" />
7
+ <style>
8
+ /* The toolbar popup (docs/status-popup.md). Chrome caps a popup at
9
+ 800x600, so the body is a fixed-width column whose script area
10
+ scrolls once the whole thing would pass the cap. Opened in a
11
+ plain tab (`?tab=<id>`, for tests) it keeps the same width.
12
+ The popup is always wider by a scrollbar's width, so the rows
13
+ keep their width whether the script area scrolls or not: Chrome
14
+ grows a popup leftwards, so widening only when a scrollbar
15
+ shows would shift everything. Without a scrollbar the rows take
16
+ that strip as extra right padding (`--gutter`, set in popup.ts),
17
+ so their backgrounds still reach the edge. */
18
+ :root {
19
+ --popup-width: 380px;
20
+ --rule: #e3ddd4;
21
+ --muted: #6b6b6b;
22
+ --link: #1d4ed8;
23
+ --green: #2e7d32;
24
+ --red: #d32f2f;
25
+ --orange: #f57c00;
26
+ --purple: #d500f9;
27
+ --purple-deep: #8e24aa;
28
+ --purple-tint: #fbe9ff;
29
+ --grey: #757575;
30
+ --cyan: #00838f;
31
+ --cyan-tint: #e0f7fa;
32
+ }
33
+ body {
34
+ font: 13px system-ui, sans-serif; color: #222; background: #fff;
35
+ margin: 0; width: calc(var(--popup-width) + var(--scrollbar-width, 0px)); max-height: 590px;
36
+ display: flex; flex-direction: column;
37
+ }
38
+ /* Chrome draws the popup with no frame of its own, so a white
39
+ popup over a white page would have no edge. Drawn on an overlay
40
+ pinned to the viewport rather than as the body's border: Chrome
41
+ can size the popup a pixel short of the body, which clipped the
42
+ right and bottom edges. The header bar's border colour. The
43
+ right and bottom insets are set by popup.ts (`trimEdges`). */
44
+ body::after {
45
+ content: ""; position: fixed; z-index: 30;
46
+ inset: 0 var(--edge-trim-x, 0px) var(--edge-trim-y, 0px) 0;
47
+ border: 1px solid var(--header-border); pointer-events: none;
48
+ }
49
+ .page-header { padding: 0 6px 0 10px; flex: none; }
50
+ .page-header-inner { padding: 6px 0; gap: 8px; }
51
+ .page-header .page-icon { width: 22px; height: 22px; }
52
+ .page-header h1 { font-size: 14px; }
53
+ button { font: inherit; font-size: 12px; padding: 0 9px; cursor: pointer; }
54
+
55
+ /* The ⋯ buttons: borderless until hovered or open. */
56
+ button.more-menu {
57
+ width: 24px; padding: 0; border-color: transparent; background: transparent;
58
+ font-size: 16px; font-weight: 400; line-height: 1; color: var(--muted); flex: none;
59
+ }
60
+ button.more-menu:hover, button.more-menu[aria-expanded="true"] {
61
+ background: var(--btn-bg-hover); border-color: var(--btn-border);
62
+ }
63
+
64
+ .banner-row {
65
+ display: flex; align-items: center; gap: 8px; flex: none;
66
+ padding: 5px 8px 5px 10px; font-size: 12.5px; font-weight: 600;
67
+ }
68
+ .banner-row span { flex: 1; }
69
+ .banner-row.reload { background: var(--purple-tint); color: var(--purple-deep); border-bottom: 1px solid #e7b6f2; }
70
+ .banner-row.reload::before {
71
+ content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--purple); flex: none;
72
+ }
73
+ .banner-row.reload button { background: var(--purple-deep); border-color: var(--purple-deep); color: #fff; }
74
+ .banner-row.reload button:hover { background: #7b1fa2; }
75
+ .banner-row.sm-dev { background: var(--cyan-tint); color: var(--cyan); border-bottom: 1px solid #a5dde3; }
76
+ .banner-row.user-scripts-off { background: #fdecea; color: #b71c1c; border-bottom: 1px solid #f5c2c0; font-weight: 400; }
77
+ .banner-row.user-scripts-off strong { display: block; font-weight: 600; }
78
+ .banner-row.user-scripts-off a { color: inherit; }
79
+ .banner-row.user-scripts-off code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.9em; }
80
+
81
+ /* Only the script list gives up height at the popup's cap. */
82
+ #banners { flex: none; }
83
+ /* No native scroll anchoring: popup.ts keeps the top row in place
84
+ itself (restoreAnchor), around its own scrolling for banners. */
85
+ .scripts { overflow-y: auto; min-height: 0; flex: 1 1 auto; overflow-anchor: none; }
86
+ .section-head {
87
+ position: sticky; top: 0; z-index: 2;
88
+ /* Darker than the rows, with a rule on both edges, so the
89
+ Disabled bar doesn't blend into the white row above it. */
90
+ background: #ece5da; border-top: 1px solid #c9bba6; border-bottom: 1px solid #c9bba6;
91
+ padding: 3px calc(10px + var(--gutter, 0px)) 3px 10px; font-size: 11px; font-weight: 700; line-height: 15px;
92
+ letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted);
93
+ }
94
+ .empty-note { padding: 7px calc(10px + var(--gutter, 0px)) 9px 10px; color: var(--muted); font-style: italic; }
95
+ .empty-page { padding: 22px calc(16px + var(--gutter, 0px)) 22px 16px; text-align: center; color: var(--muted); }
96
+
97
+ .group-head {
98
+ display: flex; align-items: center; gap: 6px;
99
+ padding: 4px calc(4px + var(--gutter, 0px)) 0 8px; font-weight: 600; border-top: 1px solid var(--rule);
100
+ }
101
+ .section-head + .group-head { border-top: none; }
102
+ /* The first bar sits right under the header bar's own border. */
103
+ .script-section:first-child .section-head { border-top: none; }
104
+ .group-head .collection-name {
105
+ color: inherit; text-decoration: none; min-width: 0; overflow-wrap: anywhere;
106
+ }
107
+ .group-head .collection-name:hover { text-decoration: underline; }
108
+ .group-head .collection-type-bubble { font-size: 9.5px; line-height: 14px; padding: 0 6px; }
109
+ .group-head .spacer { flex: 1; }
110
+ .collection-off {
111
+ font-size: 11px; font-weight: 600; line-height: 16px; padding: 0 7px; border-radius: 8px;
112
+ color: var(--muted); border: 1px solid #c8c8c8; white-space: nowrap;
113
+ }
114
+ .group-head.off .collection-name, .group-head.off .collection-type-bubble { opacity: 0.6; }
115
+
116
+ .row { padding: 4px calc(4px + var(--gutter, 0px)) 4px 8px; border-bottom: 1px solid #f1ede7; }
117
+ /* A row's ⋯ sits centered between what's left of it (the pill, say)
118
+ and the scrollbar, or the popup's edge when there is none: the
119
+ spare strip (`--gutter`) is split either side of it. The row's
120
+ other content keeps its width either way, so only the ⋯ moves
121
+ as a scrollbar comes and goes. The -2px narrows the flex gap to
122
+ the 4px on its right. */
123
+ .row button.more-menu, .group-head button.more-menu {
124
+ margin-left: calc(var(--gutter, 0px) / 2 - 2px); margin-right: calc(var(--gutter, 0px) / -2);
125
+ }
126
+ .row:last-child { border-bottom: none; }
127
+ /* Top-aligned so a name that wraps keeps its controls on its
128
+ first line. */
129
+ .row-main { display: flex; align-items: flex-start; gap: 6px; min-height: 24px; }
130
+ .row input[type="checkbox"] { margin: 5px 0 0; width: 14px; height: 14px; flex: none; cursor: pointer; }
131
+ /* Ticked but not running: its collection is off. */
132
+ .row.muted input[type="checkbox"] { opacity: 0.45; }
133
+ .row .script-name {
134
+ flex: 1; min-width: 0; color: inherit; text-decoration: none;
135
+ padding-top: 3px; line-height: 1.35; overflow-wrap: anywhere;
136
+ }
137
+ .row .script-name:hover { text-decoration: underline; }
138
+ .row.off .script-name { opacity: 0.55; }
139
+ .version-line { margin: 1px 0 0 20px; font-size: 11.5px; color: var(--muted); }
140
+
141
+ /* One width for every status, so the column lines up. Sized for
142
+ the longest label, "Reload to run". */
143
+ .pill {
144
+ flex: none; width: 94px; box-sizing: border-box; margin-top: 3px;
145
+ font-size: 11px; font-weight: 600; line-height: 16px; text-align: center;
146
+ border-radius: 8px; border: 1px solid transparent; color: #fff;
147
+ text-decoration: none; white-space: nowrap;
148
+ }
149
+ /* Reload to run is a button (it reloads): undo the shared button
150
+ height and padding, so it matches the link pills. */
151
+ button.pill { height: auto; padding: 0; }
152
+ .pill:hover { filter: brightness(0.92); }
153
+ .pill.ok { background: var(--green); }
154
+ .pill.error, .pill.rejected, .pill.invalid { background: var(--red); }
155
+ .pill.reload { background: var(--purple); }
156
+ .pill.missing, .pill.unexpected { background: var(--orange); }
157
+ .pill.not-loaded { background: var(--grey); }
158
+ /* Amber outline: a warning leaves the badge color alone, so it gets no solid color. */
159
+ .pill.warning { background: #fff8e1; color: #7a5800; border-color: #f9a825; }
160
+ .pill.pending, .pill.still-running, .pill.untracked {
161
+ background: var(--purple-tint); color: var(--purple-deep); border-color: var(--purple);
162
+ }
163
+ /* A manual script not run yet: nothing wrong, nothing to do. */
164
+ .pill.not-run { background: #fff; color: var(--grey); border-color: #c8c8c8; }
165
+
166
+ .commands { margin: 2px 0 1px 14px; display: grid; gap: 1px; }
167
+ .commands button {
168
+ height: auto; text-align: left; border: none; border-radius: 3px; background: transparent;
169
+ padding: 2px 6px; color: var(--link); justify-self: stretch;
170
+ }
171
+ .commands button:hover { background: #eef2ff; }
172
+ .commands button.disclose { color: var(--muted); justify-self: start; }
173
+ .commands button.run-script { font-weight: 600; }
174
+
175
+ </style>
176
+ </head>
177
+ <body>
178
+ <header class="page-header">
179
+ <div class="page-header-inner">
180
+ <a class="page-home page-icon-link" href="collections.html" target="_blank"
181
+ rel="noopener" tabindex="-1" aria-hidden="true">
182
+ <img class="page-icon" src="icons/icon-48.png" alt="" />
183
+ </a>
184
+ <h1><a class="page-home brand" href="collections.html" target="_blank" rel="noopener"
185
+ title="Open the collections page">SourceMonkey</a><span class="brand"> |</span> Active scripts</h1>
186
+ <div class="page-header-actions">
187
+ <button id="open-collections" type="button" title="Open the collections page">Open</button>
188
+ <button id="page-menu" class="more-menu" type="button" aria-label="Page actions"
189
+ aria-haspopup="menu" aria-expanded="false">⋯</button>
190
+ </div>
191
+ </div>
192
+ </header>
193
+ <div id="banners"></div>
194
+ <div id="scripts" class="scripts"></div>
195
+ <script type="module" src="extension/popup.js"></script>
196
+ </body>
197
+ </html>