@bongos/core 1.24.69 → 1.24.70

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.
@@ -3,9 +3,9 @@
3
3
  "generator": "scripts/bongos/copy-inventory.js",
4
4
  "goal": 1000074,
5
5
  "counts": {
6
- "strings": 3133,
7
- "unique_ids": 2474,
8
- "certain": 3133,
6
+ "strings": 3137,
7
+ "unique_ids": 2478,
8
+ "certain": 3137,
9
9
  "heuristic": 0,
10
10
  "duplicate_ids": 262
11
11
  },
@@ -13,7 +13,7 @@
13
13
  "builders-hall": {
14
14
  "at": "modules/hall-ui/public",
15
15
  "files": 171,
16
- "strings": 2021
16
+ "strings": 2025
17
17
  },
18
18
  "status-dashboard": {
19
19
  "at": "modules/status-ui/public",
@@ -723,7 +723,7 @@
723
723
  "modules/hall-ui/public/settings-usage-reports.js:67",
724
724
  "modules/hall-ui/public/settings.js:401",
725
725
  "modules/hall-ui/public/settings.js:489",
726
- "modules/hall-ui/public/settings.js:773"
726
+ "modules/hall-ui/public/settings.js:817"
727
727
  ]
728
728
  },
729
729
  {
@@ -1462,7 +1462,7 @@
1462
1462
  "occurrences": 2,
1463
1463
  "at": [
1464
1464
  "modules/hall-ui/public/settings-ai-keys.js:101",
1465
- "modules/hall-ui/public/settings.js:834"
1465
+ "modules/hall-ui/public/settings.js:878"
1466
1466
  ]
1467
1467
  },
1468
1468
  {
@@ -1472,7 +1472,7 @@
1472
1472
  "occurrences": 2,
1473
1473
  "at": [
1474
1474
  "modules/hall-ui/public/settings-ai-keys.js:88",
1475
- "modules/hall-ui/public/settings.js:774"
1475
+ "modules/hall-ui/public/settings.js:818"
1476
1476
  ]
1477
1477
  },
1478
1478
  {
@@ -1752,7 +1752,7 @@
1752
1752
  "occurrences": 2,
1753
1753
  "at": [
1754
1754
  "modules/hall-ui/public/settings-ai-keys.js:102",
1755
- "modules/hall-ui/public/settings.js:829"
1755
+ "modules/hall-ui/public/settings.js:873"
1756
1756
  ]
1757
1757
  },
1758
1758
  {
@@ -2042,7 +2042,7 @@
2042
2042
  "occurrences": 2,
2043
2043
  "at": [
2044
2044
  "modules/hall-ui/public/settings-ai-keys.js:78",
2045
- "modules/hall-ui/public/settings.js:749"
2045
+ "modules/hall-ui/public/settings.js:793"
2046
2046
  ]
2047
2047
  },
2048
2048
  {
@@ -2222,7 +2222,7 @@
2222
2222
  "occurrences": 2,
2223
2223
  "at": [
2224
2224
  "modules/hall-ui/public/settings-ai-keys.js:21",
2225
- "modules/hall-ui/public/settings.js:685"
2225
+ "modules/hall-ui/public/settings.js:729"
2226
2226
  ]
2227
2227
  },
2228
2228
  {
@@ -2552,7 +2552,7 @@
2552
2552
  "occurrences": 2,
2553
2553
  "at": [
2554
2554
  "modules/hall-ui/public/settings.js:483",
2555
- "modules/hall-ui/public/settings.js:1043"
2555
+ "modules/hall-ui/public/settings.js:1087"
2556
2556
  ]
2557
2557
  },
2558
2558
  {
@@ -4925,7 +4925,7 @@
4925
4925
  "surface": "builders-hall",
4926
4926
  "text": "Checking your key…",
4927
4927
  "file": "modules/hall-ui/public/settings.js",
4928
- "line": 750,
4928
+ "line": 794,
4929
4929
  "origin": "js-text-assign",
4930
4930
  "confidence": "certain"
4931
4931
  },
@@ -5307,6 +5307,15 @@
5307
5307
  "origin": "js-text-assign",
5308
5308
  "confidence": "certain"
5309
5309
  },
5310
+ {
5311
+ "id": "0279e7634291",
5312
+ "surface": "builders-hall",
5313
+ "text": "Copy command",
5314
+ "file": "modules/hall-ui/public/settings.js",
5315
+ "line": 657,
5316
+ "origin": "js-text-assign",
5317
+ "confidence": "certain"
5318
+ },
5310
5319
  {
5311
5320
  "id": "12ee050d0180",
5312
5321
  "surface": "builders-hall",
@@ -5469,6 +5478,15 @@
5469
5478
  "origin": "js-markup",
5470
5479
  "confidence": "certain"
5471
5480
  },
5481
+ {
5482
+ "id": "8a1c2e87fc2d",
5483
+ "surface": "builders-hall",
5484
+ "text": "Copy token",
5485
+ "file": "modules/hall-ui/public/settings.js",
5486
+ "line": 660,
5487
+ "origin": "js-text-assign",
5488
+ "confidence": "certain"
5489
+ },
5472
5490
  {
5473
5491
  "id": "301afa9a94b9",
5474
5492
  "surface": "builders-hall",
@@ -5564,7 +5582,7 @@
5564
5582
  "surface": "builders-hall",
5565
5583
  "text": "Could not copy automatically — select and copy manually. ({…})",
5566
5584
  "file": "modules/hall-ui/public/settings.js",
5567
- "line": 629,
5585
+ "line": 670,
5568
5586
  "origin": "js-notice",
5569
5587
  "confidence": "certain"
5570
5588
  },
@@ -5771,7 +5789,7 @@
5771
5789
  "surface": "builders-hall",
5772
5790
  "text": "Could not load your account. Reload the page to try again.",
5773
5791
  "file": "modules/hall-ui/public/settings.js",
5774
- "line": 1026,
5792
+ "line": 1070,
5775
5793
  "origin": "js-text-assign",
5776
5794
  "confidence": "certain"
5777
5795
  },
@@ -5807,7 +5825,7 @@
5807
5825
  "surface": "builders-hall",
5808
5826
  "text": "Could not load your settings.",
5809
5827
  "file": "modules/hall-ui/public/settings.js",
5810
- "line": 1029,
5828
+ "line": 1073,
5811
5829
  "origin": "js-notice",
5812
5830
  "confidence": "certain"
5813
5831
  },
@@ -5915,7 +5933,7 @@
5915
5933
  "surface": "builders-hall",
5916
5934
  "text": "Could not remove your key. Try again.",
5917
5935
  "file": "modules/hall-ui/public/settings.js",
5918
- "line": 834,
5936
+ "line": 878,
5919
5937
  "origin": "js-notice",
5920
5938
  "confidence": "certain"
5921
5939
  },
@@ -5924,7 +5942,7 @@
5924
5942
  "surface": "builders-hall",
5925
5943
  "text": "Could not remove. Try again.",
5926
5944
  "file": "modules/hall-ui/public/settings.js",
5927
- "line": 833,
5945
+ "line": 877,
5928
5946
  "origin": "js-text-assign",
5929
5947
  "confidence": "certain"
5930
5948
  },
@@ -5996,7 +6014,7 @@
5996
6014
  "surface": "builders-hall",
5997
6015
  "text": "Could not save your key. Try again.",
5998
6016
  "file": "modules/hall-ui/public/settings.js",
5999
- "line": 774,
6017
+ "line": 818,
6000
6018
  "origin": "js-notice",
6001
6019
  "confidence": "certain"
6002
6020
  },
@@ -6077,7 +6095,7 @@
6077
6095
  "surface": "builders-hall",
6078
6096
  "text": "Could not save. Try again.",
6079
6097
  "file": "modules/hall-ui/public/settings.js",
6080
- "line": 773,
6098
+ "line": 817,
6081
6099
  "origin": "js-text-assign",
6082
6100
  "confidence": "certain"
6083
6101
  },
@@ -6113,7 +6131,7 @@
6113
6131
  "surface": "builders-hall",
6114
6132
  "text": "Could not set up key storage. Try again.",
6115
6133
  "file": "modules/hall-ui/public/settings.js",
6116
- "line": 810,
6134
+ "line": 854,
6117
6135
  "origin": "js-notice",
6118
6136
  "confidence": "certain"
6119
6137
  },
@@ -6122,7 +6140,7 @@
6122
6140
  "surface": "builders-hall",
6123
6141
  "text": "Could not set up storage. Try again.",
6124
6142
  "file": "modules/hall-ui/public/settings.js",
6125
- "line": 809,
6143
+ "line": 853,
6126
6144
  "origin": "js-text-assign",
6127
6145
  "confidence": "certain"
6128
6146
  },
@@ -7090,11 +7108,20 @@
7090
7108
  "confidence": "certain"
7091
7109
  },
7092
7110
  {
7093
- "id": "36ecb5d3686c",
7111
+ "id": "061f6f62c36a",
7094
7112
  "surface": "builders-hall",
7095
- "text": "Fresh CLI token issued. Paste this into a terminal in your project folder:",
7113
+ "text": "Fresh CLI token issued. Open PowerShell, cd into your project folder first (the command only runs there), then paste this:",
7096
7114
  "file": "modules/hall-ui/public/settings.js",
7097
- "line": 609,
7115
+ "line": 626,
7116
+ "origin": "js-text-assign",
7117
+ "confidence": "certain"
7118
+ },
7119
+ {
7120
+ "id": "67ad9b9f11c8",
7121
+ "surface": "builders-hall",
7122
+ "text": "Fresh CLI token issued. Open a terminal, cd into your project folder first (the command only runs there), then paste this:",
7123
+ "file": "modules/hall-ui/public/settings.js",
7124
+ "line": 627,
7098
7125
  "origin": "js-text-assign",
7099
7126
  "confidence": "certain"
7100
7127
  },
@@ -7193,7 +7220,7 @@
7193
7220
  "surface": "builders-hall",
7194
7221
  "text": "Get a free key ↗",
7195
7222
  "file": "modules/hall-ui/public/settings.js",
7196
- "line": 653,
7223
+ "line": 697,
7197
7224
  "origin": "js-markup",
7198
7225
  "confidence": "certain"
7199
7226
  },
@@ -7868,7 +7895,7 @@
7868
7895
  "surface": "builders-hall",
7869
7896
  "text": "Image key removed.",
7870
7897
  "file": "modules/hall-ui/public/settings.js",
7871
- "line": 830,
7898
+ "line": 874,
7872
7899
  "origin": "js-notice",
7873
7900
  "confidence": "certain"
7874
7901
  },
@@ -8268,6 +8295,15 @@
8268
8295
  "origin": "js-markup",
8269
8296
  "confidence": "certain"
8270
8297
  },
8298
+ {
8299
+ "id": "e3bbba45305c",
8300
+ "surface": "builders-hall",
8301
+ "text": "Keep the token out of your shell history",
8302
+ "file": "modules/hall-ui/public/settings.js",
8303
+ "line": 650,
8304
+ "origin": "js-text-assign",
8305
+ "confidence": "certain"
8306
+ },
8271
8307
  {
8272
8308
  "id": "08764cf156cc",
8273
8309
  "surface": "builders-hall",
@@ -8309,7 +8345,7 @@
8309
8345
  "surface": "builders-hall",
8310
8346
  "text": "Key removed.",
8311
8347
  "file": "modules/hall-ui/public/settings.js",
8312
- "line": 829,
8348
+ "line": 873,
8313
8349
  "origin": "js-text-assign",
8314
8350
  "confidence": "certain"
8315
8351
  },
@@ -8327,7 +8363,7 @@
8327
8363
  "surface": "builders-hall",
8328
8364
  "text": "Key storage is being set up by an Archon — check back shortly. {…}",
8329
8365
  "file": "modules/hall-ui/public/settings.js",
8330
- "line": 704,
8366
+ "line": 748,
8331
8367
  "origin": "js-markup",
8332
8368
  "confidence": "certain"
8333
8369
  },
@@ -8345,7 +8381,7 @@
8345
8381
  "surface": "builders-hall",
8346
8382
  "text": "Key storage isn't set up yet. As an Archon you can turn it on now — the server generates and safely stores the master key (no terminal needed).",
8347
8383
  "file": "modules/hall-ui/public/settings.js",
8348
- "line": 700,
8384
+ "line": 744,
8349
8385
  "origin": "js-markup",
8350
8386
  "confidence": "certain"
8351
8387
  },
@@ -9641,7 +9677,7 @@
9641
9677
  "surface": "builders-hall",
9642
9678
  "text": "No builder account found for this sign-in.",
9643
9679
  "file": "modules/hall-ui/public/settings.js",
9644
- "line": 1034,
9680
+ "line": 1078,
9645
9681
  "origin": "js-text-assign",
9646
9682
  "confidence": "certain"
9647
9683
  },
@@ -11184,15 +11220,6 @@
11184
11220
  "origin": "js-text-assign",
11185
11221
  "confidence": "certain"
11186
11222
  },
11187
- {
11188
- "id": "cf68a394cfa5",
11189
- "surface": "builders-hall",
11190
- "text": "Paste command copied.",
11191
- "file": "modules/hall-ui/public/settings.js",
11192
- "line": 628,
11193
- "origin": "js-notice",
11194
- "confidence": "certain"
11195
- },
11196
11223
  {
11197
11224
  "id": "6036f69e13bd",
11198
11225
  "surface": "builders-hall",
@@ -11216,7 +11243,7 @@
11216
11243
  "surface": "builders-hall",
11217
11244
  "text": "Paste your key first.",
11218
11245
  "file": "modules/hall-ui/public/settings.js",
11219
- "line": 749,
11246
+ "line": 793,
11220
11247
  "origin": "js-notice",
11221
11248
  "confidence": "certain"
11222
11249
  },
@@ -11837,7 +11864,7 @@
11837
11864
  "surface": "builders-hall",
11838
11865
  "text": "Re-issue failed: {…}",
11839
11866
  "file": "modules/hall-ui/public/settings.js",
11840
- "line": 633,
11867
+ "line": 677,
11841
11868
  "origin": "js-notice",
11842
11869
  "confidence": "certain"
11843
11870
  },
@@ -12462,6 +12489,15 @@
12462
12489
  "origin": "js-markup",
12463
12490
  "confidence": "certain"
12464
12491
  },
12492
+ {
12493
+ "id": "4c1e8ab8e1de",
12494
+ "surface": "builders-hall",
12495
+ "text": "Run this command instead (same folder). When it asks for the token, click Copy token and paste it there; nothing is shown as you paste.",
12496
+ "file": "modules/hall-ui/public/settings.js",
12497
+ "line": 652,
12498
+ "origin": "js-text-assign",
12499
+ "confidence": "certain"
12500
+ },
12465
12501
  {
12466
12502
  "id": "48e5f1d19e90",
12467
12503
  "surface": "builders-hall",
@@ -12530,7 +12566,7 @@
12530
12566
  "surface": "builders-hall",
12531
12567
  "text": "Save key",
12532
12568
  "file": "modules/hall-ui/public/settings.js",
12533
- "line": 685,
12569
+ "line": 729,
12534
12570
  "origin": "js-markup",
12535
12571
  "confidence": "certain"
12536
12572
  },
@@ -12980,7 +13016,7 @@
12980
13016
  "surface": "builders-hall",
12981
13017
  "text": "Set up key storage",
12982
13018
  "file": "modules/hall-ui/public/settings.js",
12983
- "line": 701,
13019
+ "line": 745,
12984
13020
  "origin": "js-markup",
12985
13021
  "confidence": "certain"
12986
13022
  },
@@ -12989,7 +13025,7 @@
12989
13025
  "surface": "builders-hall",
12990
13026
  "text": "Setting up key storage…",
12991
13027
  "file": "modules/hall-ui/public/settings.js",
12992
- "line": 785,
13028
+ "line": 829,
12993
13029
  "origin": "js-text-assign",
12994
13030
  "confidence": "certain"
12995
13031
  },
@@ -17210,7 +17246,7 @@
17210
17246
  "surface": "builders-hall",
17211
17247
  "text": "Your image-generation key settings could not be loaded. Reload the page to try again.",
17212
17248
  "file": "modules/hall-ui/public/settings.js",
17213
- "line": 860,
17249
+ "line": 904,
17214
17250
  "origin": "js-markup",
17215
17251
  "confidence": "certain"
17216
17252
  },
@@ -17219,7 +17255,7 @@
17219
17255
  "surface": "builders-hall",
17220
17256
  "text": "Your key",
17221
17257
  "file": "modules/hall-ui/public/settings.js",
17222
- "line": 681,
17258
+ "line": 725,
17223
17259
  "origin": "js-markup",
17224
17260
  "confidence": "certain"
17225
17261
  },
@@ -17273,7 +17309,7 @@
17273
17309
  "surface": "builders-hall",
17274
17310
  "text": "Your preferences, {…}.",
17275
17311
  "file": "modules/hall-ui/public/settings.js",
17276
- "line": 1043,
17312
+ "line": 1087,
17277
17313
  "origin": "js-text-assign",
17278
17314
  "confidence": "certain"
17279
17315
  },
@@ -18884,7 +18920,7 @@
18884
18920
  "surface": "builders-hall",
18885
18921
  "text": "paste command",
18886
18922
  "file": "modules/hall-ui/public/settings.js",
18887
- "line": 611,
18923
+ "line": 629,
18888
18924
  "origin": "js-text-assign",
18889
18925
  "confidence": "certain"
18890
18926
  },
@@ -20648,7 +20684,7 @@
20648
20684
  "surface": "builders-hall",
20649
20685
  "text": "{…} · Stored encrypted; never shown again after saving.",
20650
20686
  "file": "modules/hall-ui/public/settings.js",
20651
- "line": 687,
20687
+ "line": 731,
20652
20688
  "origin": "js-markup",
20653
20689
  "confidence": "certain"
20654
20690
  },
@@ -20657,7 +20693,7 @@
20657
20693
  "surface": "builders-hall",
20658
20694
  "text": "{…} · revoke it any time under Active sessions.",
20659
20695
  "file": "modules/hall-ui/public/settings.js",
20660
- "line": 619,
20696
+ "line": 637,
20661
20697
  "origin": "js-text-assign",
20662
20698
  "confidence": "certain"
20663
20699
  },
@@ -3390,7 +3390,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
3390
3390
  landed since 1.24.66 with no explicit bump. run 42689728958. (task 1002620)
3391
3391
  1.24.68 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3392
3392
  landed since 1.24.67 with no explicit bump. run 42692736161. (task 1002620)
3393
- 1.24.69 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3394
- landed since 1.24.68 with no explicit bump. run 42698123714. (task 1002620)
3393
+ 1.24.70 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3394
+ landed since 1.24.68 with no explicit bump. run 42699948615. (task 1002620)
3395
3395
  ---------------------------------------------------------------------------
3396
3396
  ```
@@ -2449,7 +2449,7 @@
2449
2449
  "surface": "builders",
2450
2450
  "title": "Settings",
2451
2451
  "states_read": ["account","access","preferences","install-reports","sound","update"],
2452
- "files_hash": "6e7b5e2b903cd72c",
2452
+ "files_hash": "ea8de6fa68c456ab",
2453
2453
  "reading_hash": "085bb32894909ee0",
2454
2454
  "counts": {"lines":137,"placed":90,"shared":9,"unplaced":38},
2455
2455
  "omitted": {"data":16},
@@ -2459,7 +2459,7 @@
2459
2459
  {"key":"L0002","section":"top bar","text":"Settings","placement":"shared"},
2460
2460
  {"key":"L0003","section":"top bar","text":"Update","placement":"shared"},
2461
2461
  {"key":"L0004","section":"top bar","text":"Jump to…","placement":"shared","file":"modules/hall-ui/public/shell.js","line":555,"string_id":"eba610d25523"},
2462
- {"key":"L0005","section":"top bar","text":"⌘K","placement":"shared"},
2462
+ {"key":"L0005","section":"top bar","text":"Ctrl K","placement":"shared"},
2463
2463
  {"key":"L0006","section":"top bar","text":"Building","placement":"shared"},
2464
2464
  {"key":"L0007","section":"top bar","text":"Artistry","placement":"shared"},
2465
2465
  {"key":"L0008","section":"top bar","text":"Ideating","placement":"shared"},
@@ -2531,16 +2531,16 @@
2531
2531
  {"key":"L0074","section":"Your Autobongos runner","text":"The project has not allowed any goals for runners yet, so there is nothing to choose from.","placement":"unplaced","state":"access"},
2532
2532
  {"key":"L0075","section":"Image-generation key","text":"Image-generation key","placement":"placed","file":"modules/hall-ui/public/settings.html","line":244,"string_id":"783853467d52","state":"access","occurrences":2},
2533
2533
  {"key":"L0076","section":"Image-generation key","text":"The art pipeline draws tiles and sprites with Google AI Studio (Gemini). Needed only if you generate art — your key, your bill, paid only for what you make.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":245,"string_id":"600b90074021","state":"access"},
2534
- {"key":"L0077","section":"Image-generation key","text":"Your key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":681,"string_id":"51fd6f1ecb2f","state":"access"},
2534
+ {"key":"L0077","section":"Image-generation key","text":"Your key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":725,"string_id":"51fd6f1ecb2f","state":"access"},
2535
2535
  {"key":"L0078","section":"Image-generation key","text":"Paste your {…} key","placement":"placed","file":"modules/hall-ui/public/settings-ai-keys.js","line":21,"string_id":"d7f9662b38fb","attr":"placeholder","state":"access"},
2536
- {"key":"L0079","section":"Image-generation key","text":"Save key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":685,"string_id":"0c79b504aebe","state":"access"},
2537
- {"key":"L0080","section":"Image-generation key","text":"Get a free key ↗","placement":"placed","file":"modules/hall-ui/public/settings.js","line":653,"string_id":"2ae2114b61db","state":"access"},
2538
- {"key":"L0081","section":"Image-generation key","text":"· Stored encrypted; never shown again after saving.","placement":"placed","file":"modules/hall-ui/public/settings.js","line":687,"string_id":"b3757ba3bb46","state":"access"},
2536
+ {"key":"L0079","section":"Image-generation key","text":"Save key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":729,"string_id":"0c79b504aebe","state":"access"},
2537
+ {"key":"L0080","section":"Image-generation key","text":"Get a free key ↗","placement":"placed","file":"modules/hall-ui/public/settings.js","line":697,"string_id":"2ae2114b61db","state":"access"},
2538
+ {"key":"L0081","section":"Image-generation key","text":"· Stored encrypted; never shown again after saving.","placement":"placed","file":"modules/hall-ui/public/settings.js","line":731,"string_id":"b3757ba3bb46","state":"access"},
2539
2539
  {"key":"L0082","section":"Image-generation key","text":"Stored encrypted; never shown again after saving — only its last four digits.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":253,"string_id":"6c6544f5c011","state":"access"},
2540
2540
  {"key":"L0083","section":"Your AI keys","text":"Your AI keys","placement":"placed","file":"modules/hall-ui/public/settings.html","line":261,"string_id":"b22c34b9c30a","state":"access"},
2541
2541
  {"key":"L0084","section":"Your AI keys","text":"Link your own AI account so studio generations run on it and we charge you nothing. Without a key, generations run on ours and come out of your balance.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":262,"string_id":"a0a4aaff6057","state":"access"},
2542
2542
  {"key":"L0085","section":"Your AI keys","text":"Paste your {…} key","placement":"placed","file":"modules/hall-ui/public/settings-ai-keys.js","line":21,"string_id":"d7f9662b38fb","attr":"placeholder","state":"access"},
2543
- {"key":"L0086","section":"Your AI keys","text":"Save key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":685,"string_id":"0c79b504aebe","state":"access"},
2543
+ {"key":"L0086","section":"Your AI keys","text":"Save key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":729,"string_id":"0c79b504aebe","state":"access"},
2544
2544
  {"key":"L0087","section":"Your AI keys","text":"Get a key ↗","placement":"placed","file":"modules/hall-ui/public/settings-ai-keys.js","line":29,"string_id":"ea60662c296c","state":"access"},
2545
2545
  {"key":"L0088","section":"Your AI keys","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"access"},
2546
2546
  {"key":"L0089","section":"Your AI keys","text":"Key on file ending …{…}{…}. Your generations run on it and we charge nothing.","placement":"placed","file":"modules/hall-ui/public/settings-ai-keys.js","line":36,"string_id":"a4e92424b2a4","state":"access"},
@@ -578,6 +578,19 @@
578
578
 
579
579
  // ---- section 4: CLI ACCESS (re-issue a CLI bearer, V3.R91 #401) ----------
580
580
 
581
+ // Is this browser on Windows? (task 1005033) There the plain `npx` one-liner fails in
582
+ // a default PowerShell (npx.ps1 is blocked by the script policy), so the hall shows
583
+ // the npx.cmd form the server composes alongside it. The browser is the best signal
584
+ // for the machine the builder will paste into; a wrong guess still leaves a command
585
+ // that works in cmd, or in a PowerShell that allows scripts.
586
+ function isWindowsBrowser() {
587
+ try {
588
+ const uad = navigator.userAgentData;
589
+ if (uad && uad.platform) return /windows/i.test(uad.platform);
590
+ return /windows/i.test(navigator.userAgent || '');
591
+ } catch (_) { return false; }
592
+ }
593
+
581
594
  async function issueCliToken() {
582
595
  const btn = $('#cli-reissue-btn');
583
596
  const result = $('#cli-reissue-result');
@@ -594,7 +607,8 @@
594
607
  // plainly. 'unknown' read as a gap in the page's knowledge; the absence of a
595
608
  // date is the fact, and the revoke is what replaced the timer.
596
609
  const expires = body.expires_at ? `Expires ${new Date(body.expires_at).toLocaleString()}` : 'Never expires';
597
- const pasteCommand = body.paste_command || '';
610
+ const windows = isWindowsBrowser();
611
+ const pasteCommand = (windows && body.paste_command_windows) || body.paste_command || '';
598
612
  // The secret is QUOTED (settings.css `.quote`): a 64-character token cannot
599
613
  // be a line of prose, so it sits one tonal step down with its own foot. Same
600
614
  // markup as the innerHTML template it replaces (task 1003644) — what changes
@@ -606,7 +620,11 @@
606
620
  // three out of the copy registry, blinding the artist's queue to this panel.
607
621
  const el = (tag, cls) => Object.assign(document.createElement(tag), { className: cls });
608
622
  const say = el('p', 'cli-result__say');
609
- say.textContent = 'Fresh CLI token issued. Paste this into a terminal in your project folder:';
623
+ // Say WHERE it runs (task 1005033): npx finds `bongos` only inside the project
624
+ // folder, and a new Windows terminal opens in system32, where npm answers "could
625
+ // not determine executable to run" and nothing points at the cause.
626
+ if (windows) say.textContent = 'Fresh CLI token issued. Open PowerShell, cd into your project folder first (the command only runs there), then paste this:';
627
+ else say.textContent = 'Fresh CLI token issued. Open a terminal, cd into your project folder first (the command only runs there), then paste this:';
610
628
  const eyebrow = el('p', 'quote__eyebrow');
611
629
  eyebrow.textContent = 'paste command';
612
630
  const pre = el('pre', 'quote__pre');
@@ -621,13 +639,39 @@
621
639
  foot.append(copyBtn, hint);
622
640
  const quote = el('div', 'quote');
623
641
  quote.append(eyebrow, pre, foot);
642
+ // THE TOKEN-FREE ROUTE (task 1005033). The one-liner above carries the token, so
643
+ // it lands in shell history. `paste-token` with no token asks for it without echo;
644
+ // this offers that: the command without the token, and the token on its own
645
+ // button. The one-liner stays first because an older CLI in a builder's clone has
646
+ // no prompt and would stop at "No token given".
647
+ const promptCommand = `${windows ? 'npx.cmd' : 'npx'} bongos paste-token${body.api_base ? ` --api-base ${body.api_base}` : ''}`;
648
+ const quiet = el('details', 'cli-result__quiet');
649
+ const quietSum = el('summary', '');
650
+ quietSum.textContent = 'Keep the token out of your shell history';
651
+ const quietSay = el('p', 'settings-card__hint');
652
+ quietSay.textContent = 'Run this command instead (same folder). When it asks for the token, click Copy token and paste it there; nothing is shown as you paste.';
653
+ const quietPre = el('pre', 'quote__pre');
654
+ quietPre.textContent = promptCommand;
655
+ const copyPromptBtn = el('button', 'settings-btn settings-btn--quiet');
656
+ copyPromptBtn.type = 'button';
657
+ copyPromptBtn.textContent = 'Copy command';
658
+ const copyTokenBtn = el('button', 'settings-btn settings-btn--quiet');
659
+ copyTokenBtn.type = 'button';
660
+ copyTokenBtn.textContent = 'Copy token';
661
+ const quietFoot = el('div', 'quote__foot');
662
+ quietFoot.append(copyPromptBtn, copyTokenBtn);
663
+ quiet.append(quietSum, quietSay, quietPre, quietFoot);
624
664
  result.textContent = ''; // a re-issue replaces the previous token, as innerHTML did
625
665
  result.append(say, quote);
666
+ if (body.token) result.append(quiet);
626
667
  result.hidden = false;
627
- copyBtn.addEventListener('click', async () => {
628
- try { await navigator.clipboard.writeText(pasteCommand); toast('Paste command copied.'); }
668
+ const copy = async (text, done) => {
669
+ try { await navigator.clipboard.writeText(text); toast(done); }
629
670
  catch (err) { toast(`Could not copy automatically — select and copy manually. (${err.message})`); }
630
- });
671
+ };
672
+ copyBtn.addEventListener('click', () => copy(pasteCommand, 'Paste command copied.'));
673
+ copyPromptBtn.addEventListener('click', () => copy(promptCommand, 'Command copied.'));
674
+ copyTokenBtn.addEventListener('click', () => copy(body.token, 'Token copied.'));
631
675
  } catch (err) {
632
676
  console.error('[settings] cli token reissue failed', err);
633
677
  toast(`Re-issue failed: ${err.message}`);
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.24.69",
3
+ "version": "1.24.70",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.24.69",
9
+ "version": "1.24.70",
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.24.69",
3
+ "version": "1.24.70",
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",
@@ -11412,7 +11412,15 @@
11412
11412
  "text": "The design checker now catches text hidden under a dark overlay (the bug that made the components page unreadable in dark mode), instead of reporting it clean."
11413
11413
  }
11414
11414
  ],
11415
- "1.24.69": [
11415
+ "1.24.70": [
11416
+ {
11417
+ "id": "1005100",
11418
+ "text": "In a project that installs Bongos from npm (like toast), the docs check and the pre-ship check now look at the project itself instead of Bongos's own installed files, so they stop failing on nothing and stop reporting fresh fi"
11419
+ },
11420
+ {
11421
+ "id": "1005033",
11422
+ "text": "Signing in to the command line on Windows is smoother: Settings now shows a command that works in PowerShell, says to go to your project folder first, and the tool can ask for the token instead of it sitting in the command."
11423
+ },
11416
11424
  {
11417
11425
  "id": "1005113",
11418
11426
  "text": "In a project that installs Bongos from npm (like toast), the claim card now tells you to finish with 'npx bongos ship', a command that exists there, instead of a script path that doesn't."
@@ -25,7 +25,10 @@ const path = require('node:path');
25
25
  const { execFileSync } = require('node:child_process');
26
26
  const { hasFlag, cliClient, requireSession, cliExit } = require('./cli-lib');
27
27
 
28
- const REPO_ROOT = path.resolve(__dirname, '..', '..');
28
+ // The tree being scanned (task 1005100): this checkout when the core is a checkout, the
29
+ // PROJECT when the core is installed under node_modules — the package dir is not a repo of
30
+ // its own, so `git ls-files` there found 0 files and fitness died on a "scan defect".
31
+ const REPO_ROOT = require('./fitness-lib.js').resolveWorkRoot();
29
32
  const { currentScriptPath } = require('./forwarder.js');
30
33
  const MIN_DUPE_CHARS = 120; // minimum paragraph length to flag as duplicate
31
34
  const MAX_DUPES_REPORTED = 20; // cap to avoid flooding the report