@bongos/core 1.19.870 → 1.19.871
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 +10 -10
- package/docs/module-api-changelog.md +2 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +1 -1
- package/tests/goal_subtitle.mjs +48 -4
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.871",
|
|
6
|
+
"core_contract": "1.19.871",
|
|
7
|
+
"source_commit": "67620593f1ed87465a216fd10c1da6f3e612e683",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-09-
|
|
9
|
+
"built_at": "2026-09-18T20:45:57.710Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
12
|
"docs_redacted": 500,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
19
|
"file_count": 2812,
|
|
20
|
-
"tree_sha256": "
|
|
20
|
+
"tree_sha256": "20310f17dfaa6daa96b4a95d76e600e86e47d3f50c26ff8e5c61e99ad8bed267",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -2602,7 +2602,7 @@
|
|
|
2602
2602
|
{
|
|
2603
2603
|
"path": "docs/module-api-changelog.md",
|
|
2604
2604
|
"mode": "0000644",
|
|
2605
|
-
"sha256": "
|
|
2605
|
+
"sha256": "942c02c95b11974a2dfa23288232af47dc505fcc1ea9aa7fa5e7bcb9c9637b63"
|
|
2606
2606
|
},
|
|
2607
2607
|
{
|
|
2608
2608
|
"path": "docs/modules-contract.md",
|
|
@@ -7927,12 +7927,12 @@
|
|
|
7927
7927
|
{
|
|
7928
7928
|
"path": "package-lock.json",
|
|
7929
7929
|
"mode": "0000644",
|
|
7930
|
-
"sha256": "
|
|
7930
|
+
"sha256": "a286ed3d44baa4e0996d95f9a822b8d1ea89d4b2703dc4df98f4a694ae6a80fc"
|
|
7931
7931
|
},
|
|
7932
7932
|
{
|
|
7933
7933
|
"path": "package.json",
|
|
7934
7934
|
"mode": "0000644",
|
|
7935
|
-
"sha256": "
|
|
7935
|
+
"sha256": "ad919bbaaf5a3d1cb95005c9b45a9d6feb7b3aeae20d575deb24a66d7318ef53"
|
|
7936
7936
|
},
|
|
7937
7937
|
{
|
|
7938
7938
|
"path": "public-docs/index.html",
|
|
@@ -9882,7 +9882,7 @@
|
|
|
9882
9882
|
{
|
|
9883
9883
|
"path": "src/module-api.js",
|
|
9884
9884
|
"mode": "0000644",
|
|
9885
|
-
"sha256": "
|
|
9885
|
+
"sha256": "56a6a61c2947942ec791acd5efda2ff62684d4f543f80249cfdead156d8ff4ea"
|
|
9886
9886
|
},
|
|
9887
9887
|
{
|
|
9888
9888
|
"path": "src/module-loader/catalog.js",
|
|
@@ -11352,7 +11352,7 @@
|
|
|
11352
11352
|
{
|
|
11353
11353
|
"path": "tests/goal_subtitle.mjs",
|
|
11354
11354
|
"mode": "0000644",
|
|
11355
|
-
"sha256": "
|
|
11355
|
+
"sha256": "90f27cd81c785d81b89bb7242d2e6a1e6a96e6c01a9422a3a841439dfab5433c"
|
|
11356
11356
|
},
|
|
11357
11357
|
{
|
|
11358
11358
|
"path": "tests/goal_suggest.mjs",
|
|
@@ -2214,5 +2214,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
2214
2214
|
landed since 1.19.868 with no explicit bump. run 35382740500. (task 1002620)
|
|
2215
2215
|
1.19.870 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2216
2216
|
landed since 1.19.869 with no explicit bump. run 35388809554. (task 1002620)
|
|
2217
|
+
1.19.871 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
2218
|
+
landed since 1.19.870 with no explicit bump. run 35393164740. (task 1002620)
|
|
2217
2219
|
---------------------------------------------------------------------------
|
|
2218
2220
|
```
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.871",
|
|
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.871",
|
|
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.871",
|
|
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
|
@@ -71,7 +71,7 @@ const { responsibilityFor, ROLE_RESPONSIBILITIES } = require('./role-responsibil
|
|
|
71
71
|
// there. scripts/gds/bump-version.js still rewrites the literal below; it appends
|
|
72
72
|
// the entry to that file. Look for a version's history there, not here.
|
|
73
73
|
// ---------------------------------------------------------------------------
|
|
74
|
-
const CORE_VERSION = '1.19.
|
|
74
|
+
const CORE_VERSION = '1.19.871'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
75
75
|
|
|
76
76
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
77
77
|
// Usage: const log = api.logger('dev-box'); log.info('mounted');
|
package/tests/goal_subtitle.mjs
CHANGED
|
@@ -184,6 +184,27 @@ test('an unset subtitle is hidden; a set one is shown trimmed', () => {
|
|
|
184
184
|
assert.equal(els.sub.textContent, 'the grep path');
|
|
185
185
|
});
|
|
186
186
|
|
|
187
|
+
// goalTitleRegions — where the row's title ends and the card's begins, as an
|
|
188
|
+
// ANCHOR rather than a byte count (task 1004036).
|
|
189
|
+
//
|
|
190
|
+
// The assertion below and the vacuity guard further down BOTH derive the row's
|
|
191
|
+
// region from here, deliberately. The previous shape asserted subtitleAttr(g)
|
|
192
|
+
// absent from a 160-char window while the row's real region measured 766 — 21%
|
|
193
|
+
// of the span it claimed to check — and a negative assertion passes when it
|
|
194
|
+
// finds nothing, which is also what it does when it is looking in the wrong
|
|
195
|
+
// place. Injecting the tooltip into the row left it passing.
|
|
196
|
+
//
|
|
197
|
+
// One derivation, not two: a guard that recomputed the region itself would stay
|
|
198
|
+
// green while the assertion it claims to protect was narrowed back. Narrow this
|
|
199
|
+
// function and the guard fails, which is the only arrangement that makes the
|
|
200
|
+
// guard worth having.
|
|
201
|
+
function goalTitleRegions(js) {
|
|
202
|
+
const row = js.indexOf('class="gr-title"');
|
|
203
|
+
const card = js.indexOf('class="goal-card__title gr-title"');
|
|
204
|
+
assert.ok(card > row, 'card title boundary not found — re-anchor this slice to whatever now follows the row title');
|
|
205
|
+
return { row, card, rowRegion: js.slice(row, card) };
|
|
206
|
+
}
|
|
207
|
+
|
|
187
208
|
test('on a LIST the subtitle is a visible line; on the CARD it stays a tooltip', () => {
|
|
188
209
|
// task 1003206: the row/card painters moved to goals-render.js — the second half
|
|
189
210
|
// of the carve goals-lib.js began — so read the family, not one filename.
|
|
@@ -197,15 +218,38 @@ test('on a LIST the subtitle is a visible line; on the CARD it stays a tooltip',
|
|
|
197
218
|
// task 1003307 gave the ROW its line back on the owner's call: 35 of 72 goals
|
|
198
219
|
// carry a subtitle, and a tooltip does not exist on a touch screen. The CARD
|
|
199
220
|
// has no room for a line, so it keeps the tooltip (task 1003224's shape).
|
|
200
|
-
const row = js
|
|
221
|
+
const { row, card, rowRegion } = goalTitleRegions(js);
|
|
201
222
|
assert.ok(row > 0, 'the row title is still rendered');
|
|
202
|
-
assert.match(js.slice(row, row + 200), /subtitleLine\(g\)/, 'the row renders the visible line');
|
|
203
|
-
assert.doesNotMatch(js.slice(row, row + 160), /subtitleAttr\(g\)/, 'the row does not also carry the tooltip');
|
|
204
|
-
const card = js.indexOf('class="goal-card__title gr-title"');
|
|
205
223
|
assert.ok(card > 0, 'the card title is still rendered');
|
|
224
|
+
assert.match(rowRegion, /subtitleLine\(g\)/, 'the row renders the visible line');
|
|
225
|
+
assert.doesNotMatch(rowRegion, /subtitleAttr\(g\)/, 'the row does not also carry the tooltip');
|
|
206
226
|
assert.match(js.slice(card, card + 160), /subtitleAttr\(g\)/, 'the card carries the tooltip');
|
|
207
227
|
});
|
|
208
228
|
|
|
229
|
+
// ---- the negative assertion above is not vacuous (task 1004036) -------------
|
|
230
|
+
// A negative assertion passes when it finds nothing, which is also what it does
|
|
231
|
+
// when it is looking in the wrong place — so one that has never been watched
|
|
232
|
+
// FAIL is not evidence of anything. The previous shape checked subtitleAttr(g)
|
|
233
|
+
// was absent from a 160-char window while the row's real region measured 766,
|
|
234
|
+
// so it verified 21% of the span it claimed to; injecting the tooltip into the
|
|
235
|
+
// row left it passing. This case does that injection and requires the anchored
|
|
236
|
+
// region to catch it. It guards the ASSERTION, not the page.
|
|
237
|
+
test('the row/tooltip check CATCHES a row that carries the tooltip', () => {
|
|
238
|
+
const js = goalsPageSource();
|
|
239
|
+
const { row, card } = goalTitleRegions(js);
|
|
240
|
+
|
|
241
|
+
// Inject the forbidden attribute INSIDE the row's region but past the old
|
|
242
|
+
// 160-char window — the exact regression the assertion exists to catch.
|
|
243
|
+
const at = row + Math.floor((card - row) / 2);
|
|
244
|
+
const broken = js.slice(0, at) + ' title="${subtitleAttr(g)}" ' + js.slice(at);
|
|
245
|
+
|
|
246
|
+
// Through the SAME derivation the assertion uses, so narrowing it reds here.
|
|
247
|
+
assert.throws(
|
|
248
|
+
() => assert.doesNotMatch(goalTitleRegions(broken).rowRegion, /subtitleAttr\(g\)/),
|
|
249
|
+
'the row region does not notice a tooltip added to the row — the check is vacuous again',
|
|
250
|
+
);
|
|
251
|
+
});
|
|
252
|
+
|
|
209
253
|
test('every CSS token the new styles use actually exists', () => {
|
|
210
254
|
// copy-desk.css shipped with --line and --panel, which style.css never
|
|
211
255
|
// defines, so its fallbacks rendered as nothing (idea 1000821).
|