@bongos/core 1.25.7 → 1.25.8
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 +17 -17
- package/docs/copy-inventory.md +402 -402
- package/docs/copy-registry.json +497 -497
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-readings.json +251 -251
- package/modules/provisioning/github-setup.js +3 -0
- package/modules/public-landing/public/projects.html +11 -3
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +2 -1
- package/src/module-api.js +1 -1
- package/tests/github_one_trip.mjs +8 -1
- package/tests/github_sign_in_seen.mjs +1 -1
|
@@ -134,6 +134,9 @@ function githubChecklist(status, appSlug, facts = {}) {
|
|
|
134
134
|
// what "is alive" waits for — device flow is optional by design
|
|
135
135
|
connected: approve === 'done' && install === 'done' && signIn === 'done',
|
|
136
136
|
wired_elsewhere: elsewhere,
|
|
137
|
+
// GitHub sent the founder back from the install page (or they asked for a check) and
|
|
138
|
+
// the runner has not confirmed it yet: the page shows the step as being checked
|
|
139
|
+
install_checking: install !== 'done' && !!(facts.installReportedAt || facts.checkRequestedAt),
|
|
137
140
|
};
|
|
138
141
|
}
|
|
139
142
|
|
|
@@ -533,7 +533,10 @@ body:has(#view-new:not([hidden])) footer.foot{position:relative;z-index:1;backgr
|
|
|
533
533
|
.setFact .optional{margin-left:8px;font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);}
|
|
534
534
|
.setFact.done .d{background:color-mix(in srgb,var(--ok) 12%,transparent);color:var(--ok);border-color:var(--ok);}
|
|
535
535
|
.setFact.done .t,.setFact.now .t,.setFact.you .t{color:var(--ink);}
|
|
536
|
-
.setFact.now .d{border:2px solid var(--accent);}
|
|
536
|
+
.setFact.now .d{border:2px solid var(--accent);border-top-color:transparent;animation:factSpin 1s linear infinite;}
|
|
537
|
+
/* a loading wheel is essential, so it turns even with reduced motion (slower, no pulse) */
|
|
538
|
+
@media (prefers-reduced-motion:reduce){.setFact.now .d{animation-duration:2s;}}
|
|
539
|
+
@keyframes factSpin{to{transform:rotate(360deg)}}
|
|
537
540
|
.setFact.you .d{background:color-mix(in srgb,var(--accent) 16%,transparent);border-color:color-mix(in srgb,var(--accent) 60%,transparent);color:var(--ink);}
|
|
538
541
|
.setFact.bad .d{background:color-mix(in srgb,var(--err) 10%,transparent);color:var(--err);border-color:var(--err);}
|
|
539
542
|
.setFact.bad .t{color:var(--err);}
|
|
@@ -548,8 +551,7 @@ body:has(#view-new:not([hidden])) footer.foot{position:relative;z-index:1;backgr
|
|
|
548
551
|
.setFact .acctPick .acctTyped{margin-top:10px;}
|
|
549
552
|
.setFact .acctPick .hint{min-height:0;}
|
|
550
553
|
@media (prefers-reduced-motion:no-preference){
|
|
551
|
-
.setFact.now .d{animation:factBreathe 1.4s ease-in-out infinite,factSpin 1s linear infinite;
|
|
552
|
-
@keyframes factSpin{to{transform:rotate(360deg)}}
|
|
554
|
+
.setFact.now .d{animation:factBreathe 1.4s ease-in-out infinite,factSpin 1s linear infinite;}
|
|
553
555
|
.setNow.working::after{content:"";display:inline-block;width:1.2em;text-align:left;animation:workDots 1.4s steps(4,end) infinite;}
|
|
554
556
|
@keyframes workDots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}
|
|
555
557
|
@keyframes factBreathe{0%,100%{border-color:var(--accent)}50%{border-color:color-mix(in srgb,var(--accent) 35%,transparent)}}
|
|
@@ -6933,6 +6935,7 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
6933
6935
|
sentence and carries the action that fixes it, with the app GitHub already made, never a
|
|
6934
6936
|
second one. live.pickUp is the server's word for what that action does (github-setup.js
|
|
6935
6937
|
pickUpFor); live.verifying is whether the runner is still checking. */
|
|
6938
|
+
var installOpened = false; /* this page sent the founder to GitHub's install page */
|
|
6936
6939
|
var ghTabTrouble = null; /* 'behind' | 'closed': what this page saw of the GitHub tab it opened */
|
|
6937
6940
|
var NO_SECOND_APP = 'Nothing is lost, and no second app will be made.';
|
|
6938
6941
|
function projectName() { return state.name || state.slug || 'your project'; }
|
|
@@ -7067,6 +7070,10 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
7067
7070
|
/* the runner stopped checking and GitHub never confirmed the install: the link opens the
|
|
7068
7071
|
SAME app's install page, and the click asks the runner to look again */
|
|
7069
7072
|
else if (live.pickUp === 'check') { install.state = 'bad'; install.sub = 'GitHub stopped before the app was on ' + (repo || 'your repo') + '.'; install.right = checked; install.act = 'pick-up-link'; install.href = installUrl; }
|
|
7073
|
+
/* the founder came back from GitHub's install page (GitHub reported it, or they pressed
|
|
7074
|
+
the link here): the runner is checking with GitHub, so the step spins until it ticks,
|
|
7075
|
+
and the link stays in case they never finished */
|
|
7076
|
+
else if ((live.setup && live.setup.install_checking) || installOpened) { install.state = 'now'; install.sub = (repo ? repo + '. ' : '') + 'Checking with GitHub. This ticks by itself.'; install.right = checked; install.act = 'install-link'; install.href = installUrl; }
|
|
7070
7077
|
else { install.state = 'you'; install.right = 'not yet seen'; install.act = 'install-link'; install.href = installUrl; }
|
|
7071
7078
|
|
|
7072
7079
|
var signIn = { key: 'sign_in', title: 'Builders can sign in' };
|
|
@@ -7313,6 +7320,7 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
7313
7320
|
var ib = $('installBtn'), instRow = gh[1];
|
|
7314
7321
|
var instHref = instRow && instRow.state !== 'done' && homeUp && (instRow.act === 'install-link' || instRow.act === 'pick-up-link') ? installHrefOf(instRow) : '';
|
|
7315
7322
|
if (instHref) ib.setAttribute('href', instHref); else ib.removeAttribute('href');
|
|
7323
|
+
if (!ib.getAttribute('data-wired')) { ib.setAttribute('data-wired', '1'); ib.addEventListener('click', function () { installOpened = true; paintFacts(); }); }
|
|
7316
7324
|
ib.hidden = !instHref;
|
|
7317
7325
|
paintSetDone(ready, home, gh);
|
|
7318
7326
|
tipsRun(!ready);
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.8",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.25.
|
|
9
|
+
"version": "1.25.8",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.8",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
package/release-notes.json
CHANGED
|
@@ -11753,5 +11753,6 @@
|
|
|
11753
11753
|
"id": "1005219",
|
|
11754
11754
|
"text": "Opening the builders' hall now starts on the Game or Classic choice. Signed out, your pick takes you to sign in and then straight to that menu."
|
|
11755
11755
|
}
|
|
11756
|
-
]
|
|
11756
|
+
],
|
|
11757
|
+
"1.25.8": []
|
|
11757
11758
|
}
|
package/src/module-api.js
CHANGED
|
@@ -81,7 +81,7 @@ const { sleep } = require('./sleep');
|
|
|
81
81
|
// MAJOR (see allowBoxScope below): passes the request through untouched.
|
|
82
82
|
function deprecatedNoopMiddleware(_req, _res, next) { next(); }
|
|
83
83
|
|
|
84
|
-
const CORE_VERSION = '1.25.
|
|
84
|
+
const CORE_VERSION = '1.25.8'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
85
85
|
|
|
86
86
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
87
87
|
// Usage: const log = api.logger('discord'); log.info('mounted');
|
|
@@ -35,7 +35,7 @@ const SCRIPT = HUB.slice(HUB.lastIndexOf('<script>'), HUB.lastIndexOf('</script>
|
|
|
35
35
|
|
|
36
36
|
test('each step reads only what the server has seen — the honest "not yet" states included', () => {
|
|
37
37
|
const none = GS.githubChecklist(null, null);
|
|
38
|
-
assert.deepEqual(none, { approve: 'todo', install: 'todo', sign_in: 'todo', device_flow: 'todo', connected: false, wired_elsewhere: false }, 'never started');
|
|
38
|
+
assert.deepEqual(none, { approve: 'todo', install: 'todo', sign_in: 'todo', device_flow: 'todo', connected: false, wired_elsewhere: false, install_checking: false }, 'never started');
|
|
39
39
|
assert.equal(GS.githubChecklist('pending', null).approve, 'now', 'waiting for the approval on GitHub');
|
|
40
40
|
for (const s of ['code_received', 'converting']) {
|
|
41
41
|
const c = GS.githubChecklist(s, null);
|
|
@@ -327,3 +327,10 @@ test('the device-flow finding lives in the direction doc, and the code points at
|
|
|
327
327
|
assert.match(doc, /Device flow cannot be switched on for the founder \(spike, task 1004649\)/);
|
|
328
328
|
assert.match(fs.readFileSync(path.join(ROOT, 'modules', 'provisioning', 'github-setup.js'), 'utf8'), /docs\/design\/project-startup-direction\.md/);
|
|
329
329
|
});
|
|
330
|
+
|
|
331
|
+
test('back from the install page, the install step reads as being checked until GitHub confirms it', () => {
|
|
332
|
+
const { githubChecklist } = require('../modules/provisioning/github-setup.js');
|
|
333
|
+
assert.equal(githubChecklist('done', 'kestrel', {}).install_checking, false, 'not reported yet');
|
|
334
|
+
assert.equal(githubChecklist('done', 'kestrel', { installReportedAt: '2026-10-25T10:00:00Z' }).install_checking, true, 'reported, not yet seen');
|
|
335
|
+
assert.equal(githubChecklist('done', 'kestrel', { installReportedAt: '2026-10-25T10:00:00Z', installedAt: '2026-10-25T10:01:00Z' }).install_checking, false, 'seen: done');
|
|
336
|
+
});
|
|
@@ -53,7 +53,7 @@ test('the project saying sign-in works ticks sign-in, whatever the attempt row s
|
|
|
53
53
|
|
|
54
54
|
test('without that answer, nothing changes: a pending attempt still waits on GitHub', () => {
|
|
55
55
|
const c = gs.githubChecklist('pending', null, {});
|
|
56
|
-
assert.deepEqual(c, { approve: 'now', install: 'todo', sign_in: 'todo', device_flow: 'todo', connected: false, wired_elsewhere: false });
|
|
56
|
+
assert.deepEqual(c, { approve: 'now', install: 'todo', sign_in: 'todo', device_flow: 'todo', connected: false, wired_elsewhere: false, install_checking: false });
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
test('with our app recorded, the answer ticks sign-in and the install keeps its own fact', () => {
|