@bongos/core 1.19.424 → 1.19.425
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.
- package/.bongos-core.json +25 -20
- package/docs/copy-inventory.md +183 -183
- package/docs/copy-registry.json +233 -233
- package/docs/design/mocks/hub/wizard.html +421 -0
- package/docs/design/projects-hub-direction-v2.md +26 -0
- package/docs/module-api-changelog.md +2 -0
- package/modules/ui-design/kit/serve.js +3 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/public-landing/assets/cosmos.css +63 -0
- package/public-landing/projects.html +207 -199
- package/public-landing/projects.probes.json +7 -1
- package/public-landing/projects.states.json +7 -1
- package/src/module-api.js +1 -1
- package/tests/projects_hub.mjs +56 -0
|
@@ -67,14 +67,19 @@
|
|
|
67
67
|
:root[data-mode="dark"] .bongos{--skin-hi:#fdf7ea;--skin-mid:#efe1c8;--skin-lo:#c3ae90;--drum-shadow:#000;}
|
|
68
68
|
@media (prefers-color-scheme:dark){:root:not([data-mode="light"]) .bongos{--skin-hi:#fdf7ea;--skin-mid:#efe1c8;--skin-lo:#c3ae90;--drum-shadow:#000;}}
|
|
69
69
|
|
|
70
|
-
/* ── the create wizard (task 1002763, absorbed from /create)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
/* ── the create wizard (task 1002763, absorbed from /create), in the world
|
|
71
|
+
(task 1003346; direction record §15, the pick: v1 the rail above) ──────
|
|
72
|
+
Tokens, the reset, the sky and the shared vocabulary (.card, .btn, .steps)
|
|
73
|
+
come from cosmos.css, which draws the wizard's FRAME in the world's grammar
|
|
74
|
+
by scope (#view-new: no card ground, the six-step strip as the lifecycle
|
|
75
|
+
rail, the doors as pills); what lands here is the wizard's own structure —
|
|
76
|
+
fields on one bottom hairline, the choices as cells of one band, the review
|
|
77
|
+
as a ledger, the human steps as a numbered ledger, the standup strip as the
|
|
78
|
+
same rail. No literal color anywhere: every surface is a cosmos token or a
|
|
79
|
+
color-mix over one (C1/C2/C4); no plate, no box shadow, no glow — halos are
|
|
80
|
+
outlines. Naming: the wizard's field wrapper is .wizField — cosmos owns
|
|
81
|
+
.field (the orb map) — and its done checklist is .humanSteps — cosmos owns
|
|
82
|
+
.steps (the five-beat rail). Its inputs are scoped to the view so the glass
|
|
78
83
|
search pills (#mapQ, #mineQ) keep their own look. */
|
|
79
84
|
.panel{display:none;}
|
|
80
85
|
.panel.on{display:block;animation:fadeStep .3s ease both;}
|
|
@@ -82,246 +87,249 @@
|
|
|
82
87
|
/* show() moves focus to each panel's h1 for keyboard/SR context — keep the
|
|
83
88
|
focus, lose the ring (a black rectangle around a heading; owner walk) */
|
|
84
89
|
h1[tabindex="-1"]:focus:not(:focus-visible){outline:none;}
|
|
85
|
-
/* the done step needs the full
|
|
86
|
-
|
|
90
|
+
/* the done step needs the full width — the split collapses and the bongo
|
|
91
|
+
pair steps aside for the checklist */
|
|
87
92
|
.createSplit.wizDone{display:block;}
|
|
88
93
|
.createSplit.wizDone .bongoCell{display:none;}
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
95
|
+
/* a field: the label in the label face above, the input on one bottom
|
|
96
|
+
hairline that takes ink on focus (the bar's search field), the hint under
|
|
97
|
+
it in the status ink */
|
|
98
|
+
.wizField{display:block;margin:0 0 22px;}
|
|
99
|
+
.wizField>span{display:block;font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);margin-bottom:2px;}
|
|
100
|
+
.wizField small{font-family:var(--font-body);font-size:12.5px;letter-spacing:0;text-transform:none;color:var(--ink-faint);}
|
|
93
101
|
/* the About step's description is prose, so it is a textarea — it wears the
|
|
94
102
|
same control skin as every other field (task 1002334), never its own */
|
|
95
103
|
#view-new input[type=text], #view-new textarea{
|
|
96
|
-
width:100%;font-family:var(--font-body);font-size:17px;font-weight:
|
|
97
|
-
background:
|
|
98
|
-
transition:border-color .15s ease
|
|
104
|
+
width:100%;min-height:44px;font-family:var(--font-body);font-size:17px;font-weight:400;color:var(--ink);
|
|
105
|
+
background:none;border:0;border-bottom:1px solid var(--rule);border-radius:0;padding:8px 0;outline:none;
|
|
106
|
+
transition:border-color .15s ease;
|
|
99
107
|
}
|
|
100
|
-
#view-new textarea{font-size:15.5px;line-height:1.5;resize:vertical;min-height:
|
|
108
|
+
#view-new textarea{font-size:15.5px;line-height:1.5;resize:vertical;min-height:64px;display:block;}
|
|
101
109
|
/* no fade toward the card — a 70% mix washed placeholders to 2.89:1 (task 1002749) */
|
|
102
|
-
#view-new input[type=text]::placeholder, #view-new textarea::placeholder{color:var(--ink-faint);font-weight:
|
|
103
|
-
#view-new input[type=text]:focus, #view-new textarea:focus{border-color:var(--
|
|
104
|
-
#view-new input[type=text].bad{border-color:var(--err);}
|
|
105
|
-
.hint{font-size:
|
|
110
|
+
#view-new input[type=text]::placeholder, #view-new textarea::placeholder{color:var(--ink-faint);font-weight:400;}
|
|
111
|
+
#view-new input[type=text]:focus, #view-new textarea:focus{border-bottom-color:var(--ink);box-shadow:none;}
|
|
112
|
+
#view-new input[type=text].bad{border-bottom-color:var(--err);}
|
|
113
|
+
.hint{font-size:13.5px;font-weight:400;color:var(--ink-faint);line-height:1.45;margin-top:8px;min-height:18px;}
|
|
106
114
|
.hint.ok{color:var(--ok);}
|
|
107
115
|
.hint.err{color:var(--err);}
|
|
108
|
-
.hint code{font-family:var(--font-mono);font-size:12.5px;background:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
.choice:hover{border-color:var(--rule);transform:
|
|
119
|
-
.choice
|
|
120
|
-
.choice
|
|
121
|
-
.choice
|
|
122
|
-
.choice
|
|
123
|
-
.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
116
|
+
.hint code{font-family:var(--font-mono);font-size:12.5px;background:none;border-radius:0;padding:0;color:var(--ink-soft);}
|
|
117
|
+
.hint strong{color:var(--ink);font-weight:500;}
|
|
118
|
+
|
|
119
|
+
.row2{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;}
|
|
120
|
+
|
|
121
|
+
/* the choice (start fresh / adopt): two cells of one band on hairlines, the
|
|
122
|
+
chosen one carrying the dot — the dot is the mark, so the icon leaves */
|
|
123
|
+
.choices{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin:0 0 22px;}
|
|
124
|
+
.choice{display:grid;align-content:start;justify-items:start;text-align:left;cursor:pointer;background:none;border:0;border-left:1px solid var(--rule-soft);border-radius:0;padding:20px 22px 22px;font-family:var(--font-body);color:var(--ink-soft);transition:color .15s ease;}
|
|
125
|
+
.choice:first-child{border-left:0;padding-left:0;}
|
|
126
|
+
.choice:hover{border-color:var(--rule-soft);transform:none;}
|
|
127
|
+
.choice:hover b{color:var(--ink);}
|
|
128
|
+
.choice[aria-pressed=true]{border-color:var(--rule-soft);background:none;box-shadow:none;}
|
|
129
|
+
.choice svg{display:none;}
|
|
130
|
+
.choice b{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:500;color:var(--ink);margin-bottom:6px;}
|
|
131
|
+
.choice b::before{content:"";width:7px;height:7px;border-radius:50%;border:1px solid var(--rule);background:var(--bg);flex:none;}
|
|
132
|
+
.choice[aria-pressed=true] b::before{background:var(--accent);border-color:var(--accent);outline:4px solid color-mix(in srgb,var(--accent) 22%,transparent);}
|
|
133
|
+
.choice p{font-size:14px;font-weight:400;color:var(--ink-soft);line-height:1.5;max-width:36ch;}
|
|
134
|
+
.choice p strong{color:var(--ink);font-weight:500;}
|
|
135
|
+
/* the reassurance is a clause, not a tinted box */
|
|
136
|
+
.reassure{display:none;font-size:13.5px;font-weight:400;color:var(--ink-soft);line-height:1.5;margin:0 0 22px;max-width:62ch;}
|
|
128
137
|
.reassure.on{display:block;}
|
|
138
|
+
.reassure p{margin:0 0 10px;}
|
|
129
139
|
|
|
130
|
-
/* one-click deep
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
140
|
+
/* the GitHub doors: one-click deep links to GitHub's own pages (the visitor
|
|
141
|
+
acts in GitHub's UI; we fill in the blanks). GitHub's brand black used to
|
|
142
|
+
be pinned here; in the world every GitHub door is the INVERTED pill the
|
|
143
|
+
gate's sign-in wears — ink on the ground — one grammar, still not the
|
|
144
|
+
accent, so a re-brand never paints it. */
|
|
134
145
|
.ghbtn{
|
|
135
|
-
display:inline-flex;align-items:center;gap:
|
|
136
|
-
background
|
|
137
|
-
font-family:var(--font-body);font-weight:
|
|
138
|
-
box-shadow:
|
|
139
|
-
transition:transform .12s ease, background .12s ease;
|
|
146
|
+
display:inline-flex;align-items:center;justify-content:center;gap:10px;text-decoration:none;cursor:pointer;
|
|
147
|
+
min-height:44px;background:var(--ink);color:var(--bg);border:1px solid var(--ink);border-radius:999px;
|
|
148
|
+
font-family:var(--font-body);font-weight:500;font-size:15px;padding:0 22px;
|
|
149
|
+
box-shadow:none;transition:background .15s ease;
|
|
140
150
|
}
|
|
141
|
-
.ghbtn:hover{background
|
|
142
|
-
.ghbtn:active{transform:
|
|
143
|
-
.ghbtn .gh{width:
|
|
144
|
-
.humanSteps .ghbtn{font-size:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
151
|
+
.ghbtn:hover{background:color-mix(in srgb,var(--ink) 88%,var(--bg));transform:none;}
|
|
152
|
+
.ghbtn:active{transform:none;}
|
|
153
|
+
.ghbtn .gh{width:17px;height:17px;fill:currentColor;}
|
|
154
|
+
.humanSteps .ghbtn{min-height:40px;font-size:14.5px;padding:0 18px;margin-top:12px;}
|
|
155
|
+
|
|
156
|
+
/* the doors under a step: back on the left, the primary on the right; the
|
|
157
|
+
About step's skip beside its next (task 1002334) wraps rather than crushes */
|
|
158
|
+
.nav{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:34px;}
|
|
149
159
|
.navPair{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
.review{list-style:none;
|
|
154
|
-
.review li{display:
|
|
155
|
-
.review
|
|
156
|
-
.review .k{
|
|
157
|
-
.review .
|
|
158
|
-
.review .v
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
.humanSteps{list-style:none;counter-reset:hs;margin-top:
|
|
160
|
+
|
|
161
|
+
/* the review: a ledger of what is about to be filed — label · value rows on
|
|
162
|
+
soft hairlines, the last row closed */
|
|
163
|
+
.review{list-style:none;display:grid;grid-template-columns:172px 1fr;gap:0 22px;border:0;border-radius:0;overflow:visible;margin:0 0 6px;}
|
|
164
|
+
.review li{display:contents;}
|
|
165
|
+
.review .k,.review .v{border-top:1px solid var(--rule-soft);padding:13px 0;min-width:0;}
|
|
166
|
+
.review li:last-child .k,.review li:last-child .v{border-bottom:1px solid var(--rule-soft);}
|
|
167
|
+
.review .k{font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;font-weight:400;color:var(--ink-faint);padding-top:16px;}
|
|
168
|
+
.review .v{font-size:15px;font-weight:400;line-height:1.5;color:var(--ink);text-align:left;overflow-wrap:anywhere;}
|
|
169
|
+
.review .v code{font-family:var(--font-mono);font-size:13px;background:none;border-radius:0;padding:0;color:var(--ink-soft);}
|
|
170
|
+
|
|
171
|
+
/* ── done / human steps: the tick leaves (the rail says filed), the title
|
|
172
|
+
stands in the display voice, the steps only you can play are a numbered
|
|
173
|
+
ledger on soft hairlines — the finished one reads DONE in the ok ink, a
|
|
174
|
+
locked one keeps muted TOKENS, never subtree opacity (task 1002751) ── */
|
|
175
|
+
.doneHead{display:block;margin-bottom:8px;}
|
|
176
|
+
.doneHead .tick{display:none;}
|
|
177
|
+
.stepsHead{font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;font-weight:400;color:var(--ink-faint);margin:40px 0 0;}
|
|
178
|
+
.humanSteps{list-style:none;counter-reset:hs;margin-top:16px;max-width:680px;}
|
|
169
179
|
.humanSteps>li{
|
|
170
|
-
position:
|
|
171
|
-
padding:16px 18px
|
|
180
|
+
display:grid;grid-template-columns:44px 1fr;gap:0 16px;position:static;background:none;border:0;border-top:1px solid var(--rule-soft);border-radius:0;
|
|
181
|
+
padding:16px 0 18px;margin:0;counter-increment:hs;
|
|
172
182
|
}
|
|
183
|
+
.humanSteps>li:last-child{border-bottom:1px solid var(--rule-soft);}
|
|
184
|
+
.humanSteps>li>*{grid-column:2;min-width:0;}
|
|
173
185
|
.humanSteps>li::before{
|
|
174
|
-
content:counter(hs);
|
|
175
|
-
background:var(--
|
|
176
|
-
|
|
186
|
+
content:counter(hs,decimal-leading-zero);grid-column:1;grid-row:1;position:static;width:auto;height:auto;border-radius:0;
|
|
187
|
+
background:none;color:var(--ink-faint);font-family:var(--label-face);font-weight:400;font-size:var(--label-size);letter-spacing:var(--label-space);
|
|
188
|
+
display:block;padding-top:4px;
|
|
177
189
|
}
|
|
178
|
-
.humanSteps b{font-size:
|
|
179
|
-
.humanSteps p{font-size:
|
|
190
|
+
.humanSteps b{display:block;font-size:16px;font-weight:500;color:var(--ink);}
|
|
191
|
+
.humanSteps p{font-size:14px;font-weight:400;color:var(--ink-soft);line-height:1.5;margin-top:4px;max-width:56ch;}
|
|
180
192
|
/* a repo the platform already handled is named as a plain inline link (task 1002855) —
|
|
181
193
|
the .ghbtn treatment reads as an action to take, and there is nothing here to do */
|
|
182
|
-
.humanSteps p a{color:var(--
|
|
183
|
-
.humanSteps p a:hover{
|
|
194
|
+
.humanSteps p a{color:var(--ink);font-weight:400;text-decoration:underline;text-underline-offset:3px;display:inline-block;padding:3px 0;min-height:24px;line-height:18px;}
|
|
195
|
+
.humanSteps p a:hover{color:var(--ink);}
|
|
184
196
|
/* live checklist states (task 1002694): a step the platform has verified done, and a
|
|
185
197
|
step that can't be performed yet (its prerequisite — usually the domain — is missing) */
|
|
186
|
-
.humanSteps>li.sdone{border-color:
|
|
187
|
-
.humanSteps>li.sdone::before{content:"
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
.humanSteps>li.slocked{border-color:color-mix(in srgb,var(--line) 55%,var(--bg-card));}
|
|
198
|
+
.humanSteps>li.sdone{border-color:var(--rule-soft);background:none;}
|
|
199
|
+
.humanSteps>li.sdone::before{content:"done";text-transform:uppercase;background:none;color:var(--ok);}
|
|
200
|
+
.humanSteps>li.sdone b{color:var(--ink-soft);}
|
|
201
|
+
.humanSteps>li.slocked{border-color:var(--rule-soft);}
|
|
191
202
|
.humanSteps>li.slocked b{color:var(--ink-soft);}
|
|
192
203
|
.humanSteps>li.slocked p{color:var(--ink-faint);}
|
|
193
204
|
.humanSteps>li.slocked::before{color:var(--ink-faint);}
|
|
194
205
|
.humanSteps details{margin-top:10px;}
|
|
195
|
-
.humanSteps summary{cursor:pointer;font-weight:
|
|
206
|
+
.humanSteps summary{cursor:pointer;font-weight:400;font-size:13.5px;color:var(--ink-soft);}
|
|
207
|
+
.humanSteps summary:hover{color:var(--ink);}
|
|
196
208
|
.humanSteps details p{margin-top:8px;}
|
|
197
|
-
.kv{
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
.kv .kk{font-weight:700;color:var(--ink-faint);flex:0 0 auto;}
|
|
202
|
-
.kv code{font-family:var(--font-mono);font-size:12px;color:var(--accent-deep);word-break:break-all;flex:1;}
|
|
209
|
+
.kv{display:flex;align-items:center;gap:10px;margin-top:8px;background:none;border:0;border-top:1px solid var(--rule-soft);border-radius:0;padding:8px 0;font-size:12.5px;}
|
|
210
|
+
.kv .kk{font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;font-weight:400;color:var(--ink-faint);flex:0 0 auto;}
|
|
211
|
+
.kv code{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-soft);word-break:break-all;flex:1;}
|
|
203
212
|
.copy{
|
|
204
|
-
flex:0 0 auto;cursor:pointer;border-radius:
|
|
205
|
-
font-family:var(--font-body);font-size:
|
|
206
|
-
transition:
|
|
213
|
+
flex:0 0 auto;cursor:pointer;min-height:28px;border-radius:999px;background:none;border:1px solid var(--rule);
|
|
214
|
+
font-family:var(--font-body);font-size:12.5px;font-weight:400;color:var(--ink-soft);padding:0 12px;
|
|
215
|
+
transition:border-color .12s ease,color .12s ease;
|
|
207
216
|
}
|
|
208
|
-
.copy:hover{border-color:var(--
|
|
209
|
-
.copy.did{background:
|
|
210
|
-
.samePath{font-size:
|
|
217
|
+
.copy:hover{border-color:var(--ink-faint);color:var(--ink);}
|
|
218
|
+
.copy.did{background:none;border-color:var(--ok);color:var(--ok);}
|
|
219
|
+
.samePath{font-size:13px;font-weight:400;color:var(--ink-faint);margin-top:18px;}
|
|
211
220
|
#liveProgress{margin-top:4px;}
|
|
212
221
|
|
|
213
|
-
/* ──
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
.prog
|
|
219
|
-
.prog .stages
|
|
220
|
-
.prog .stages li:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
.prog .stages li.
|
|
228
|
-
.prog .sdot{
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
.prog .
|
|
233
|
-
.prog .
|
|
234
|
-
.prog
|
|
235
|
-
.prog .stages li.
|
|
236
|
-
content:"";width:8px;height:8px;border-radius:50%;background:var(--sea-ink);
|
|
237
|
-
animation:beatPulse 1.2s ease-in-out infinite;
|
|
238
|
-
}
|
|
239
|
-
/* idle labels match cosmos's .strip .slbl — the 55% sea mix washed to 4.15:1 in dark */
|
|
240
|
-
.prog .slbl{font-size:12px;font-weight:700;color:var(--ink-faint);}
|
|
241
|
-
.prog .stages li.now .slbl,.prog .stages li.done .slbl{color:color-mix(in srgb,var(--sea) 40%,var(--ink));}
|
|
242
|
-
.prog .pnote{text-align:center;font-size:13px;font-weight:600;color:color-mix(in srgb,var(--sea) 45%,var(--ink-soft));min-height:18px;}
|
|
243
|
-
.prog .pnote a{color:var(--link-ink);font-weight:700;text-decoration:none;}
|
|
244
|
-
.prog .pnote a:hover{text-decoration:underline;}
|
|
245
|
-
.prog.isLive{background:linear-gradient(180deg,color-mix(in srgb,var(--ok) 8%,var(--bg-card)) 0%,var(--bg-card) 100%);border-color:color-mix(in srgb,var(--ok) 30%,var(--bg-card));}
|
|
246
|
-
.prog.isLive .stages li.done:not(:first-child)::before{background:var(--ok);}
|
|
222
|
+
/* ── the standup strip (task 2083), drawn as the lifecycle rail (DESIGN.md):
|
|
223
|
+
three hairlines, a 7px dot, one lit step — no plate, no connector, no
|
|
224
|
+
pulse. The vocabulary is the page's fixed one (F22): filed / standing it
|
|
225
|
+
up / live; isLive in the ok ink, isErr in the error ink, flowDown neutral.
|
|
226
|
+
The marks mirror cosmos's .strip on the derived tokens (task 1002751). ── */
|
|
227
|
+
.prog{background:none;border:0;border-radius:0;padding:0;margin-top:22px;max-width:520px;}
|
|
228
|
+
.prog .stages{display:grid;grid-template-columns:repeat(3,1fr);gap:0 10px;list-style:none;margin:0;}
|
|
229
|
+
.prog .stages li{display:block;position:relative;border-top:1px solid var(--rule);padding:12px 0 0;}
|
|
230
|
+
.prog .stages li:not(:first-child)::before{content:none;}
|
|
231
|
+
.prog .sdot{position:absolute;top:-4px;left:0;width:7px;height:7px;border:1px solid var(--rule);border-radius:50%;background:var(--bg);display:block;}
|
|
232
|
+
.prog .stages li.done{border-top-color:var(--ink-soft);}
|
|
233
|
+
.prog .stages li.done .sdot{border-color:var(--ink-soft);background:var(--ink-soft);}
|
|
234
|
+
.prog .stages li.done .sdot::after{content:none;}
|
|
235
|
+
.prog .stages li.now{border-top-color:var(--accent);}
|
|
236
|
+
.prog .stages li.now .sdot{border-color:var(--accent);background:var(--accent);outline:4px solid color-mix(in srgb,var(--accent) 22%,transparent);}
|
|
237
|
+
.prog .stages li.now .sdot::after{content:none;animation:none;}
|
|
238
|
+
.prog .slbl{display:block;font-family:var(--label-face);font-size:var(--label-size);font-weight:400;letter-spacing:var(--label-space);text-transform:uppercase;line-height:1.3;color:var(--ink-faint);}
|
|
239
|
+
.prog .stages li.now .slbl{color:var(--ink);}
|
|
240
|
+
.prog .stages li.done .slbl{color:var(--ink-soft);}
|
|
241
|
+
.prog .pnote{text-align:left;font-size:13px;font-weight:400;line-height:1.45;color:var(--ink-soft);margin:8px 0 0;min-height:0;}
|
|
242
|
+
.prog .pnote a{color:var(--ink);font-weight:400;text-decoration:underline;text-underline-offset:3px;display:inline-block;padding:3px 0;min-height:24px;line-height:18px;}
|
|
243
|
+
.prog.isLive{background:none;border-color:transparent;}
|
|
244
|
+
.prog.isLive .stages li.done{border-top-color:var(--ok);}
|
|
247
245
|
.prog.isLive .stages li.done .sdot{border-color:var(--ok);background:var(--ok);}
|
|
248
246
|
.prog.isLive .slbl{color:var(--ok);}
|
|
249
|
-
.prog.isLive .stages li.done .slbl{color:
|
|
250
|
-
.prog.isLive .pnote{color:
|
|
251
|
-
.prog.isErr{background:
|
|
247
|
+
.prog.isLive .stages li.done .slbl{color:var(--ok);}
|
|
248
|
+
.prog.isLive .pnote{color:var(--ok);font-size:13.5px;}
|
|
249
|
+
.prog.isErr{background:none;border-color:transparent;}
|
|
250
|
+
.prog.isErr .stages li.now{border-top-color:var(--err);}
|
|
251
|
+
.prog.isErr .stages li.now .sdot{border-color:var(--err);background:var(--err);outline:4px solid color-mix(in srgb,var(--err) 22%,transparent);}
|
|
252
252
|
.prog.isErr .pnote{color:var(--err);}
|
|
253
|
-
/* teardown's calm neutral (F22)
|
|
254
|
-
|
|
255
|
-
.prog.flowDown{border-color:var(--
|
|
256
|
-
.prog.flowDown .stages li:
|
|
257
|
-
.prog.flowDown .stages li.done:not(:first-child)::before{background:var(--ink-faint);}
|
|
258
|
-
.prog.flowDown .sdot{border-color:var(--line);}
|
|
259
|
-
.prog.flowDown .stages li.done .sdot{border-color:var(--ink-faint);background:var(--ink-faint);}
|
|
260
|
-
.prog.flowDown .stages li.now .sdot{border-color:var(--ink-soft);}
|
|
261
|
-
.prog.flowDown .stages li.now .sdot::after{background:var(--ink-soft);}
|
|
253
|
+
/* teardown's calm neutral (F22), the same vocabulary cosmos's .strip.flowDown speaks */
|
|
254
|
+
.prog.flowDown .stages li.done{border-top-color:var(--ink-soft);}
|
|
255
|
+
.prog.flowDown .stages li.now{border-top-color:var(--ink-soft);}
|
|
256
|
+
.prog.flowDown .stages li.now .sdot{border-color:var(--ink-soft);background:var(--ink-soft);outline:none;}
|
|
262
257
|
.prog.flowDown .slbl{color:var(--ink-faint);}
|
|
263
258
|
.prog.flowDown .stages li.now .slbl,.prog.flowDown .stages li.done .slbl{color:var(--ink-soft);}
|
|
264
259
|
.again{
|
|
265
|
-
display:inline-block;margin-top:14px;font-size:
|
|
260
|
+
display:inline-block;margin-top:14px;font-size:13.5px;font-weight:400;color:var(--ink-soft);
|
|
266
261
|
background:none;border:none;cursor:pointer;font-family:var(--font-body);text-decoration:underline;
|
|
267
262
|
text-underline-offset:3px;padding:6px 2px;min-height:24px;
|
|
268
263
|
}
|
|
269
|
-
.again:hover{color:var(--
|
|
270
|
-
/* every fold on this page is a real target: these summaries are
|
|
264
|
+
.again:hover{color:var(--ink);}
|
|
265
|
+
/* every fold on this page is a real target: these summaries are 13–14.5px text
|
|
271
266
|
and measured under the 24px minimum (WCAG 2.2 target size, AA). Not
|
|
272
267
|
display:flex — that would drop the disclosure marker every fold shows today. */
|
|
273
268
|
summary{min-height:24px;padding:3px 0;}
|
|
274
269
|
|
|
275
|
-
/* the
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
.addrConfirm
|
|
270
|
+
/* the address step (task 1002704): the assigned address as a fact in the
|
|
271
|
+
display voice — the address itself large, its clause under it in the body
|
|
272
|
+
face — no box; the alternatives sit under it in the open (task 1002898 N8) */
|
|
273
|
+
.addrConfirm{border:0;border-radius:0;padding:0;background:none;margin:0 0 22px;}
|
|
274
|
+
.addrBig{font-family:var(--font-body);font-weight:400;font-size:14.5px;letter-spacing:0;line-height:1.5;color:var(--ink-soft);overflow-wrap:anywhere;}
|
|
275
|
+
.addrBig code{display:block;font-family:var(--font-display);font-weight:300;font-size:clamp(24px,3vw,36px);letter-spacing:-.03em;line-height:1.1;background:none;border-radius:0;padding:0;margin:0 0 6px;color:var(--ink);word-break:normal;}
|
|
276
|
+
.addrConfirm.optedOut{border-color:transparent;background:none;}
|
|
277
|
+
.addrConfirm.optedOut .addrBig{font-family:var(--font-display);font-weight:300;font-size:clamp(22px,2.6vw,32px);letter-spacing:-.03em;line-height:1.1;color:var(--ink-soft);}
|
|
279
278
|
.addrConfirm.optedOut>p{color:var(--ink-faint);}
|
|
280
279
|
/* the handle is not free (task 1002898 N10) — a refusal must not be painted into the
|
|
281
|
-
green confirmation
|
|
282
|
-
.addrConfirm.unavailable{border-color:
|
|
283
|
-
.addrConfirm.unavailable .addrBig{color:var(--err);}
|
|
284
|
-
.
|
|
285
|
-
.
|
|
286
|
-
.addrConfirm
|
|
287
|
-
.addrConfirm details{
|
|
288
|
-
.addrConfirm
|
|
289
|
-
.
|
|
290
|
-
.addrOpt{
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
280
|
+
green confirmation that means "yours" */
|
|
281
|
+
.addrConfirm.unavailable{border-color:transparent;background:none;}
|
|
282
|
+
.addrConfirm.unavailable .addrBig,.addrConfirm.unavailable .addrBig code{color:var(--err);}
|
|
283
|
+
.addrConfirm>p{font-size:13.5px;font-weight:400;color:var(--ink-soft);line-height:1.5;margin-top:8px;max-width:62ch;}
|
|
284
|
+
.addrConfirm details{margin-top:14px;}
|
|
285
|
+
.addrConfirm summary{cursor:pointer;display:inline-flex;align-items:center;font-size:14.5px;font-weight:400;color:var(--ink-soft);}
|
|
286
|
+
.addrConfirm summary:hover,.addrConfirm details[open] summary{color:var(--ink);}
|
|
287
|
+
.addrConfirm details .inner{margin-top:6px;}
|
|
288
|
+
.addrOpt{display:flex;align-items:flex-start;gap:12px;margin-top:14px;font-size:14px;font-weight:400;color:var(--warn);line-height:1.5;cursor:pointer;}
|
|
289
|
+
.addrOpt input{margin-top:4px;accent-color:var(--accent);}
|
|
290
|
+
|
|
291
|
+
/* GitHub repo picker (task 1002099): hairline rows, the chosen one marked on
|
|
292
|
+
the accent; the private badge in the label face */
|
|
294
293
|
#ghConnect .btn{margin-top:4px;}
|
|
295
|
-
.ghlist{margin-top:
|
|
294
|
+
.ghlist{margin-top:4px;max-height:220px;overflow-y:auto;border:0;border-top:1px solid var(--rule);border-radius:0;background:none;}
|
|
296
295
|
.ghlist:empty{display:none;}
|
|
297
|
-
|
|
298
|
-
.ghrow{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,transparent);padding:9px 12px;font:inherit;font-size:13.5px;color:var(--ink);cursor:pointer;}
|
|
296
|
+
.ghrow{display:flex;align-items:center;gap:8px;width:100%;min-height:40px;text-align:left;background:none;border:0;border-bottom:1px solid var(--rule-soft);padding:10px 0;font:inherit;font-size:14px;color:var(--ink);cursor:pointer;}
|
|
299
297
|
.ghrow:last-child{border-bottom:0;}
|
|
300
|
-
.ghrow:hover{background:
|
|
301
|
-
.ghrow[aria-current=true]{background:
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
.tpill
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
.tpill:hover{border-color:var(--
|
|
315
|
-
.tpill[aria-pressed=true]{background:
|
|
316
|
-
.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
.typeCard
|
|
320
|
-
.typeCard p{font-size:13.5px;font-weight:500;color:var(--ink-soft);line-height:1.55;}
|
|
298
|
+
.ghrow:hover{background:none;text-decoration:underline;text-underline-offset:3px;}
|
|
299
|
+
.ghrow[aria-current=true]{background:none;box-shadow:none;border-left:2px solid var(--accent);padding-left:10px;font-weight:500;}
|
|
300
|
+
.ghrow .priv{margin-left:auto;font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;font-weight:400;color:var(--ink-soft);background:none;border-radius:0;padding:0;}
|
|
301
|
+
|
|
302
|
+
/* the type declaration (task 1002772) as hairline cells of one band (the
|
|
303
|
+
Projects band's grammar): the chosen cell carries the dot; its description
|
|
304
|
+
is a clause under the band, no tinted card. The team question wears the
|
|
305
|
+
same band. --type-acc stays a component-scoped custom property (C1). */
|
|
306
|
+
.typeCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin:0 0 14px;}
|
|
307
|
+
.tpill{display:flex;align-items:center;gap:10px;cursor:pointer;text-align:left;font-family:var(--font-body);font-weight:500;font-size:15px;color:var(--ink);
|
|
308
|
+
background:none;border:0;border-left:1px solid var(--rule-soft);border-radius:0;padding:16px 18px;min-height:56px;transition:color .12s ease;}
|
|
309
|
+
.tpill:first-child{border-left:0;padding-left:0;}
|
|
310
|
+
.tpill::before{content:"";width:7px;height:7px;border-radius:50%;border:1px solid var(--rule);background:var(--bg);flex:none;}
|
|
311
|
+
.tpill:hover{border-color:var(--rule-soft);color:var(--ink);}
|
|
312
|
+
.tpill:hover::before{border-color:var(--ink-faint);}
|
|
313
|
+
.tpill[aria-pressed=true]{background:none;border-color:var(--rule-soft);color:var(--ink);}
|
|
314
|
+
.tpill[aria-pressed=true]::before{background:var(--accent);border-color:var(--accent);outline:4px solid color-mix(in srgb,var(--accent) 22%,transparent);}
|
|
315
|
+
.typeCard{border:0;border-radius:0;padding:4px 0 0;margin-bottom:6px;background:none;}
|
|
316
|
+
.typeCard b{display:block;font-family:var(--font-body);font-size:15px;font-weight:500;color:var(--ink);margin-bottom:4px;}
|
|
317
|
+
.typeCard p{font-size:14px;font-weight:400;color:var(--ink-soft);line-height:1.5;max-width:62ch;}
|
|
321
318
|
|
|
322
319
|
/* 840px matches cosmos's createSplit collapse, the breakpoint the old /create
|
|
323
|
-
used (860) — the
|
|
324
|
-
@media (max-width:840px){
|
|
320
|
+
used (860) — the bands stack their cells on hairlines, the ledger folds */
|
|
321
|
+
@media (max-width:840px){
|
|
322
|
+
.row2,.choices{grid-template-columns:1fr;}
|
|
323
|
+
.choice{border-left:0;padding-left:0;border-top:1px solid var(--rule-soft);}
|
|
324
|
+
.choice:first-child{border-top:0;}
|
|
325
|
+
.typeCards{grid-template-columns:1fr;}
|
|
326
|
+
.tpill{border-left:0;padding-left:0;border-top:1px solid var(--rule-soft);}
|
|
327
|
+
.tpill:first-child{border-top:0;}
|
|
328
|
+
.review{grid-template-columns:1fr;gap:0;}
|
|
329
|
+
.review .k{padding-bottom:0;}
|
|
330
|
+
.review .v{border-top:0;padding-top:6px;}
|
|
331
|
+
.review li:last-child .k{border-bottom:0;}
|
|
332
|
+
}
|
|
325
333
|
|
|
326
334
|
</style>
|
|
327
335
|
</head>
|
|
@@ -1005,9 +1013,9 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1005
1013
|
<p class="lede">One tap files the request and the platform starts standing your project up — server, database, address. Here's the beat you're about to drop:</p>
|
|
1006
1014
|
<ul class="review" id="reviewList"></ul>
|
|
1007
1015
|
<div class="alert" id="createAlert" role="alert"></div>
|
|
1008
|
-
<div class="nav"
|
|
1016
|
+
<div class="nav">
|
|
1017
|
+
<button type="button" class="btn ghost" data-back="5">← Back</button>
|
|
1009
1018
|
<button type="button" class="btn big" id="doCreate">Create my project</button>
|
|
1010
|
-
<button type="button" class="btn ghost" data-back="5" style="align-self:flex-start;margin-top:10px;">← Back</button>
|
|
1011
1019
|
</div>
|
|
1012
1020
|
<p class="finePrint">This files the request; the control plane does the real standup and nothing touches servers from this page. You'll get the few steps only you can do right after.</p>
|
|
1013
1021
|
</section>
|
|
@@ -1022,7 +1030,7 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1022
1030
|
<!-- the STABLE live region: the strip inside is rebuilt every 5s tick,
|
|
1023
1031
|
and a live region that is itself replaced never announces -->
|
|
1024
1032
|
<div id="liveProgress" role="status" aria-live="polite"></div>
|
|
1025
|
-
<h2
|
|
1033
|
+
<h2 class="stepsHead">Your steps — the parts only you can play</h2>
|
|
1026
1034
|
<ol class="humanSteps" id="humanSteps"></ol>
|
|
1027
1035
|
<p class="samePath">These are the same steps however a project is created — nothing here is special to this page.</p>
|
|
1028
1036
|
</section>
|
|
@@ -131,6 +131,12 @@
|
|
|
131
131
|
"expect": {"text":[["#mJoinMsg","Saved. The project restarts to apply it."],["#mName","demo"]],"checked":"input[name=\"mJoinPick\"][value=\"apply\"]","visible":["#mOrb .worldOrb","#mFacts .ledger .k"]} },
|
|
132
132
|
{ "name": "manage flows: the ender asks for the name typed back, queues the teardown, and the page re-reads the project as queued", "auth": true, "width": 1440, "url": "/projects?view=manage&id=105",
|
|
133
133
|
"steps": [["wait",900],["click","[data-del-ask]"],["wait",200],["fill","#mDelName","mooring"],["wait",100],["click","[data-del-yes]"],["wait",900]],
|
|
134
|
-
"expect": {"text":[["#mDel .addr","A teardown is queued for this project."],["#mName","mooring"]],"hidden":["#mDelName","[data-del-ask]"],"visible":["#mStrip .strip.flowDown"]} }
|
|
134
|
+
"expect": {"text":[["#mDel .addr","A teardown is queued for this project."],["#mName","mooring"]],"hidden":["#mDelName","[data-del-ask]"],"visible":["#mStrip .strip.flowDown"]} },
|
|
135
|
+
{ "name": "the wizard driver (task 1003346): name, type, about, home (fresh; the stub grants repo access, so the new repository is named from the project), address (the handle's verdict), the review as a ledger, then the filing — the done panel with the standup rail and the human steps", "auth": true, "width": 1440, "url": "/projects?view=new",
|
|
136
|
+
"steps": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400],["click","#typeCards .tpill[data-type=\"game\"]"],["click","#panel-type button[type=submit]"],["wait",400],["fill","#f-desc","A co-op farming game where the seasons never repeat."],["click","#teamCards .tpill[data-team=\"small-team\"]"],["click","#panel-detail button[type=submit]"],["wait",900],["click","#panel-home button[type=submit]"],["wait",400],["fill","#f-slug","mercury"],["wait",900],["fill","#f-domain","mercury.example.com"],["wait",200],["click","#panel-address button[type=submit]"],["wait",400],["click","#doCreate"],["wait",1500]],
|
|
137
|
+
"expect": {"visible":["#panel-done","#liveProgress .prog","#liveProgress .prog .stages li.now","#humanSteps li"],"hidden":["#panel-review","#panel-name"],"text":[["#done-h","The drums are rolling"]],"attr":[["#panel-done","class","panel on"]]} },
|
|
138
|
+
{ "name": "the wizard driver at 390: the rail folds to two rows of three and the walk still reaches the review", "auth": true, "width": 390, "url": "/projects?view=new",
|
|
139
|
+
"steps": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400],["click","#typeCards .tpill[data-type=\"game\"]"],["click","#panel-type button[type=submit]"],["wait",400],["fill","#f-desc","A co-op farming game where the seasons never repeat."],["click","#teamCards .tpill[data-team=\"small-team\"]"],["click","#panel-detail button[type=submit]"],["wait",900],["click","#panel-home button[type=submit]"],["wait",400],["fill","#f-slug","mercury"],["wait",900],["fill","#f-domain","mercury.example.com"],["wait",200],["click","#panel-address button[type=submit]"],["wait",400]],
|
|
140
|
+
"expect": {"visible":["#panel-review","#reviewList li","#doCreate"],"hidden":["#panel-address"],"text":[["#rev-h","Ready to roll"]]} }
|
|
135
141
|
]
|
|
136
142
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"surface": "public-landing",
|
|
5
5
|
"modes": ["dark"],
|
|
6
6
|
"modeQuery": false,
|
|
7
|
-
"ignoreRequests": ["/api/(gds|bongos)/me$", "/my-projects", "/provisioning/instances/999", "/provisioning/instances/101$", "/api/gds/instance$"],
|
|
7
|
+
"ignoreRequests": ["/api/(gds|bongos)/me$", "/my-projects", "/provisioning/instances/999", "/provisioning/instances/101$", "/api/gds/instance$", "/github/repos$", "/provisioning/onboard-plan"],
|
|
8
8
|
"ignoreConsole": ["/api/(gds|bongos)/me", "\\b401\\b", "\\b404\\b", "Unauthorized"],
|
|
9
9
|
"ignoreControls": [".skip", ".vh"],
|
|
10
10
|
"states": {
|
|
@@ -24,6 +24,12 @@
|
|
|
24
24
|
"out-manage": { "auth": false, "url": "/projects?view=manage&id=101", "expect": { "visible": ["#mGate"], "hidden": ["#mMain", "#mMissing"] } },
|
|
25
25
|
"in-new": { "auth": true, "url": "/projects?view=new", "expect": { "hidden": ["#qWrap"] } },
|
|
26
26
|
"out-new": { "auth": false, "url": "/projects?view=new", "expect": { "hidden": ["#qWrap"] } },
|
|
27
|
+
"in-new-type": { "auth": true, "url": "/projects?view=new", "actions": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400]], "expect": {"visible":["#panel-type"],"hidden":["#panel-name","#qWrap"]} },
|
|
28
|
+
"in-new-about": { "auth": true, "url": "/projects?view=new", "actions": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400],["click","#typeCards .tpill[data-type=\"game\"]"],["click","#panel-type button[type=submit]"],["wait",400]], "expect": {"visible":["#panel-detail"],"hidden":["#panel-type","#qWrap"]} },
|
|
29
|
+
"in-new-home": { "auth": true, "url": "/projects?view=new", "actions": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400],["click","#typeCards .tpill[data-type=\"game\"]"],["click","#panel-type button[type=submit]"],["wait",400],["fill","#f-desc","A co-op farming game where the seasons never repeat."],["click","#teamCards .tpill[data-team=\"small-team\"]"],["click","#panel-detail button[type=submit]"],["wait",900]], "expect": {"visible":["#panel-home"],"hidden":["#panel-detail","#qWrap"]} },
|
|
30
|
+
"in-new-address": { "auth": true, "url": "/projects?view=new", "actions": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400],["click","#typeCards .tpill[data-type=\"game\"]"],["click","#panel-type button[type=submit]"],["wait",400],["fill","#f-desc","A co-op farming game where the seasons never repeat."],["click","#teamCards .tpill[data-team=\"small-team\"]"],["click","#panel-detail button[type=submit]"],["wait",900],["click","#panel-home button[type=submit]"],["wait",400]], "expect": {"visible":["#panel-address"],"hidden":["#panel-home","#qWrap"]} },
|
|
31
|
+
"in-new-review": { "auth": true, "url": "/projects?view=new", "actions": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400],["click","#typeCards .tpill[data-type=\"game\"]"],["click","#panel-type button[type=submit]"],["wait",400],["fill","#f-desc","A co-op farming game where the seasons never repeat."],["click","#teamCards .tpill[data-team=\"small-team\"]"],["click","#panel-detail button[type=submit]"],["wait",900],["click","#panel-home button[type=submit]"],["wait",400],["fill","#f-slug","mercury"],["wait",900],["fill","#f-domain","mercury.example.com"],["wait",200],["click","#panel-address button[type=submit]"],["wait",400]], "expect": {"visible":["#panel-review","#reviewList li"],"hidden":["#panel-address","#qWrap"]} },
|
|
32
|
+
"in-new-done": { "auth": true, "url": "/projects?view=new", "actions": [["wait",600],["fill","#newName","Mercury"],["click","#panel-name button[type=submit]"],["wait",400],["click","#typeCards .tpill[data-type=\"game\"]"],["click","#panel-type button[type=submit]"],["wait",400],["fill","#f-desc","A co-op farming game where the seasons never repeat."],["click","#teamCards .tpill[data-team=\"small-team\"]"],["click","#panel-detail button[type=submit]"],["wait",900],["click","#panel-home button[type=submit]"],["wait",400],["fill","#f-slug","mercury"],["wait",900],["fill","#f-domain","mercury.example.com"],["wait",200],["click","#panel-address button[type=submit]"],["wait",400],["click","#doCreate"],["wait",1500]], "expect": {"visible":["#panel-done","#liveProgress .prog","#humanSteps li"],"hidden":["#panel-review","#qWrap"]} },
|
|
27
33
|
"out-map-projects": { "auth": false, "actions": [["click", "#projTrig"], ["wait", 350]], "expect": { "expanded": true, "hidden": ["#menuProjects [data-nav=\"mine\"]"] } },
|
|
28
34
|
"card": { "auth": true, "actions": [["dispatchClick", "#orbField a.worldOrb[data-origin=\"https://amazonprimea.com\"]"], ["wait", 900]], "expect": { "dialog": true, "hasClass": [["#projCard", "has-art"]], "visible": ["#cardArt", "#cardFaces", "#cardBuildersFig", "#cardShippedFig", "#cardOpen", "#cardHall"], "text": [["#cardBuilders", "11"], ["#cardShipped", "0"], ["#cardRel", "you build here"], ["#cardRuns", "amazonprimea.com"], ["#cardFaces .facesMore", "+6"]], "count": [["#cardFaces img", 5]], "href": [["#cardHall", "https://builders.amazonprimea.com/"]] } },
|
|
29
35
|
"card-noart": { "auth": true, "actions": [["dispatchClick", "#orbField a.worldOrb[data-origin=\"https://emersonian-circles.cloudbongos.com\"]"], ["wait", 600]], "expect": { "dialog": true, "hasClass": [["#projCard", "has-art", false]], "hidden": ["#cardArt", "#cardFaces", "#cardHall"], "visible": ["#cardBuildersFig", "#cardShippedFig", "#cardOpen"], "text": [["#cardShipped", "30+"], ["#cardRel", "you build here"]] } },
|
package/src/module-api.js
CHANGED
|
@@ -33,7 +33,7 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
33
33
|
// there. scripts/gds/bump-version.js still rewrites the literal below; it appends
|
|
34
34
|
// the entry to that file. Look for a version's history there, not here.
|
|
35
35
|
// ---------------------------------------------------------------------------
|
|
36
|
-
const CORE_VERSION = '1.19.
|
|
36
|
+
const CORE_VERSION = '1.19.425'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
37
37
|
|
|
38
38
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
39
39
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|