playwriter 0.0.63 → 0.0.89

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 (223) hide show
  1. package/dist/a11y-client.js +18 -8
  2. package/dist/aria-snapshot.d.ts +41 -3
  3. package/dist/aria-snapshot.d.ts.map +1 -1
  4. package/dist/aria-snapshot.js +134 -55
  5. package/dist/aria-snapshot.js.map +1 -1
  6. package/dist/aria-snapshot.test.js +5 -2
  7. package/dist/aria-snapshot.test.js.map +1 -1
  8. package/dist/aria-snapshot.unit.test.js +83 -41
  9. package/dist/aria-snapshot.unit.test.js.map +1 -1
  10. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts +5 -0
  11. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts.map +1 -0
  12. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js +5 -0
  13. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js.map +1 -0
  14. package/dist/bippy.js +1 -1
  15. package/dist/cdp-log.d.ts +1 -1
  16. package/dist/cdp-log.d.ts.map +1 -1
  17. package/dist/cdp-log.js +1 -1
  18. package/dist/cdp-log.js.map +1 -1
  19. package/dist/cdp-relay.d.ts.map +1 -1
  20. package/dist/cdp-relay.js +492 -298
  21. package/dist/cdp-relay.js.map +1 -1
  22. package/dist/cdp-session.d.ts.map +1 -1
  23. package/dist/cdp-session.js.map +1 -1
  24. package/dist/cdp-types.d.ts.map +1 -1
  25. package/dist/cdp-types.js +7 -7
  26. package/dist/cdp-types.js.map +1 -1
  27. package/dist/clean-html.d.ts.map +1 -1
  28. package/dist/clean-html.js +4 -5
  29. package/dist/clean-html.js.map +1 -1
  30. package/dist/cli.js +45 -27
  31. package/dist/cli.js.map +1 -1
  32. package/dist/create-logger.d.ts.map +1 -1
  33. package/dist/create-logger.js +3 -1
  34. package/dist/create-logger.js.map +1 -1
  35. package/dist/debugger-examples-types.d.ts.map +1 -1
  36. package/dist/debugger.d.ts.map +1 -1
  37. package/dist/debugger.js +1 -3
  38. package/dist/debugger.js.map +1 -1
  39. package/dist/diff-utils.d.ts.map +1 -1
  40. package/dist/diff-utils.js +1 -4
  41. package/dist/diff-utils.js.map +1 -1
  42. package/dist/editor-api.md +12 -2
  43. package/dist/editor-examples.d.ts +1 -1
  44. package/dist/editor-examples.d.ts.map +1 -1
  45. package/dist/editor-examples.js +1 -1
  46. package/dist/editor-examples.js.map +1 -1
  47. package/dist/editor.d.ts +1 -1
  48. package/dist/editor.d.ts.map +1 -1
  49. package/dist/editor.js +1 -1
  50. package/dist/editor.js.map +1 -1
  51. package/dist/executor.d.ts +26 -3
  52. package/dist/executor.d.ts.map +1 -1
  53. package/dist/executor.js +297 -64
  54. package/dist/executor.js.map +1 -1
  55. package/dist/executor.unit.test.js +38 -1
  56. package/dist/executor.unit.test.js.map +1 -1
  57. package/dist/extension-connection.test.js +139 -36
  58. package/dist/extension-connection.test.js.map +1 -1
  59. package/dist/ffmpeg.d.ts +148 -0
  60. package/dist/ffmpeg.d.ts.map +1 -0
  61. package/dist/ffmpeg.js +523 -0
  62. package/dist/ffmpeg.js.map +1 -0
  63. package/dist/ghost-browser.d.ts.map +1 -1
  64. package/dist/ghost-browser.js.map +1 -1
  65. package/dist/ghost-cursor-client.js +287 -0
  66. package/dist/ghost-cursor.d.ts +27 -0
  67. package/dist/ghost-cursor.d.ts.map +1 -0
  68. package/dist/ghost-cursor.js +63 -0
  69. package/dist/ghost-cursor.js.map +1 -0
  70. package/dist/htmlrewrite.d.ts.map +1 -1
  71. package/dist/htmlrewrite.js +17 -55
  72. package/dist/htmlrewrite.js.map +1 -1
  73. package/dist/htmlrewrite.test.js.map +1 -1
  74. package/dist/kill-port.d.ts.map +1 -1
  75. package/dist/kill-port.js +1 -3
  76. package/dist/kill-port.js.map +1 -1
  77. package/dist/locator-selector.test.d.ts +2 -0
  78. package/dist/locator-selector.test.d.ts.map +1 -0
  79. package/dist/locator-selector.test.js +96 -0
  80. package/dist/locator-selector.test.js.map +1 -0
  81. package/dist/mcp-client.js.map +1 -1
  82. package/dist/mcp.d.ts.map +1 -1
  83. package/dist/mcp.js +8 -3
  84. package/dist/mcp.js.map +1 -1
  85. package/dist/on-mouse-action.test.d.ts +2 -0
  86. package/dist/on-mouse-action.test.d.ts.map +1 -0
  87. package/dist/on-mouse-action.test.js +155 -0
  88. package/dist/on-mouse-action.test.js.map +1 -0
  89. package/dist/page-markdown.js +4 -4
  90. package/dist/page-markdown.js.map +1 -1
  91. package/dist/prompt.md +450 -377
  92. package/dist/protocol.d.ts +4 -0
  93. package/dist/protocol.d.ts.map +1 -1
  94. package/dist/readability.js +16 -2
  95. package/dist/recording-ghost-cursor.d.ts +41 -0
  96. package/dist/recording-ghost-cursor.d.ts.map +1 -0
  97. package/dist/recording-ghost-cursor.js +79 -0
  98. package/dist/recording-ghost-cursor.js.map +1 -0
  99. package/dist/recording-relay.d.ts.map +1 -1
  100. package/dist/recording-relay.js +8 -8
  101. package/dist/recording-relay.js.map +1 -1
  102. package/dist/relay-client.d.ts +17 -4
  103. package/dist/relay-client.d.ts.map +1 -1
  104. package/dist/relay-client.js +45 -11
  105. package/dist/relay-client.js.map +1 -1
  106. package/dist/relay-core.test.d.ts.map +1 -1
  107. package/dist/relay-core.test.js +515 -26
  108. package/dist/relay-core.test.js.map +1 -1
  109. package/dist/relay-navigation.test.d.ts.map +1 -1
  110. package/dist/relay-navigation.test.js +169 -31
  111. package/dist/relay-navigation.test.js.map +1 -1
  112. package/dist/relay-session.test.d.ts.map +1 -1
  113. package/dist/relay-session.test.js +113 -65
  114. package/dist/relay-session.test.js.map +1 -1
  115. package/dist/relay-state.d.ts +158 -0
  116. package/dist/relay-state.d.ts.map +1 -0
  117. package/dist/relay-state.js +306 -0
  118. package/dist/relay-state.js.map +1 -0
  119. package/dist/relay-state.test.d.ts +2 -0
  120. package/dist/relay-state.test.d.ts.map +1 -0
  121. package/dist/relay-state.test.js +472 -0
  122. package/dist/relay-state.test.js.map +1 -0
  123. package/dist/scoped-fs.d.ts.map +1 -1
  124. package/dist/scoped-fs.js.map +1 -1
  125. package/dist/screen-recording.d.ts +66 -4
  126. package/dist/screen-recording.d.ts.map +1 -1
  127. package/dist/screen-recording.js +150 -13
  128. package/dist/screen-recording.js.map +1 -1
  129. package/dist/screen-recording.test.d.ts +2 -0
  130. package/dist/screen-recording.test.d.ts.map +1 -0
  131. package/dist/screen-recording.test.js +102 -0
  132. package/dist/screen-recording.test.js.map +1 -0
  133. package/dist/selector-generator.js +1 -1
  134. package/dist/snapshot-tools.test.js +71 -28
  135. package/dist/snapshot-tools.test.js.map +1 -1
  136. package/dist/start-relay-server.d.ts +1 -1
  137. package/dist/start-relay-server.d.ts.map +1 -1
  138. package/dist/start-relay-server.js +1 -1
  139. package/dist/start-relay-server.js.map +1 -1
  140. package/dist/styles-api.md +8 -1
  141. package/dist/styles-examples.d.ts +1 -1
  142. package/dist/styles-examples.d.ts.map +1 -1
  143. package/dist/styles-examples.js +1 -1
  144. package/dist/styles-examples.js.map +1 -1
  145. package/dist/styles.d.ts.map +1 -1
  146. package/dist/styles.js +1 -3
  147. package/dist/styles.js.map +1 -1
  148. package/dist/test-declarations.d.ts.map +1 -1
  149. package/dist/test-utils.d.ts +1 -1
  150. package/dist/test-utils.d.ts.map +1 -1
  151. package/dist/test-utils.js +7 -5
  152. package/dist/test-utils.js.map +1 -1
  153. package/dist/utils.d.ts.map +1 -1
  154. package/dist/utils.js.map +1 -1
  155. package/dist/wait-for-page-load.d.ts.map +1 -1
  156. package/dist/wait-for-page-load.js +1 -1
  157. package/dist/wait-for-page-load.js.map +1 -1
  158. package/package.json +4 -3
  159. package/src/a11y-client.ts +5 -4
  160. package/src/aria-snapshot.test.ts +5 -2
  161. package/src/aria-snapshot.ts +306 -117
  162. package/src/aria-snapshot.unit.test.ts +199 -141
  163. package/src/aria-snapshots/github-interactive.txt +2 -0
  164. package/src/aria-snapshots/github-raw.txt +5 -1
  165. package/src/aria-snapshots/hackernews-interactive.txt +238 -241
  166. package/src/aria-snapshots/hackernews-raw.txt +265 -269
  167. package/src/assets/aria-labels-example.png +0 -0
  168. package/src/assets/aria-labels-github.png +0 -0
  169. package/src/assets/aria-labels-hacker-news.png +0 -0
  170. package/src/assets/aria-labels-old-reddit.png +0 -0
  171. package/src/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.ts +5 -0
  172. package/src/assets/cursors/screen-studio/pointer-macos-tahoe.svg +18 -0
  173. package/src/cdp-log.ts +4 -1
  174. package/src/cdp-relay.ts +1059 -737
  175. package/src/cdp-session.ts +12 -3
  176. package/src/cdp-types.ts +51 -51
  177. package/src/clean-html.ts +4 -5
  178. package/src/cli.ts +82 -55
  179. package/src/create-logger.ts +5 -3
  180. package/src/debugger-examples-types.ts +4 -1
  181. package/src/debugger.ts +1 -5
  182. package/src/diff-utils.ts +2 -5
  183. package/src/editor-examples.ts +11 -1
  184. package/src/editor.ts +10 -2
  185. package/src/executor.ts +374 -73
  186. package/src/executor.unit.test.ts +48 -1
  187. package/src/extension-connection.test.ts +612 -488
  188. package/src/ffmpeg.ts +769 -0
  189. package/src/ghost-browser.ts +4 -6
  190. package/src/ghost-cursor-client.ts +369 -0
  191. package/src/ghost-cursor.ts +110 -0
  192. package/src/htmlrewrite.test.ts +6 -2
  193. package/src/htmlrewrite.ts +348 -386
  194. package/src/kill-port.ts +1 -3
  195. package/src/locator-selector.test.ts +115 -0
  196. package/src/mcp-client.ts +1 -1
  197. package/src/mcp.ts +21 -15
  198. package/src/on-mouse-action.test.ts +196 -0
  199. package/src/page-markdown.ts +7 -7
  200. package/src/protocol.ts +73 -57
  201. package/src/recording-ghost-cursor.ts +113 -0
  202. package/src/recording-relay.ts +20 -12
  203. package/src/relay-client.ts +85 -18
  204. package/src/relay-core.test.ts +1117 -578
  205. package/src/relay-navigation.test.ts +648 -483
  206. package/src/relay-session.test.ts +984 -929
  207. package/src/relay-state.test.ts +570 -0
  208. package/src/relay-state.ts +497 -0
  209. package/src/resource.md +21 -49
  210. package/src/scoped-fs.ts +9 -3
  211. package/src/screen-recording.test.ts +111 -0
  212. package/src/screen-recording.ts +256 -31
  213. package/src/skill.md +476 -396
  214. package/src/snapshot-tools.test.ts +580 -528
  215. package/src/snapshots/shadcn-ui-accessibility-full.md +8 -8
  216. package/src/snapshots/shadcn-ui-accessibility-interactive.md +8 -8
  217. package/src/start-relay-server.ts +14 -11
  218. package/src/styles-examples.ts +8 -1
  219. package/src/styles.ts +20 -21
  220. package/src/test-declarations.ts +6 -6
  221. package/src/test-utils.ts +104 -91
  222. package/src/utils.ts +2 -1
  223. package/src/wait-for-page-load.ts +6 -1
@@ -22,393 +22,389 @@
22
22
  - row:
23
23
  - cell "1."
24
24
  - cell:
25
- - link [id="up_47045612"]
26
- - cell "GrapheneOS Break Free from Google and Apple (blog.tomaszdunia.pl)":
27
- - role=link[name="GrapheneOS Break Free from Google and Apple"]
28
- - role=link[name="blog.tomaszdunia.pl"]
29
- - row:
30
- - cell "491 points by to3k 4 hours ago | hide | 314 comments":
31
- - role=link[name="to3k"]
32
- - role=link[name="4 hours ago"] >> nth=0
25
+ - link [id="up_47351239"]
26
+ - cell "Suburban school district uses license plate readers to verify student residency (nbcchicago.com)":
27
+ - role=link[name="Suburban school district uses license plate readers to verify student residency"]
28
+ - role=link[name="nbcchicago.com"]
29
+ - row:
30
+ - cell "37 points by josephcsible 16 minutes ago | hide | 18 comments":
31
+ - role=link[name="josephcsible"]
32
+ - role=link[name="16 minutes ago"]
33
33
  - role=link[name="hide"] >> nth=0
34
- - role=link[name="314 comments"]
34
+ - role=link[name="18 comments"] >> nth=0
35
35
  - row:
36
36
  - cell "2."
37
37
  - cell:
38
- - link [id="up_47022270"]
39
- - cell "Four Column ASCII (2017) (garbagecollected.org)":
40
- - role=link[name="Four Column ASCII (2017)"]
41
- - role=link[name="garbagecollected.org"]
42
- - row:
43
- - cell "247 points by tempodox 10 hours ago | hide | 50 comments":
44
- - role=link[name="tempodox"]
45
- - role=link[name="10 hours ago"]
38
+ - link [id="up_47349798"]
39
+ - cell "US banks' exposure to private credit hits $300B (2025) (alternativecreditinvestor.com)":
40
+ - role=link[name="US banks' exposure to private credit hits $300B (2025)"]
41
+ - role=link[name="alternativecreditinvestor.com"]
42
+ - row:
43
+ - cell "85 points by JumpCrisscross 2 hours ago | hide | 45 comments":
44
+ - role=link[name="JumpCrisscross"]
45
+ - role=link[name="2 hours ago"] >> nth=0
46
46
  - role=link[name="hide"] >> nth=1
47
- - role=link[name="50 comments"] >> nth=0
47
+ - role=link[name="45 comments"]
48
48
  - row:
49
49
  - cell "3."
50
50
  - cell:
51
- - link [id="up_47038546"]
52
- - cell "14-year-old Miles Wu folded origami pattern that holds 10k times its own weight (smithsonianmag.com)":
53
- - role=link[name="14-year-old Miles Wu folded origami pattern that holds 10k times its own weight"]
54
- - role=link[name="smithsonianmag.com"]
55
- - row:
56
- - cell "787 points by bookofjoe 20 hours ago | hide | 169 comments":
57
- - role=link[name="bookofjoe"]
58
- - role=link[name="20 hours ago"] >> nth=0
51
+ - link [id="up_47350416"]
52
+ - cell "Show HN: We analyzed 1,573 Claude Code sessions to see how AI agents work (github.com/obsessiondb)":
53
+ - role=link[name="Show HN: We analyzed 1,573 Claude Code sessions to see how AI agents work"]
54
+ - role=link[name="github.com/obsessiondb"]
55
+ - row:
56
+ - cell "52 points by keks0r 1 hour ago | hide | 28 comments":
57
+ - role=link[name="keks0r"]
58
+ - role=link[name="1 hour ago"] >> nth=0
59
59
  - role=link[name="hide"] >> nth=2
60
- - role=link[name="169 comments"]
60
+ - role=link[name="28 comments"]
61
61
  - row:
62
62
  - cell "4."
63
63
  - cell:
64
- - link [id="up_47006080"]
65
- - cell "Rethinking High-School Science Fairs (asteriskmag.com)":
66
- - role=link[name="Rethinking High-School Science Fairs"]
67
- - role=link[name="asteriskmag.com"]
68
- - row:
69
- - cell "37 points by surprisetalk 4 hours ago | hide | 29 comments":
70
- - role=link[name="surprisetalk"]
71
- - role=link[name="4 hours ago"] >> nth=1
64
+ - link [id="up_47350424"]
65
+ - cell "Malus Clean Room as a Service (malus.sh)":
66
+ - role=link[name="Malus Clean Room as a Service"]
67
+ - role=link[name="malus.sh"]
68
+ - row:
69
+ - cell "37 points by microflash 1 hour ago | hide | 13 comments":
70
+ - role=link[name="microflash"]
71
+ - role=link[name="1 hour ago"] >> nth=1
72
72
  - role=link[name="hide"] >> nth=3
73
- - role=link[name="29 comments"]
73
+ - role=link[name="13 comments"]
74
74
  - row:
75
75
  - cell "5."
76
76
  - cell:
77
- - link [id="up_47004629"]
78
- - cell "How teaching molecules to think is revealing what a 'mind' is (newscientist.com)":
79
- - role=link[name="How teaching molecules to think is revealing what a 'mind' is"]
80
- - role=link[name="newscientist.com"]
81
- - row:
82
- - cell "43 points by pella 5 hours ago | hide | 27 comments":
83
- - role=link[name="pella"]
84
- - role=link[name="5 hours ago"] >> nth=0
77
+ - link [id="up_47350516"]
78
+ - cell "Show HN: Axe A 12MB binary that replaces your AI framework (github.com/jrswab)":
79
+ - role=link[name="Show HN: Axe A 12MB binary that replaces your AI framework"]
80
+ - role=link[name="github.com/jrswab"]
81
+ - row:
82
+ - cell "26 points by jrswab 1 hour ago | hide | 16 comments":
83
+ - role=link[name="jrswab"]
84
+ - role=link[name="1 hour ago"] >> nth=2
85
85
  - role=link[name="hide"] >> nth=4
86
- - role=link[name="27 comments"]
86
+ - role=link[name="16 comments"]
87
87
  - row:
88
88
  - cell "6."
89
89
  - cell:
90
- - link [id="up_47012895"]
91
- - cell "Rendering the Visible Spectrum (brandonli.net)":
92
- - role=link[name="Rendering the Visible Spectrum"]
93
- - role=link[name="brandonli.net"]
90
+ - link [id="up_47348304"]
91
+ - cell "Dolphin Progress Release 2603 (dolphin-emu.org)":
92
+ - role=link[name="Dolphin Progress Release 2603"]
93
+ - role=link[name="dolphin-emu.org"]
94
94
  - row:
95
- - cell "92 points by signa11 9 hours ago | hide | 13 comments":
96
- - role=link[name="signa11"]
97
- - role=link[name="9 hours ago"] >> nth=0
95
+ - cell "166 points by BitPirate 5 hours ago | hide | 18 comments":
96
+ - role=link[name="BitPirate"]
97
+ - role=link[name="5 hours ago"] >> nth=0
98
98
  - role=link[name="hide"] >> nth=5
99
- - role=link[name="13 comments"]
99
+ - role=link[name="18 comments"] >> nth=1
100
100
  - row:
101
101
  - cell "7."
102
- - cell:
103
- - link [id="up_47047443"]
104
- - cell "Undo in Vi and Its Successors (utcc.utoronto.ca)":
105
- - role=link[name="Undo in Vi and Its Successors"]
106
- - role=link[name="utcc.utoronto.ca"]
107
- - row:
108
- - cell "16 points by todsacerdoti 1 hour ago | hide | 15 comments":
109
- - role=link[name="todsacerdoti"] >> nth=0
110
- - role=link[name="1 hour ago"]
102
+ - cell "Hive (YC S14) is hiring scrappy product managers and product/data engineers (ashbyhq.com)":
103
+ - role=link[name="Hive (YC S14) is hiring scrappy product managers and product/data engineers"]
104
+ - role=link[name="ashbyhq.com"]
105
+ - row:
106
+ - cell "25 minutes ago | hide":
107
+ - role=link[name="25 minutes ago"]
111
108
  - role=link[name="hide"] >> nth=6
112
- - role=link[name="15 comments"] >> nth=0
113
109
  - row:
114
110
  - cell "8."
115
111
  - cell:
116
- - link [id="up_47040524"]
117
- - cell "Rise of the Triforce (dolphin-emu.org)":
118
- - role=link[name="Rise of the Triforce"]
119
- - role=link[name="dolphin-emu.org"]
120
- - row:
121
- - cell "341 points by max-m 17 hours ago | hide | 50 comments":
122
- - role=link[name="max-m"]
123
- - role=link[name="17 hours ago"] >> nth=0
112
+ - link [id="up_47349277"]
113
+ - cell "Big Data on the Cheapest MacBook (duckdb.org)":
114
+ - role=link[name="Big Data on the Cheapest MacBook"]
115
+ - role=link[name="duckdb.org"]
116
+ - row:
117
+ - cell "189 points by bcye 3 hours ago | hide | 157 comments":
118
+ - role=link[name="bcye"]
119
+ - role=link[name="3 hours ago"] >> nth=0
124
120
  - role=link[name="hide"] >> nth=7
125
- - role=link[name="50 comments"] >> nth=1
121
+ - role=link[name="157 comments"]
126
122
  - row:
127
123
  - cell "9."
128
124
  - cell:
129
- - link [id="up_47033954"]
130
- - cell "Show HN: Glitchy camera – a circuit-bent camera simulator in the browser (glitchycam.com)":
131
- - role=link[name="Show HN: Glitchy camera – a circuit-bent camera simulator in the browser"]
132
- - role=link[name="glitchycam.com"]
125
+ - link [id="up_47348192"]
126
+ - cell "Avoiding Trigonometry (2013) (iquilezles.org)":
127
+ - role=link[name="Avoiding Trigonometry (2013)"]
128
+ - role=link[name="iquilezles.org"]
133
129
  - row:
134
- - cell "99 points by elayabharath 8 hours ago | hide | 11 comments":
135
- - role=link[name="elayabharath"]
136
- - role=link[name="8 hours ago"] >> nth=0
130
+ - cell "129 points by WithinReason 5 hours ago | hide | 26 comments":
131
+ - role=link[name="WithinReason"]
132
+ - role=link[name="5 hours ago"] >> nth=1
137
133
  - role=link[name="hide"] >> nth=8
138
- - role=link[name="11 comments"]
134
+ - role=link[name="26 comments"]
139
135
  - row:
140
136
  - cell "10."
141
137
  - cell:
142
- - link [id="up_47047526"]
143
- - cell "Why I'm Worried About Job Loss and Thoughts on Comparative Advantage (lesswrong.com)":
144
- - role=link[name="Why I'm Worried About Job Loss and Thoughts on Comparative Advantage"]
145
- - role=link[name="lesswrong.com"]
146
- - row:
147
- - cell "19 points by cubefox 51 minutes ago | hide | 15 comments":
148
- - role=link[name="cubefox"]
149
- - role=link[name="51 minutes ago"]
138
+ - link [id="up_47311634"]
139
+ - cell "The purpose of Continuous Integration is to fail (nix-ci.com)":
140
+ - role=link[name="The purpose of Continuous Integration is to fail"]
141
+ - role=link[name="nix-ci.com"]
142
+ - row:
143
+ - cell "16 points by Norfair 2 hours ago | hide | 20 comments":
144
+ - role=link[name="Norfair"]
145
+ - role=link[name="2 hours ago"] >> nth=1
150
146
  - role=link[name="hide"] >> nth=9
151
- - role=link[name="15 comments"] >> nth=1
147
+ - role=link[name="20 comments"]
152
148
  - row:
153
149
  - cell "11."
154
150
  - cell:
155
- - link [id="up_47042895"]
156
- - cell "Poor Deming never stood a chance (surfingcomplexity.blog)":
157
- - role=link[name="Poor Deming never stood a chance"]
158
- - role=link[name="surfingcomplexity.blog"]
159
- - row:
160
- - cell "143 points by todsacerdoti 12 hours ago | hide | 71 comments":
161
- - role=link[name="todsacerdoti"] >> nth=1
162
- - role=link[name="12 hours ago"]
151
+ - link [id="up_47351371"]
152
+ - cell "ATMs didn't kill bank Teller jobs, but the iPhone did (davidoks.blog)":
153
+ - role=link[name="ATMs didn't kill bank Teller jobs, but the iPhone did"]
154
+ - role=link[name="davidoks.blog"]
155
+ - row:
156
+ - cell "3 points by colinprince 8 minutes ago | hide | discuss":
157
+ - role=link[name="colinprince"]
158
+ - role=link[name="8 minutes ago"]
163
159
  - role=link[name="hide"] >> nth=10
164
- - role=link[name="71 comments"]
160
+ - role=link[name="discuss"]
165
161
  - row:
166
162
  - cell "12."
167
163
  - cell:
168
- - link [id="up_47014002"]
169
- - cell "A deep dive into Apple's .car file format (dbg.re)":
170
- - role=link[name="A deep dive into Apple's .car file format"]
171
- - role=link[name="dbg.re"]
172
- - row:
173
- - cell "125 points by MrFinch 11 hours ago | hide | 46 comments":
174
- - role=link[name="MrFinch"]
175
- - role=link[name="11 hours ago"]
164
+ - link [id="up_47347945"]
165
+ - cell "3D-Knitting: The Ultimate Guide (oliver-charles.com)":
166
+ - role=link[name="3D-Knitting: The Ultimate Guide"]
167
+ - role=link[name="oliver-charles.com"]
168
+ - row:
169
+ - cell "157 points by ChadNauseam 6 hours ago | hide | 57 comments":
170
+ - role=link[name="ChadNauseam"]
171
+ - role=link[name="6 hours ago"] >> nth=0
176
172
  - role=link[name="hide"] >> nth=11
177
- - role=link[name="46 comments"]
173
+ - role=link[name="57 comments"]
178
174
  - row:
179
175
  - cell "13."
180
176
  - cell:
181
- - link [id="up_47044179"]
182
- - cell "Xbox UI Portfolio Site (gabrielcabrera.co)":
183
- - role=link[name="Xbox UI Portfolio Site"]
184
- - role=link[name="gabrielcabrera.co"]
185
- - row:
186
- - cell "77 points by valgaze 8 hours ago | hide | 25 comments":
187
- - role=link[name="valgaze"]
188
- - role=link[name="8 hours ago"] >> nth=1
177
+ - link [id="up_47350108"]
178
+ - cell "Show HN: Calyx Ghostty-Based macOS Terminal with Liquid Glass UI (github.com/yuuichieguchi)":
179
+ - role=link[name="Show HN: Calyx – Ghostty-Based macOS Terminal with Liquid Glass UI"]
180
+ - role=link[name="github.com/yuuichieguchi"]
181
+ - row:
182
+ - cell "13 points by yuu1ch13 1 hour ago | hide | 19 comments":
183
+ - role=link[name="yuu1ch13"]
184
+ - role=link[name="1 hour ago"] >> nth=3
189
185
  - role=link[name="hide"] >> nth=12
190
- - role=link[name="25 comments"]
186
+ - role=link[name="19 comments"] >> nth=0
191
187
  - row:
192
188
  - cell "14."
193
189
  - cell:
194
- - link [id="up_47035560"]
195
- - cell "What your Bluetooth devices reveal (dmcc.io)":
196
- - role=link[name="What your Bluetooth devices reveal"]
197
- - role=link[name="dmcc.io"]
198
- - row:
199
- - cell "474 points by ssgodderidge 1 day ago | hide | 176 comments":
200
- - role=link[name="ssgodderidge"]
201
- - role=link[name="1 day ago"] >> nth=0
190
+ - link [id="up_47344548"]
191
+ - cell "Show HN: s@: decentralized social networking over static sites (satproto.org)":
192
+ - role=link[name="Show HN: s@: decentralized social networking over static sites"]
193
+ - role=link[name="satproto.org"]
194
+ - row:
195
+ - cell "362 points by remywang 14 hours ago | hide | 161 comments":
196
+ - role=link[name="remywang"]
197
+ - role=link[name="14 hours ago"] >> nth=0
202
198
  - role=link[name="hide"] >> nth=13
203
- - role=link[name="176 comments"]
199
+ - role=link[name="161 comments"] >> nth=0
204
200
  - row:
205
201
  - cell "15."
206
202
  - cell:
207
- - link [id="up_47002231"]
208
- - cell "Visual introduction to PyTorch (0byte.io)":
209
- - role=link[name="Visual introduction to PyTorch"]
210
- - role=link[name="0byte.io"]
211
- - row:
212
- - cell "324 points by 0bytematt 19 hours ago | hide | 22 comments":
213
- - role=link[name="0bytematt"]
214
- - role=link[name="19 hours ago"] >> nth=0
203
+ - link [id="up_47350931"]
204
+ - cell "Kotlin creator's new language: a formal way to talk to LLMs instead of English (codespeak.dev)":
205
+ - role=link[name="Kotlin creator's new language: a formal way to talk to LLMs instead of English"]
206
+ - role=link[name="codespeak.dev"]
207
+ - row:
208
+ - cell "7 points by souvlakee 35 minutes ago | hide | 6 comments":
209
+ - role=link[name="souvlakee"]
210
+ - role=link[name="35 minutes ago"]
215
211
  - role=link[name="hide"] >> nth=14
216
- - role=link[name="22 comments"]
212
+ - role=link[name="6 comments"] >> nth=0
217
213
  - row:
218
214
  - cell "16."
219
215
  - cell:
220
- - link [id="up_47015342"]
221
- - cell "A Programmer's Loss of Identity (ratfactor.com)":
222
- - role=link[name="A Programmer's Loss of Identity"]
223
- - role=link[name="ratfactor.com"]
224
- - row:
225
- - cell "60 points by zdw 8 hours ago | hide | 21 comments":
226
- - role=link[name="zdw"]
227
- - role=link[name="8 hours ago"] >> nth=2
216
+ - link [id="up_47347362"]
217
+ - cell "SBCL: A Sanely-Bootstrappable Common Lisp (2008) [pdf] (gold.ac.uk)":
218
+ - role=link[name="SBCL: A Sanely-Bootstrappable Common Lisp (2008) [pdf]"]
219
+ - role=link[name="gold.ac.uk"]
220
+ - row:
221
+ - cell "89 points by pabs3 8 hours ago | hide | 47 comments":
222
+ - role=link[name="pabs3"]
223
+ - role=link[name="8 hours ago"] >> nth=0
228
224
  - role=link[name="hide"] >> nth=15
229
- - role=link[name="21 comments"]
225
+ - role=link[name="47 comments"]
230
226
  - row:
231
227
  - cell "17."
232
228
  - cell:
233
- - link [id="up_47040375"]
234
- - cell "Show HN: Free alternative to Wispr Flow, Superwhisper, and Monologue (github.com/zachlatta)":
235
- - role=link[name="Show HN: Free alternative to Wispr Flow, Superwhisper, and Monologue"]
236
- - role=link[name="github.com/zachlatta"]
237
- - row:
238
- - cell "225 points by zachlatta 17 hours ago | hide | 104 comments":
239
- - role=link[name="zachlatta"]
240
- - role=link[name="17 hours ago"] >> nth=1
229
+ - link [id="up_47296645"]
230
+ - cell "Printf-Tac-Toe (github.com/carlini)":
231
+ - role=link[name="Printf-Tac-Toe"]
232
+ - role=link[name="github.com/carlini"]
233
+ - row:
234
+ - cell "75 points by carlos-menezes 7 hours ago | hide | 7 comments":
235
+ - role=link[name="carlos-menezes"]
236
+ - role=link[name="7 hours ago"]
241
237
  - role=link[name="hide"] >> nth=16
242
- - role=link[name="104 comments"]
238
+ - role=link[name="7 comments"] >> nth=0
243
239
  - row:
244
240
  - cell "18."
245
241
  - cell:
246
- - link [id="up_47038318"]
247
- - cell "\"Token anxiety\", a slot machine by any other name (jkap.io)":
248
- - role=link[name="\"Token anxiety\", a slot machine by any other name"]
249
- - role=link[name="jkap.io"]
250
- - row:
251
- - cell "191 points by presbyterian 20 hours ago | hide | 165 comments":
252
- - role=link[name="presbyterian"]
253
- - role=link[name="20 hours ago"] >> nth=1
242
+ - link [id="up_47349780"]
243
+ - cell "Emacs internals: Tagged pointers vs. C++ std:variant and LLVM (Part 3) (thecloudlet.github.io)":
244
+ - role=link[name="Emacs internals: Tagged pointers vs. C++ std:variant and LLVM (Part 3)"]
245
+ - role=link[name="thecloudlet.github.io"]
246
+ - row:
247
+ - cell "12 points by thecloudlet 2 hours ago | hide | 4 comments":
248
+ - role=link[name="thecloudlet"]
249
+ - role=link[name="2 hours ago"] >> nth=2
254
250
  - role=link[name="hide"] >> nth=17
255
- - role=link[name="165 comments"]
251
+ - role=link[name="4 comments"]
256
252
  - row:
257
253
  - cell "19."
258
254
  - cell:
259
- - link [id="up_47011548"]
260
- - cell "Ghidra by NSA (github.com/nationalsecurityagency)":
261
- - role=link[name="Ghidra by NSA"]
262
- - role=link[name="github.com/nationalsecurityagency"]
263
- - row:
264
- - cell "400 points by handfuloflight 1 day ago | hide | 205 comments":
265
- - role=link[name="handfuloflight"]
266
- - role=link[name="1 day ago"] >> nth=1
255
+ - link [id="up_47347064"]
256
+ - cell "Returning to Rails in 2026 (markround.com)":
257
+ - role=link[name="Returning to Rails in 2026"]
258
+ - role=link[name="markround.com"]
259
+ - row:
260
+ - cell "250 points by stanislavb 8 hours ago | hide | 161 comments":
261
+ - role=link[name="stanislavb"]
262
+ - role=link[name="8 hours ago"] >> nth=1
267
263
  - role=link[name="hide"] >> nth=18
268
- - role=link[name="205 comments"]
264
+ - role=link[name="161 comments"] >> nth=1
269
265
  - row:
270
266
  - cell "20."
271
267
  - cell:
272
- - link [id="up_47012486"]
273
- - cell "DBASE on the Kaypro II (stonetools.ghost.io)":
274
- - role=link[name="DBASE on the Kaypro II"]
275
- - role=link[name="stonetools.ghost.io"]
276
- - row:
277
- - cell "68 points by TMWNN 14 hours ago | hide | 33 comments":
278
- - role=link[name="TMWNN"]
279
- - role=link[name="14 hours ago"] >> nth=0
268
+ - link [id="up_47350244"]
269
+ - cell "ArcaOS 5.1.2 (based on OS/2 Warp 4.52) now available (arcanoae.com)":
270
+ - role=link[name="ArcaOS 5.1.2 (based on OS/2 Warp 4.52) now available"]
271
+ - role=link[name="arcanoae.com"]
272
+ - row:
273
+ - cell "22 points by speckx 1 hour ago | hide | 7 comments":
274
+ - role=link[name="speckx"] >> nth=0
275
+ - role=link[name="1 hour ago"] >> nth=4
280
276
  - role=link[name="hide"] >> nth=19
281
- - role=link[name="33 comments"] >> nth=0
277
+ - role=link[name="7 comments"] >> nth=1
282
278
  - row:
283
279
  - cell "21."
284
280
  - cell:
285
- - link [id="up_47041836"]
286
- - cell "Show HN: Scanned 1927-1945 Daily USFS Work Diary (forestrydiary.com)":
287
- - role=link[name="Show HN: Scanned 1927-1945 Daily USFS Work Diary"]
288
- - role=link[name="forestrydiary.com"]
289
- - row:
290
- - cell "103 points by dogline 15 hours ago | hide | 19 comments":
291
- - role=link[name="dogline"]
292
- - role=link[name="15 hours ago"] >> nth=0
281
+ - link [id="up_47308190"]
282
+ - cell "High fidelity font synthesis for CJK languages (github.com/kaonashi-tyc)":
283
+ - role=link[name="High fidelity font synthesis for CJK languages"]
284
+ - role=link[name="github.com/kaonashi-tyc"]
285
+ - row:
286
+ - cell "19 points by kaonashi-tyc-01 3 hours ago | hide | 2 comments":
287
+ - role=link[name="kaonashi-tyc-01"]
288
+ - role=link[name="3 hours ago"] >> nth=1
293
289
  - role=link[name="hide"] >> nth=20
294
- - role=link[name="19 comments"]
290
+ - role=link[name="2 comments"]
295
291
  - row:
296
292
  - cell "22."
297
293
  - cell:
298
- - link [id="up_47000708"]
299
- - cell "Hear the \"Amati King Cello\", the Oldest Known Cello in Existence (openculture.com)":
300
- - role=link[name="Hear the \"Amati King Cello\", the Oldest Known Cello in Existence"]
301
- - role=link[name="openculture.com"]
302
- - row:
303
- - cell "65 points by tesserato 14 hours ago | hide | 31 comments":
304
- - role=link[name="tesserato"]
305
- - role=link[name="14 hours ago"] >> nth=1
294
+ - link [id="up_47339164"]
295
+ - cell "I was interviewed by an AI bot for a job (theverge.com)":
296
+ - role=link[name="I was interviewed by an AI bot for a job"]
297
+ - role=link[name="theverge.com"]
298
+ - row:
299
+ - cell "381 points by speckx 20 hours ago | hide | 385 comments":
300
+ - role=link[name="speckx"] >> nth=1
301
+ - role=link[name="20 hours ago"]
306
302
  - role=link[name="hide"] >> nth=21
307
- - role=link[name="31 comments"]
303
+ - role=link[name="385 comments"]
308
304
  - row:
309
305
  - cell "23."
310
306
  - cell:
311
- - link [id="up_47039478"]
312
- - cell "State of Show HN: 2025 (sturdystatistics.com)":
313
- - role=link[name="State of Show HN: 2025"]
314
- - role=link[name="sturdystatistics.com"]
315
- - row:
316
- - cell "115 points by kianN 18 hours ago | hide | 28 comments":
317
- - role=link[name="kianN"]
318
- - role=link[name="18 hours ago"]
307
+ - link [id="up_47310617"]
308
+ - cell "Datahäxan (0dd.company)":
309
+ - role=link[name="Datahäxan"]
310
+ - role=link[name="0dd.company"]
311
+ - row:
312
+ - cell "103 points by akkartik 9 hours ago | hide | 8 comments":
313
+ - role=link[name="akkartik"]
314
+ - role=link[name="9 hours ago"] >> nth=0
319
315
  - role=link[name="hide"] >> nth=22
320
- - role=link[name="28 comments"]
316
+ - role=link[name="8 comments"]
321
317
  - row:
322
318
  - cell "24."
323
319
  - cell:
324
- - link [id="up_47041456"]
325
- - cell "Running NanoClaw in a Docker Shell Sandbox (docker.com)":
326
- - role=link[name="Running NanoClaw in a Docker Shell Sandbox"]
327
- - role=link[name="docker.com"]
328
- - row:
329
- - cell "136 points by four_fifths 15 hours ago | hide | 66 comments":
330
- - role=link[name="four_fifths"]
331
- - role=link[name="15 hours ago"] >> nth=1
320
+ - link [id="up_47296568"]
321
+ - cell "Tested: How Many Times Can a DVD±RW Be Rewritten? Methodology and Results (goughlui.com)":
322
+ - role=link[name="Tested: How Many Times Can a DVD±RW Be Rewritten? Methodology and Results"]
323
+ - role=link[name="goughlui.com"]
324
+ - row:
325
+ - cell "198 points by giuliomagnifico 14 hours ago | hide | 65 comments":
326
+ - role=link[name="giuliomagnifico"]
327
+ - role=link[name="14 hours ago"] >> nth=1
332
328
  - role=link[name="hide"] >> nth=23
333
- - role=link[name="66 comments"]
329
+ - role=link[name="65 comments"]
334
330
  - row:
335
331
  - cell "25."
336
332
  - cell:
337
- - link [id="up_47011391"]
338
- - cell "Elephant trunk whiskers exhibit material intelligence (mpg.de)":
339
- - role=link[name="Elephant trunk whiskers exhibit material intelligence"]
340
- - role=link[name="mpg.de"]
341
- - row:
342
- - cell "18 points by gmays 5 hours ago | hide | 6 comments":
343
- - role=link[name="gmays"]
344
- - role=link[name="5 hours ago"] >> nth=1
333
+ - link [id="up_47348440"]
334
+ - cell "1B identity records exposed in ID verification data leak (aol.com)":
335
+ - role=link[name="1B identity records exposed in ID verification data leak"]
336
+ - role=link[name="aol.com"]
337
+ - row:
338
+ - cell "147 points by robtherobber 5 hours ago | hide | 33 comments":
339
+ - role=link[name="robtherobber"]
340
+ - role=link[name="5 hours ago"] >> nth=2
345
341
  - role=link[name="hide"] >> nth=24
346
- - role=link[name="6 comments"]
342
+ - role=link[name="33 comments"]
347
343
  - row:
348
344
  - cell "26."
349
345
  - cell:
350
- - link [id="up_47038731"]
351
- - cell "Neurons outside the brain (debugyourpain.com)":
352
- - role=link[name="Neurons outside the brain"]
353
- - role=link[name="debugyourpain.com"]
354
- - row:
355
- - cell "116 points by yichab0d 19 hours ago | hide | 52 comments":
356
- - role=link[name="yichab0d"]
357
- - role=link[name="19 hours ago"] >> nth=1
346
+ - link [id="up_47347901"]
347
+ - cell "Reliable Software in the LLM Era (quint-lang.org)":
348
+ - role=link[name="Reliable Software in the LLM Era"]
349
+ - role=link[name="quint-lang.org"]
350
+ - row:
351
+ - cell "44 points by mempirate 6 hours ago | hide | 19 comments":
352
+ - role=link[name="mempirate"]
353
+ - role=link[name="6 hours ago"] >> nth=1
358
354
  - role=link[name="hide"] >> nth=25
359
- - role=link[name="52 comments"]
355
+ - role=link[name="19 comments"] >> nth=1
360
356
  - row:
361
357
  - cell "27."
362
358
  - cell:
363
- - link [id="up_47042396"]
364
- - cell "Dark web agent spotted bedroom wall clue to rescue girl from abuse (bbc.com)":
365
- - role=link[name="Dark web agent spotted bedroom wall clue to rescue girl from abuse"]
366
- - role=link[name="bbc.com"]
367
- - row:
368
- - cell "499 points by colinprince 13 hours ago | hide | 276 comments":
369
- - role=link[name="colinprince"]
370
- - role=link[name="13 hours ago"]
359
+ - link [id="up_47340079"]
360
+ - cell "Don't post generated/AI-edited comments. HN is for conversation between humans (news.ycombinator.com)":
361
+ - role=link[name="Don't post generated/AI-edited comments. HN is for conversation between humans"]
362
+ - role=link[name="news.ycombinator.com"]
363
+ - row:
364
+ - cell "3884 points by usefulposter 19 hours ago | hide | 1451 comments":
365
+ - role=link[name="usefulposter"]
366
+ - role=link[name="19 hours ago"]
371
367
  - role=link[name="hide"] >> nth=26
372
- - role=link[name="276 comments"]
368
+ - role=link[name="1451 comments"]
373
369
  - row:
374
370
  - cell "28."
375
371
  - cell:
376
- - link [id="up_47031334"]
377
- - cell "Show HN: Jemini Gemini for the Epstein Files (jmail.world)":
378
- - role=link[name="Show HN: Jemini Gemini for the Epstein Files"]
379
- - role=link[name="jmail.world"]
380
- - row:
381
- - cell "418 points by dvrp 20 hours ago | hide | 81 comments":
382
- - role=link[name="dvrp"]
383
- - role=link[name="20 hours ago"] >> nth=2
372
+ - link [id="up_47303044"]
373
+ - cell "NASA's DART spacecraft changed an asteroid's orbit around the sun (sciencenews.org)":
374
+ - role=link[name="NASA's DART spacecraft changed an asteroid's orbit around the sun"]
375
+ - role=link[name="sciencenews.org"]
376
+ - row:
377
+ - cell "61 points by pseudolus 9 hours ago | hide | 36 comments":
378
+ - role=link[name="pseudolus"]
379
+ - role=link[name="9 hours ago"] >> nth=1
384
380
  - role=link[name="hide"] >> nth=27
385
- - role=link[name="81 comments"]
381
+ - role=link[name="36 comments"]
386
382
  - row:
387
383
  - cell "29."
388
384
  - cell:
389
- - link [id="up_47006587"]
390
- - cell "Show HN: GitHub \"Lines Viewed\" extension to keep you sane reviewing long AI PRs (chromewebstore.google.com)":
391
- - role=link[name="Show HN: GitHub \"Lines Viewed\" extension to keep you sane reviewing long AI PRs"]
392
- - role=link[name="chromewebstore.google.com"]
393
- - row:
394
- - cell "30 points by somesortofthing 9 hours ago | hide | 33 comments":
395
- - role=link[name="somesortofthing"]
396
- - role=link[name="9 hours ago"] >> nth=1
385
+ - link [id="up_47348397"]
386
+ - cell "U.S. Navy Turns Down Hormuz Escort Requests Because of High Risk (maritime-executive.com)":
387
+ - role=link[name="U.S. Navy Turns Down Hormuz Escort Requests Because of High Risk"]
388
+ - role=link[name="maritime-executive.com"]
389
+ - row:
390
+ - cell "35 points by mytailorisrich 5 hours ago | hide | 6 comments":
391
+ - role=link[name="mytailorisrich"]
392
+ - role=link[name="5 hours ago"] >> nth=3
397
393
  - role=link[name="hide"] >> nth=28
398
- - role=link[name="33 comments"] >> nth=1
394
+ - role=link[name="6 comments"] >> nth=1
399
395
  - row:
400
396
  - cell "30."
401
397
  - cell:
402
- - link [id="up_47041973"]
403
- - cell "Building for an audience of one: starting and finishing side projects with AI (codemade.net)":
404
- - role=link[name="Building for an audience of one: starting and finishing side projects with AI"]
405
- - role=link[name="codemade.net"]
406
- - row:
407
- - cell "92 points by lorisdev 14 hours ago | hide | 56 comments":
408
- - role=link[name="lorisdev"]
409
- - role=link[name="14 hours ago"] >> nth=2
398
+ - link [id="up_47308349"]
399
+ - cell "WebPKI and You (brycekerley.net)":
400
+ - role=link[name="WebPKI and You"]
401
+ - role=link[name="brycekerley.net"]
402
+ - row:
403
+ - cell "76 points by aragilar 11 hours ago | hide | 9 comments":
404
+ - role=link[name="aragilar"]
405
+ - role=link[name="11 hours ago"]
410
406
  - role=link[name="hide"] >> nth=29
411
- - role=link[name="56 comments"]
407
+ - role=link[name="9 comments"]
412
408
  - row:
413
409
  - cell:
414
410
  - role=link[name="More"]