@bongos/core 1.19.136 → 1.19.137
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
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.137",
|
|
6
|
+
"core_contract": "1.19.137",
|
|
7
|
+
"source_commit": "9fa1fb193ed67e42c77580783b8d46b43dfc04cd",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-08-15T14:
|
|
9
|
+
"built_at": "2026-08-15T14:29:50.076Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 303,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 1574,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "106a541f9d1c75255cd4bf29b2cb87f60cb07a6f413f81d3a27f0b7887eaa200",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/blocker-review/SKILL.md",
|
|
@@ -3882,7 +3882,7 @@
|
|
|
3882
3882
|
{
|
|
3883
3883
|
"path": "modules/provisioning/routes/provisioning.js",
|
|
3884
3884
|
"mode": "0000644",
|
|
3885
|
-
"sha256": "
|
|
3885
|
+
"sha256": "903a3324337f8c1f123f81ca176550df0afbdeeea1f18254d41489dc3c4fed5d"
|
|
3886
3886
|
},
|
|
3887
3887
|
{
|
|
3888
3888
|
"path": "modules/provisioning/tests/liveness.mjs",
|
|
@@ -4147,7 +4147,7 @@
|
|
|
4147
4147
|
{
|
|
4148
4148
|
"path": "modules/status-ui/public/explore.html",
|
|
4149
4149
|
"mode": "0000644",
|
|
4150
|
-
"sha256": "
|
|
4150
|
+
"sha256": "23348448b4b0912ecf6b4cd8bfc34737117e901c0efcb2d4c42c6bc8bf80e05d"
|
|
4151
4151
|
},
|
|
4152
4152
|
{
|
|
4153
4153
|
"path": "modules/status-ui/public/explore.js",
|
|
@@ -4177,12 +4177,12 @@
|
|
|
4177
4177
|
{
|
|
4178
4178
|
"path": "package-lock.json",
|
|
4179
4179
|
"mode": "0000644",
|
|
4180
|
-
"sha256": "
|
|
4180
|
+
"sha256": "82ff1180ef9d22a39f2ea3af15eecd26e9598c7c98d85b501030ab8c67566e7e"
|
|
4181
4181
|
},
|
|
4182
4182
|
{
|
|
4183
4183
|
"path": "package.json",
|
|
4184
4184
|
"mode": "0000644",
|
|
4185
|
-
"sha256": "
|
|
4185
|
+
"sha256": "a60b9403891192d3338e76f313135db3bec75a8205920c839b6bdb5a95b40661"
|
|
4186
4186
|
},
|
|
4187
4187
|
{
|
|
4188
4188
|
"path": "public-docs/index.html",
|
|
@@ -5767,7 +5767,7 @@
|
|
|
5767
5767
|
{
|
|
5768
5768
|
"path": "src/module-api.js",
|
|
5769
5769
|
"mode": "0000644",
|
|
5770
|
-
"sha256": "
|
|
5770
|
+
"sha256": "d4b3ac997a8dbf4acfdda32a4b62622908fdc87fcef6dbbfa563d49b76be34ce"
|
|
5771
5771
|
},
|
|
5772
5772
|
{
|
|
5773
5773
|
"path": "src/module-loader/catalog.js",
|
|
@@ -6367,7 +6367,7 @@
|
|
|
6367
6367
|
{
|
|
6368
6368
|
"path": "tests/design_tokens_sync.mjs",
|
|
6369
6369
|
"mode": "0000644",
|
|
6370
|
-
"sha256": "
|
|
6370
|
+
"sha256": "9dcbd0bc8f34f98ec0b0ff63a629780928c9d60199f3d961733e03ab6a7bb4fa"
|
|
6371
6371
|
},
|
|
6372
6372
|
{
|
|
6373
6373
|
"path": "tests/dev_lib.mjs",
|
|
@@ -91,11 +91,22 @@ function esc(s) {
|
|
|
91
91
|
));
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
//
|
|
95
|
-
//
|
|
94
|
+
// Accent pair resolved from the instance's own branding — the pack is the palette
|
|
95
|
+
// authority (task 1002810); the literal fallbacks are the neutral pack's values, so
|
|
96
|
+
// a branding validation error still paints the current family, never a stale one.
|
|
97
|
+
const ACCENT = (() => {
|
|
98
|
+
try {
|
|
99
|
+
const c = api.branding().theme?.ui?.colors || {};
|
|
100
|
+
return { sun: c.accent || '#ce4806', sun600: c.accentDeep || '#9e3406' };
|
|
101
|
+
} catch { return { sun: '#ce4806', sun600: '#9e3406' }; }
|
|
102
|
+
})();
|
|
103
|
+
|
|
104
|
+
// Brand styling for the standalone onboarding pages — sunrise palette + Baloo 2 /
|
|
105
|
+
// Quicksand (accents from the branding pack, config/branding.neutral.json resolved
|
|
106
|
+
// under the instance's own config/branding.json). Light + dark aware; no external
|
|
96
107
|
// dependency beyond an optional Google-Fonts link (system fallback if it doesn't load).
|
|
97
108
|
const PAGE_STYLE = `
|
|
98
|
-
:root{color-scheme:light dark;--sun
|
|
109
|
+
:root{color-scheme:light dark;--sun:${ACCENT.sun};--sun600:${ACCENT.sun600};--coral:#fb7185;--sky:#38bdf8;--sky600:#0284c7;--ok:#16a34a;--warn:#f59e0b;--ink:#2a1f17;--inkSoft:#6b5d52;--card:#fffdfa;--line:#f0e2cf;--bg1:#fde8c8;--bg2:#fff4e6;--bg3:#fffdfa}
|
|
99
110
|
@media (prefers-color-scheme:dark){:root{--ink:#f5efe6;--inkSoft:#cbbdad;--card:#241b13;--line:#3a2c1e;--bg1:#2a1d10;--bg2:#1b130b;--bg3:#130d07}}
|
|
100
111
|
*{box-sizing:border-box}html,body{height:100%}
|
|
101
112
|
body{margin:0;font-family:"Quicksand",system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:linear-gradient(180deg,var(--bg1) 0%,var(--bg2) 45%,var(--bg3) 100%);background-attachment:fixed;display:flex;align-items:center;justify-content:center;padding:1.5rem;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
/* Self-contained so the showcase renders correctly whether or not the host
|
|
9
9
|
injects theme tokens. Warm Cloud Bongos defaults; overridable by the pack. */
|
|
10
10
|
:root {
|
|
11
|
-
--bg: #
|
|
12
|
-
--rule: #
|
|
11
|
+
--bg: #f9d9a8; --card: #fffaf2; --ink: #2b170e; --ink-soft: #6d4a33;
|
|
12
|
+
--rule: #e8a463; --accent: #ce4806;
|
|
13
13
|
}
|
|
14
14
|
* { box-sizing: border-box; }
|
|
15
15
|
body {
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.137",
|
|
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.137",
|
|
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.137",
|
|
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/src/module-api.js
CHANGED
|
@@ -699,8 +699,10 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
|
|
|
699
699
|
// landed since 1.19.134 with no explicit bump. run 31863235867. (task 1002620)
|
|
700
700
|
// 1.19.136 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
701
701
|
// landed since 1.19.135 with no explicit bump. run 31889474899. (task 1002620)
|
|
702
|
+
// 1.19.137 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
703
|
+
// landed since 1.19.136 with no explicit bump. run 31890033301. (task 1002620)
|
|
702
704
|
// ---------------------------------------------------------------------------
|
|
703
|
-
const CORE_VERSION = '1.19.
|
|
705
|
+
const CORE_VERSION = '1.19.137'; // CI auto-patch carrier (ADR 0161); see changelog above
|
|
704
706
|
|
|
705
707
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
706
708
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
|
@@ -77,3 +77,71 @@ test('the claude-design adapter falls back to the pack accent, never a brand lit
|
|
|
77
77
|
`hardcoded colour ${hex} in the claude-design adapter — resolve it from the tokens instead`);
|
|
78
78
|
}
|
|
79
79
|
});
|
|
80
|
+
|
|
81
|
+
// ---- page-local palettes stay aligned with the pack (task 1002810) ---------
|
|
82
|
+
//
|
|
83
|
+
// The same drift class one layer up: a page (or served-HTML route) declaring its
|
|
84
|
+
// own colour values silently keeps whatever palette it was born with when the
|
|
85
|
+
// pack moves. tests/hall_audit.mjs §8 already bans hall pages from declaring
|
|
86
|
+
// pack vars at all; these cover the two survivors outside the hall — the
|
|
87
|
+
// status-ui explore page and the provisioning onboarding pages.
|
|
88
|
+
|
|
89
|
+
const RETIRED_ACCENT_FAMILY = ['ea580c', 'c2410c', 'f97316', 'fff7ed', 'fed7aa'];
|
|
90
|
+
|
|
91
|
+
function walk(dir, exts, out = []) {
|
|
92
|
+
for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
93
|
+
if (e.name === 'node_modules' || e.name.startsWith('.')) continue;
|
|
94
|
+
const p = path.join(dir, e.name);
|
|
95
|
+
if (e.isDirectory()) walk(p, exts, out);
|
|
96
|
+
else if (exts.includes(path.extname(e.name))) out.push(p);
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
test('the retired pre-1002749 accent family appears nowhere in served UI code', () => {
|
|
102
|
+
const offenders = [];
|
|
103
|
+
for (const root of ['modules', 'src']) {
|
|
104
|
+
for (const f of walk(path.join(REPO_ROOT, root), ['.html', '.css', '.js'])) {
|
|
105
|
+
const text = fs.readFileSync(f, 'utf8').toLowerCase();
|
|
106
|
+
for (const hex of RETIRED_ACCENT_FAMILY) {
|
|
107
|
+
if (text.includes(`#${hex}`)) offenders.push(`${path.relative(REPO_ROOT, f)}: #${hex}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
assert.deepEqual(offenders, [],
|
|
112
|
+
'a page carrying a retired accent hex is a private palette fork — align it with the pack (task 1002810)');
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test('the explore page mirrors the pack, var for var', () => {
|
|
116
|
+
const html = fs.readFileSync(path.join(REPO_ROOT, 'modules/status-ui/public/explore.html'), 'utf8');
|
|
117
|
+
const root = html.match(/:root\s*\{([\s\S]*?)\}/);
|
|
118
|
+
assert.ok(root, 'explore.html declares a light :root block');
|
|
119
|
+
const colors = pack.theme.ui.colors;
|
|
120
|
+
const MIRROR = {
|
|
121
|
+
'--bg': colors.bg, '--card': colors.bgCard, '--ink': colors.ink,
|
|
122
|
+
'--ink-soft': colors.inkSoft, '--rule': colors.rule, '--accent': colors.accent,
|
|
123
|
+
};
|
|
124
|
+
for (const [cssVar, packVal] of Object.entries(MIRROR)) {
|
|
125
|
+
const m = root[1].match(new RegExp(`${cssVar}\\s*:\\s*(#[0-9a-fA-F]{6})`));
|
|
126
|
+
assert.ok(m, `explore.html defines ${cssVar}`);
|
|
127
|
+
assert.equal(m[1].toLowerCase(), String(packVal).toLowerCase(),
|
|
128
|
+
`explore.html ${cssVar} must equal the pack value — the injected themeMarkup paints exactly this, ` +
|
|
129
|
+
'so a divergent fallback renders a different page wherever injection is absent');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
test('the provisioning onboarding pages resolve their accent pair from branding', () => {
|
|
134
|
+
const source = fs.readFileSync(
|
|
135
|
+
path.join(REPO_ROOT, 'modules/provisioning/routes/provisioning.js'), 'utf8');
|
|
136
|
+
assert.match(source, /--sun:\$\{/, '--sun interpolates a resolved value, never a literal');
|
|
137
|
+
assert.match(source, /--sun600:\$\{/, '--sun600 interpolates a resolved value, never a literal');
|
|
138
|
+
const block = source.match(/const ACCENT =[\s\S]*?\}\)\(\);/);
|
|
139
|
+
assert.ok(block, 'one resolved ACCENT pair (the FALLBACK_ACCENT idiom from the claude-design adapter)');
|
|
140
|
+
assert.match(block[0], /branding\(\)/, 'the pair resolves from the instance branding');
|
|
141
|
+
const allowed = new Set([pack.theme.ui.colors.accent, pack.theme.ui.colors.accentDeep]
|
|
142
|
+
.map((h) => String(h).toLowerCase()));
|
|
143
|
+
for (const hex of block[0].match(/#[0-9a-fA-F]{6}\b/g) || []) {
|
|
144
|
+
assert.ok(allowed.has(hex.toLowerCase()),
|
|
145
|
+
`ACCENT fallback ${hex} must be the pack accent/accentDeep, not a palette of its own`);
|
|
146
|
+
}
|
|
147
|
+
});
|