@bongos/core 1.19.109 → 1.19.111

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.109",
6
- "core_contract": "1.19.109",
7
- "source_commit": "9e8a3444891adec77e52aecda57d21cd47e0e408",
5
+ "core_version": "1.19.111",
6
+ "core_contract": "1.19.111",
7
+ "source_commit": "e77982e047dbf7159fed056ab3430ea2239ec221",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-08-14T14:23:16.828Z",
9
+ "built_at": "2026-08-14T14:40:48.428Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 302,
@@ -17,7 +17,7 @@
17
17
  "gate": "passed"
18
18
  },
19
19
  "file_count": 1559,
20
- "tree_sha256": "68310c0ca0be28e5eff0b8b223ba78bf5edbd24e7dd79018d6ac283656eaeef1",
20
+ "tree_sha256": "c69dad030aadde5ef92a03f42c847bcadace866f51fca0b8c8c47613546b137e",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/blocker-review/SKILL.md",
@@ -4152,12 +4152,12 @@
4152
4152
  {
4153
4153
  "path": "package-lock.json",
4154
4154
  "mode": "0000644",
4155
- "sha256": "0ad9780c25eeea40f124f750d54beeafdb191b1c6ae104754b482eae04766059"
4155
+ "sha256": "e0f8b3141931cbc2ad8f9713e0331afc6c0276577486a9b821a333ec76623e0e"
4156
4156
  },
4157
4157
  {
4158
4158
  "path": "package.json",
4159
4159
  "mode": "0000644",
4160
- "sha256": "0654f3a21beb49226093259215e4baaaeb1616230b7cb86223338d41b79cf546"
4160
+ "sha256": "9b5e00c1fd593d1c3bbad4a8d08c6c13e32924ed290b42189f638903b7fadde7"
4161
4161
  },
4162
4162
  {
4163
4163
  "path": "public-docs/index.html",
@@ -4397,7 +4397,7 @@
4397
4397
  {
4398
4398
  "path": "public-landing/assets/cosmos.css",
4399
4399
  "mode": "0000644",
4400
- "sha256": "caaae45a551f60c501f68d188b2163819fd93c4aff45e341c41098865e413c03"
4400
+ "sha256": "4b549b012f7e736ee81e54ed35a65c96acf9cd6a223c3e9fac369d9328426a88"
4401
4401
  },
4402
4402
  {
4403
4403
  "path": "public-landing/buddha.png",
@@ -4417,7 +4417,7 @@
4417
4417
  {
4418
4418
  "path": "public-landing/projects.html",
4419
4419
  "mode": "0000644",
4420
- "sha256": "11d478f2f60c4cafba0eed25e4d56a561fc9d2aef4edb4c7a568040109caf191"
4420
+ "sha256": "264e6f7cb1273b24208b3063bec53f544d86f9174a4bd854a57c784722427583"
4421
4421
  },
4422
4422
  {
4423
4423
  "path": "public-landing/world/assets/clouds/cloud-island-large.png",
@@ -5732,7 +5732,7 @@
5732
5732
  {
5733
5733
  "path": "src/module-api.js",
5734
5734
  "mode": "0000644",
5735
- "sha256": "5bda15ba1c10ee2642f8db5e3d1411eb4dfeefa1858eb74af2aa5f84b37d497f"
5735
+ "sha256": "92b3fc46c20ef09f78569a72bcb9a40827e1e2e5cf9a55c1b6f6a1abfc27b999"
5736
5736
  },
5737
5737
  {
5738
5738
  "path": "src/module-loader/catalog.js",
@@ -7257,7 +7257,7 @@
7257
7257
  {
7258
7258
  "path": "tests/projects_hub.mjs",
7259
7259
  "mode": "0000644",
7260
- "sha256": "9a4de4c40bf9272143e3098c80fa8d8473ae2b441a0f8f6746c50431bfb12d9f"
7260
+ "sha256": "5b23c369288ebdfd4a35ad76faa5ac5fbf9ff7b55de2a283b184977ba5513abe"
7261
7261
  },
7262
7262
  {
7263
7263
  "path": "tests/provision.mjs",
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.109",
3
+ "version": "1.19.111",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.19.109",
9
+ "version": "1.19.111",
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.109",
3
+ "version": "1.19.111",
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",
@@ -394,7 +394,23 @@ p.sec-p{font-size:var(--fs-lede);font-weight:500;color:var(--ink-soft);line-heig
394
394
  text-transform:lowercase;color:var(--chrome-ink);text-decoration:none;text-shadow:var(--chrome-glow);
395
395
  white-space:nowrap;}
396
396
  .shell .mark span{color:var(--chrome-accent);}
397
- .shell .caret{color:var(--chrome-accent);animation:cbBlink 1s step-end infinite;font-weight:400;}
397
+ /* Two colors, one system (task 1002793): the landing's static mark wraps only
398
+ bongos in a span, so the shared rule above already colors it alone there.
399
+ Here both words are spans, so the typed prefix opts back into the base ink
400
+ by id — the shared rule must not change, the landing leans on it. */
401
+ .shell .mark #markPrefix{color:var(--chrome-ink);}
402
+ /* the prefix's width-pinned box: bongos holds still while letters come and go;
403
+ the width transition covers the between-words change only */
404
+ .shell .markLeft{display:inline-block;text-align:left;white-space:nowrap;transition:width .18s ease;}
405
+ /* (no reduced-motion guard here: the global kill switch at the end of this
406
+ file already zeroes every transition, and the test that pins it extracts
407
+ the FIRST reduced-motion block — an earlier one would shadow it) */
408
+ .shell .markMeasure{position:absolute;visibility:hidden;white-space:pre;pointer-events:none;}
409
+ /* a drawn 2px bar, not a glyph: a block glyph keeps a full character cell of
410
+ width even while blinked invisible, and + the literal space it read as two
411
+ characters of air between the words */
412
+ .shell .caret{display:inline-block;width:2px;height:.85em;margin-left:1px;vertical-align:-.1em;
413
+ background:var(--chrome-accent);animation:cbBlink 1s step-end infinite;}
398
414
  @keyframes cbBlink{50%{opacity:0;}}
399
415
  .shell-right{flex:1 1 0;display:flex;align-items:center;justify-content:flex-end;
400
416
  gap:clamp(8px,1.6vw,14px);flex-wrap:wrap;}
@@ -87,8 +87,14 @@ try{var _m=localStorage.getItem('cb-color-mode');if(_m==='light'||_m==='dark')do
87
87
  the word you type and the assistant is what varies — which is also what
88
88
  the vanity doors do (claudebongos.com, geminibongos.com swap the first
89
89
  word, not the second). The typing only runs on the default two-word name;
90
- a re-branded instance gets its own wordmark, static. -->
91
- <a class="mark" href="/"><span id="markPrefix">cloud</span><span class="caret" aria-hidden="true">▌</span> <span id="markWord">bongos</span></a>
90
+ a re-branded instance gets its own wordmark, static.
91
+ "Still" is literal (task 1002793): the prefix + caret live in #markLeft,
92
+ whose width is pinned to the coming word BEFORE typing, so letters come
93
+ and go without bongos moving; #markMeasure is the hidden ruler. The
94
+ caret is a drawn 2px bar, not a glyph — a block glyph plus the literal
95
+ space read as two characters of air. Only bongos wears the accent, the
96
+ same split the landing's static mark already has. -->
97
+ <a class="mark" href="/"><span class="markLeft" id="markLeft"><span id="markPrefix">cloud</span><span class="caret" aria-hidden="true"></span></span> <span id="markWord">bongos</span><span class="markMeasure" id="markMeasure" aria-hidden="true"></span></a>
92
98
 
93
99
  <nav class="navrow" aria-label="Project hub">
94
100
  <a href="/" class="navHome" data-nav="home">Home</a>
@@ -507,9 +513,14 @@ try{var _m=localStorage.getItem('cb-color-mode');if(_m==='light'||_m==='dark')do
507
513
  once. Same two numbers the hero uses, so the two surfaces read as one
508
514
  system rather than two animations that happen to share a font. */
509
515
  var TYPE = 72, ERASE = 38, HOLD = 900, HOLD_HOME = 2100;
510
- var el = $('markPrefix'), wi = 0;
516
+ var el = $('markPrefix'), box = $('markLeft'), meas = $('markMeasure'), wi = 0;
511
517
  (function cycle() {
512
518
  var w = PREFIXES[wi++ % PREFIXES.length], i = 0;
519
+ /* pin the box to the coming word's rendered width BEFORE typing: bongos
520
+ must not move while letters come and go (the owner's call, 2026-08-14).
521
+ Between words the CSS width transition glides instead of jumping. */
522
+ meas.textContent = w;
523
+ box.style.width = (meas.offsetWidth + 4) + 'px';
513
524
  (function type() {
514
525
  if (i <= w.length) { el.textContent = w.slice(0, i++); setTimeout(type, TYPE); }
515
526
  else setTimeout(function erase() {
package/src/module-api.js CHANGED
@@ -645,8 +645,12 @@ const { validateOrRespond, LIMITS, parseId, asyncHandler, corsPublicGet, parsePa
645
645
  // landed since 1.19.107 with no explicit bump. run 31803763842. (task 1002620)
646
646
  // 1.19.109 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
647
647
  // landed since 1.19.108 with no explicit bump. run 31809188532. (task 1002620)
648
+ // 1.19.110 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
649
+ // landed since 1.19.109 with no explicit bump. run 31810003558. (task 1002620)
650
+ // 1.19.111 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
651
+ // landed since 1.19.110 with no explicit bump. run 31810638191. (task 1002620)
648
652
  // ---------------------------------------------------------------------------
649
- const CORE_VERSION = '1.19.109'; // CI auto-patch carrier (ADR 0161); see changelog above
653
+ const CORE_VERSION = '1.19.111'; // CI auto-patch carrier (ADR 0161); see changelog above
650
654
 
651
655
  // A namespaced logger so a module's log lines are attributable + consistent.
652
656
  // Usage: const log = api.logger('dev-box'); log.info('mounted');
@@ -109,6 +109,26 @@ test('the hall link is not labelled "Enter the Hall"', () => {
109
109
  assert.doesNotMatch(HUB, /Enter the Hall/i);
110
110
  });
111
111
 
112
+ test('the wordmark holds bongos still and colors it apart (task 1002793)', () => {
113
+ // Owner-reported: the block caret glyph + a literal space read as two
114
+ // characters of air; every typed letter shifted bongos; both words wore the
115
+ // accent. The caret is now a thin drawn bar (no glyph), the prefix sits in a
116
+ // width-pinned box measured per word BEFORE typing, and only bongos keeps
117
+ // the accent — the landing's static mark already colors only its bongos
118
+ // span, so the two shells read as one system.
119
+ assert.match(HUB,
120
+ /<span class="markLeft" id="markLeft"><span id="markPrefix">cloud<\/span><span class="caret" aria-hidden="true"><\/span><\/span> <span id="markWord">bongos<\/span>/,
121
+ 'prefix + caret share the pinned box; a single literal space reaches bongos; the caret carries no glyph');
122
+ assert.match(SCRIPT, /meas\.textContent = w/,
123
+ 'the coming word is measured before it is typed');
124
+ assert.match(SCRIPT, /box\.style\.width = \(meas\.offsetWidth \+ 4\) \+ 'px'/,
125
+ 'the box is pinned to the full word so bongos cannot move mid-word');
126
+ assert.ok(COSMOS.includes('.shell .mark #markPrefix{color:var(--chrome-ink);}'),
127
+ 'the typed word wears the base ink — the shared span rule (which the landing relies on) stays');
128
+ assert.match(COSMOS, /\.shell \.caret\{[^}]*width:2px[^}]*background:var\(--chrome-accent\)/,
129
+ 'the caret is a drawn 2px bar, not a full character cell');
130
+ });
131
+
112
132
  test('orb accents are tokens, never literal hexes (§6)', () => {
113
133
  // ONE palette serves both the map's spheres and the manage cards, so a
114
134
  // project reads the same colour in either view