@bongos/core 1.21.165 → 1.21.166
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 +28 -23
- package/docs/copy-inventory.md +61 -61
- package/docs/copy-registry.json +68 -68
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-readings.json +112 -113
- package/modules/builder-settings/builder-needs.js +5 -0
- package/modules/hall-ui/public/builders.js +3 -17
- package/modules/hall-ui/public/hall-render.js +8 -24
- package/modules/hall-ui/public/index.html +3 -4
- package/modules/hall-ui/public/settings.js +4 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +10 -0
- package/src/bongos/routes/me.js +3 -0
- package/src/module-api.js +1 -1
- package/tests/hall_board_world.mjs +18 -39
- package/tests/home_attention_cards.mjs +6 -2
- package/tests/settings_art_key_absent.mjs +137 -0
package/docs/page-readings.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"adr": "0341 D3",
|
|
6
6
|
"reread": "node scripts/gds/page-reader.js --stale",
|
|
7
7
|
"how": ["Generated by node scripts/gds/page-reader.js (BV2.TW04, task 1004315; ADR 0341 D3). Do not hand-edit.","One entry per page of docs/page-inventory.json. Lines are in page order: the default state first, and a line only another state shows sits where that state shows it, with its state named.","placement: placed = a docs/copy-registry.json row renders it (file, line, string_id); shared = shell text every page of the surface carries (top bar, sidebar, footer), with its row when the registry has one; unplaced = the registry cannot place it (a rewrite becomes an engineer task, ADR 0341 D4).","text keeps {…} where the registry row has a hole, or where a value the page read from its API was filled in. A string that is only such data is counted under omitted.data, not listed.","reading_hash is over the non-shared lines (key, section, text); files_hash is over the page's inventory files. --check compares files_hash only and never opens a browser.","Rendered through the hall-preview harness (hall) and the ui-design kit stub (landing, status), at 1280x800 with the clock pinned, so a reading is the fixture world's page."],
|
|
8
|
-
"counts": {"pages":46,"lines":
|
|
8
|
+
"counts": {"pages":46,"lines":5403,"placed":1697,"shared":398,"unplaced":3308,"omitted_data":3491},
|
|
9
9
|
"pages": [
|
|
10
10
|
{
|
|
11
11
|
"id": "builders:atlas",
|
|
@@ -1439,9 +1439,9 @@
|
|
|
1439
1439
|
"surface": "builders",
|
|
1440
1440
|
"title": "Builders' Hall",
|
|
1441
1441
|
"states_read": ["home","standing","standing-karma","out","founding","genesis","decide","demo"],
|
|
1442
|
-
"files_hash": "
|
|
1443
|
-
"reading_hash": "
|
|
1444
|
-
"counts": {"lines":
|
|
1442
|
+
"files_hash": "bd2d971d778cd48e",
|
|
1443
|
+
"reading_hash": "42dbab4f3948fe66",
|
|
1444
|
+
"counts": {"lines":117,"placed":63,"shared":10,"unplaced":44},
|
|
1445
1445
|
"omitted": {"data":101},
|
|
1446
1446
|
"notes": ["founding: an action failed (page.focus: Timeout 6000ms exceeded.); read as it stood"],
|
|
1447
1447
|
"lines": [
|
|
@@ -1455,114 +1455,113 @@
|
|
|
1455
1455
|
{"key":"L0008","section":"top bar","text":"Artistry","placement":"shared"},
|
|
1456
1456
|
{"key":"L0009","section":"top bar","text":"Ideating","placement":"shared"},
|
|
1457
1457
|
{"key":"L0010","section":"Good morning, {…}","text":"Good morning, {…}","placement":"unplaced"},
|
|
1458
|
-
{"key":"L0011","section":"Good morning, {…}","text":"
|
|
1459
|
-
{"key":"L0012","section":"Good morning, {…}","text":"
|
|
1460
|
-
{"key":"L0013","section":"Good morning, {…}","text":"
|
|
1461
|
-
{"key":"L0014","section":"Good morning, {…}","text":"
|
|
1462
|
-
{"key":"L0015","section":"Good morning, {…}","text":"
|
|
1463
|
-
{"key":"L0016","section":"Good morning, {…}","text":"
|
|
1464
|
-
{"key":"L0017","section":"Good morning, {…}","text":"Rebase
|
|
1465
|
-
{"key":"L0018","section":"Good morning, {…}","text":"
|
|
1466
|
-
{"key":"L0019","section":"Good morning, {…}","text":"
|
|
1467
|
-
{"key":"L0020","section":"Good morning, {…}","text":"
|
|
1468
|
-
{"key":"L0021","section":"Good morning, {…}","text":"
|
|
1469
|
-
{"key":"L0022","section":"Good morning, {…}","text":"
|
|
1470
|
-
{"key":"L0023","section":"Good morning, {…}","text":"
|
|
1471
|
-
{"key":"L0024","section":"Good morning, {…}","text":"
|
|
1472
|
-
{"key":"L0025","section":"Good morning, {…}","text":"
|
|
1473
|
-
{"key":"L0026","section":"Good morning, {…}","text":"
|
|
1474
|
-
{"key":"L0027","section":"
|
|
1475
|
-
{"key":"L0028","section":"Goals","text":"
|
|
1476
|
-
{"key":"L0029","section":"Goals","text":"
|
|
1477
|
-
{"key":"L0030","section":"
|
|
1478
|
-
{"key":"L0031","section":"Needs your attention13","text":"
|
|
1479
|
-
{"key":"L0032","section":"Needs your attention13","text":"
|
|
1480
|
-
{"key":"L0033","section":"Needs your attention13","text":"
|
|
1481
|
-
{"key":"L0034","section":"
|
|
1482
|
-
{"key":"L0035","section":"Your work","text":"
|
|
1483
|
-
{"key":"L0036","section":"Your work","text":"
|
|
1484
|
-
{"key":"L0037","section":"Your work","text":"Last
|
|
1485
|
-
{"key":"L0038","section":"Your work","text":"Last
|
|
1486
|
-
{"key":"L0039","section":"Your work","text":"
|
|
1487
|
-
{"key":"L0040","section":"Your work","text":"
|
|
1488
|
-
{"key":"L0041","section":"Your work","text":"
|
|
1489
|
-
{"key":"L0042","section":"Your work","text":"
|
|
1490
|
-
{"key":"L0043","section":"Your work","text":"
|
|
1491
|
-
{"key":"L0044","section":"Your work","text":"
|
|
1492
|
-
{"key":"L0045","section":"Your work","text":"
|
|
1493
|
-
{"key":"L0046","section":"Your work","text":"
|
|
1494
|
-
{"key":"L0047","section":"Your work","text":"
|
|
1495
|
-
{"key":"L0048","section":"Your work","text":"
|
|
1496
|
-
{"key":"L0049","section":"Your work","text":"
|
|
1497
|
-
{"key":"L0050","section":"Your work","text":"
|
|
1498
|
-
{"key":"L0051","section":"Your work","text":"
|
|
1499
|
-
{"key":"L0052","section":"Your work","text":"{…}
|
|
1500
|
-
{"key":"L0053","section":"Your work","text":"{…}
|
|
1501
|
-
{"key":"L0054","section":"Your work","text":"
|
|
1502
|
-
{"key":"L0055","section":"Your work","text":"
|
|
1503
|
-
{"key":"L0056","section":"Your work","text":"
|
|
1504
|
-
{"key":"L0057","section":"Your work","text":"
|
|
1505
|
-
{"key":"L0058","section":"
|
|
1506
|
-
{"key":"L0059","section":"Reviews","text":"
|
|
1507
|
-
{"key":"L0060","section":"Reviews","text":"
|
|
1508
|
-
{"key":"L0061","section":"Reviews","text":"
|
|
1509
|
-
{"key":"L0062","section":"Reviews","text":"
|
|
1510
|
-
{"key":"L0063","section":"Reviews","text":"
|
|
1511
|
-
{"key":"L0064","section":"Reviews","text":"
|
|
1512
|
-
{"key":"L0065","section":"Reviews","text":"{…}
|
|
1513
|
-
{"key":"L0066","section":"Reviews","text":"{…}
|
|
1514
|
-
{"key":"L0067","section":"
|
|
1515
|
-
{"key":"L0068","section":"Karma","text":"Karma","placement":"unplaced","state":"standing"},
|
|
1516
|
-
{"key":"L0069","section":"Karma","text":"
|
|
1517
|
-
{"key":"L0070","section":"Karma","text":"
|
|
1518
|
-
{"key":"L0071","section":"Karma","text":"
|
|
1519
|
-
{"key":"L0072","section":"Karma","text":"
|
|
1520
|
-
{"key":"L0073","section":"Karma","text":"
|
|
1521
|
-
{"key":"L0074","section":"
|
|
1522
|
-
{"key":"L0075","section":"Peer recognition","text":"
|
|
1523
|
-
{"key":"L0076","section":"Peer recognition","text":"
|
|
1524
|
-
{"key":"L0077","section":"Peer recognition","text":"
|
|
1525
|
-
{"key":"L0078","section":"Peer recognition","text":"
|
|
1526
|
-
{"key":"L0079","section":"Peer recognition","text":"
|
|
1527
|
-
{"key":"L0080","section":"Peer recognition","text":"
|
|
1528
|
-
{"key":"L0081","section":"Peer recognition","text":"{…}
|
|
1529
|
-
{"key":"L0082","section":"Peer recognition","text":"
|
|
1530
|
-
{"key":"L0083","section":"Peer recognition","text":"
|
|
1531
|
-
{"key":"L0084","section":"Peer recognition","text":"
|
|
1532
|
-
{"key":"L0085","section":"Peer recognition","text":"
|
|
1533
|
-
{"key":"L0086","section":"Peer recognition","text":"
|
|
1534
|
-
{"key":"L0087","section":"Peer recognition","text":"
|
|
1535
|
-
{"key":"L0088","section":"
|
|
1536
|
-
{"key":"L0089","section":"Achievements","text":"
|
|
1537
|
-
{"key":"L0090","section":"Achievements","text":"
|
|
1538
|
-
{"key":"L0091","section":"Achievements","text":"
|
|
1539
|
-
{"key":"L0092","section":"
|
|
1540
|
-
{"key":"L0093","section":"
|
|
1541
|
-
{"key":"L0094","section":"
|
|
1542
|
-
{"key":"L0095","section":"Next up — ready to claim","text":"
|
|
1543
|
-
{"key":"L0096","section":"Next up — ready to claim","text":"
|
|
1544
|
-
{"key":"L0097","section":"Next up — ready to claim","text":"
|
|
1545
|
-
{"key":"L0098","section":"Next up — ready to claim","text":"#
|
|
1546
|
-
{"key":"L0099","section":"Next up — ready to claim","text":"#
|
|
1547
|
-
{"key":"L0100","section":"Next up — ready to claim","text":"#
|
|
1548
|
-
{"key":"L0101","section":"Next up — ready to claim","text":"
|
|
1549
|
-
{"key":"L0102","section":"
|
|
1550
|
-
{"key":"L0103","section":"Recently shipped","text":"
|
|
1551
|
-
{"key":"L0104","section":"Recently shipped","text":"
|
|
1552
|
-
{"key":"L0105","section":"Recently shipped","text":"
|
|
1553
|
-
{"key":"L0106","section":"Recently shipped","text":"
|
|
1554
|
-
{"key":"L0107","section":"Recently shipped","text":"{…}
|
|
1555
|
-
{"key":"L0108","section":"Recently shipped","text":"
|
|
1556
|
-
{"key":"L0109","section":"Recently shipped","text":"
|
|
1557
|
-
{"key":"L0110","section":"
|
|
1558
|
-
{"key":"L0111","section":"What are you doing now?","text":"
|
|
1559
|
-
{"key":"L0112","section":"What are you doing now?","text":"
|
|
1560
|
-
{"key":"L0113","section":"What are you doing now?","text":"
|
|
1561
|
-
{"key":"L0114","section":"What are you doing now?","text":"
|
|
1562
|
-
{"key":"L0115","section":"What are you doing now?","text":"
|
|
1563
|
-
{"key":"L0116","section":"What are you doing now?","text":"
|
|
1564
|
-
{"key":"L0117","section":"What are you doing now?","text":"
|
|
1565
|
-
{"key":"L0118","section":"What are you doing now?","text":"Ask me again next session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":679,"string_id":"fa86bf403775"}
|
|
1458
|
+
{"key":"L0011","section":"Good morning, {…}","text":"Work","placement":"unplaced","state":"standing"},
|
|
1459
|
+
{"key":"L0012","section":"Good morning, {…}","text":"Credits","placement":"unplaced"},
|
|
1460
|
+
{"key":"L0013","section":"Good morning, {…}","text":"Shipped","placement":"placed","file":"modules/hall-ui/public/task.js","line":677,"string_id":"0c0a50ba1666"},
|
|
1461
|
+
{"key":"L0014","section":"Good morning, {…}","text":"Karma","placement":"unplaced"},
|
|
1462
|
+
{"key":"L0015","section":"Good morning, {…}","text":"Achievements","placement":"unplaced","state":"standing"},
|
|
1463
|
+
{"key":"L0016","section":"Good morning, {…}","text":"Rebase owed — new claims paused","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":564,"string_id":"06cbba1440b1","state":"standing"},
|
|
1464
|
+
{"key":"L0017","section":"Good morning, {…}","text":"— {…} confirmed {…} can't land yet, so {…} reward is pending (it lands on ship). Rebase + re-ship or release {…}: {…}.","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":564,"string_id":"68b547166d48","state":"standing"},
|
|
1465
|
+
{"key":"L0018","section":"Good morning, {…}","text":"+11 in 30d","placement":"unplaced"},
|
|
1466
|
+
{"key":"L0019","section":"Good morning, {…}","text":"Rank","placement":"unplaced"},
|
|
1467
|
+
{"key":"L0020","section":"Good morning, {…}","text":"Member since {…}","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":569,"string_id":"df335a1224ae","state":"standing"},
|
|
1468
|
+
{"key":"L0021","section":"Good morning, {…}","text":"+11 karma in 30d","placement":"unplaced","state":"standing"},
|
|
1469
|
+
{"key":"L0022","section":"Good morning, {…}","text":"Preferred work:","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":584,"string_id":"ed8edd684547","state":"standing"},
|
|
1470
|
+
{"key":"L0023","section":"Good morning, {…}","text":"{…}, {…}, {…}, ui","placement":"unplaced","state":"standing"},
|
|
1471
|
+
{"key":"L0024","section":"Good morning, {…}","text":"Change in Settings →","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":584,"string_id":"0279db21e29a","state":"standing"},
|
|
1472
|
+
{"key":"L0025","section":"Good morning, {…}","text":"karma","placement":"unplaced","state":"standing"},
|
|
1473
|
+
{"key":"L0026","section":"Good morning, {…}","text":"{…}% complete","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":748,"string_id":"7609b97aec22"},
|
|
1474
|
+
{"key":"L0027","section":"Goals","text":"Goals","placement":"unplaced"},
|
|
1475
|
+
{"key":"L0028","section":"Goals","text":"You haven’t joined any open goals.","placement":"placed","file":"modules/hall-ui/public/goals.js","line":100,"string_id":"044387a6f90c"},
|
|
1476
|
+
{"key":"L0029","section":"Goals","text":"Browse goals →","placement":"placed","file":"modules/hall-ui/public/goals.js","line":100,"string_id":"da910fee01d7"},
|
|
1477
|
+
{"key":"L0030","section":"Needs your attention13","text":"Needs your attention","placement":"placed","file":"modules/hall-ui/public/goal-inbox.js","line":597,"string_id":"7def635421ea"},
|
|
1478
|
+
{"key":"L0031","section":"Needs your attention13","text":"From the system","placement":"placed","file":"modules/hall-ui/public/hall-render.js","line":721,"string_id":"d32c5e058d1e"},
|
|
1479
|
+
{"key":"L0032","section":"Needs your attention13","text":"Ideas awaiting triage","placement":"placed","file":"modules/hall-ui/public/builders.js","line":895,"string_id":"e181637c5a5e"},
|
|
1480
|
+
{"key":"L0033","section":"Needs your attention13","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5"},
|
|
1481
|
+
{"key":"L0034","section":"Your work","text":"Your work","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":105,"string_id":"60550f388cc9"},
|
|
1482
|
+
{"key":"L0035","section":"Your work","text":"Window","placement":"unplaced","state":"standing"},
|
|
1483
|
+
{"key":"L0036","section":"Your work","text":"Last 7 days","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":170,"string_id":"9be8b839eff8","state":"standing"},
|
|
1484
|
+
{"key":"L0037","section":"Your work","text":"Last 30 days","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":170,"string_id":"35a15eb0a117","state":"standing"},
|
|
1485
|
+
{"key":"L0038","section":"Your work","text":"Last 90 days","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":171,"string_id":"59f0bc78a28f","state":"standing"},
|
|
1486
|
+
{"key":"L0039","section":"Your work","text":"All time","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":171,"string_id":"627c683a5e5d","state":"standing"},
|
|
1487
|
+
{"key":"L0040","section":"Your work","text":"Version","placement":"unplaced","state":"standing"},
|
|
1488
|
+
{"key":"L0041","section":"Your work","text":"— any —","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":173,"string_id":"729d4ce22b99","state":"standing"},
|
|
1489
|
+
{"key":"L0042","section":"Your work","text":"Sort","placement":"unplaced","state":"standing"},
|
|
1490
|
+
{"key":"L0043","section":"Your work","text":"most recent first","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":175,"string_id":"70c234985d42","state":"standing"},
|
|
1491
|
+
{"key":"L0044","section":"Your work","text":"oldest first","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":175,"string_id":"759c12b5f983","state":"standing"},
|
|
1492
|
+
{"key":"L0045","section":"Your work","text":"highest credits","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":176,"string_id":"55d673a5f0ec","state":"standing"},
|
|
1493
|
+
{"key":"L0046","section":"Your work","text":"lowest credits","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":177,"string_id":"754bdec368ed","state":"standing"},
|
|
1494
|
+
{"key":"L0047","section":"Your work","text":"30 works {…}","placement":"unplaced","state":"standing"},
|
|
1495
|
+
{"key":"L0048","section":"Your work","text":"Work","placement":"unplaced","state":"standing"},
|
|
1496
|
+
{"key":"L0049","section":"Your work","text":"Credits","placement":"unplaced","state":"standing"},
|
|
1497
|
+
{"key":"L0050","section":"Your work","text":"Shipped","placement":"placed","file":"modules/hall-ui/public/task.js","line":677,"string_id":"0c0a50ba1666","state":"standing"},
|
|
1498
|
+
{"key":"L0051","section":"Your work","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"standing","occurrences":10},
|
|
1499
|
+
{"key":"L0052","section":"Your work","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5","state":"standing","occurrences":2},
|
|
1500
|
+
{"key":"L0053","section":"Your work","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"standing","occurrences":2},
|
|
1501
|
+
{"key":"L0054","section":"Your work","text":"Per page","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":74,"string_id":"4a46b478edaf","state":"standing"},
|
|
1502
|
+
{"key":"L0055","section":"Your work","text":"‹ Prev","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":74,"string_id":"de8fa5223aee","state":"standing"},
|
|
1503
|
+
{"key":"L0056","section":"Your work","text":"Page {…} of {…}","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":112,"string_id":"15a49bf15007","state":"standing"},
|
|
1504
|
+
{"key":"L0057","section":"Your work","text":"Next ›","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":74,"string_id":"f52ba261d930","state":"standing"},
|
|
1505
|
+
{"key":"L0058","section":"Reviews","text":"Reviews","placement":"unplaced","state":"standing"},
|
|
1506
|
+
{"key":"L0059","section":"Reviews","text":"Work","placement":"unplaced","state":"standing"},
|
|
1507
|
+
{"key":"L0060","section":"Reviews","text":"Score","placement":"unplaced","state":"standing"},
|
|
1508
|
+
{"key":"L0061","section":"Reviews","text":"Verdict","placement":"unplaced","state":"standing"},
|
|
1509
|
+
{"key":"L0062","section":"Reviews","text":"Reviewed","placement":"unplaced","state":"standing"},
|
|
1510
|
+
{"key":"L0063","section":"Reviews","text":"passed","placement":"placed","file":"modules/hall-ui/public/government.js","line":671,"string_id":"da5368d10f85","state":"standing","occurrences":5},
|
|
1511
|
+
{"key":"L0064","section":"Reviews","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"standing","occurrences":2},
|
|
1512
|
+
{"key":"L0065","section":"Reviews","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5","state":"standing"},
|
|
1513
|
+
{"key":"L0066","section":"Reviews","text":"Last 14 days: {…} / 10 average across {…} graded work{…} ({…} passed).","placement":"placed","file":"modules/hall-ui/public/builders.js","line":583,"string_id":"81f62e066dbf","state":"standing"},
|
|
1514
|
+
{"key":"L0067","section":"Karma","text":"Karma","placement":"unplaced","state":"standing"},
|
|
1515
|
+
{"key":"L0068","section":"Karma","text":"Karma rewards good citizenship — ratified {…}, peer recognition, approvals. Distinct from {…}, which counts work {…}.","placement":"unplaced","state":"standing"},
|
|
1516
|
+
{"key":"L0069","section":"Karma","text":"When","placement":"unplaced","state":"standing"},
|
|
1517
|
+
{"key":"L0070","section":"Karma","text":"Delta","placement":"unplaced","state":"standing"},
|
|
1518
|
+
{"key":"L0071","section":"Karma","text":"Reason","placement":"unplaced","state":"standing"},
|
|
1519
|
+
{"key":"L0072","section":"Karma","text":"Granted by","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":203,"string_id":"721fe281f993","state":"standing"},
|
|
1520
|
+
{"key":"L0073","section":"Karma","text":"— all builders —","placement":"placed","file":"modules/hall-ui/public/builders.js","line":709,"string_id":"a6ae9cbdee30","state":"standing","occurrences":10},
|
|
1521
|
+
{"key":"L0074","section":"Peer recognition","text":"Peer recognition","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":209,"string_id":"54fa47e421a5","state":"standing"},
|
|
1522
|
+
{"key":"L0075","section":"Peer recognition","text":"Recognize your peers’ finished work. A vote up (+) or down (−) shapes their karma after a one-week cooling period. You can’t vote on your own work.","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":210,"string_id":"cd2bffe2e5b9","state":"standing"},
|
|
1523
|
+
{"key":"L0076","section":"Peer recognition","text":"Work","placement":"unplaced","state":"standing"},
|
|
1524
|
+
{"key":"L0077","section":"Peer recognition","text":"By","placement":"unplaced","state":"standing"},
|
|
1525
|
+
{"key":"L0078","section":"Peer recognition","text":"Votes","placement":"unplaced","state":"standing"},
|
|
1526
|
+
{"key":"L0079","section":"Peer recognition","text":"Your vote","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":211,"string_id":"f6b12676169b","state":"standing"},
|
|
1527
|
+
{"key":"L0080","section":"Peer recognition","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5","state":"standing","occurrences":2},
|
|
1528
|
+
{"key":"L0081","section":"Peer recognition","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"standing","occurrences":6},
|
|
1529
|
+
{"key":"L0082","section":"Peer recognition","text":"Goal {…}","placement":"placed","file":"modules/hall-ui/public/gate.js","line":360,"string_id":"ec88b946ad16","state":"standing"},
|
|
1530
|
+
{"key":"L0083","section":"Peer recognition","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"standing"},
|
|
1531
|
+
{"key":"L0084","section":"Peer recognition","text":"Per page","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":74,"string_id":"4a46b478edaf","state":"standing"},
|
|
1532
|
+
{"key":"L0085","section":"Peer recognition","text":"‹ Prev","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":74,"string_id":"de8fa5223aee","state":"standing"},
|
|
1533
|
+
{"key":"L0086","section":"Peer recognition","text":"Page {…} of {…}","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":112,"string_id":"15a49bf15007","state":"standing"},
|
|
1534
|
+
{"key":"L0087","section":"Peer recognition","text":"Next ›","placement":"placed","file":"modules/hall-ui/public/hall-kit.js","line":74,"string_id":"f52ba261d930","state":"standing"},
|
|
1535
|
+
{"key":"L0088","section":"Achievements","text":"Achievements","placement":"unplaced","state":"standing"},
|
|
1536
|
+
{"key":"L0089","section":"Achievements","text":"Eight achievements recognize sustained contribution. Earned ones are highlighted; the rest show what’s left to do.","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":238,"string_id":"854a21d2eb39","state":"standing"},
|
|
1537
|
+
{"key":"L0090","section":"Achievements","text":"Won {…}","placement":"placed","file":"modules/hall-ui/public/builders.js","line":475,"string_id":"c5fd76a9e03d","state":"standing","occurrences":10},
|
|
1538
|
+
{"key":"L0091","section":"Achievements","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"standing"},
|
|
1539
|
+
{"key":"L0092","section":"footer","text":"Sign out","placement":"shared","file":"modules/hall-ui/public/shell.js","line":520,"string_id":"1883ad7f07fc","state":"standing","occurrences":2},
|
|
1540
|
+
{"key":"L0093","section":"Achievements","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":674,"string_id":"fd1903586e8e","state":"standing"},
|
|
1541
|
+
{"key":"L0094","section":"Next up — ready to claim","text":"Next up — ready to claim","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":110,"string_id":"659d8256139c"},
|
|
1542
|
+
{"key":"L0095","section":"Next up — ready to claim","text":"#1003412 · ~60m · 51 {…} est.","placement":"unplaced"},
|
|
1543
|
+
{"key":"L0096","section":"Next up — ready to claim","text":"Claim","placement":"unplaced","occurrences":5},
|
|
1544
|
+
{"key":"L0097","section":"Next up — ready to claim","text":"#1004380 · 38 {…} est.","placement":"unplaced"},
|
|
1545
|
+
{"key":"L0098","section":"Next up — ready to claim","text":"#1004382 · 38 {…} est.","placement":"unplaced"},
|
|
1546
|
+
{"key":"L0099","section":"Next up — ready to claim","text":"#1004383 · 38 {…} est.","placement":"unplaced"},
|
|
1547
|
+
{"key":"L0100","section":"Next up — ready to claim","text":"#1004546 · 38 {…} est.","placement":"unplaced"},
|
|
1548
|
+
{"key":"L0101","section":"Next up — ready to claim","text":"See all 150 {…} work →","placement":"unplaced"},
|
|
1549
|
+
{"key":"L0102","section":"Recently shipped","text":"Recently shipped","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":115,"string_id":"0b2d1327608f"},
|
|
1550
|
+
{"key":"L0103","section":"Recently shipped","text":"Work","placement":"unplaced"},
|
|
1551
|
+
{"key":"L0104","section":"Recently shipped","text":"Credits","placement":"unplaced"},
|
|
1552
|
+
{"key":"L0105","section":"Recently shipped","text":"Shipped","placement":"placed","file":"modules/hall-ui/public/task.js","line":677,"string_id":"0c0a50ba1666"},
|
|
1553
|
+
{"key":"L0106","section":"Recently shipped","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":2},
|
|
1554
|
+
{"key":"L0107","section":"Recently shipped","text":"{…} project{…}","placement":"placed","file":"modules/hall-ui/public/fleet.js","line":39,"string_id":"771bef3d31b5"},
|
|
1555
|
+
{"key":"L0108","section":"Recently shipped","text":"All your work →","placement":"placed","file":"modules/hall-ui/public/hall-widgets.js","line":118,"string_id":"b38c01691857"},
|
|
1556
|
+
{"key":"L0109","section":"Recently shipped","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":674,"string_id":"fd1903586e8e"},
|
|
1557
|
+
{"key":"L0110","section":"What are you doing now?","text":"What are you doing now?","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":675,"string_id":"60853319f290"},
|
|
1558
|
+
{"key":"L0111","section":"What are you doing now?","text":"Pick one. You can switch any time from the top bar.","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":676,"string_id":"4f87d5b17b54"},
|
|
1559
|
+
{"key":"L0112","section":"What are you doing now?","text":"Building","placement":"unplaced"},
|
|
1560
|
+
{"key":"L0113","section":"What are you doing now?","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":3},
|
|
1561
|
+
{"key":"L0114","section":"What are you doing now?","text":"Artistry","placement":"unplaced"},
|
|
1562
|
+
{"key":"L0115","section":"What are you doing now?","text":"Ideating","placement":"unplaced"},
|
|
1563
|
+
{"key":"L0116","section":"What are you doing now?","text":"Turn thoughts into {…}.","placement":"unplaced"},
|
|
1564
|
+
{"key":"L0117","section":"What are you doing now?","text":"Ask me again next session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":679,"string_id":"fa86bf403775"}
|
|
1566
1565
|
]
|
|
1567
1566
|
},
|
|
1568
1567
|
{
|
|
@@ -3126,7 +3125,7 @@
|
|
|
3126
3125
|
"surface": "builders",
|
|
3127
3126
|
"title": "Settings",
|
|
3128
3127
|
"states_read": ["account","access","preferences","skills-walkthrough","offered-skills","install-reports","sound","update"],
|
|
3129
|
-
"files_hash": "
|
|
3128
|
+
"files_hash": "c2910187c8bd89ab",
|
|
3130
3129
|
"reading_hash": "2433c177c9393cee",
|
|
3131
3130
|
"counts": {"lines":176,"placed":117,"shared":8,"unplaced":51},
|
|
3132
3131
|
"omitted": {"data":68},
|
|
@@ -38,7 +38,12 @@ const SETTINGS_PATH = '/settings';
|
|
|
38
38
|
// ownKeySet → satisfied (their own key runs the pipeline)
|
|
39
39
|
// newcomer (xenos) → covered ("on us while you get started")
|
|
40
40
|
// thetes+ and no own key → action_needed (coverage has ended)
|
|
41
|
+
//
|
|
42
|
+
// ctx.artPipeline === false — no art pipeline on this instance, so there are no
|
|
43
|
+
// key routes and nothing to add: no need at all
|
|
44
|
+
// (task 1004786). Unset keeps the states above.
|
|
41
45
|
function artKeyNeed(ctx) {
|
|
46
|
+
if (ctx.artPipeline === false) return null;
|
|
42
47
|
const rank = ctx.rank || null;
|
|
43
48
|
const isNewcomer = rank === 'xenos';
|
|
44
49
|
const base = {
|
|
@@ -179,11 +179,9 @@
|
|
|
179
179
|
// (same pattern as lastNeedsState). These are un-landed confirmed tasks that
|
|
180
180
|
// GATE new claims and whose reward is pending until they land on ship.
|
|
181
181
|
let lastRebaseState = null;
|
|
182
|
-
//
|
|
183
|
-
//
|
|
184
|
-
// Null until each lands; the sentence says only what it knows.
|
|
182
|
+
// The public version progress, which the Home version tab draws (task 1004774).
|
|
183
|
+
// Null until it lands.
|
|
185
184
|
let lastProgressState = null;
|
|
186
|
-
let lastClaimableCount = null;
|
|
187
185
|
|
|
188
186
|
// Cached /me payload from the most recent loadAll() call. Used by the
|
|
189
187
|
// welcome-chip reopen path (#408) so we can re-render the welcome panel
|
|
@@ -949,17 +947,6 @@
|
|
|
949
947
|
// waiting instead of leaving two rows to imply there are only two.
|
|
950
948
|
// task 1004774: five rows, level with the five Recently shipped rows beside it.
|
|
951
949
|
const resp = await getJSON(`${API}/tasks/claimable?limit=5`, { softAuth: true });
|
|
952
|
-
// task 1003464: the greeting's "N tasks are claimable right now" — rank-scoped,
|
|
953
|
-
// so it is THIS builder's number. It reads claimable_total rather than the length
|
|
954
|
-
// of a fully-downloaded feed: the same number, without the wire cost that this
|
|
955
|
-
// commit exists to remove. The .length fallback covers a server that predates
|
|
956
|
-
// the field (a deploy skew), so the greeting degrades to correct-but-costly
|
|
957
|
-
// rather than to blank.
|
|
958
|
-
const claimableTotal = Number(resp && resp.claimable_total);
|
|
959
|
-
lastClaimableCount = Number.isFinite(claimableTotal)
|
|
960
|
-
? claimableTotal
|
|
961
|
-
: (resp && Array.isArray(resp.claimable) ? resp.claimable.length : null);
|
|
962
|
-
renderGreeting();
|
|
963
950
|
// capped as well as asked for: a server that ignores ?limit must not grow the card.
|
|
964
951
|
const rows = resp && Array.isArray(resp.claimable) ? resp.claimable.slice(0, 5) : [];
|
|
965
952
|
if (!rows.length) { wrap.hidden = true; if (subhead) subhead.hidden = true; return; }
|
|
@@ -1177,7 +1164,7 @@
|
|
|
1177
1164
|
getJSON(`${API}/me/recent-ships?limit=all`),
|
|
1178
1165
|
getJSON(`${API}/versions`),
|
|
1179
1166
|
getJSON(`${API}/public/leaderboard`), // task 1004437: the list with each builder's roles
|
|
1180
|
-
getJSON(`${API}/public/progress`), //
|
|
1167
|
+
getJSON(`${API}/public/progress`), // the Home version tab (task 1004774)
|
|
1181
1168
|
]);
|
|
1182
1169
|
|
|
1183
1170
|
if (progress.status === 'fulfilled') {
|
|
@@ -1412,7 +1399,6 @@
|
|
|
1412
1399
|
const { acclaimEvidenceHtml, analyticsState, lbState, mountHallWidgets, renderCurveBody, renderGreeting, renderLanding, renderNav, renderOnboarding, renderProfile, renderRecentShips, renderWelcomeCore, shipState, shipsPager, welcomeDismissalKey, wireNextUpClaim } = window.OTBHallRender({
|
|
1413
1400
|
API, RANK_ORDER, api, brandWorld, curLabel, emptyRow, fmtDate, loadNextUp, mins, normalizeRank, pct, postJSON, rankLabel, rankWeight, signClasses, toast, usd,
|
|
1414
1401
|
get instanceRepo() { return instanceRepo; },
|
|
1415
|
-
get lastClaimableCount() { return lastClaimableCount; },
|
|
1416
1402
|
get lastCostState() { return lastCostState; },
|
|
1417
1403
|
get lastKarmaState() { return lastKarmaState; },
|
|
1418
1404
|
get lastMeState() { return lastMeState; },
|
|
@@ -722,20 +722,19 @@
|
|
|
722
722
|
if (window.OTBAttention && typeof window.OTBAttention.refresh === 'function') window.OTBAttention.refresh();
|
|
723
723
|
}
|
|
724
724
|
|
|
725
|
-
// task 1003464: the greeting IS Home's one h1 (the mock opens with it)
|
|
726
|
-
//
|
|
727
|
-
//
|
|
728
|
-
//
|
|
729
|
-
const SMALL_NUMBERS = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve'];
|
|
725
|
+
// task 1003464: the greeting IS Home's one h1 (the mock opens with it).
|
|
726
|
+
// task 1004780: it has no sub-line any more. The version tab under the banner
|
|
727
|
+
// shows how far the version is and Next up shows the ready work, so a sentence
|
|
728
|
+
// repeating both was redundant (owner, 2026-10-23).
|
|
730
729
|
const greetingWord = (hour) => (hour < 12 ? 'Good morning' : (hour < 18 ? 'Good afternoon' : 'Good evening'));
|
|
731
|
-
// The version the
|
|
730
|
+
// The version the tab is about: the one being built with the most work in it.
|
|
732
731
|
function currentVersion(progress) {
|
|
733
732
|
const rows = progress && Array.isArray(progress.progress) ? progress.progress : [];
|
|
734
733
|
return rows.filter((r) => r && r.status === 'building')
|
|
735
734
|
.sort((a, b) => (Number(b.total_count) || 0) - (Number(a.total_count) || 0))[0] || null;
|
|
736
735
|
}
|
|
737
|
-
// task 1004774: the version tab under the Home banner
|
|
738
|
-
//
|
|
736
|
+
// task 1004774: the version tab under the Home banner, drawn as a bar.
|
|
737
|
+
// Hidden while no version is being built.
|
|
739
738
|
function renderVersionTab(v) {
|
|
740
739
|
const tab = document.getElementById('home-version');
|
|
741
740
|
if (!tab) return;
|
|
@@ -752,26 +751,11 @@
|
|
|
752
751
|
}
|
|
753
752
|
function renderGreeting() {
|
|
754
753
|
const h1 = document.getElementById('hall-h1');
|
|
755
|
-
const sub = document.getElementById('hall-sub');
|
|
756
754
|
const builder = ctx.lastMeState && ctx.lastMeState.builder;
|
|
757
755
|
if (h1 && builder) {
|
|
758
756
|
h1.textContent = `${greetingWord(new Date().getHours())}, ${builder.display_name || builder.github_login || 'builder'}`;
|
|
759
757
|
}
|
|
760
|
-
|
|
761
|
-
renderVersionTab(v);
|
|
762
|
-
if (!sub) return;
|
|
763
|
-
const parts = [];
|
|
764
|
-
if (v) parts.push(`${v.version_id} is ${Math.round(Number(v.percent_complete) || 0)} percent complete.`);
|
|
765
|
-
const n = ctx.lastClaimableCount;
|
|
766
|
-
if (typeof n === 'number') {
|
|
767
|
-
if (n === 0) parts.push('Nothing is claimable right now.');
|
|
768
|
-
else {
|
|
769
|
-
const word = n < SMALL_NUMBERS.length ? SMALL_NUMBERS[n] : fmtNum(n);
|
|
770
|
-
parts.push(`${word.charAt(0).toUpperCase()}${word.slice(1)} ${n === 1 ? 'task is' : 'tasks are'} claimable right now.`);
|
|
771
|
-
}
|
|
772
|
-
}
|
|
773
|
-
sub.textContent = parts.join(' ');
|
|
774
|
-
sub.hidden = parts.length === 0;
|
|
758
|
+
renderVersionTab(currentVersion(ctx.lastProgressState));
|
|
775
759
|
}
|
|
776
760
|
const ONBOARDING_STAGE_ORDER = [
|
|
777
761
|
'auth_complete',
|
|
@@ -42,12 +42,11 @@
|
|
|
42
42
|
(one-header-main-h1 — never a second one). The static text is the no-JS /
|
|
43
43
|
signed-out fallback and what brand-apply.js writes the hall's name into;
|
|
44
44
|
hall-render.js renderGreeting turns it into "Good morning, <name>" once
|
|
45
|
-
/me answers
|
|
46
|
-
the version is
|
|
47
|
-
|
|
45
|
+
/me answers. It has no sub-line (task 1004780): the version tab and Next
|
|
46
|
+
up already say how far the version is and what is ready. The label voice
|
|
47
|
+
is the board's own (.page-head--board). -->
|
|
48
48
|
<div class="page-head page-head--board page-head--hall">
|
|
49
49
|
<h1 id="hall-h1" class="page-head__h">Builders' Hall</h1>
|
|
50
|
-
<p id="hall-sub" class="page-head__sub" hidden></p>
|
|
51
50
|
<!-- task 1004774: Standing left the Home band for this chip. At rest it
|
|
52
51
|
shows the avatar and rank. On hover or keyboard focus the chip itself
|
|
53
52
|
widens to the left into the top of the card, and only the facts below
|
|
@@ -1030,6 +1030,10 @@
|
|
|
1030
1030
|
renderArtKeyBanner(artKeyNeedItem(me));
|
|
1031
1031
|
const res = await api.request('GET', `${API}/me/art-key/own`);
|
|
1032
1032
|
if (res.status === 401) { toAuth(); return; }
|
|
1033
|
+
// 404: the art pipeline is not installed, so there is no key to add here —
|
|
1034
|
+
// keep the section (and any banner) hidden rather than show a reload error
|
|
1035
|
+
// (task 1004786).
|
|
1036
|
+
if (res.status === 404) { renderArtKeyBanner(null); return; }
|
|
1033
1037
|
if (!res.ok) throw new Error(`art-key GET → ${res.status}`);
|
|
1034
1038
|
renderArtKeyCard(res.data);
|
|
1035
1039
|
wireArtKeyCard();
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.21.
|
|
3
|
+
"version": "1.21.166",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.21.
|
|
9
|
+
"version": "1.21.166",
|
|
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.
|
|
3
|
+
"version": "1.21.166",
|
|
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/release-notes.json
CHANGED
|
@@ -10040,5 +10040,15 @@
|
|
|
10040
10040
|
"id": "1004771",
|
|
10041
10041
|
"text": "Artist review is now a small tab on the right edge of every hall page in artist mode. Hover the tab and the review panel slides out; move the cursor back onto the page and it tucks away, keeping your draft. The page stays scro"
|
|
10042
10042
|
}
|
|
10043
|
+
],
|
|
10044
|
+
"1.21.166": [
|
|
10045
|
+
{
|
|
10046
|
+
"id": "1004780",
|
|
10047
|
+
"text": "Home's greeting stands on its own: the \"BONGOS-V2 is 83 percent complete. 150 tasks are claimable right now.\" line under \"Good morning\" is gone, because the version bar and the ready-work list beside it already say both."
|
|
10048
|
+
},
|
|
10049
|
+
{
|
|
10050
|
+
"id": "1004786",
|
|
10051
|
+
"text": "Settings no longer shows a broken image-generation key card on projects without the art tools. Before, builders were told their free art coverage had ended and to add a key, but the card could never load, so there was nowhere"
|
|
10052
|
+
}
|
|
10043
10053
|
]
|
|
10044
10054
|
}
|
package/src/bongos/routes/me.js
CHANGED
|
@@ -569,6 +569,9 @@ module.exports = function buildMeRouter() {
|
|
|
569
569
|
rank: builder?.rank,
|
|
570
570
|
ownKeySet: !!(geminiKeyRow && geminiKeyRow.enc),
|
|
571
571
|
sharedKeyConfigured: artSharedKeyConfigured(),
|
|
572
|
+
// task 1004786: the art-pipeline module provides this port when enabled;
|
|
573
|
+
// without it there are no key routes, so the need is not raised.
|
|
574
|
+
artPipeline: seams.hasProvider('art.sharedKeyConfigured'),
|
|
572
575
|
// founding grace (task 1002739 / direction §5.6): a newborn instance's
|
|
573
576
|
// founder gets a welcome roster, not a coverage nag. The module owns the
|
|
574
577
|
// policy (window length, copy); we pass the raw facts.
|
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.
|
|
78
|
+
const CORE_VERSION = '1.21.166'; // 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');
|