Commit 5a56345
authored
Keep first-visit bootstrap gated on relay data (#946)
* Keep first-run bootstrap gated on real data
Seed import is an acceleration path, not proof that the GUI has usable relay data. The layout now waits for relay-check aggregates before rendering the app shell, while the leader continues showing the bootstrap UI and follower tabs keep waiting until the data gate opens.
Constraint: Missing or empty seeds must not skip the runtime network bootstrap UX.
Rejected: Treat seed completion as sufficient for content render | it reopens the empty-app first-visit regression.
Confidence: high
Scope-risk: narrow
Directive: Do not loosen showContent without proving clean-state relayCheckAggregates is non-empty before the app shell renders.
Tested: git diff --check
Tested: pnpm -r --workspace-concurrency=1 build
Tested: pnpm --filter @nostrwatch/gui test
Tested: pnpm --filter @nostrwatch/gui build
Tested: Playwright fresh-context preview smoke with external network blocked; booting=1, contentWrapper=0, pageErrors=[]
Not-tested: pnpm --filter @nostrwatch/gui check still fails on current origin/next with baseline type diagnostics outside this file
* Restore first-visit bootstrap data gate and relay fetch compatibility
First-visit users could leave the seed checklist before relay-check aggregates existed, and the no-seed fallback path was broken by nostr-tools API drift between the GUI and websocket adapter graphs. The GUI now waits for actual aggregate data before rendering the app, the seed generator uses the current pool subscription API, and the runtime adapter supports both old and new nostr-tools pool APIs.\n\nConstraint: Missing seed artifacts must fall back to network bootstrap instead of entering an empty app.\nConstraint: GUI seed generation resolves nostr-tools 2.23 while the websocket adapter package can still resolve older 2.x behavior.\nRejected: Treat missing seeds as fatal | first-visit bootstrap must work without seeds.\nConfidence: high\nScope-risk: moderate\nDirective: Do not weaken the first-visit render gate without empty-profile browser proof and route66 cache counts.\nTested: pnpm --filter @nostrwatch/route66-wsadapter-nostrtools build; bounded pnpm --filter @nostrwatch/gui seed; pnpm --filter @nostrwatch/gui build; empty-profile Playwright no-seed and seeded bootstrap proofs with screenshots.\nNot-tested: Full pnpm -r build
* Keep app chrome out of bootstrap loading screens
The first-visit bootstrap gate now waits for actual data, but the layout still rendered the fixed header before deciding which boot surface to show. Moving the header into the content branch keeps bootstrap and follower waiting states as true full-screen loading screens, then restores the normal header once content is allowed to render.\n\nConstraint: Boot screens must not include the header or navigation chrome.\nRejected: Disable nav while booting | the screenshot requirement is no header/nav at all, not disabled chrome.\nConfidence: high\nScope-risk: narrow\nDirective: Keep app chrome behind showContent unless there is explicit browser proof for a different bootstrap UX.\nTested: Fresh Playwright profile showed boot #site-header count 0 and app #site-header count 1 after #content-wrapper appeared; pnpm --filter @nostrwatch/gui build.\nNot-tested: Full pnpm -r build
---------
Co-authored-by: sandwich <dskvr@users.noreply.github.com>1 parent 71ff416 commit 5a56345
5 files changed
Lines changed: 173 additions & 118 deletions
File tree
- apps/gui
- scripts
- src
- lib/utils
- routes
- libraries/route66/adapters/websocket/NostrToolsAdapter/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
131 | | - | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
132 | 140 | | |
133 | 141 | | |
134 | 142 | | |
135 | 143 | | |
136 | | - | |
137 | | - | |
138 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
139 | 163 | | |
140 | 164 | | |
141 | 165 | | |
142 | 166 | | |
143 | 167 | | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | 168 | | |
159 | 169 | | |
160 | 170 | | |
| |||
214 | 224 | | |
215 | 225 | | |
216 | 226 | | |
217 | | - | |
218 | 227 | | |
219 | 228 | | |
220 | 229 | | |
| |||
240 | 249 | | |
241 | 250 | | |
242 | 251 | | |
243 | | - | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
250 | 260 | | |
251 | 261 | | |
252 | 262 | | |
| |||
257 | 267 | | |
258 | 268 | | |
259 | 269 | | |
260 | | - | |
261 | 270 | | |
262 | 271 | | |
263 | 272 | | |
264 | 273 | | |
265 | 274 | | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
273 | 283 | | |
274 | 284 | | |
275 | 285 | | |
| |||
293 | 303 | | |
294 | 304 | | |
295 | 305 | | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | 306 | | |
300 | 307 | | |
301 | 308 | | |
| |||
340 | 347 | | |
341 | 348 | | |
342 | 349 | | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
| 350 | + | |
| 351 | + | |
349 | 352 | | |
350 | 353 | | |
351 | 354 | | |
| |||
355 | 358 | | |
356 | 359 | | |
357 | 360 | | |
358 | | - | |
359 | 361 | | |
360 | 362 | | |
361 | 363 | | |
| |||
394 | 396 | | |
395 | 397 | | |
396 | 398 | | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
403 | 402 | | |
404 | 403 | | |
405 | 404 | | |
| |||
413 | 412 | | |
414 | 413 | | |
415 | 414 | | |
416 | | - | |
417 | 415 | | |
418 | 416 | | |
419 | 417 | | |
| |||
442 | 440 | | |
443 | 441 | | |
444 | 442 | | |
445 | | - | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
446 | 466 | | |
447 | 467 | | |
448 | 468 | | |
| |||
471 | 491 | | |
472 | 492 | | |
473 | 493 | | |
474 | | - | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
489 | | - | |
490 | | - | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
491 | 497 | | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
499 | 506 | | |
500 | 507 | | |
501 | 508 | | |
502 | | - | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | 509 | | |
507 | 510 | | |
508 | 511 | | |
| |||
595 | 598 | | |
596 | 599 | | |
597 | 600 | | |
598 | | - | |
| 601 | + | |
599 | 602 | | |
600 | 603 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
23 | 39 | | |
24 | 40 | | |
25 | 41 | | |
| |||
48 | 64 | | |
49 | 65 | | |
50 | 66 | | |
51 | | - | |
| 67 | + | |
52 | 68 | | |
53 | 69 | | |
54 | | - | |
| 70 | + | |
55 | 71 | | |
56 | 72 | | |
57 | 73 | | |
58 | 74 | | |
59 | 75 | | |
60 | | - | |
| 76 | + | |
61 | 77 | | |
62 | 78 | | |
63 | 79 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
262 | | - | |
263 | 262 | | |
264 | 263 | | |
265 | 264 | | |
| |||
279 | 278 | | |
280 | 279 | | |
281 | 280 | | |
282 | | - | |
283 | 281 | | |
284 | 282 | | |
285 | 283 | | |
286 | 284 | | |
287 | 285 | | |
| 286 | + | |
288 | 287 | | |
289 | 288 | | |
290 | 289 | | |
291 | 290 | | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
292 | 295 | | |
293 | 296 | | |
294 | 297 | | |
| |||
0 commit comments