@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.
@@ -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.11",
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.11",
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.11",
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",
@@ -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.11'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
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) => (id === 'liveProgress' ? liveProgress : id === 'done-h' ? doneH : null),
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', () => {