@bongos/core 1.21.66 → 1.21.68

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 (49) hide show
  1. package/.bongos-core.json +111 -41
  2. package/docs/copy-inventory.md +414 -386
  3. package/docs/copy-registry.json +815 -537
  4. package/docs/file-map.md +1 -0
  5. package/docs/module-api-changelog.md +4 -0
  6. package/docs/page-inventory.json +45 -12
  7. package/docs/page-readings.json +959 -907
  8. package/modules/platform-identity/routes/my-projects.js +1 -1
  9. package/modules/public-landing/public/account.html +1 -1
  10. package/modules/public-landing/public/assets/cosmos.css +12 -10
  11. package/modules/public-landing/public/contact.html +1 -1
  12. package/modules/public-landing/public/guild.html +1 -1
  13. package/modules/public-landing/public/index-cli.states.json +20 -0
  14. package/modules/public-landing/public/index.html +68 -1
  15. package/modules/public-landing/public/index.states.json +4 -4
  16. package/modules/public-landing/public/invitations-empty.states.json +56 -0
  17. package/modules/public-landing/public/invitations-picker.states.json +84 -0
  18. package/modules/public-landing/public/invitations.html +965 -0
  19. package/modules/public-landing/public/invitations.probes.json +430 -0
  20. package/modules/public-landing/public/invitations.states.json +473 -0
  21. package/modules/public-landing/public/privacy.html +1 -1
  22. package/modules/public-landing/public/projects.html +18 -543
  23. package/modules/public-landing/public/projects.probes.json +0 -29
  24. package/modules/public-landing/public/projects.states.json +0 -6
  25. package/modules/public-landing/public/terms.html +1 -1
  26. package/modules/ui-design/kit/fixtures/bongos-cli-latest-sample.json +10 -0
  27. package/modules/ui-design/kit/fixtures/featured-invitations.json +183 -0
  28. package/modules/ui-design/kit/fixtures/guilds-empty.json +1 -0
  29. package/modules/ui-design/kit/fixtures/me-guild-engagements-empty.json +1 -0
  30. package/modules/ui-design/kit/fixtures/me-guild-requests-empty.json +1 -0
  31. package/modules/ui-design/kit/fixtures/my-projects-applied.json +29 -0
  32. package/modules/ui-design/kit/fixtures/my-projects-invites-empty.json +1 -0
  33. package/modules/ui-design/kit/serve.js +5 -1
  34. package/package-lock.json +2 -2
  35. package/package.json +1 -1
  36. package/release-notes.json +16 -0
  37. package/src/module-api.js +1 -1
  38. package/src/platform-server.js +11 -0
  39. package/tests/hub_account_page.mjs +1 -1
  40. package/tests/hub_engagement_cards.mjs +44 -40
  41. package/tests/hub_guild_cards.mjs +24 -22
  42. package/tests/hub_invitations_page.mjs +429 -0
  43. package/tests/join_relay_outcome.mjs +1 -1
  44. package/tests/landing_legal_pages.mjs +8 -6
  45. package/tests/landing_page.mjs +125 -3
  46. package/tests/my_projects_surface.mjs +14 -6
  47. package/tests/public_landing_projects.mjs +12 -14
  48. package/tests/render_check.mjs +3 -2
  49. package/tests/ui_design_kit.mjs +3 -3
@@ -0,0 +1,473 @@
1
+ {
2
+ "_": "The invitations page (task 1004276) for modules/ui-design/kit/render.js: signed out (the door), signed in with every list filled (the main fixtures: a project invite, two guild engagements, two guild invites, two join requests to a guild you own), the join field applying, and the guild cards' states that moved here with them from projects.states.json. Dark only, like every apex page (ADR 0204). The empty page is invitations-empty.states.json.",
3
+ "page": "/invitations",
4
+ "surface": "public-landing",
5
+ "modes": [
6
+ "dark"
7
+ ],
8
+ "modeQuery": false,
9
+ "ignoreRequests": [
10
+ "/api/(gds|bongos)/me$",
11
+ "/my-projects",
12
+ "/me/guild-"
13
+ ],
14
+ "ignoreConsole": [
15
+ "/api/(gds|bongos)/me",
16
+ "\\b401\\b",
17
+ "Unauthorized"
18
+ ],
19
+ "ignoreControls": [
20
+ ".skip",
21
+ ".vh"
22
+ ],
23
+ "states": {
24
+ "out": {
25
+ "auth": false,
26
+ "expect": {
27
+ "visible": [
28
+ "#door",
29
+ "#signin",
30
+ "#signinTop"
31
+ ],
32
+ "hidden": [
33
+ "#invtBody",
34
+ "#loading",
35
+ "#who"
36
+ ]
37
+ }
38
+ },
39
+ "in": {
40
+ "auth": true,
41
+ "actions": [
42
+ [
43
+ "wait",
44
+ 900
45
+ ]
46
+ ],
47
+ "expect": {
48
+ "visible": [
49
+ "#invtBody",
50
+ "#mineInvites",
51
+ "#invitesList",
52
+ "#who"
53
+ ],
54
+ "hidden": [
55
+ "#door",
56
+ "#loading",
57
+ "#invitesNone"
58
+ ],
59
+ "count": [
60
+ [
61
+ "#invitesList .mineRow",
62
+ 1
63
+ ],
64
+ [
65
+ "#menuProfile a[aria-current=\"page\"]",
66
+ 1
67
+ ]
68
+ ],
69
+ "text": [
70
+ [
71
+ "#invitesList .mineRow:first-child .mineRow__name",
72
+ "The Grove"
73
+ ],
74
+ [
75
+ "#invitesList .mineRow:first-child .btn",
76
+ "Open project →"
77
+ ],
78
+ [
79
+ "#joinBtn",
80
+ "Apply to join"
81
+ ]
82
+ ]
83
+ }
84
+ },
85
+ "in-join-applied": {
86
+ "auth": true,
87
+ "actions": [
88
+ [
89
+ "wait",
90
+ 900
91
+ ],
92
+ [
93
+ "fill",
94
+ "#joinOrigin",
95
+ "grove.cloudbongos.com"
96
+ ],
97
+ [
98
+ "fill",
99
+ "#joinNote",
100
+ "Happy to start on the docs."
101
+ ],
102
+ [
103
+ "click",
104
+ "#joinBtn"
105
+ ],
106
+ [
107
+ "wait",
108
+ 400
109
+ ]
110
+ ],
111
+ "expect": {
112
+ "hasClass": [
113
+ [
114
+ "#joinStatus",
115
+ "ok"
116
+ ]
117
+ ],
118
+ "text": [
119
+ [
120
+ "#joinStatus",
121
+ "Applied. The project’s owner admits new builders; once approved, sign in to enter."
122
+ ]
123
+ ],
124
+ "value": [
125
+ [
126
+ "#joinOrigin",
127
+ ""
128
+ ],
129
+ [
130
+ "#joinNote",
131
+ ""
132
+ ]
133
+ ]
134
+ }
135
+ },
136
+ "in-profile": {
137
+ "auth": true,
138
+ "actions": [
139
+ [
140
+ "wait",
141
+ 600
142
+ ],
143
+ [
144
+ "click",
145
+ "#who"
146
+ ],
147
+ [
148
+ "wait",
149
+ 350
150
+ ]
151
+ ],
152
+ "expect": {
153
+ "expanded": true,
154
+ "open": "#menuProfile",
155
+ "count": [
156
+ [
157
+ "#menuProfile a[href=\"/invitations\"][aria-current=\"page\"]",
158
+ 1
159
+ ]
160
+ ]
161
+ }
162
+ },
163
+ "in-engagements": {
164
+ "auth": true,
165
+ "url": "/invitations",
166
+ "actions": [
167
+ [
168
+ "wait",
169
+ 900
170
+ ],
171
+ [
172
+ "focus",
173
+ "#engageList .engageRow:first-child .btn"
174
+ ],
175
+ [
176
+ "wait",
177
+ 200
178
+ ]
179
+ ],
180
+ "expect": {
181
+ "visible": [
182
+ "#mineInvites",
183
+ "#invitesList",
184
+ "#engageList"
185
+ ],
186
+ "count": [
187
+ [
188
+ "#engageList .engageRow",
189
+ 2
190
+ ],
191
+ [
192
+ "#engageList .engageRow .mineJoinNote:not([hidden])",
193
+ 0
194
+ ]
195
+ ],
196
+ "text": [
197
+ [
198
+ "#engageList .engageRow:nth-child(1) .mineRow__name",
199
+ "Forge Crew is applying to Tidepool — apply with them?"
200
+ ],
201
+ [
202
+ "#engageList .engageRow:nth-child(1) .mineRow__host",
203
+ "tidepool.cloudbongos.com"
204
+ ],
205
+ [
206
+ "#engageList .engageRow:nth-child(2) .mineRow__name",
207
+ "Lantern Works invited Forge Crew"
208
+ ],
209
+ [
210
+ "#engageList .engageRow:nth-child(1) .mineRow__hint",
211
+ "You apply as yourself — add a note for the owner if you like."
212
+ ],
213
+ [
214
+ "#engageList .engageRow:nth-child(1) .btn",
215
+ "Apply to join"
216
+ ]
217
+ ]
218
+ }
219
+ },
220
+ "in-engagement-note": {
221
+ "auth": true,
222
+ "url": "/invitations",
223
+ "actions": [
224
+ [
225
+ "wait",
226
+ 900
227
+ ],
228
+ [
229
+ "click",
230
+ "#engageList .engageRow:first-child .linklike"
231
+ ],
232
+ [
233
+ "fill",
234
+ "#engageList .engageRow:first-child .mineJoinNote",
235
+ "I like the boring parts too: migrations and the deploy path."
236
+ ],
237
+ [
238
+ "wait",
239
+ 150
240
+ ]
241
+ ],
242
+ "expect": {
243
+ "visible": [
244
+ "#engageList .engageRow:first-child .mineJoinNote"
245
+ ],
246
+ "hidden": [
247
+ "#engageList .engageRow:first-child .linklike"
248
+ ],
249
+ "value": [
250
+ [
251
+ "#engageList .engageRow:first-child .mineJoinNote",
252
+ "I like the boring parts too: migrations and the deploy path."
253
+ ]
254
+ ]
255
+ }
256
+ },
257
+ "in-engagement-applied": {
258
+ "auth": true,
259
+ "url": "/invitations",
260
+ "actions": [
261
+ [
262
+ "wait",
263
+ 900
264
+ ],
265
+ [
266
+ "click",
267
+ "#engageList .engageRow:first-child .linklike"
268
+ ],
269
+ [
270
+ "fill",
271
+ "#engageList .engageRow:first-child .mineJoinNote",
272
+ "I like the boring parts too: migrations and the deploy path."
273
+ ],
274
+ [
275
+ "click",
276
+ "#engageList .engageRow:first-child .btn"
277
+ ],
278
+ [
279
+ "wait",
280
+ 400
281
+ ]
282
+ ],
283
+ "expect": {
284
+ "hidden": [
285
+ "#engageList .engageRow:first-child .mineJoinNote",
286
+ "#engageList .engageRow:first-child .linklike"
287
+ ],
288
+ "hasClass": [
289
+ [
290
+ "#engageList .engageRow:first-child .projMsg",
291
+ "ok"
292
+ ],
293
+ [
294
+ "#engageList .engageRow:first-child .btn",
295
+ "ghost"
296
+ ]
297
+ ],
298
+ "text": [
299
+ [
300
+ "#engageList .engageRow:first-child .btn",
301
+ "Applied"
302
+ ],
303
+ [
304
+ "#engageList .engageRow:first-child .projMsg",
305
+ "Applied. The project’s owner admits new builders; once approved, sign in to enter."
306
+ ],
307
+ [
308
+ "#engageList .engageRow:nth-child(2) .btn",
309
+ "Apply to join"
310
+ ]
311
+ ]
312
+ }
313
+ },
314
+ "in-guild-cards": {
315
+ "auth": true,
316
+ "url": "/invitations",
317
+ "actions": [
318
+ [
319
+ "wait",
320
+ 900
321
+ ],
322
+ [
323
+ "focus",
324
+ "#guildInviteList .guildRow:first-child .btn"
325
+ ],
326
+ [
327
+ "wait",
328
+ 200
329
+ ]
330
+ ],
331
+ "expect": {
332
+ "visible": [
333
+ "#mineInvites",
334
+ "#guildInviteList",
335
+ "#guildRequestList",
336
+ "#guildInviteList .guildRow:first-child .guildCount"
337
+ ],
338
+ "count": [
339
+ [
340
+ "#guildInviteList .guildRow",
341
+ 2
342
+ ],
343
+ [
344
+ "#guildRequestList .guildRow",
345
+ 2
346
+ ],
347
+ [
348
+ "#guildInviteList .guildRow .guildCount",
349
+ 2
350
+ ],
351
+ [
352
+ "#guildRequestList .guildRow .guildCount",
353
+ 0
354
+ ]
355
+ ],
356
+ "text": [
357
+ [
358
+ "#guildInviteList .guildRow:nth-child(1) .mineRow__name",
359
+ "You’re invited to join Open Hands"
360
+ ],
361
+ [
362
+ "#guildInviteList .guildRow:nth-child(2) .mineRow__name",
363
+ "You’re invited to join Quiet Room"
364
+ ],
365
+ [
366
+ "#guildInviteList .guildRow:nth-child(1) .guildCount__what",
367
+ "Your numbers count toward this guild’s rounded totals — even while your record is hidden or your account is private. They are never shown on their own: only inside totals rounded down to a band (10+, 20+, 50+ …) and counted once a week. Leave them out of any guild you’d rather not share them with."
368
+ ],
369
+ [
370
+ "#guildRequestList .guildRow:nth-child(1) .mineRow__name",
371
+ "Tomás Ek asked to join Night Shift"
372
+ ],
373
+ [
374
+ "#guildRequestList .guildRow:nth-child(2) .mineRow__name",
375
+ "@kai-lowe asked to join Night Shift"
376
+ ]
377
+ ],
378
+ "checked": "#guildInviteList .guildRow:first-child input[value=\"on\"]"
379
+ }
380
+ },
381
+ "in-guild-count-off": {
382
+ "auth": true,
383
+ "url": "/invitations",
384
+ "actions": [
385
+ [
386
+ "wait",
387
+ 900
388
+ ],
389
+ [
390
+ "click",
391
+ "#guildInviteList .guildRow:first-child .guildCount__opt:nth-child(2)"
392
+ ],
393
+ [
394
+ "wait",
395
+ 150
396
+ ]
397
+ ],
398
+ "expect": {
399
+ "checked": "#guildInviteList .guildRow:first-child input[value=\"off\"]",
400
+ "text": [
401
+ [
402
+ "#guildInviteList .guildRow:first-child .guildCount__what",
403
+ "Your numbers are left out of this guild’s totals, from its next weekly count."
404
+ ],
405
+ [
406
+ "#guildInviteList .guildRow:first-child .btn",
407
+ "Accept"
408
+ ]
409
+ ]
410
+ }
411
+ },
412
+ "in-guild-joined": {
413
+ "auth": true,
414
+ "url": "/invitations",
415
+ "actions": [
416
+ [
417
+ "wait",
418
+ 900
419
+ ],
420
+ [
421
+ "click",
422
+ "#guildInviteList .guildRow:first-child .guildCount__opt:nth-child(2)"
423
+ ],
424
+ [
425
+ "click",
426
+ "#guildInviteList .guildRow:first-child .btn"
427
+ ],
428
+ [
429
+ "wait",
430
+ 400
431
+ ]
432
+ ],
433
+ "expect": {
434
+ "hidden": [
435
+ "#guildInviteList .guildRow:first-child .btn.ghost + .btn"
436
+ ],
437
+ "hasClass": [
438
+ [
439
+ "#guildInviteList .guildRow:first-child .projMsg",
440
+ "ok"
441
+ ],
442
+ [
443
+ "#guildInviteList .guildRow:first-child .btn",
444
+ "ghost"
445
+ ]
446
+ ],
447
+ "text": [
448
+ [
449
+ "#guildInviteList .guildRow:first-child .btn",
450
+ "Joined"
451
+ ],
452
+ [
453
+ "#guildInviteList .guildRow:first-child .projMsg",
454
+ "You’ve joined Open Hands, and your numbers are left out of its totals."
455
+ ]
456
+ ]
457
+ }
458
+ }
459
+ },
460
+ "reducedMotion": {
461
+ "auth": true,
462
+ "actions": [
463
+ [
464
+ "click",
465
+ "#projTrig"
466
+ ],
467
+ [
468
+ "wait",
469
+ 100
470
+ ]
471
+ ]
472
+ }
473
+ }
@@ -84,7 +84,7 @@
84
84
  <li class="bandCell"><a class="bandT" href="/projects?view=mine">My projects</a></li>
85
85
  <!-- apex-only because /account is: it is served only where platform-identity
86
86
  runs, so a child instance loses the item whole (as on projects.html) -->
87
- <!--apex-only:start--><li class="bandCell"><a class="bandT" href="/account">Account</a></li><!--apex-only:end-->
87
+ <!--apex-only:start--><li class="bandCell"><a class="bandT" href="/invitations">Invitations</a></li><li class="bandCell"><a class="bandT" href="/account">Account</a></li><!--apex-only:end-->
88
88
  <!-- the honest hover target; assets/hub-bar.js upgrades the click to the POST -->
89
89
  <li class="bandCell"><a class="bandT signout" href="/api/bongos/auth/logout">Sign out</a></li>
90
90
  </ul>