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,46 @@
1
+ # Writing specs with the harness fixture
2
+
3
+ What you did by hand with sm-dev, captured as a Playwright spec.
4
+
5
+ ```js
6
+ import { test, expect } from 'sourcemonkey/harness';
7
+
8
+ test('adds the button', async ({ page, loadUserscript, gm, reports }) => {
9
+ await loadUserscript('sites/x/y.user.js', { values: { units: 'metric' } });
10
+ await page.goto('https://x.com/items/42');
11
+ await reports.waitForStart(); // on a timeout (10s), says why it was skipped
12
+ await page.click('#add-button');
13
+ await expect(page.locator('.added')).toBeVisible();
14
+ expect(await gm.get('lastItem')).toBe('42');
15
+ expect(reports.errors()).toEqual([]);
16
+ });
17
+ ```
18
+
19
+ - Run it with `pnpm exec playwright test sites/x/y.spec.mjs`, using the
20
+ repo's own `playwright.config`. The script runs in the real
21
+ SourceMonkey: by default a hidden browser per worker with the
22
+ package's build loaded. A repo's fixture file may connect to its own
23
+ browser instead, which needs SourceMonkey loaded.
24
+ - Call `loadUserscript` before the `page.goto` that should see it.
25
+ - What you did by hand maps over: `menu` → `gm.fireMenu(label)`
26
+ (`menu 'Run this script'` → `gm.runScript()`),
27
+ `values` / `get` / `set` → `gm.list()` / `gm.get()` / `gm.set()`,
28
+ `--from-saved` → `serveHtml`, `match` →
29
+ `loadUserscript(path, { url })` (throws on a miss).
30
+ - Specs are ES modules (`.mjs`, or `"type": "module"`).
31
+ - A `GM_xmlhttpRequest` really goes out unless the spec answers it:
32
+ `await gm.interceptRequests(fn)`, or `await gm.failHosts('api.x.com')`
33
+ for a 503 to exercise a fallback. Say at the top of a spec that depends on
34
+ a live service.
35
+ - Check the script's side effects (`gm.openedTabs()`, `downloads()`,
36
+ `requests()`, `notifications()`) with `expect.poll`: they arrive a
37
+ moment after the call.
38
+ - A request to a host the script's `@connect` lines don't cover waits on
39
+ SourceMonkey's prompt: answer it with
40
+ `gm.answerConnectPrompt(gm.connectPrompts()[0].promptId, 'allow')`.
41
+ - `page.route` can serve made-up URLs (`https://x.test/big.png`) for
42
+ tests with no site behind them. `loadUserscript(path, { url })` alone
43
+ tests matching with no page load at all.
44
+ - Fixture reference:
45
+ [harness-guide.md](https://github.com/jshute96/SourceMonkey/blob/main/docs/harness-guide.md#writing-specs-the-playwright-fixture)
46
+ has the rest: `serveHtml` options, `copy`, `saveHtml`.
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: SourceMonkey-friction
3
+ description: Record friction from userscript development with SourceMonkey tools (sm-dev, the Playwright harness, the SourceMonkey-dev skill, the script manager) in a shared friction log. Use when finishing a task that ran into problems with those tools (at commit time, or when abandoning the work), without being asked, or when the person asks to log friction.
4
+ ---
5
+
6
+ # SourceMonkey friction log
7
+
8
+ The friction log collects problems hit while developing userscripts
9
+ with SourceMonkey (SM) tools: `sm-dev`, the Playwright harness, the
10
+ `SourceMonkey-dev` skill, and the script manager (the SourceMonkey
11
+ extension itself). It's input for improving those tools.
12
+
13
+ ## Where the log lives
14
+
15
+ `SourceMonkey-friction.md`, in the directory *above* the repo you're
16
+ working in (`../SourceMonkey-friction.md`). That keeps it out of any
17
+ one repo, so sessions in several repos share one log.
18
+
19
+ - If the person or the repo's instructions name another path, use that.
20
+ - If the file doesn't exist, create it from
21
+ [references/template.md](references/template.md), which has the
22
+ title, the tags, and the entry format.
23
+
24
+ ## When to add an entry
25
+
26
+ Write one entry per task, when the task is finished and it ran into
27
+ friction with the tools, without being asked. Finished means:
28
+
29
+ - You're committing the work, or
30
+ - The work is being abandoned (it failed, or the person dropped it).
31
+
32
+ Don't log each problem as it comes up; collect them and write the entry
33
+ at the end, so one task doesn't produce many separate notes.
34
+
35
+ - Put a `---` line before each new entry.
36
+ - If more work on the same task follows on the same day, add to that
37
+ task's entry instead of starting a new one. It's the same task when
38
+ the entry has today's date and the same topic in its heading, and
39
+ this repo on its `Repo:` line.
40
+ - Otherwise, don't rewrite earlier entries. If you learn more about an
41
+ issue logged earlier (like what the real problem was, or that it's
42
+ now fixed), add a dated note to it instead, as in
43
+ [Notes on earlier items](#notes-on-earlier-items).
44
+ - Other sessions may write to the same file. Re-read it just before
45
+ adding to it, and add rather than rewriting the whole file.
46
+
47
+ ## What an entry has
48
+
49
+ Follow the template in the log file (or
50
+ [references/template.md](references/template.md)):
51
+
52
+ - A `##` heading with the date and a short topic, then the repo and the
53
+ scripts worked on.
54
+ - What we were trying to do.
55
+ - The friction: things that failed or misled, confusing output, and
56
+ anything better tools could make easier or faster. Add a concrete
57
+ idea for fixing each one when there is one.
58
+ - Start each item with one or more tags:
59
+ - `[tools]`: the dev tools: sm-dev, the Playwright harness, and the
60
+ skills.
61
+ - `[SM]`: the SourceMonkey script manager itself (the extension):
62
+ injection, `GM_*` APIs, header handling.
63
+ - `[general]`: general issues making scripts work, which could
64
+ come up on many sites.
65
+ - `[site-specific]`: this site or this script.
66
+ - `[unknown]`: not sure which.
67
+ - `[bug]`: added to one of the above when it looks clearly broken,
68
+ rather than missing or awkward.
69
+ - Missing tools that would have made this faster: features that don't
70
+ exist, rather than ones that misbehaved. Tag these too.
71
+ - What worked well, including whether the skill or `--help` already had
72
+ the information needed, or it took research.
73
+ - If you found later that the tools can do what you needed, but it
74
+ wasn't obvious or easy to find, note that.
75
+ - The sm-dev log file paths (from `start` or `status`) if they show
76
+ what happened.
77
+
78
+ Be specific: exact commands, error text, and what you tried. An entry
79
+ should make sense to someone fixing the tools months later, without
80
+ the session transcript.
81
+
82
+ ## Notes on earlier items
83
+
84
+ When an item logged earlier is looked into or fixed, add a sub-bullet
85
+ under that item, starting with a dated label:
86
+
87
+ - `Investigated (YYYY-MM-DD): <what was found>`: looked into, not fixed.
88
+ - `Fixed (YYYY-MM-DD, <short commit id>): <what changed>`: a change
89
+ should fix it.
90
+ - Leave out the commit id when there isn't one clear commit.
91
+ - Leave out the description when there's nothing to say beyond that
92
+ it was fixed: `Fixed (YYYY-MM-DD, abc1234).`
93
+
94
+ When an item is fixed, strike through its text and its other
95
+ sub-bullets with `~~...~~`, leaving the `Fixed` bullet plain, so open
96
+ items stand out.
97
+
98
+ - Strikethrough doesn't cross paragraph or list-item breaks, so wrap
99
+ each paragraph and bullet separately.
100
+
101
+ A finding about the entry as a whole, rather than one item, goes at
102
+ the entry's end: a `### Update YYYY-MM-DD` heading, then what was
103
+ learned.
@@ -0,0 +1,59 @@
1
+ # SourceMonkey development friction log
2
+
3
+ This records problems hit while developing userscripts with SourceMonkey (SM)
4
+ tools (`sm-dev`, the Playwright harness, the `SourceMonkey-dev` skill, the
5
+ script manager (the SourceMonkey extension itself), used as input for
6
+ improving them. Add new entries at the end, with a `---` line before each.
7
+
8
+ Use the `SourceMonkey-friction` skill (shipped with SourceMonkey, in
9
+ `skills/SourceMonkey-friction/`) to update this log. It says when to
10
+ log, and what each entry should cover.
11
+
12
+ Tag each friction item with one or more of:
13
+
14
+ - `[tools]`: the dev tools: sm-dev, the Playwright harness, and the skills.
15
+ - `[SM]`: the SourceMonkey script manager itself (the extension): injection, `GM_*` APIs, header handling.
16
+ - `[general]`: general issues making scripts work, which could come up on many sites.
17
+ - `[site-specific]`: this site or this script.
18
+ - `[unknown]`: not sure which.
19
+ - `[bug]`: added to one of the above when it looks clearly broken, rather than missing or awkward.
20
+
21
+ Template:
22
+
23
+ ```markdown
24
+ ## YYYY-MM-DD: <short topic>
25
+
26
+ **Repo:** `<repo>`
27
+ **Scripts:** `<paths of scripts and libraries worked on>`
28
+
29
+ **Task:** <what we were trying to do>
30
+
31
+ ### Friction
32
+ 1. [tag] **<short summary>.** <what happened, and what it cost>.
33
+ Ideas: <a concrete fix, if there is one>
34
+
35
+ ### Missing tools that would have made this faster
36
+ - [tag] <tool or feature>
37
+
38
+ ### What worked well
39
+ - <what helped, and whether the skill or --help already had the answer>
40
+
41
+ **Logs:**
42
+ - <what the run was>: `<sm-dev log path>`
43
+ ```
44
+
45
+ Later notes on one item go under it as dated sub-bullets. A fixed item's
46
+ text, and its sub-bullets other than the `Fixed` one, get struck through:
47
+
48
+ ```markdown
49
+ 1. ~~[tag] **<short summary>.** <what happened>.~~
50
+ - ~~Investigated (YYYY-MM-DD): <what was found>~~
51
+ - Fixed (YYYY-MM-DD, <short commit id>): <what changed>
52
+ ```
53
+
54
+ A later finding about the entry as a whole goes at its end, under its own heading:
55
+
56
+ ```markdown
57
+ ### Update YYYY-MM-DD
58
+ - <what was learned>
59
+ ```