@bongos/core 1.21.11 → 1.21.12
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 +15 -15
- package/docs/copy-inventory.md +380 -380
- package/docs/copy-registry.json +446 -446
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-readings.json +934 -936
- package/modules/public-landing/public/projects.html +10 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/src/module-api.js +1 -1
- package/tests/projects_hub_dns_ready.mjs +10 -2
|
@@ -249,6 +249,12 @@ h1[tabindex="-1"]:focus:not(:focus-visible){outline:none;}
|
|
|
249
249
|
#view-new .rmGlow,#view-new .rmStem,#view-new .rmShade,#view-new .rmMug,#view-new .rmLeaf{display:none;}
|
|
250
250
|
#view-new .rmFloor{top:auto;height:80px;}
|
|
251
251
|
}
|
|
252
|
+
/* under 600 the words fill the screen, so the window fades further and its lit windows
|
|
253
|
+
go — they read as stray marks between the review rows (task 1004543) */
|
|
254
|
+
@media (max-width:600px){
|
|
255
|
+
#view-new .rmWindow{opacity:.18;}
|
|
256
|
+
#view-new .rmLight{display:none;}
|
|
257
|
+
}
|
|
252
258
|
/* the words column above the room, held to the mockup's measure so the window never
|
|
253
259
|
slides under it; headings in the mockup's sentence case */
|
|
254
260
|
#view-new .wrap{position:relative;z-index:1;min-height:calc(100vh - var(--top-h,64px) - 120px);}
|
|
@@ -386,7 +392,7 @@ h1[tabindex="-1"]:focus:not(:focus-visible){outline:none;}
|
|
|
386
392
|
display:block;padding-top:4px;
|
|
387
393
|
}
|
|
388
394
|
.humanSteps b{display:block;font-size:16px;font-weight:500;color:var(--ink);}
|
|
389
|
-
.humanSteps p{font-size:14px;font-weight:400;color:var(--ink-soft);line-height:1.5;margin-top:4px;max-width:56ch;}
|
|
395
|
+
.humanSteps p{font-size:14px;font-weight:400;color:var(--ink-soft);line-height:1.5;margin-top:4px;max-width:56ch;overflow-wrap:anywhere;}
|
|
390
396
|
/* a repo the platform already handled is named as a plain inline link (task 1002855) —
|
|
391
397
|
the .ghbtn treatment reads as an action to take, and there is nothing here to do */
|
|
392
398
|
.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;}
|
|
@@ -415,6 +421,7 @@ h1[tabindex="-1"]:focus:not(:focus-visible){outline:none;}
|
|
|
415
421
|
.copy:hover{border-color:var(--ink-faint);color:var(--ink);}
|
|
416
422
|
.copy.did{background:none;border-color:var(--ok);color:var(--ok);}
|
|
417
423
|
.samePath{font-size:13px;font-weight:400;color:var(--ink-faint);margin-top:18px;}
|
|
424
|
+
.samePath a{display:inline-block;padding:3px 0;min-height:24px;line-height:18px;}
|
|
418
425
|
#liveProgress{margin-top:4px;}
|
|
419
426
|
|
|
420
427
|
/* ── the standup strip (task 2083), drawn as the lifecycle rail (DESIGN.md):
|
|
@@ -6942,6 +6949,8 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
6942
6949
|
/* the alive moment (task 1004504): said only once the project has answered */
|
|
6943
6950
|
$('done-h').textContent = (state.name || state.slug || 'Your project') + ' is alive.';
|
|
6944
6951
|
paintInviteGate(true); /* the hall answers, so others can join now */
|
|
6952
|
+
/* task 1004543: the line under it stops saying "setting up" once it answers */
|
|
6953
|
+
$('doneLede').innerHTML = 'Its home is ready. Watch the rest here, or any time on <a href="?view=mine">your projects page</a>.';
|
|
6945
6954
|
setProgress(progressMarkup(-1, 3,
|
|
6946
6955
|
'Your project is answering at ' + link + '. Finish the steps below and the hall is yours.', 'isLive', flow));
|
|
6947
6956
|
return true;
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.21.
|
|
3
|
+
"version": "1.21.12",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.21.
|
|
9
|
+
"version": "1.21.12",
|
|
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.21.
|
|
3
|
+
"version": "1.21.12",
|
|
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
|
@@ -8822,5 +8822,11 @@
|
|
|
8822
8822
|
"id": "1004526",
|
|
8823
8823
|
"text": "Every building on the governor's street now opens. Step through a door and the building appears in section, drawn exactly like the prototype: each floor a real storey with its sign, name and state on the wall, dark empty floor"
|
|
8824
8824
|
}
|
|
8825
|
+
],
|
|
8826
|
+
"1.21.12": [
|
|
8827
|
+
{
|
|
8828
|
+
"id": "1004543",
|
|
8829
|
+
"text": "When your new project comes alive, the line under \"is alive\" now says its home is ready instead of still saying it is being set up. On phones, the dim night-room picture behind the setup screens no longer shows stray lit windo"
|
|
8830
|
+
}
|
|
8825
8831
|
]
|
|
8826
8832
|
}
|
package/src/module-api.js
CHANGED
|
@@ -75,7 +75,7 @@ const { responsibilityFor, ROLE_RESPONSIBILITIES } = require('./role-responsibil
|
|
|
75
75
|
// MAJOR (see allowBoxScope below): passes the request through untouched.
|
|
76
76
|
function deprecatedNoopMiddleware(_req, _res, next) { next(); }
|
|
77
77
|
|
|
78
|
-
const CORE_VERSION = '1.21.
|
|
78
|
+
const CORE_VERSION = '1.21.12'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
79
79
|
|
|
80
80
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
81
81
|
// Usage: const log = api.logger('discord'); log.info('mounted');
|
|
@@ -48,10 +48,13 @@ function boot() {
|
|
|
48
48
|
const liveProgress = { innerHTML: '' };
|
|
49
49
|
// the done panel's heading (task 1004504): "Setting up <name>" until the project answers
|
|
50
50
|
const doneH = { textContent: 'Setting up Lantern' };
|
|
51
|
+
// and the line under it (task 1004543): renderDone's "setting up" until the project answers
|
|
52
|
+
const SETTING_UP = 'We’re setting up <strong>Lantern</strong>: its server, database and address.';
|
|
53
|
+
const doneLede = { innerHTML: SETTING_UP };
|
|
51
54
|
// the invite step's gate (task 1004503): renderProgress opens it only on a verified answer
|
|
52
55
|
const gates = [];
|
|
53
56
|
const sandbox = {
|
|
54
|
-
$: (id) => (
|
|
57
|
+
$: (id) => ({ liveProgress, 'done-h': doneH, doneLede })[id] || null,
|
|
55
58
|
state: { name: 'Lantern', slug: 'lantern' },
|
|
56
59
|
paintInviteGate: (live) => gates.push(live),
|
|
57
60
|
esc: (s) => String(s == null ? '' : s).replace(/[&<>"']/g, (c) => (
|
|
@@ -67,7 +70,7 @@ function boot() {
|
|
|
67
70
|
};
|
|
68
71
|
vm.createContext(sandbox);
|
|
69
72
|
vm.runInContext(PROGRESS + '\n' + OVERLAY + '\n' + ADDRESS + '\n' + ORB, sandbox);
|
|
70
|
-
return { sandbox, progress: () => liveProgress.innerHTML, heading: () => doneH.textContent, gates };
|
|
73
|
+
return { sandbox, progress: () => liveProgress.innerHTML, heading: () => doneH.textContent, lede: () => doneLede.innerHTML, SETTING_UP, gates };
|
|
71
74
|
}
|
|
72
75
|
|
|
73
76
|
const NOW = () => new Date().toISOString();
|
|
@@ -97,15 +100,20 @@ test('once the lookup answers, the done panel links the address', () => {
|
|
|
97
100
|
assert.match(h.progress(), ADDRESS_LINK);
|
|
98
101
|
assert.equal(h.heading(), 'Setting up Lantern', 'and the heading claims nothing yet (task 1004504)');
|
|
99
102
|
assert.deepEqual(h.gates, [], 'and the invite box stays shut: the hall has not answered (task 1004503)');
|
|
103
|
+
assert.equal(h.lede(), h.SETTING_UP, 'and the line under it still says it is being set up (task 1004543)');
|
|
100
104
|
const live = boot();
|
|
101
105
|
assert.equal(live.sandbox.renderProgress({ ...base, dns_resolves: true, last_verified_up: true, last_verified_at: NOW() }), true);
|
|
102
106
|
assert.match(live.progress(), ADDRESS_LINK);
|
|
103
107
|
assert.equal(live.heading(), 'Lantern is alive.', 'the alive moment, only on a verified answer');
|
|
104
108
|
assert.deepEqual(live.gates, [true], 'and the invite box opens with it (task 1004503)');
|
|
109
|
+
assert.match(live.lede(), /^Its home is ready\. Watch the rest here, or any time on <a href="\?view=mine">your projects page<\/a>\.$/,
|
|
110
|
+
'and the line under it stops saying "setting up" (task 1004543)');
|
|
111
|
+
assert.doesNotMatch(live.lede(), /setting up/i);
|
|
105
112
|
const down = boot();
|
|
106
113
|
down.sandbox.renderProgress({ ...base, dns_resolves: true, last_verified_up: false, last_verified_at: NOW() });
|
|
107
114
|
assert.equal(down.heading(), 'Setting up Lantern', 'a down probe is never "alive"');
|
|
108
115
|
assert.deepEqual(down.gates, [], 'nor opens the invite box');
|
|
116
|
+
assert.equal(down.lede(), down.SETTING_UP, 'nor says its home is ready');
|
|
109
117
|
});
|
|
110
118
|
|
|
111
119
|
test('the card and the manage page: no link and no name before the lookup answers, in every pre-live state', () => {
|