@invisibleloop/pulse 0.20.10 → 0.20.19

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 (266) hide show
  1. package/package.json +6 -5
  2. package/public/.pulse-ui-version +1 -1
  3. package/scripts/build.js +26 -0
  4. package/scripts/release-version.js +17 -8
  5. package/scripts/strip-server.test.js +60 -0
  6. package/src/agent/checklist.md +8 -12
  7. package/src/agent/commands/pulse-start.md +2 -0
  8. package/src/agent/commands/verify.md +30 -8
  9. package/src/agent/guide-components.md +7 -25
  10. package/src/agent/guide-routing.md +0 -12
  11. package/src/agent/guide-server.md +102 -1
  12. package/src/agent/guide-spec.md +8 -1
  13. package/src/agent/guide-styles.md +23 -0
  14. package/src/agent/identity.md +9 -0
  15. package/src/agent/workflow.md +4 -23
  16. package/src/cli/check-bundles.js +113 -0
  17. package/src/cli/check-bundles.test.js +137 -0
  18. package/src/cli/cli.test.js +105 -0
  19. package/src/cli/dev.js +48 -3
  20. package/src/cli/diagnose.js +105 -0
  21. package/src/cli/diagnose.test.js +124 -0
  22. package/src/cli/discover.js +9 -2
  23. package/src/cli/index.js +171 -9
  24. package/src/cli/process-utils.js +57 -0
  25. package/src/cli/process-utils.test.js +114 -0
  26. package/src/cli/review.js +391 -0
  27. package/src/cli/review.test.js +143 -0
  28. package/src/cli/scaffold.js +9 -4
  29. package/src/cli/stamp.js +102 -0
  30. package/src/cli/stamp.test.js +149 -0
  31. package/src/cli/start.js +15 -2
  32. package/src/cli/validate.js +184 -0
  33. package/src/cli/validate.test.js +153 -0
  34. package/src/mcp/mcp.test.js +261 -30
  35. package/src/mcp/server.js +207 -515
  36. package/src/mcp/validate-worker.js +18 -1
  37. package/src/runtime/index.js +144 -11
  38. package/src/runtime/runtime.test.js +199 -0
  39. package/src/runtime/ssr.js +14 -7
  40. package/src/runtime/ssr.test.js +31 -0
  41. package/src/server/index.js +163 -10
  42. package/src/server/server.test.js +225 -2
  43. package/src/spec/schema.js +1 -1
  44. package/src/ui/index.js +0 -5
  45. package/src/ui/ui.test.js +0 -75
  46. package/types/ui.d.ts +0 -21
  47. package/.claude/commands/build-page.md +0 -63
  48. package/.claude/commands/new-doc-page.md +0 -45
  49. package/.claude/commands/pulse-start.md +0 -11
  50. package/.claude/commands/pulse-stop.md +0 -5
  51. package/.claude/commands/verify.md +0 -118
  52. package/.claude/pulse-checklist.md +0 -189
  53. package/.github/workflows/ci.yml +0 -25
  54. package/.github/workflows/publish.yml +0 -45
  55. package/.pulse/load-reports/home/1773432711417.json +0 -22
  56. package/.pulse-verified +0 -1
  57. package/AGENTS.md +0 -697
  58. package/CLAUDE.md +0 -697
  59. package/README.md +0 -95
  60. package/benchmark/public/dist/counter.boot-PO6SNSJZ.js +0 -8
  61. package/benchmark/public/dist/home.boot-YK6VAEQI.js +0 -6
  62. package/benchmark/public/dist/manifest.json +0 -5
  63. package/benchmark/public/dist/runtime-5Y7ESAIB.js +0 -2
  64. package/benchmark/public/dist/runtime-KO4BHUQ3.js +0 -49
  65. package/benchmark/results/2026-03-27-09-20.json +0 -188
  66. package/benchmark/results/2026-03-27-09-21.json +0 -188
  67. package/benchmark/results/2026-03-27-09-29.json +0 -188
  68. package/benchmark/results/2026-03-27-10-14.json +0 -188
  69. package/benchmark/results/2026-03-27-10-18.json +0 -232
  70. package/benchmark/src/pages/counter.js +0 -37
  71. package/benchmark/src/pages/home.js +0 -21
  72. package/docs/.claude/commands/pulse-build.md +0 -7
  73. package/docs/.claude/commands/pulse-dev.md +0 -7
  74. package/docs/.claude/commands/pulse-start.md +0 -9
  75. package/docs/.claude/commands/pulse-stop.md +0 -5
  76. package/docs/.claude/commands/verify.md +0 -84
  77. package/docs/.claude/coverage-check.js +0 -196
  78. package/docs/.claude/pulse-checklist.md +0 -189
  79. package/docs/public/.pulse-ui-version +0 -1
  80. package/docs/public/andypixel.css +0 -237
  81. package/docs/public/bookworms.css +0 -422
  82. package/docs/public/coutumes.css +0 -561
  83. package/docs/public/docs.css +0 -2388
  84. package/docs/public/favicon.svg +0 -4
  85. package/docs/public/home-brut.css +0 -982
  86. package/docs/public/images/bookworms/hero-books.jpg +0 -0
  87. package/docs/public/images/bookworms/how-we-read-now.jpg +0 -0
  88. package/docs/public/images/bookworms/lantern-keepers.jpg +0 -0
  89. package/docs/public/images/bookworms/provincial-bookseller.jpg +0 -0
  90. package/docs/public/images/journey/178.jpg +0 -0
  91. package/docs/public/images/journey/29.jpg +0 -0
  92. package/docs/public/images/retrowheels/hero.jpg +0 -0
  93. package/docs/public/images/shop/devbook-pro.jpg +0 -0
  94. package/docs/public/images/suzukibento/1015.jpg +0 -0
  95. package/docs/public/images/suzukibento/1025.jpg +0 -0
  96. package/docs/public/images/suzukibento/1043.jpg +0 -0
  97. package/docs/public/images/suzukibento/1059.jpg +0 -0
  98. package/docs/public/images/suzukibento/1062.jpg +0 -0
  99. package/docs/public/images/suzukibento/1084.jpg +0 -0
  100. package/docs/public/images/swish/1469334031218-e382a71b716b.jpg +0 -0
  101. package/docs/public/images/swish/1483985988355-763728e1935b.jpg +0 -0
  102. package/docs/public/images/swish/1485518882345-15568b007407.jpg +0 -0
  103. package/docs/public/images/swish/1490481651871-ab68de25d43d.jpg +0 -0
  104. package/docs/public/images/swish/1496747611176-843222e1e57c.jpg +0 -0
  105. package/docs/public/images/swish/1502716119720-b23a93e5fe1b.jpg +0 -0
  106. package/docs/public/images/swish/1539109136881-3be0616acf4b.jpg +0 -0
  107. package/docs/public/images/swish/1551803091-e20673f15770.jpg +0 -0
  108. package/docs/public/images/swish/1558769132-cb1aea458c5e.jpg +0 -0
  109. package/docs/public/images/swish/1572804013309-59a88b7e92f1.jpg +0 -0
  110. package/docs/public/img/heic1501a.jpg +0 -0
  111. package/docs/public/img/placeholder-landscape.svg +0 -18
  112. package/docs/public/img/placeholder-square.svg +0 -14
  113. package/docs/public/img/placeholder-tall.svg +0 -22
  114. package/docs/public/journey.css +0 -528
  115. package/docs/public/menu.js +0 -327
  116. package/docs/public/pulse-ui.css +0 -3028
  117. package/docs/public/pulse-ui.js +0 -257
  118. package/docs/public/retrowheels.css +0 -425
  119. package/docs/public/shop.css +0 -269
  120. package/docs/public/sparkys.css +0 -382
  121. package/docs/public/suzukibento.css +0 -517
  122. package/docs/public/swish.css +0 -394
  123. package/docs/public/theme.css +0 -52
  124. package/docs/public/themes/lumio.css +0 -50
  125. package/docs/public/themes/observatory.css +0 -104
  126. package/docs/server.js +0 -161
  127. package/docs/src/lib/component-page.js +0 -49
  128. package/docs/src/lib/highlight.js +0 -2
  129. package/docs/src/lib/layout.js +0 -190
  130. package/docs/src/lib/metrics-store.js +0 -6
  131. package/docs/src/lib/nav.js +0 -171
  132. package/docs/src/lib/stats.js +0 -81
  133. package/docs/src/pages/accessibility.js +0 -157
  134. package/docs/src/pages/actions.js +0 -194
  135. package/docs/src/pages/auth.js +0 -176
  136. package/docs/src/pages/caching.js +0 -95
  137. package/docs/src/pages/components/accordion.js +0 -48
  138. package/docs/src/pages/components/alert.js +0 -35
  139. package/docs/src/pages/components/app-badge.js +0 -41
  140. package/docs/src/pages/components/avatar.js +0 -35
  141. package/docs/src/pages/components/badge.js +0 -36
  142. package/docs/src/pages/components/breadcrumbs.js +0 -94
  143. package/docs/src/pages/components/button.js +0 -84
  144. package/docs/src/pages/components/card.js +0 -225
  145. package/docs/src/pages/components/charts.js +0 -283
  146. package/docs/src/pages/components/checkbox.js +0 -129
  147. package/docs/src/pages/components/cluster.js +0 -47
  148. package/docs/src/pages/components/container.js +0 -40
  149. package/docs/src/pages/components/cta.js +0 -54
  150. package/docs/src/pages/components/divider.js +0 -37
  151. package/docs/src/pages/components/empty.js +0 -36
  152. package/docs/src/pages/components/feature.js +0 -60
  153. package/docs/src/pages/components/fieldset.js +0 -65
  154. package/docs/src/pages/components/fileupload.js +0 -128
  155. package/docs/src/pages/components/footer.js +0 -58
  156. package/docs/src/pages/components/grid.js +0 -169
  157. package/docs/src/pages/components/heading.js +0 -107
  158. package/docs/src/pages/components/hero.js +0 -123
  159. package/docs/src/pages/components/icons.js +0 -410
  160. package/docs/src/pages/components/image.js +0 -71
  161. package/docs/src/pages/components/input.js +0 -51
  162. package/docs/src/pages/components/media.js +0 -51
  163. package/docs/src/pages/components/modal.js +0 -111
  164. package/docs/src/pages/components/nav.js +0 -136
  165. package/docs/src/pages/components/phone-frame.js +0 -74
  166. package/docs/src/pages/components/progress.js +0 -102
  167. package/docs/src/pages/components/prose.js +0 -111
  168. package/docs/src/pages/components/pullquote.js +0 -71
  169. package/docs/src/pages/components/radio.js +0 -194
  170. package/docs/src/pages/components/rating.js +0 -106
  171. package/docs/src/pages/components/search.js +0 -61
  172. package/docs/src/pages/components/section.js +0 -98
  173. package/docs/src/pages/components/segmented.js +0 -121
  174. package/docs/src/pages/components/select.js +0 -45
  175. package/docs/src/pages/components/slider.js +0 -115
  176. package/docs/src/pages/components/spinner.js +0 -73
  177. package/docs/src/pages/components/stack.js +0 -48
  178. package/docs/src/pages/components/stat.js +0 -55
  179. package/docs/src/pages/components/stepper.js +0 -66
  180. package/docs/src/pages/components/table.js +0 -45
  181. package/docs/src/pages/components/textarea.js +0 -31
  182. package/docs/src/pages/components/toggle.js +0 -84
  183. package/docs/src/pages/components/tooltip.js +0 -48
  184. package/docs/src/pages/components.js +0 -200
  185. package/docs/src/pages/config.js +0 -193
  186. package/docs/src/pages/constraints.js +0 -100
  187. package/docs/src/pages/deploy.js +0 -233
  188. package/docs/src/pages/error-pages.js +0 -99
  189. package/docs/src/pages/extending.js +0 -198
  190. package/docs/src/pages/faq.js +0 -99
  191. package/docs/src/pages/forms.js +0 -129
  192. package/docs/src/pages/getting-started.js +0 -147
  193. package/docs/src/pages/guard.js +0 -120
  194. package/docs/src/pages/home.js +0 -345
  195. package/docs/src/pages/how-it-works.js +0 -244
  196. package/docs/src/pages/hydration.js +0 -108
  197. package/docs/src/pages/images.js +0 -120
  198. package/docs/src/pages/markdown.js +0 -156
  199. package/docs/src/pages/meta.js +0 -193
  200. package/docs/src/pages/mutations.js +0 -107
  201. package/docs/src/pages/navigation.js +0 -85
  202. package/docs/src/pages/performance.js +0 -157
  203. package/docs/src/pages/persist.js +0 -89
  204. package/docs/src/pages/project-structure.js +0 -91
  205. package/docs/src/pages/prompt-examples.js +0 -186
  206. package/docs/src/pages/raw-responses.js +0 -122
  207. package/docs/src/pages/routing.js +0 -120
  208. package/docs/src/pages/server-api.js +0 -291
  209. package/docs/src/pages/server-data.js +0 -203
  210. package/docs/src/pages/slash-commands.js +0 -55
  211. package/docs/src/pages/spec.js +0 -207
  212. package/docs/src/pages/state.js +0 -102
  213. package/docs/src/pages/store.js +0 -203
  214. package/docs/src/pages/streaming.js +0 -107
  215. package/docs/src/pages/stripe.js +0 -194
  216. package/docs/src/pages/supabase.js +0 -324
  217. package/docs/src/pages/templates/andypixel.js +0 -260
  218. package/docs/src/pages/templates/blog-post.js +0 -226
  219. package/docs/src/pages/templates/bookworms.js +0 -227
  220. package/docs/src/pages/templates/coutumes.js +0 -237
  221. package/docs/src/pages/templates/journey.js +0 -186
  222. package/docs/src/pages/templates/mobile-app.js +0 -371
  223. package/docs/src/pages/templates/retrowheels.js +0 -355
  224. package/docs/src/pages/templates/shop.js +0 -268
  225. package/docs/src/pages/templates/sparkys.js +0 -264
  226. package/docs/src/pages/templates/suzukibento.js +0 -200
  227. package/docs/src/pages/templates/swish.js +0 -313
  228. package/docs/src/pages/templates.js +0 -534
  229. package/docs/src/pages/testing.js +0 -199
  230. package/docs/src/pages/validation.js +0 -138
  231. package/examples/.claude/commands/pulse-build.md +0 -7
  232. package/examples/.claude/commands/pulse-dev.md +0 -7
  233. package/examples/.claude/commands/pulse-start.md +0 -9
  234. package/examples/.claude/commands/pulse-stop.md +0 -5
  235. package/examples/.claude/commands/verify.md +0 -84
  236. package/examples/.claude/coverage-check.js +0 -196
  237. package/examples/.claude/pulse-checklist.md +0 -189
  238. package/examples/andypixel.css +0 -237
  239. package/examples/andypixel.js +0 -258
  240. package/examples/bookworms.css +0 -422
  241. package/examples/bookworms.js +0 -225
  242. package/examples/contact.js +0 -166
  243. package/examples/counter.js +0 -94
  244. package/examples/dev.server.js +0 -110
  245. package/examples/examples.test.js +0 -394
  246. package/examples/journey.css +0 -528
  247. package/examples/journey.js +0 -186
  248. package/examples/pricing.js +0 -262
  249. package/examples/products.js +0 -190
  250. package/examples/public/.pulse-ui-version +0 -1
  251. package/examples/public/pulse-ui.css +0 -3028
  252. package/examples/public/pulse-ui.js +0 -257
  253. package/examples/quiz.js +0 -208
  254. package/examples/retrowheels.css +0 -425
  255. package/examples/retrowheels.js +0 -353
  256. package/examples/shared.js +0 -84
  257. package/examples/suzukibento.css +0 -513
  258. package/examples/suzukibento.js +0 -200
  259. package/examples/swish.css +0 -394
  260. package/examples/swish.js +0 -311
  261. package/examples/todos.js +0 -162
  262. package/src/ui/fieldset.js +0 -37
  263. package/src/ui/phone-frame.js +0 -40
  264. package/src/ui/search.js +0 -78
  265. package/src/ui/segmented.js +0 -50
  266. package/src/ui/tooltip.js +0 -28
@@ -1,188 +0,0 @@
1
- {
2
- "timestamp": "2026-03-27T09:29:14.607Z",
3
- "node": "v22.19.0",
4
- "suites": [
5
- {
6
- "label": "simple",
7
- "path": "/bench/simple",
8
- "iterations": 100,
9
- "ttfb": {
10
- "mean": 0.18297082000000045,
11
- "p50": 0.17108400000000756,
12
- "p95": 0.2559579999999926,
13
- "p99": 0.4467909999999904,
14
- "min": 0.15024999999999977,
15
- "max": 0.4467909999999904
16
- },
17
- "total": {
18
- "mean": 0.20846497000000028,
19
- "p50": 0.19445799999999736,
20
- "p95": 0.30350000000001387,
21
- "p99": 0.48399999999998045,
22
- "min": 0.17208299999998644,
23
- "max": 0.48399999999998045
24
- },
25
- "bodyBytes": 1107,
26
- "serverData": null,
27
- "serverRender": null
28
- },
29
- {
30
- "label": "data-1",
31
- "path": "/bench/data-1",
32
- "iterations": 100,
33
- "ttfb": {
34
- "mean": 0.6133241500000065,
35
- "p50": 0.4627920000002632,
36
- "p95": 1.2224160000000666,
37
- "p99": 2.668916000000081,
38
- "min": 0.29625000000010004,
39
- "max": 2.668916000000081
40
- },
41
- "total": {
42
- "mean": 21.990226709999998,
43
- "p50": 21.921583999999996,
44
- "p95": 22.944167000000107,
45
- "p99": 23.517833999999993,
46
- "min": 20.591375000000085,
47
- "max": 23.517833999999993
48
- },
49
- "bodyBytes": 4437,
50
- "serverData": null,
51
- "serverRender": null
52
- },
53
- {
54
- "label": "data-3",
55
- "path": "/bench/data-3",
56
- "iterations": 100,
57
- "ttfb": {
58
- "mean": 0.5387367000000086,
59
- "p50": 0.4626250000001164,
60
- "p95": 1.293916999999965,
61
- "p99": 1.4869160000007469,
62
- "min": 0.28574999999955253,
63
- "max": 1.4869160000007469
64
- },
65
- "total": {
66
- "mean": 31.784648730000022,
67
- "p50": 31.87787500000013,
68
- "p95": 32.797083000000384,
69
- "p99": 33.82358299999942,
70
- "min": 30.11054200000035,
71
- "max": 33.82358299999942
72
- },
73
- "bodyBytes": 1299,
74
- "serverData": null,
75
- "serverRender": null
76
- },
77
- {
78
- "label": "cached",
79
- "path": "/bench/cached",
80
- "iterations": 100,
81
- "ttfb": {
82
- "mean": 0.14762670000003708,
83
- "p50": 0.13516700000036508,
84
- "p95": 0.23062500000014552,
85
- "p99": 0.5274579999995694,
86
- "min": 0.11129199999959383,
87
- "max": 0.5274579999995694
88
- },
89
- "total": {
90
- "mean": 0.16071208999996997,
91
- "p50": 0.1472089999997479,
92
- "p95": 0.2516670000004524,
93
- "p99": 0.5587909999994736,
94
- "min": 0.12033299999984592,
95
- "max": 0.5587909999994736
96
- },
97
- "bodyBytes": 1041,
98
- "serverData": null,
99
- "serverRender": null
100
- },
101
- {
102
- "label": "nav/simple",
103
- "path": "/bench/simple",
104
- "iterations": 100,
105
- "ttfb": {
106
- "mean": 0.11551874999987376,
107
- "p50": 0.11016599999948085,
108
- "p95": 0.13649999999961437,
109
- "p99": 0.39541600000029575,
110
- "min": 0.09170799999992596,
111
- "max": 0.39541600000029575
112
- },
113
- "total": {
114
- "mean": 0.12438039999991815,
115
- "p50": 0.11924999999973807,
116
- "p95": 0.1472909999993135,
117
- "p99": 0.40704099999948085,
118
- "min": 0.09787500000038563,
119
- "max": 0.40704099999948085
120
- },
121
- "bodyBytes": 244,
122
- "serverData": null,
123
- "serverRender": null
124
- },
125
- {
126
- "label": "nav/data-1",
127
- "path": "/bench/data-1",
128
- "iterations": 100,
129
- "ttfb": {
130
- "mean": 21.649980459999988,
131
- "p50": 21.569624999999178,
132
- "p95": 22.391042000000198,
133
- "p99": 22.874499999999898,
134
- "min": 20.5278330000001,
135
- "max": 22.874499999999898
136
- },
137
- "total": {
138
- "mean": 21.690494169999955,
139
- "p50": 21.597499999999854,
140
- "p95": 22.469167000000198,
141
- "p99": 22.954249999998865,
142
- "min": 20.546290999999655,
143
- "max": 22.954249999998865
144
- },
145
- "bodyBytes": 3513,
146
- "serverData": null,
147
- "serverRender": null
148
- },
149
- {
150
- "label": "nav/data-3",
151
- "path": "/bench/data-3",
152
- "iterations": 100,
153
- "ttfb": {
154
- "mean": 31.646467500000053,
155
- "p50": 31.64995799999997,
156
- "p95": 32.36629200000061,
157
- "p99": 32.69512500000019,
158
- "min": 30.283833000001323,
159
- "max": 32.69512500000019
160
- },
161
- "total": {
162
- "mean": 31.690145040000026,
163
- "p50": 31.678874999999607,
164
- "p95": 32.40204200000153,
165
- "p99": 32.79820800000016,
166
- "min": 30.3387500000008,
167
- "max": 32.79820800000016
168
- },
169
- "bodyBytes": 375,
170
- "serverData": null,
171
- "serverRender": null
172
- }
173
- ],
174
- "bundles": {
175
- "contact.boot": {
176
- "file": "contact.boot-IBC3WEQQ.js",
177
- "bytes": 2506
178
- },
179
- "counter.boot": {
180
- "file": "counter.boot-VUWQFE5L.js",
181
- "bytes": 1229
182
- },
183
- "runtime": {
184
- "file": "runtime-YLZ4ZGK4.js",
185
- "bytes": 7017
186
- }
187
- }
188
- }
@@ -1,188 +0,0 @@
1
- {
2
- "timestamp": "2026-03-27T10:14:44.996Z",
3
- "node": "v22.19.0",
4
- "suites": [
5
- {
6
- "label": "simple",
7
- "path": "/bench/simple",
8
- "iterations": 100,
9
- "ttfb": {
10
- "mean": 0.21606463000000103,
11
- "p50": 0.18104200000001924,
12
- "p95": 0.4587089999999989,
13
- "p99": 0.8525419999999997,
14
- "min": 0.1554999999999893,
15
- "max": 0.8525419999999997
16
- },
17
- "total": {
18
- "mean": 0.24665415999999907,
19
- "p50": 0.21316699999999855,
20
- "p95": 0.4899169999999913,
21
- "p99": 0.9412920000000042,
22
- "min": 0.17758399999999597,
23
- "max": 0.9412920000000042
24
- },
25
- "bodyBytes": 1107,
26
- "serverData": null,
27
- "serverRender": null
28
- },
29
- {
30
- "label": "data-1",
31
- "path": "/bench/data-1",
32
- "iterations": 100,
33
- "ttfb": {
34
- "mean": 0.5468803599999865,
35
- "p50": 0.5259580000001733,
36
- "p95": 0.8466249999996762,
37
- "p99": 2.0224580000001424,
38
- "min": 0.2652919999999881,
39
- "max": 2.0224580000001424
40
- },
41
- "total": {
42
- "mean": 21.82060371999999,
43
- "p50": 21.857250000000022,
44
- "p95": 22.797791999999845,
45
- "p99": 24.448374999999942,
46
- "min": 20.657166000000018,
47
- "max": 24.448374999999942
48
- },
49
- "bodyBytes": 4437,
50
- "serverData": null,
51
- "serverRender": null
52
- },
53
- {
54
- "label": "data-3",
55
- "path": "/bench/data-3",
56
- "iterations": 100,
57
- "ttfb": {
58
- "mean": 0.5796908000000031,
59
- "p50": 0.5424170000005688,
60
- "p95": 0.9267909999998665,
61
- "p99": 1.413499999999658,
62
- "min": 0.34208399999988615,
63
- "max": 1.413499999999658
64
- },
65
- "total": {
66
- "mean": 31.895021160000006,
67
- "p50": 31.9188750000003,
68
- "p95": 32.71870899999976,
69
- "p99": 33.30262500000026,
70
- "min": 30.80712500000027,
71
- "max": 33.30262500000026
72
- },
73
- "bodyBytes": 1299,
74
- "serverData": null,
75
- "serverRender": null
76
- },
77
- {
78
- "label": "cached",
79
- "path": "/bench/cached",
80
- "iterations": 100,
81
- "ttfb": {
82
- "mean": 0.14090454999999566,
83
- "p50": 0.12545799999952578,
84
- "p95": 0.25749999999970896,
85
- "p99": 0.5329170000004524,
86
- "min": 0.09470799999962765,
87
- "max": 0.5329170000004524
88
- },
89
- "total": {
90
- "mean": 0.15339621000002807,
91
- "p50": 0.13595799999984592,
92
- "p95": 0.2675829999998314,
93
- "p99": 0.5452500000001237,
94
- "min": 0.10458299999936571,
95
- "max": 0.5452500000001237
96
- },
97
- "bodyBytes": 1041,
98
- "serverData": null,
99
- "serverRender": null
100
- },
101
- {
102
- "label": "nav/simple",
103
- "path": "/bench/simple",
104
- "iterations": 100,
105
- "ttfb": {
106
- "mean": 0.15080785000001926,
107
- "p50": 0.12516599999980826,
108
- "p95": 0.3545000000003711,
109
- "p99": 0.7068749999998545,
110
- "min": 0.09504099999958271,
111
- "max": 0.7068749999998545
112
- },
113
- "total": {
114
- "mean": 0.16158331000002363,
115
- "p50": 0.1343749999996362,
116
- "p95": 0.36208299999998417,
117
- "p99": 0.8008330000002388,
118
- "min": 0.10349999999925785,
119
- "max": 0.8008330000002388
120
- },
121
- "bodyBytes": 244,
122
- "serverData": null,
123
- "serverRender": null
124
- },
125
- {
126
- "label": "nav/data-1",
127
- "path": "/bench/data-1",
128
- "iterations": 100,
129
- "ttfb": {
130
- "mean": 21.65396829000002,
131
- "p50": 21.741833000000042,
132
- "p95": 22.10450000000037,
133
- "p99": 22.266125000000102,
134
- "min": 20.614916999999878,
135
- "max": 22.266125000000102
136
- },
137
- "total": {
138
- "mean": 21.69912578999997,
139
- "p50": 21.77666700000009,
140
- "p95": 22.144542,
141
- "p99": 22.31579200000033,
142
- "min": 20.683374999999614,
143
- "max": 22.31579200000033
144
- },
145
- "bodyBytes": 3513,
146
- "serverData": null,
147
- "serverRender": null
148
- },
149
- {
150
- "label": "nav/data-3",
151
- "path": "/bench/data-3",
152
- "iterations": 100,
153
- "ttfb": {
154
- "mean": 31.570420009999854,
155
- "p50": 31.710832999999184,
156
- "p95": 32.321500000000015,
157
- "p99": 32.830957999998645,
158
- "min": 30.063625000000684,
159
- "max": 32.830957999998645
160
- },
161
- "total": {
162
- "mean": 31.617417509999832,
163
- "p50": 31.77074999999968,
164
- "p95": 32.37395899999865,
165
- "p99": 32.86749999999847,
166
- "min": 30.105125000000044,
167
- "max": 32.86749999999847
168
- },
169
- "bodyBytes": 375,
170
- "serverData": null,
171
- "serverRender": null
172
- }
173
- ],
174
- "bundles": {
175
- "contact.boot": {
176
- "file": "contact.boot-IBC3WEQQ.js",
177
- "bytes": 2506
178
- },
179
- "counter.boot": {
180
- "file": "counter.boot-VUWQFE5L.js",
181
- "bytes": 1229
182
- },
183
- "runtime": {
184
- "file": "runtime-YLZ4ZGK4.js",
185
- "bytes": 7017
186
- }
187
- }
188
- }
@@ -1,232 +0,0 @@
1
- {
2
- "timestamp": "2026-03-27T10:18:56.124Z",
3
- "node": "v22.19.0",
4
- "suites": [
5
- {
6
- "label": "simple",
7
- "path": "/bench/simple",
8
- "iterations": 100,
9
- "ttfb": {
10
- "mean": 0.20563084000000145,
11
- "p50": 0.18975000000000364,
12
- "p95": 0.3084999999999809,
13
- "p99": 0.3952500000000043,
14
- "min": 0.1581250000000125,
15
- "max": 0.3952500000000043
16
- },
17
- "total": {
18
- "mean": 0.2324024900000009,
19
- "p50": 0.21391700000000924,
20
- "p95": 0.3381250000000193,
21
- "p99": 0.41900000000001114,
22
- "min": 0.17929200000000378,
23
- "max": 0.41900000000001114
24
- },
25
- "bodyBytes": 1107,
26
- "serverData": null,
27
- "serverRender": null
28
- },
29
- {
30
- "label": "data-1",
31
- "path": "/bench/data-1",
32
- "iterations": 100,
33
- "ttfb": {
34
- "mean": 0.7231991400000055,
35
- "p50": 0.6069999999999709,
36
- "p95": 1.3360000000000127,
37
- "p99": 5.75383399999987,
38
- "min": 0.3484579999999369,
39
- "max": 5.75383399999987
40
- },
41
- "total": {
42
- "mean": 21.97315788,
43
- "p50": 22.07249999999999,
44
- "p95": 23.11658299999999,
45
- "p99": 26.644374999999854,
46
- "min": 19.998166999999967,
47
- "max": 26.644374999999854
48
- },
49
- "bodyBytes": 4437,
50
- "serverData": null,
51
- "serverRender": null
52
- },
53
- {
54
- "label": "data-3",
55
- "path": "/bench/data-3",
56
- "iterations": 100,
57
- "ttfb": {
58
- "mean": 0.6268471300000147,
59
- "p50": 0.5844999999999345,
60
- "p95": 0.9985829999995985,
61
- "p99": 1.1298750000005384,
62
- "min": 0.3552500000000691,
63
- "max": 1.1298750000005384
64
- },
65
- "total": {
66
- "mean": 31.835656279999977,
67
- "p50": 31.83570899999995,
68
- "p95": 32.87379099999998,
69
- "p99": 33.21837500000038,
70
- "min": 30.470499999999447,
71
- "max": 33.21837500000038
72
- },
73
- "bodyBytes": 1299,
74
- "serverData": null,
75
- "serverRender": null
76
- },
77
- {
78
- "label": "cached",
79
- "path": "/bench/cached",
80
- "iterations": 100,
81
- "ttfb": {
82
- "mean": 0.16630372999999962,
83
- "p50": 0.15245899999990797,
84
- "p95": 0.26525000000037835,
85
- "p99": 0.6830829999998969,
86
- "min": 0.11033299999962765,
87
- "max": 0.6830829999998969
88
- },
89
- "total": {
90
- "mean": 0.17928999000002477,
91
- "p50": 0.1643340000000535,
92
- "p95": 0.2829170000004524,
93
- "p99": 0.6972909999994954,
94
- "min": 0.12158300000010058,
95
- "max": 0.6972909999994954
96
- },
97
- "bodyBytes": 1041,
98
- "serverData": null,
99
- "serverRender": null
100
- },
101
- {
102
- "label": "nav/simple",
103
- "path": "/bench/simple",
104
- "iterations": 100,
105
- "ttfb": {
106
- "mean": 0.12842208000000027,
107
- "p50": 0.12133300000004965,
108
- "p95": 0.18400000000019645,
109
- "p99": 0.40683400000034453,
110
- "min": 0.09862499999962893,
111
- "max": 0.40683400000034453
112
- },
113
- "total": {
114
- "mean": 0.1374654400000418,
115
- "p50": 0.1303749999997308,
116
- "p95": 0.19520900000043184,
117
- "p99": 0.41912500000034925,
118
- "min": 0.1056669999998121,
119
- "max": 0.41912500000034925
120
- },
121
- "bodyBytes": 244,
122
- "serverData": null,
123
- "serverRender": null
124
- },
125
- {
126
- "label": "nav/data-1",
127
- "path": "/bench/data-1",
128
- "iterations": 100,
129
- "ttfb": {
130
- "mean": 23.305352510000013,
131
- "p50": 21.81816699999945,
132
- "p95": 30.285417000000052,
133
- "p99": 61.82841699999972,
134
- "min": 20.61737499999981,
135
- "max": 61.82841699999972
136
- },
137
- "total": {
138
- "mean": 23.580659580000038,
139
- "p50": 21.857834000000366,
140
- "p95": 38.78645899999901,
141
- "p99": 61.93529200000012,
142
- "min": 20.651084000000083,
143
- "max": 61.93529200000012
144
- },
145
- "bodyBytes": 3513,
146
- "serverData": null,
147
- "serverRender": null
148
- },
149
- {
150
- "label": "nav/data-3",
151
- "path": "/bench/data-3",
152
- "iterations": 100,
153
- "ttfb": {
154
- "mean": 34.72833883000005,
155
- "p50": 32.297999999998865,
156
- "p95": 45.54833299999882,
157
- "p99": 159.19945800000096,
158
- "min": 30.571374999999534,
159
- "max": 159.19945800000096
160
- },
161
- "total": {
162
- "mean": 35.20303163999999,
163
- "p50": 32.33662499999991,
164
- "p95": 54.97037499999897,
165
- "p99": 159.31729199999972,
166
- "min": 30.614792000000307,
167
- "max": 159.31729199999972
168
- },
169
- "bodyBytes": 375,
170
- "serverData": null,
171
- "serverRender": null
172
- },
173
- {
174
- "label": "stream/scoped",
175
- "path": "/bench/stream-scoped",
176
- "iterations": 100,
177
- "shellTime": {
178
- "mean": 22.275940050000063,
179
- "p50": 22.028416999997717,
180
- "p95": 23.573624999999083,
181
- "p99": 44.38508299999921,
182
- "min": 20.258083999997325,
183
- "max": 44.38508299999921
184
- },
185
- "total": {
186
- "mean": 102.80312997000006,
187
- "p50": 102.13579100000061,
188
- "p95": 104.98820799999885,
189
- "p99": 150.9461250000022,
190
- "min": 100.29716699999881,
191
- "max": 150.9461250000022
192
- },
193
- "bodyBytes": 1667
194
- },
195
- {
196
- "label": "stream/unscoped",
197
- "path": "/bench/stream-unscoped",
198
- "iterations": 100,
199
- "shellTime": {
200
- "mean": 104.54545327000037,
201
- "p50": 102.28058299999975,
202
- "p95": 118.00083299999824,
203
- "p99": 186.62187500000073,
204
- "min": 100.76629200000025,
205
- "max": 186.62187500000073
206
- },
207
- "total": {
208
- "mean": 104.71869873000007,
209
- "p50": 102.34912500000064,
210
- "p95": 118.09866599999805,
211
- "p99": 191.36387500000274,
212
- "min": 100.789166999999,
213
- "max": 191.36387500000274
214
- },
215
- "bodyBytes": 1673
216
- }
217
- ],
218
- "bundles": {
219
- "contact.boot": {
220
- "file": "contact.boot-IBC3WEQQ.js",
221
- "bytes": 2506
222
- },
223
- "counter.boot": {
224
- "file": "counter.boot-VUWQFE5L.js",
225
- "bytes": 1229
226
- },
227
- "runtime": {
228
- "file": "runtime-YLZ4ZGK4.js",
229
- "bytes": 7017
230
- }
231
- }
232
- }
@@ -1,37 +0,0 @@
1
- /**
2
- * Benchmark page — interactive counter with server data.
3
- * Represents a typical SPA page: runtime + mutations + server fetcher.
4
- */
5
- export default {
6
- route: '/counter',
7
- hydrate: '/src/pages/counter.js',
8
-
9
- meta: {
10
- title: 'Counter — Pulse Benchmark',
11
- styles: ['/pulse.css'],
12
- },
13
-
14
- state: { count: 0 },
15
-
16
- constraints: {
17
- count: { min: 0, max: 10 },
18
- },
19
-
20
- server: {
21
- greeting: async () => 'Hello from the server',
22
- },
23
-
24
- mutations: {
25
- increment: (state) => ({ count: state.count + 1 }),
26
- decrement: (state) => ({ count: state.count - 1 }),
27
- },
28
-
29
- view: (state, server) => `
30
- <main id="main-content">
31
- <p>${server.greeting}</p>
32
- <p>Count: ${state.count}</p>
33
- <button data-event="decrement">−</button>
34
- <button data-event="increment">+</button>
35
- </main>
36
- `,
37
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Benchmark page — static page, no client JS.
3
- * Represents a content page with no hydration.
4
- */
5
- export default {
6
- route: '/home',
7
-
8
- meta: {
9
- title: 'Home — Pulse Benchmark',
10
- styles: ['/pulse.css'],
11
- },
12
-
13
- state: {},
14
-
15
- view: () => `
16
- <main id="main-content">
17
- <h1>Pulse Benchmark</h1>
18
- <p>Static page — no client-side interactivity.</p>
19
- </main>
20
- `,
21
- }
@@ -1,7 +0,0 @@
1
- Build this Pulse project for production.
2
-
3
- ```bash
4
- pulse build
5
- ```
6
-
7
- This bundles all pages into `public/dist/`. When complete, confirm the build succeeded and list the generated files.
@@ -1,7 +0,0 @@
1
- Start (or restart) the Pulse dev server for this project.
2
-
3
- ```bash
4
- pulse stop; pulse dev
5
- ```
6
-
7
- The server port is read from `pulse.config.js` (defaults to 3000).
@@ -1,9 +0,0 @@
1
- Start the Pulse production server for this project.
2
-
3
- First ensure a build exists (`public/dist/`). Then run:
4
-
5
- ```bash
6
- pulse start
7
- ```
8
-
9
- The production server uses the port from `pulse.config.js` (defaults to 3000).
@@ -1,5 +0,0 @@
1
- Stop the Pulse dev server for this project.
2
-
3
- ```bash
4
- pulse stop
5
- ```