@bongos/core 1.19.146 → 1.19.147
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 +11 -11
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/public-landing/assets/cosmos.css +4 -0
- package/public-landing/index.html +28 -1
- package/public-landing/projects.html +32 -1
- package/src/module-api.js +3 -1
package/.bongos-core.json
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/gds/package-core.js",
|
|
5
|
-
"core_version": "1.19.
|
|
6
|
-
"core_contract": "1.19.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.19.147",
|
|
6
|
+
"core_contract": "1.19.147",
|
|
7
|
+
"source_commit": "8d6433f6228308d27151412797ed154124c01460",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-
|
|
9
|
+
"built_at": "2026-08-16T13:47:45.087Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 304,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 1577,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "98ecc774fccdee0a333941c4a1877532c9a43c2c731208b026618eef108a60d5",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -4182,12 +4182,12 @@
|
|
|
4182
4182
|
{
|
|
4183
4183
|
"path": "package-lock.json",
|
|
4184
4184
|
"mode": "0000644",
|
|
4185
|
-
"sha256": "
|
|
4185
|
+
"sha256": "bd871b2a47195dd579fe80d257c70a3bc8dd59f7ababb8c2c3f6970e17208597"
|
|
4186
4186
|
},
|
|
4187
4187
|
{
|
|
4188
4188
|
"path": "package.json",
|
|
4189
4189
|
"mode": "0000644",
|
|
4190
|
-
"sha256": "
|
|
4190
|
+
"sha256": "bbbfb37b4aca95494916dc16c7b5087cd4b05fcd0d49b45112b6c40a95f32987"
|
|
4191
4191
|
},
|
|
4192
4192
|
{
|
|
4193
4193
|
"path": "public-docs/index.html",
|
|
@@ -4427,7 +4427,7 @@
|
|
|
4427
4427
|
{
|
|
4428
4428
|
"path": "public-landing/assets/cosmos.css",
|
|
4429
4429
|
"mode": "0000644",
|
|
4430
|
-
"sha256": "
|
|
4430
|
+
"sha256": "611050e8599be5791e89f9711b76ef6efc5b1e8bd703e2badc6a6418a9ed432b"
|
|
4431
4431
|
},
|
|
4432
4432
|
{
|
|
4433
4433
|
"path": "public-landing/buddha.png",
|
|
@@ -4437,12 +4437,12 @@
|
|
|
4437
4437
|
{
|
|
4438
4438
|
"path": "public-landing/index.html",
|
|
4439
4439
|
"mode": "0000644",
|
|
4440
|
-
"sha256": "
|
|
4440
|
+
"sha256": "f011cbcc82b95284f00dae9aa63600ea664f9edc5c7b79c533501c2c0c54495c"
|
|
4441
4441
|
},
|
|
4442
4442
|
{
|
|
4443
4443
|
"path": "public-landing/projects.html",
|
|
4444
4444
|
"mode": "0000644",
|
|
4445
|
-
"sha256": "
|
|
4445
|
+
"sha256": "5edfc22fd5d85453df0d83a531fd085b3d5d079b66c7e3f58dcb9a0261c6b4a6"
|
|
4446
4446
|
},
|
|
4447
4447
|
{
|
|
4448
4448
|
"path": "public-landing/world/assets/clouds/cloud-island-large.png",
|
|
@@ -5777,7 +5777,7 @@
|
|
|
5777
5777
|
{
|
|
5778
5778
|
"path": "src/module-api.js",
|
|
5779
5779
|
"mode": "0000644",
|
|
5780
|
-
"sha256": "
|
|
5780
|
+
"sha256": "58e0f8df5b6dec29092ad054d62f7117f74d51e206680decb0f29065736e88ef"
|
|
5781
5781
|
},
|
|
5782
5782
|
{
|
|
5783
5783
|
"path": "src/module-loader/catalog.js",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.147",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.147",
|
|
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.19.
|
|
3
|
+
"version": "1.19.147",
|
|
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",
|
|
@@ -218,6 +218,10 @@ body{font-family:var(--font-body);color:var(--ink);background:var(--page-bg);min
|
|
|
218
218
|
.top-right{display:flex;align-items:center;gap:clamp(10px,2vw,18px);}
|
|
219
219
|
.who{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;color:var(--chrome-ink-dim);min-height:34px;text-shadow:var(--chrome-glow);}
|
|
220
220
|
.who img{width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,0.85);box-shadow:var(--ava-shadow);}
|
|
221
|
+
/* sign-out rides inside the identity chip, so it exists exactly when a session
|
|
222
|
+
does — the same glass voice as .btn-space, one size down (task 1002952) */
|
|
223
|
+
.who .signout{font-family:var(--font-display);font-weight:700;font-size:12.5px;color:var(--glass-ink);background:var(--glass-bg);border:1.5px solid var(--glass-border);border-radius:999px;padding:5px 12px;text-decoration:none;text-shadow:var(--chrome-glow);backdrop-filter:blur(4px);}
|
|
224
|
+
.who .signout:hover{border-color:var(--chrome-accent);color:var(--chrome-accent);}
|
|
221
225
|
.btn-space{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-family:var(--font-display);font-weight:700;font-size:13.5px;color:var(--glass-ink);background:var(--glass-bg);border:1.5px solid var(--glass-border);border-radius:999px;padding:8px 16px;text-decoration:none;text-shadow:var(--chrome-glow);backdrop-filter:blur(4px);}
|
|
222
226
|
.btn-space:hover{border-color:var(--chrome-accent);color:var(--chrome-accent);}
|
|
223
227
|
/* the light/dark switch — same glass voice as .btn-space, icon-only */
|
|
@@ -483,9 +483,30 @@ h1.big{font-family:var(--font-display);font-weight:700;font-size:clamp(33px,5.4v
|
|
|
483
483
|
|
|
484
484
|
var API = '/api/bongos';
|
|
485
485
|
|
|
486
|
+
/* ── sign out. The logout endpoint is POST + cookie-gated, so a plain-anchor
|
|
487
|
+
GET navigation would 404 and leave the session live — the exact hall bug
|
|
488
|
+
task 1002245 fixed; its shell.js doLogout is the contract mirrored here.
|
|
489
|
+
The POST is also the only place the federated single-logout fan-out fires
|
|
490
|
+
(ADR 0144). Whether it lands or the network drops, still expire both
|
|
491
|
+
session cookies in BOTH the host-only and apex-scoped Domain forms (#726 —
|
|
492
|
+
a Max-Age=0 only matches the cookie whose Domain attribute it names), so
|
|
493
|
+
this browser at least is signed out, then reload into the signed-out page. ── */
|
|
494
|
+
function doLogout() {
|
|
495
|
+
var finish = function () {
|
|
496
|
+
var apex = location.hostname.split('.').slice(-2).join('.');
|
|
497
|
+
['gds_session', 'pms_session'].forEach(function (name) {
|
|
498
|
+
document.cookie = name + '=; Max-Age=0; path=/';
|
|
499
|
+
document.cookie = name + '=; Max-Age=0; path=/; Domain=.' + apex;
|
|
500
|
+
});
|
|
501
|
+
window.location.assign(location.pathname);
|
|
502
|
+
};
|
|
503
|
+
fetch(API + '/auth/logout', { method: 'POST', credentials: 'same-origin' }).then(finish, finish);
|
|
504
|
+
}
|
|
505
|
+
|
|
486
506
|
/* ── the identity chip. Signed out (401) leaves it empty — the header's own
|
|
487
507
|
doors are the signed-out affordance. Built with createElement/textContent,
|
|
488
|
-
never innerHTML: the same rule the status UI keeps.
|
|
508
|
+
never innerHTML: the same rule the status UI keeps. Signed in it carries
|
|
509
|
+
the one session control the page owes its visitor: Sign out (task 1002952). ── */
|
|
489
510
|
fetch(API + '/me', { credentials: 'same-origin' })
|
|
490
511
|
.then(function (res) { return res.ok ? res.json() : null; })
|
|
491
512
|
.then(function (data) {
|
|
@@ -498,6 +519,12 @@ h1.big{font-family:var(--font-display);font-weight:700;font-size:clamp(33px,5.4v
|
|
|
498
519
|
host.appendChild(img);
|
|
499
520
|
}
|
|
500
521
|
host.appendChild(document.createTextNode(me.github_login));
|
|
522
|
+
var out = document.createElement('a');
|
|
523
|
+
out.className = 'signout';
|
|
524
|
+
out.href = API + '/auth/logout'; /* honest hover target; the click upgrades it to the real POST */
|
|
525
|
+
out.textContent = 'Sign out';
|
|
526
|
+
out.addEventListener('click', function (e) { e.preventDefault(); doLogout(); });
|
|
527
|
+
host.appendChild(out);
|
|
501
528
|
})
|
|
502
529
|
.catch(function () { /* signed out or offline — the chip stays empty */ });
|
|
503
530
|
|
|
@@ -3904,13 +3904,44 @@ h1[tabindex="-1"]:focus{outline:none;}
|
|
|
3904
3904
|
function renderWho() {
|
|
3905
3905
|
var w = $('who');
|
|
3906
3906
|
if (me) {
|
|
3907
|
+
/* the chip carries the one session control this page owes its visitor:
|
|
3908
|
+
Sign out (task 1002952). The anchor's href is the honest hover target;
|
|
3909
|
+
the delegated click below upgrades it to the real POST. */
|
|
3907
3910
|
w.innerHTML = (me.avatar_url ? '<img src="' + esc(me.avatar_url) + '" alt="">' : '') +
|
|
3908
|
-
'<span>' + esc(me.github_login || 'signed in') + '</span>'
|
|
3911
|
+
'<span>' + esc(me.github_login || 'signed in') + '</span>' +
|
|
3912
|
+
'<a class="signout" href="' + API + '/auth/logout">Sign out</a>';
|
|
3909
3913
|
} else {
|
|
3910
3914
|
w.innerHTML = '';
|
|
3911
3915
|
}
|
|
3912
3916
|
}
|
|
3913
3917
|
|
|
3918
|
+
/* Sign out. The logout endpoint is POST + cookie-gated, so a plain-anchor GET
|
|
3919
|
+
would 404 and leave the session live — the exact hall bug task 1002245
|
|
3920
|
+
fixed; its shell.js doLogout is the contract mirrored here. The POST is
|
|
3921
|
+
also the only place the federated single-logout fan-out fires (ADR 0144).
|
|
3922
|
+
Whether it lands or the network drops, still expire both session cookies
|
|
3923
|
+
in BOTH the host-only and apex-scoped Domain forms (#726 — a Max-Age=0
|
|
3924
|
+
only matches the cookie whose Domain attribute it names), then reload the
|
|
3925
|
+
bare path: the boot re-runs and paints the signed-out shell. Delegated on
|
|
3926
|
+
the chip because renderWho rewrites its innerHTML. */
|
|
3927
|
+
function doLogout() {
|
|
3928
|
+
var finish = function () {
|
|
3929
|
+
var apex = location.hostname.split('.').slice(-2).join('.');
|
|
3930
|
+
['gds_session', 'pms_session'].forEach(function (name) {
|
|
3931
|
+
document.cookie = name + '=; Max-Age=0; path=/';
|
|
3932
|
+
document.cookie = name + '=; Max-Age=0; path=/; Domain=.' + apex;
|
|
3933
|
+
});
|
|
3934
|
+
window.location.assign(location.pathname);
|
|
3935
|
+
};
|
|
3936
|
+
fetch(API + '/auth/logout', { method: 'POST', credentials: 'same-origin' }).then(finish, finish);
|
|
3937
|
+
}
|
|
3938
|
+
$('who').addEventListener('click', function (ev) {
|
|
3939
|
+
var a = ev.target.closest && ev.target.closest('a.signout');
|
|
3940
|
+
if (!a) return;
|
|
3941
|
+
ev.preventDefault();
|
|
3942
|
+
doLogout();
|
|
3943
|
+
});
|
|
3944
|
+
|
|
3914
3945
|
function load() {
|
|
3915
3946
|
fetch(API + '/provisioning/instances', { credentials: 'same-origin' })
|
|
3916
3947
|
.then(function (res) {
|
package/src/module-api.js
CHANGED
|
@@ -719,8 +719,10 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
719
719
|
// landed since 1.19.144 with no explicit bump. run 31895007353. (task 1002620)
|
|
720
720
|
// 1.19.146 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
721
721
|
// landed since 1.19.145 with no explicit bump. run 31904091158. (task 1002620)
|
|
722
|
+
// 1.19.147 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
723
|
+
// landed since 1.19.146 with no explicit bump. run 31950807165. (task 1002620)
|
|
722
724
|
// ---------------------------------------------------------------------------
|
|
723
|
-
const CORE_VERSION = '1.19.
|
|
725
|
+
const CORE_VERSION = '1.19.147'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
724
726
|
|
|
725
727
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
726
728
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|