@bongos/core 1.24.57 → 1.24.59
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 +77 -67
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +0 -2
- package/clients/bongos-client/index.cjs +0 -2
- package/clients/bongos-client/index.d.ts +1 -3
- package/clients/bongos-client/index.mjs +0 -2
- package/docs/adr/0398-every-hosted-project-takes-its-own-update-and-nobody-asks-for-one.md +45 -0
- package/docs/adr/README.md +1 -0
- package/docs/api/openapi.json +1 -37
- package/docs/api-reference.md +2 -3
- package/docs/architecture.md +1 -1
- package/docs/copy-inventory.md +38 -44
- package/docs/copy-registry.json +44 -108
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-readings.json +5 -5
- package/docs/recipes/ops-gotchas.md +2 -2
- package/modules/hall-ui/public/deploy-handoff.js +11 -3
- package/modules/hall-ui/public/deploy.js +10 -3
- package/modules/hall-ui/public/settings-software-update.js +4 -71
- package/modules/hall-ui/public/update-pill.js +6 -31
- package/modules/status-ui/public/style.css +5 -2
- package/modules/ui-design/public/brand/png-sources.json +10 -0
- package/modules/ui-design/public/brand.css +6 -0
- package/modules/ui-design/public/brand.html +2 -2
- package/modules/ui-design/scripts/gen-design-reference.js +2 -3
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/public-docs/index.html +3 -1
- package/release-notes.json +16 -0
- package/scripts/bongos/design-generators-fresh.js +14 -6
- package/scripts/bongos/gen-brand.js +82 -36
- package/scripts/bongos/provision-core-upgrade.js +30 -1
- package/scripts/bongos/provision-units.js +18 -0
- package/scripts/hall-preview/server.js +0 -3
- package/scripts/status-mirror-sync.js +4 -1
- package/src/bongos/routes/auth.js +4 -9
- package/src/bongos/routes/core-update.js +36 -76
- package/src/bongos/routes/feedback.js +1 -2
- package/src/bongos/serve-internal.js +5 -70
- package/src/bongos/sign-in-pages.js +20 -4
- package/src/brand-mark.js +10 -1
- package/src/error-page.js +11 -10
- package/src/module-api.js +1 -1
- package/src/theme-markup.js +81 -0
- package/tests/brand_mark.mjs +11 -1
- package/tests/brand_surfaces.mjs +5 -2
- package/tests/deploy_handoff.mjs +23 -2
- package/tests/deploy_page_projects.mjs +35 -3
- package/tests/design_counts_ratchet.mjs +38 -0
- package/tests/design_reference.mjs +1 -1
- package/tests/provision_settings_apply.mjs +52 -0
- package/tests/software_update.mjs +35 -5
- package/tests/update_pill.mjs +9 -5
- package/tests/wordmark_and_faces.mjs +111 -0
- package/src/bongos/upgrade-request.js +0 -158
- package/tests/upgrade_request.mjs +0 -348
package/.bongos-core.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"artifact": "bongos-core",
|
|
3
3
|
"manifest_schema": 1,
|
|
4
4
|
"generator": "scripts/bongos/package-core.js",
|
|
5
|
-
"core_version": "1.24.
|
|
6
|
-
"core_contract": "1.24.
|
|
7
|
-
"source_commit": "
|
|
5
|
+
"core_version": "1.24.59",
|
|
6
|
+
"core_contract": "1.24.59",
|
|
7
|
+
"source_commit": "a6ac4e31607a82978349eba6f0d2c113bdc48345",
|
|
8
8
|
"source_ref": "HEAD",
|
|
9
|
-
"built_at": "2026-11-
|
|
9
|
+
"built_at": "2026-11-07T15:21:01.170Z",
|
|
10
10
|
"redaction": {
|
|
11
11
|
"model": "docs-redacted+functional-verbatim",
|
|
12
|
-
"docs_redacted":
|
|
12
|
+
"docs_redacted": 638,
|
|
13
13
|
"agent_docs_stubbed": 32,
|
|
14
|
-
"functional_verbatim":
|
|
14
|
+
"functional_verbatim": 3900,
|
|
15
15
|
"rules": 3,
|
|
16
16
|
"gate_literals": 3,
|
|
17
17
|
"gate": "passed"
|
|
18
18
|
},
|
|
19
|
-
"file_count":
|
|
20
|
-
"tree_sha256": "
|
|
19
|
+
"file_count": 4571,
|
|
20
|
+
"tree_sha256": "0d58836fc7200aa61d37a68fc94e1fef65ba9556f5afb9e9c7105fcc474f0d4b",
|
|
21
21
|
"files": [
|
|
22
22
|
{
|
|
23
23
|
"path": ".claude/skills/ask-for-help/SKILL.md",
|
|
@@ -332,12 +332,12 @@
|
|
|
332
332
|
{
|
|
333
333
|
"path": "clients/bongos-client/README.md",
|
|
334
334
|
"mode": "0000644",
|
|
335
|
-
"sha256": "
|
|
335
|
+
"sha256": "6669b8bc0f8302da25638519d1dd8d139260c0132c7a5a16747d63cd21d3383d"
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"path": "clients/bongos-client/bongos-client.global.js",
|
|
339
339
|
"mode": "0000644",
|
|
340
|
-
"sha256": "
|
|
340
|
+
"sha256": "41d196d2203252be03a416fb271a9d88a61615e0a1d9babad0802e7e85151b44"
|
|
341
341
|
},
|
|
342
342
|
{
|
|
343
343
|
"path": "clients/bongos-client/examples/hello-world.mjs",
|
|
@@ -347,17 +347,17 @@
|
|
|
347
347
|
{
|
|
348
348
|
"path": "clients/bongos-client/index.cjs",
|
|
349
349
|
"mode": "0000644",
|
|
350
|
-
"sha256": "
|
|
350
|
+
"sha256": "5b76a04d9fba93c2900a1484cf997825804c4708c43228a6dbc541d3ea2c82f2"
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
"path": "clients/bongos-client/index.d.ts",
|
|
354
354
|
"mode": "0000644",
|
|
355
|
-
"sha256": "
|
|
355
|
+
"sha256": "77166efc6944d67f1ffe5b2bc9202ab72ae8331acdf341dffebe4cb034abe56d"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "clients/bongos-client/index.mjs",
|
|
359
359
|
"mode": "0000644",
|
|
360
|
-
"sha256": "
|
|
360
|
+
"sha256": "25a84c2dfa874511575d8aca0f9102fb7c63c3e9ad7195907bd63f7d24e6a112"
|
|
361
361
|
},
|
|
362
362
|
{
|
|
363
363
|
"path": "clients/bongos-client/package.json",
|
|
@@ -2449,25 +2449,30 @@
|
|
|
2449
2449
|
"mode": "0000644",
|
|
2450
2450
|
"sha256": "286df23c58b4d03f62b0ce1bca17bd15b1fc41a145d6493fb26a74d099a16ea3"
|
|
2451
2451
|
},
|
|
2452
|
+
{
|
|
2453
|
+
"path": "docs/adr/0398-every-hosted-project-takes-its-own-update-and-nobody-asks-for-one.md",
|
|
2454
|
+
"mode": "0000644",
|
|
2455
|
+
"sha256": "72c24b0e5d9afcbb2c4dff2f359f79e086f49f38b6b8727456b7e4734002cec5"
|
|
2456
|
+
},
|
|
2452
2457
|
{
|
|
2453
2458
|
"path": "docs/adr/README.md",
|
|
2454
2459
|
"mode": "0000644",
|
|
2455
|
-
"sha256": "
|
|
2460
|
+
"sha256": "c960c4d3ebb30bd8bdc870eb5da41f57d3d7bbb6ba176f012452a75b7efdb525"
|
|
2456
2461
|
},
|
|
2457
2462
|
{
|
|
2458
2463
|
"path": "docs/api-reference.md",
|
|
2459
2464
|
"mode": "0000644",
|
|
2460
|
-
"sha256": "
|
|
2465
|
+
"sha256": "349d9ab67b126f0415285109bc80ee0099ef8aa5ca435a28b14f361ff8671282"
|
|
2461
2466
|
},
|
|
2462
2467
|
{
|
|
2463
2468
|
"path": "docs/api/openapi.json",
|
|
2464
2469
|
"mode": "0000644",
|
|
2465
|
-
"sha256": "
|
|
2470
|
+
"sha256": "eef94b4f6e03a937b12238548480a9a9b86d4703e43c9488c58dda8deb3b0fe7"
|
|
2466
2471
|
},
|
|
2467
2472
|
{
|
|
2468
2473
|
"path": "docs/architecture.md",
|
|
2469
2474
|
"mode": "0000644",
|
|
2470
|
-
"sha256": "
|
|
2475
|
+
"sha256": "58b03efd477eb60e66022cce2e4adda65a359d20ee992c6bceb3320a995322c5"
|
|
2471
2476
|
},
|
|
2472
2477
|
{
|
|
2473
2478
|
"path": "docs/branding-contract.md",
|
|
@@ -2487,12 +2492,12 @@
|
|
|
2487
2492
|
{
|
|
2488
2493
|
"path": "docs/copy-inventory.md",
|
|
2489
2494
|
"mode": "0000644",
|
|
2490
|
-
"sha256": "
|
|
2495
|
+
"sha256": "9f6c2622a044bc47c67ce6e1555af9a956f4189c2057ee80ba969744cd194aed"
|
|
2491
2496
|
},
|
|
2492
2497
|
{
|
|
2493
2498
|
"path": "docs/copy-registry.json",
|
|
2494
2499
|
"mode": "0000644",
|
|
2495
|
-
"sha256": "
|
|
2500
|
+
"sha256": "1503133709b601acaf90536389f65a6ba32725867e79ad210432538c641382e7"
|
|
2496
2501
|
},
|
|
2497
2502
|
{
|
|
2498
2503
|
"path": "docs/design/apex-pass-2-direction.md",
|
|
@@ -3002,7 +3007,7 @@
|
|
|
3002
3007
|
{
|
|
3003
3008
|
"path": "docs/module-api-changelog.md",
|
|
3004
3009
|
"mode": "0000644",
|
|
3005
|
-
"sha256": "
|
|
3010
|
+
"sha256": "b68ba24d900494bac49e77694a228c04794d1c0b5a43c4733159ee5429cbec4f"
|
|
3006
3011
|
},
|
|
3007
3012
|
{
|
|
3008
3013
|
"path": "docs/modules-contract.md",
|
|
@@ -3092,7 +3097,7 @@
|
|
|
3092
3097
|
{
|
|
3093
3098
|
"path": "docs/page-readings.json",
|
|
3094
3099
|
"mode": "0000644",
|
|
3095
|
-
"sha256": "
|
|
3100
|
+
"sha256": "16e8909e4de1207587056fece1ee2fc2455778f569d3338043fd6bc5eb05543d"
|
|
3096
3101
|
},
|
|
3097
3102
|
{
|
|
3098
3103
|
"path": "docs/project-context.template.md",
|
|
@@ -3187,7 +3192,7 @@
|
|
|
3187
3192
|
{
|
|
3188
3193
|
"path": "docs/recipes/ops-gotchas.md",
|
|
3189
3194
|
"mode": "0000644",
|
|
3190
|
-
"sha256": "
|
|
3195
|
+
"sha256": "99193931238d13b50918ddc794136a3f5a499ef384cd5ff227c64a5cbb5dc116"
|
|
3191
3196
|
},
|
|
3192
3197
|
{
|
|
3193
3198
|
"path": "docs/recipes/overnight-builder.md",
|
|
@@ -6267,7 +6272,7 @@
|
|
|
6267
6272
|
{
|
|
6268
6273
|
"path": "modules/hall-ui/public/deploy-handoff.js",
|
|
6269
6274
|
"mode": "0000644",
|
|
6270
|
-
"sha256": "
|
|
6275
|
+
"sha256": "250b9e36ae9d5d0db02d7c9aaed94859c506e7c6a6180c9c799332b7416cc4f7"
|
|
6271
6276
|
},
|
|
6272
6277
|
{
|
|
6273
6278
|
"path": "modules/hall-ui/public/deploy.html",
|
|
@@ -6277,7 +6282,7 @@
|
|
|
6277
6282
|
{
|
|
6278
6283
|
"path": "modules/hall-ui/public/deploy.js",
|
|
6279
6284
|
"mode": "0000644",
|
|
6280
|
-
"sha256": "
|
|
6285
|
+
"sha256": "5c86121ff03d82c4052976b7add9b5248d20123753fd0ddb333709fec712aa29"
|
|
6281
6286
|
},
|
|
6282
6287
|
{
|
|
6283
6288
|
"path": "modules/hall-ui/public/deploy.states.json",
|
|
@@ -7002,7 +7007,7 @@
|
|
|
7002
7007
|
{
|
|
7003
7008
|
"path": "modules/hall-ui/public/settings-software-update.js",
|
|
7004
7009
|
"mode": "0000644",
|
|
7005
|
-
"sha256": "
|
|
7010
|
+
"sha256": "b075408f41ba786800ce0a21b6aae1ebe3e43119be1a208d5305784ba23803d4"
|
|
7006
7011
|
},
|
|
7007
7012
|
{
|
|
7008
7013
|
"path": "modules/hall-ui/public/settings-usage-reports.js",
|
|
@@ -7282,7 +7287,7 @@
|
|
|
7282
7287
|
{
|
|
7283
7288
|
"path": "modules/hall-ui/public/update-pill.js",
|
|
7284
7289
|
"mode": "0000644",
|
|
7285
|
-
"sha256": "
|
|
7290
|
+
"sha256": "62c03b8e1ac7b5597888c89395a5a6c763978db7a31ea585d00c0e1e04d1bfcb"
|
|
7286
7291
|
},
|
|
7287
7292
|
{
|
|
7288
7293
|
"path": "modules/hall-ui/public/vote-control.js",
|
|
@@ -11327,7 +11332,7 @@
|
|
|
11327
11332
|
{
|
|
11328
11333
|
"path": "modules/status-ui/public/style.css",
|
|
11329
11334
|
"mode": "0000644",
|
|
11330
|
-
"sha256": "
|
|
11335
|
+
"sha256": "84b2a0c1e49eef8a7f87a586f250afce3a7c89d54a4211a0ac52820e3de63929"
|
|
11331
11336
|
},
|
|
11332
11337
|
{
|
|
11333
11338
|
"path": "modules/ui-design/CLAUDE.md",
|
|
@@ -11697,12 +11702,12 @@
|
|
|
11697
11702
|
{
|
|
11698
11703
|
"path": "modules/ui-design/public/brand.css",
|
|
11699
11704
|
"mode": "0000644",
|
|
11700
|
-
"sha256": "
|
|
11705
|
+
"sha256": "4d80b05a7f569217a96df00e2c11a8005e540730d67ea94f0d2fa7fe66303343"
|
|
11701
11706
|
},
|
|
11702
11707
|
{
|
|
11703
11708
|
"path": "modules/ui-design/public/brand.html",
|
|
11704
11709
|
"mode": "0000644",
|
|
11705
|
-
"sha256": "
|
|
11710
|
+
"sha256": "9bd01c16060a9624f3f1e0e4467ca7b4da4df3b7527c8b005a669b331b171d1a"
|
|
11706
11711
|
},
|
|
11707
11712
|
{
|
|
11708
11713
|
"path": "modules/ui-design/public/brand.states.json",
|
|
@@ -11754,6 +11759,11 @@
|
|
|
11754
11759
|
"mode": "0000644",
|
|
11755
11760
|
"sha256": "e168fdd0f4ac94754af089e7240be7cbba46704b36a617252f2942c97e8835e2"
|
|
11756
11761
|
},
|
|
11762
|
+
{
|
|
11763
|
+
"path": "modules/ui-design/public/brand/png-sources.json",
|
|
11764
|
+
"mode": "0000644",
|
|
11765
|
+
"sha256": "6181696f80b70fab9daadc14f77963093223387ecff5d4f13b9e1f63e1c6ad6f"
|
|
11766
|
+
},
|
|
11757
11767
|
{
|
|
11758
11768
|
"path": "modules/ui-design/public/tokens.css",
|
|
11759
11769
|
"mode": "0000644",
|
|
@@ -11772,7 +11782,7 @@
|
|
|
11772
11782
|
{
|
|
11773
11783
|
"path": "modules/ui-design/scripts/gen-design-reference.js",
|
|
11774
11784
|
"mode": "0000644",
|
|
11775
|
-
"sha256": "
|
|
11785
|
+
"sha256": "d59b046a2aabda513d2d580a574c74ae43b04e97c847315c16eaa2ab50144ffb"
|
|
11776
11786
|
},
|
|
11777
11787
|
{
|
|
11778
11788
|
"path": "modules/ui-design/scripts/gen-design-tokens.js",
|
|
@@ -11892,17 +11902,17 @@
|
|
|
11892
11902
|
{
|
|
11893
11903
|
"path": "package-lock.json",
|
|
11894
11904
|
"mode": "0000644",
|
|
11895
|
-
"sha256": "
|
|
11905
|
+
"sha256": "38c4ec31d6cb51fd92185003e550832f29d0e44f18f3a2df2b7d3594bdca972e"
|
|
11896
11906
|
},
|
|
11897
11907
|
{
|
|
11898
11908
|
"path": "package.json",
|
|
11899
11909
|
"mode": "0000644",
|
|
11900
|
-
"sha256": "
|
|
11910
|
+
"sha256": "0a9fbd43bcf2caa7e6c2b6faeef134a0dc96d7c5f1ee29519edf5d48ffb78db9"
|
|
11901
11911
|
},
|
|
11902
11912
|
{
|
|
11903
11913
|
"path": "public-docs/index.html",
|
|
11904
11914
|
"mode": "0000644",
|
|
11905
|
-
"sha256": "
|
|
11915
|
+
"sha256": "6ec35589784910e09c362401b3e0468b90cbe58c56754d6e6d7e4353a8083444"
|
|
11906
11916
|
},
|
|
11907
11917
|
{
|
|
11908
11918
|
"path": "public-docs/redoc.standalone.js",
|
|
@@ -11917,7 +11927,7 @@
|
|
|
11917
11927
|
{
|
|
11918
11928
|
"path": "release-notes.json",
|
|
11919
11929
|
"mode": "0000644",
|
|
11920
|
-
"sha256": "
|
|
11930
|
+
"sha256": "9735ab47bbd28140534686e37156442e586d1a7c5abce86f23ab0d546c9da0a7"
|
|
11921
11931
|
},
|
|
11922
11932
|
{
|
|
11923
11933
|
"path": "scripts/bongos/CLAUDE.md",
|
|
@@ -12292,7 +12302,7 @@
|
|
|
12292
12302
|
{
|
|
12293
12303
|
"path": "scripts/bongos/design-generators-fresh.js",
|
|
12294
12304
|
"mode": "0000644",
|
|
12295
|
-
"sha256": "
|
|
12305
|
+
"sha256": "a51d725286fa198505ff57ceceb50412ffa18e9f659c88cbe01d501bac8da9f5"
|
|
12296
12306
|
},
|
|
12297
12307
|
{
|
|
12298
12308
|
"path": "scripts/bongos/design-sync.js",
|
|
@@ -12512,7 +12522,7 @@
|
|
|
12512
12522
|
{
|
|
12513
12523
|
"path": "scripts/bongos/gen-brand.js",
|
|
12514
12524
|
"mode": "0000644",
|
|
12515
|
-
"sha256": "
|
|
12525
|
+
"sha256": "bc3ce6eebc646e7f2359ef2495a99878e060d7b41c27673833d824d428a379bd"
|
|
12516
12526
|
},
|
|
12517
12527
|
{
|
|
12518
12528
|
"path": "scripts/bongos/gen-diagrams.js",
|
|
@@ -12952,7 +12962,7 @@
|
|
|
12952
12962
|
{
|
|
12953
12963
|
"path": "scripts/bongos/provision-core-upgrade.js",
|
|
12954
12964
|
"mode": "0000644",
|
|
12955
|
-
"sha256": "
|
|
12965
|
+
"sha256": "0b20f0ffe3c099475edda3db0ef2fb25cc8f1ec8b213428942c393e0b5c9d565"
|
|
12956
12966
|
},
|
|
12957
12967
|
{
|
|
12958
12968
|
"path": "scripts/bongos/provision-disconnect.js",
|
|
@@ -13012,7 +13022,7 @@
|
|
|
13012
13022
|
{
|
|
13013
13023
|
"path": "scripts/bongos/provision-units.js",
|
|
13014
13024
|
"mode": "0000644",
|
|
13015
|
-
"sha256": "
|
|
13025
|
+
"sha256": "19d736382407853ab57ca4bcedc74272d47ad8b5c0a4aed4c1b0b23a84533846"
|
|
13016
13026
|
},
|
|
13017
13027
|
{
|
|
13018
13028
|
"path": "scripts/bongos/provision.js",
|
|
@@ -15257,7 +15267,7 @@
|
|
|
15257
15267
|
{
|
|
15258
15268
|
"path": "scripts/hall-preview/server.js",
|
|
15259
15269
|
"mode": "0000644",
|
|
15260
|
-
"sha256": "
|
|
15270
|
+
"sha256": "b97ba8be895dbc109eb091d59d56531711c1a379417768c521bca96f8e2f2f8a"
|
|
15261
15271
|
},
|
|
15262
15272
|
{
|
|
15263
15273
|
"path": "scripts/hall-preview/task-visual.js",
|
|
@@ -15297,7 +15307,7 @@
|
|
|
15297
15307
|
{
|
|
15298
15308
|
"path": "scripts/status-mirror-sync.js",
|
|
15299
15309
|
"mode": "0000644",
|
|
15300
|
-
"sha256": "
|
|
15310
|
+
"sha256": "41628e240bb4f5c9840f1ce3839d1a299df8cacd54b2706f4151dcda53e7495b"
|
|
15301
15311
|
},
|
|
15302
15312
|
{
|
|
15303
15313
|
"path": "src/asset-version.js",
|
|
@@ -15667,7 +15677,7 @@
|
|
|
15667
15677
|
{
|
|
15668
15678
|
"path": "src/bongos/routes/auth.js",
|
|
15669
15679
|
"mode": "0000644",
|
|
15670
|
-
"sha256": "
|
|
15680
|
+
"sha256": "6348ee00e6e60d899f3e98bc55a75e6b3f88562fcda7a1655a4d4df1c2273393"
|
|
15671
15681
|
},
|
|
15672
15682
|
{
|
|
15673
15683
|
"path": "src/bongos/routes/backup.js",
|
|
@@ -15687,12 +15697,12 @@
|
|
|
15687
15697
|
{
|
|
15688
15698
|
"path": "src/bongos/routes/core-update.js",
|
|
15689
15699
|
"mode": "0000644",
|
|
15690
|
-
"sha256": "
|
|
15700
|
+
"sha256": "fba9ac0bd6950ee87ef7cd1005f1e852f9346e6fa240e5e6e1e086781f226254"
|
|
15691
15701
|
},
|
|
15692
15702
|
{
|
|
15693
15703
|
"path": "src/bongos/routes/feedback.js",
|
|
15694
15704
|
"mode": "0000644",
|
|
15695
|
-
"sha256": "
|
|
15705
|
+
"sha256": "bf2fdd18f238a93cde23838da6f9bbed89f6d4aad13902bc6d86b18efb2099c3"
|
|
15696
15706
|
},
|
|
15697
15707
|
{
|
|
15698
15708
|
"path": "src/bongos/routes/github.js",
|
|
@@ -15802,12 +15812,12 @@
|
|
|
15802
15812
|
{
|
|
15803
15813
|
"path": "src/bongos/serve-internal.js",
|
|
15804
15814
|
"mode": "0000644",
|
|
15805
|
-
"sha256": "
|
|
15815
|
+
"sha256": "0d5a45ed0f8b8f907169a886504749887a659fbd2bdff23c28fa8146c3742a05"
|
|
15806
15816
|
},
|
|
15807
15817
|
{
|
|
15808
15818
|
"path": "src/bongos/sign-in-pages.js",
|
|
15809
15819
|
"mode": "0000644",
|
|
15810
|
-
"sha256": "
|
|
15820
|
+
"sha256": "cfd8a09da90e8f2a176e94c960736bbb295c216a1d6bf1f8027f7f0ce1ceacc8"
|
|
15811
15821
|
},
|
|
15812
15822
|
{
|
|
15813
15823
|
"path": "src/bongos/software-update.js",
|
|
@@ -15824,15 +15834,10 @@
|
|
|
15824
15834
|
"mode": "0000644",
|
|
15825
15835
|
"sha256": "8aec44e5e47e94e4539475a109e999913dd4f3e9a0276ba0ff3b04bfd1c79b0e"
|
|
15826
15836
|
},
|
|
15827
|
-
{
|
|
15828
|
-
"path": "src/bongos/upgrade-request.js",
|
|
15829
|
-
"mode": "0000644",
|
|
15830
|
-
"sha256": "afa7ce2a38cc86bcf934902f65913fd03af58942da2d0777569fe71319900e63"
|
|
15831
|
-
},
|
|
15832
15837
|
{
|
|
15833
15838
|
"path": "src/brand-mark.js",
|
|
15834
15839
|
"mode": "0000644",
|
|
15835
|
-
"sha256": "
|
|
15840
|
+
"sha256": "5484f9ff087a0d28d076f5079c49aaa55e704ba52e60be03a9454e3b8fc4b3c8"
|
|
15836
15841
|
},
|
|
15837
15842
|
{
|
|
15838
15843
|
"path": "src/branding.js",
|
|
@@ -15847,7 +15852,7 @@
|
|
|
15847
15852
|
{
|
|
15848
15853
|
"path": "src/error-page.js",
|
|
15849
15854
|
"mode": "0000644",
|
|
15850
|
-
"sha256": "
|
|
15855
|
+
"sha256": "ddfd55f0581a32e31b26624e0e981b1768af896f7edc962bc1779eb05f64ccba"
|
|
15851
15856
|
},
|
|
15852
15857
|
{
|
|
15853
15858
|
"path": "src/hall-look.js",
|
|
@@ -15872,7 +15877,7 @@
|
|
|
15872
15877
|
{
|
|
15873
15878
|
"path": "src/module-api.js",
|
|
15874
15879
|
"mode": "0000644",
|
|
15875
|
-
"sha256": "
|
|
15880
|
+
"sha256": "06c54ea826895a4de9a90970d7b72e6479fada3880d45e1c1f164f29e7c319c5"
|
|
15876
15881
|
},
|
|
15877
15882
|
{
|
|
15878
15883
|
"path": "src/module-loader/catalog.js",
|
|
@@ -15939,6 +15944,11 @@
|
|
|
15939
15944
|
"mode": "0000644",
|
|
15940
15945
|
"sha256": "1565fab25ca23066a460ef35f3693a56186fdc03f5461d3fc891b528d185885c"
|
|
15941
15946
|
},
|
|
15947
|
+
{
|
|
15948
|
+
"path": "src/theme-markup.js",
|
|
15949
|
+
"mode": "0000644",
|
|
15950
|
+
"sha256": "7efca13206ba049b5958bcfdbb674e14e67ff4e8c1ddb33f0729bcbd6de4624f"
|
|
15951
|
+
},
|
|
15942
15952
|
{
|
|
15943
15953
|
"path": "tests/abandon_creator_authz.mjs",
|
|
15944
15954
|
"mode": "0000644",
|
|
@@ -16662,12 +16672,12 @@
|
|
|
16662
16672
|
{
|
|
16663
16673
|
"path": "tests/brand_mark.mjs",
|
|
16664
16674
|
"mode": "0000644",
|
|
16665
|
-
"sha256": "
|
|
16675
|
+
"sha256": "68ff85560c05b7426139527cea3832429e17da4b64c96bbc26ba46c02305d97e"
|
|
16666
16676
|
},
|
|
16667
16677
|
{
|
|
16668
16678
|
"path": "tests/brand_surfaces.mjs",
|
|
16669
16679
|
"mode": "0000644",
|
|
16670
|
-
"sha256": "
|
|
16680
|
+
"sha256": "26684884f85c8ad99966ae4f7713552cc12709c0d41100b3d7a5b60b8d50c9af"
|
|
16671
16681
|
},
|
|
16672
16682
|
{
|
|
16673
16683
|
"path": "tests/branding.mjs",
|
|
@@ -17387,7 +17397,7 @@
|
|
|
17387
17397
|
{
|
|
17388
17398
|
"path": "tests/deploy_handoff.mjs",
|
|
17389
17399
|
"mode": "0000644",
|
|
17390
|
-
"sha256": "
|
|
17400
|
+
"sha256": "248f615467d2162f89ec77a0dd30f6def8c91dc5d1487fb00a182878976ef647"
|
|
17391
17401
|
},
|
|
17392
17402
|
{
|
|
17393
17403
|
"path": "tests/deploy_instance.mjs",
|
|
@@ -17397,17 +17407,17 @@
|
|
|
17397
17407
|
{
|
|
17398
17408
|
"path": "tests/deploy_page_projects.mjs",
|
|
17399
17409
|
"mode": "0000644",
|
|
17400
|
-
"sha256": "
|
|
17410
|
+
"sha256": "7e0885c8fcf9d69bbfda03433323be29fccc000e78299ba55c413ae1444943c8"
|
|
17401
17411
|
},
|
|
17402
17412
|
{
|
|
17403
17413
|
"path": "tests/design_counts_ratchet.mjs",
|
|
17404
17414
|
"mode": "0000644",
|
|
17405
|
-
"sha256": "
|
|
17415
|
+
"sha256": "2fd9ecdc86bb0a9b2392db350568eb4776a27b3d3bd43e896686475707a61a85"
|
|
17406
17416
|
},
|
|
17407
17417
|
{
|
|
17408
17418
|
"path": "tests/design_reference.mjs",
|
|
17409
17419
|
"mode": "0000644",
|
|
17410
|
-
"sha256": "
|
|
17420
|
+
"sha256": "809766d9baedf5ed420935d3c94c7e1bcb27cfd46c307792cd556ea7eb4f24af"
|
|
17411
17421
|
},
|
|
17412
17422
|
{
|
|
17413
17423
|
"path": "tests/design_tokens_generated.mjs",
|
|
@@ -20997,7 +21007,7 @@
|
|
|
20997
21007
|
{
|
|
20998
21008
|
"path": "tests/provision_settings_apply.mjs",
|
|
20999
21009
|
"mode": "0000644",
|
|
21000
|
-
"sha256": "
|
|
21010
|
+
"sha256": "1651459df066829006f209a34ded9e11181fe7f1ebf75bb68817e403ae1dcb08"
|
|
21001
21011
|
},
|
|
21002
21012
|
{
|
|
21003
21013
|
"path": "tests/provision_teardown_address.mjs",
|
|
@@ -22112,7 +22122,7 @@
|
|
|
22112
22122
|
{
|
|
22113
22123
|
"path": "tests/software_update.mjs",
|
|
22114
22124
|
"mode": "0000644",
|
|
22115
|
-
"sha256": "
|
|
22125
|
+
"sha256": "fa4eca1e1a69a50ad2a3ed4eb06342e50b39757561ae306dd5cd88dd08b812ba"
|
|
22116
22126
|
},
|
|
22117
22127
|
{
|
|
22118
22128
|
"path": "tests/sound_player.mjs",
|
|
@@ -22582,7 +22592,7 @@
|
|
|
22582
22592
|
{
|
|
22583
22593
|
"path": "tests/update_pill.mjs",
|
|
22584
22594
|
"mode": "0000644",
|
|
22585
|
-
"sha256": "
|
|
22595
|
+
"sha256": "6870e95062d1691e733f393a66c7392e5d7599503f498543eda6a5a9ea5a27f4"
|
|
22586
22596
|
},
|
|
22587
22597
|
{
|
|
22588
22598
|
"path": "tests/update_subscription_engine.mjs",
|
|
@@ -22634,11 +22644,6 @@
|
|
|
22634
22644
|
"mode": "0000644",
|
|
22635
22645
|
"sha256": "9268c4dbadc4b6fda3ac9505cf699e1fec7b9de6093cfa31c96d0b3a652b79bb"
|
|
22636
22646
|
},
|
|
22637
|
-
{
|
|
22638
|
-
"path": "tests/upgrade_request.mjs",
|
|
22639
|
-
"mode": "0000644",
|
|
22640
|
-
"sha256": "5ff095b7fba7e04ee1fee01ee3096a627b80f2100d0fcae94314efcf3928c4cb"
|
|
22641
|
-
},
|
|
22642
22647
|
{
|
|
22643
22648
|
"path": "tests/upkeep_home.mjs",
|
|
22644
22649
|
"mode": "0000644",
|
|
@@ -22819,6 +22824,11 @@
|
|
|
22819
22824
|
"mode": "0000644",
|
|
22820
22825
|
"sha256": "486bb5b4af30db3ab3a6a0f047edf60a9d4ec5a70cb1c19cebbd1fcd89578799"
|
|
22821
22826
|
},
|
|
22827
|
+
{
|
|
22828
|
+
"path": "tests/wordmark_and_faces.mjs",
|
|
22829
|
+
"mode": "0000644",
|
|
22830
|
+
"sha256": "bb1ac8d5fd24e2ea073b768298acbe4bcc55ca5f2e25d36d9904fdcd18037ac8"
|
|
22831
|
+
},
|
|
22822
22832
|
{
|
|
22823
22833
|
"path": "tests/work_board_live_refresh.mjs",
|
|
22824
22834
|
"mode": "0000644",
|
|
@@ -5,7 +5,7 @@ A **generated**, zero-dependency typed client for the Bongos API — produced fr
|
|
|
5
5
|
by hand; it regenerates when the spec changes, so it can never drift from the routes.
|
|
6
6
|
|
|
7
7
|
- API version: **v1** (served at `/api/bongos/v1`)
|
|
8
|
-
-
|
|
8
|
+
- 685 operations across 85 resource groups
|
|
9
9
|
|
|
10
10
|
## Use it from your project
|
|
11
11
|
|
|
@@ -1395,8 +1395,6 @@ function createClient(opts = {}) {
|
|
|
1395
1395
|
"softwareUpdate": {
|
|
1396
1396
|
// GET /software-update — rank: any-builder — GET /software-update
|
|
1397
1397
|
getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
|
|
1398
|
-
// POST /software-update/request — rank: archon — POST /software-update/request
|
|
1399
|
-
postSoftwareUpdateRequest: (args) => request("POST", "/software-update/request", { hasBody: true }, args),
|
|
1400
1398
|
},
|
|
1401
1399
|
"specialities": {
|
|
1402
1400
|
// GET /specialities — rank: any-builder — GET /specialities
|
|
@@ -1394,8 +1394,6 @@ function createClient(opts = {}) {
|
|
|
1394
1394
|
"softwareUpdate": {
|
|
1395
1395
|
// GET /software-update — rank: any-builder — GET /software-update
|
|
1396
1396
|
getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
|
|
1397
|
-
// POST /software-update/request — rank: archon — POST /software-update/request
|
|
1398
|
-
postSoftwareUpdateRequest: (args) => request("POST", "/software-update/request", { hasBody: true }, args),
|
|
1399
1397
|
},
|
|
1400
1398
|
"specialities": {
|
|
1401
1399
|
// GET /specialities — rank: any-builder — GET /specialities
|
|
@@ -194,7 +194,7 @@ export interface GetSessionsIdResponse { session: unknown }
|
|
|
194
194
|
export interface GetSessionsIdTranscriptResponse { transcript: unknown }
|
|
195
195
|
export interface GetSessionsMineResponse { sessions: unknown; count: unknown }
|
|
196
196
|
export interface GetSessionsSearchResponse { sessions: unknown; count: unknown; total: unknown; totals: unknown; limit: unknown; offset: unknown; session_types: unknown }
|
|
197
|
-
export interface GetSoftwareUpdateResponse { ok: boolean; update: unknown; door: unknown; can_update: unknown;
|
|
197
|
+
export interface GetSoftwareUpdateResponse { ok: boolean; update: unknown; door: unknown; can_update: unknown; held: unknown; history: unknown }
|
|
198
198
|
export interface GetSpecialitiesIdDocumentsResponse { documents: unknown }
|
|
199
199
|
export interface GetSpecialitiesIdResponse { speciality: unknown }
|
|
200
200
|
export interface GetSpecialitiesIdSkillsResponse { speciality: unknown; adopted: boolean; enabled: unknown; skills: unknown }
|
|
@@ -2051,8 +2051,6 @@ export interface BongosClient {
|
|
|
2051
2051
|
"softwareUpdate": {
|
|
2052
2052
|
/** GET /software-update — rank: any-builder */
|
|
2053
2053
|
getSoftwareUpdate(args?: RequestArgs): Promise<GetSoftwareUpdateResponse>;
|
|
2054
|
-
/** POST /software-update/request — rank: archon */
|
|
2055
|
-
postSoftwareUpdateRequest(args?: RequestArgs): Promise<ApiResponse>;
|
|
2056
2054
|
};
|
|
2057
2055
|
"specialities": {
|
|
2058
2056
|
/** GET /specialities — rank: any-builder */
|
|
@@ -1391,8 +1391,6 @@ export function createClient(opts = {}) {
|
|
|
1391
1391
|
"softwareUpdate": {
|
|
1392
1392
|
// GET /software-update — rank: any-builder — GET /software-update
|
|
1393
1393
|
getSoftwareUpdate: (args) => request("GET", "/software-update", { hasBody: false }, args),
|
|
1394
|
-
// POST /software-update/request — rank: archon — POST /software-update/request
|
|
1395
|
-
postSoftwareUpdateRequest: (args) => request("POST", "/software-update/request", { hasBody: true }, args),
|
|
1396
1394
|
},
|
|
1397
1395
|
"specialities": {
|
|
1398
1396
|
// GET /specialities — rank: any-builder — GET /specialities
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ADR 0398 — Every hosted project takes its own update, and nobody asks for one
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-11-07
|
|
5
|
+
- **Task:** [task 1005128](https://cloudbongos.com/builders#/task/1005128) (goal 1000090 — BONGOS-V2)
|
|
6
|
+
- **Deciders:** the owner, Lars. On 2026-11-07, looking at toast's Settings → Software update, which said "Ask for this upgrade": "There has to be a better way to deploy upgrades, asking the team for them is a bit brutal, if the update is generally available then they should be able to download it. Lets keep this the same for all accounts."
|
|
7
|
+
- **Amends:** [ADR 0340](0340-every-hall-takes-its-update-from-settings-and-deploy-is-the-platform-halls-page.md) D2 (how a hosted hall finds its door) and [ADR 0339](0339-a-projects-owner-upgrades-it-and-a-hosted-project-hands-off-to-the-hub-door.md) D3 (the hub's `/deploy` scope). Retires task 1004595's "Ask for this upgrade". Who may move a pin, and how the move runs, are unchanged.
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
A hosted project's owner already upgrades it themselves: the hub's door admits the owner (ADR 0339), and since task 1005041 the Update button takes the update in place. The button needs the hall to know where its door is. It learned that from the sign-in federation block or, since task 1004608, from `<PREFIX>_HUB_UPGRADE_URL` in its `web.env`.
|
|
12
|
+
|
|
13
|
+
Only a settings-apply ever wrote that line, and a settings-apply runs only when a setting changes. A project provisioned before task 1004608 (toast) never got it. Its hall fell to the `cli` answer and, because its name sat under the hub's domain, offered "Ask for this upgrade": a request filed in the maintainers' backlog for a move the owner was allowed to make.
|
|
14
|
+
|
|
15
|
+
## Decision
|
|
16
|
+
|
|
17
|
+
### D1 — No project offers to ask
|
|
18
|
+
|
|
19
|
+
The panel, the Update pill, `POST /software-update/request` and `src/bongos/upgrade-request.js` are gone. A viewer who may update sees the Update button (`local` or `hub`) or, on a server they run themselves, the `bongos upgrade` instruction (`cli`). Nothing else.
|
|
20
|
+
|
|
21
|
+
### D2 — A hosted hall always names its hub door
|
|
22
|
+
|
|
23
|
+
`updateDoor` gains a last fallback. When the hall has neither the federation block nor the line, and it answers on a name under its hub's own domain (the hub's own rule for "a project we host", which the ask used), its door is `<hub>/deploy?host=<that name>`. The hub is the feedback door's (`feedbackHub`), and the name comes from the project's own branding pack, never from a request header.
|
|
24
|
+
|
|
25
|
+
A self-hosted instance on its own domain stays `cli`: nobody at the hub can reach its server.
|
|
26
|
+
|
|
27
|
+
### D3 — The hub's door takes `?host=` as it takes `?project=`
|
|
28
|
+
|
|
29
|
+
`/deploy` and the hand-off window resolve `?host=` against the visitor's own projects by registered address (`domain`), exactly as they resolve a slug. It is a lookup, never a listing. The hand-off still accepts a message only from the project's registered origin, and the move route still checks ownership per request.
|
|
30
|
+
|
|
31
|
+
### D4 — Every core move writes the line
|
|
32
|
+
|
|
33
|
+
Before it runs, the core-upgrade leg writes `<PREFIX>_HUB_UPGRADE_URL` into the project's `web.env` when it is missing or wrong. The move restarts the service, so the new core reads it. This is best-effort: an unreadable file or a refused write is logged, and the move goes on. A project on its own domain gets the Update button from its next move onward, including automatic ones.
|
|
34
|
+
|
|
35
|
+
## Rejected
|
|
36
|
+
|
|
37
|
+
- **Keeping the ask as a fallback behind the button.** The owner asked for it to be the same for every account, and the ask was only ever reached because the address was missing. D2 and D4 remove that cause.
|
|
38
|
+
- **A sweep that re-applies settings to every tenant.** It restarts every hosted project once for a single env line. Riding the move restarts nothing extra.
|
|
39
|
+
- **Guessing the slug from the host.** A project on its own domain has no slug in its name, and a wrong guess opens another project's page. `?host=` matches the address the hub registered.
|
|
40
|
+
|
|
41
|
+
## Consequences
|
|
42
|
+
|
|
43
|
+
- **A hosted project gets this once it runs a core carrying it.** Toast runs 1.21.115, which is older, so its first move is made from the hub (`https://cloudbongos.com/deploy?project=toast`). After that its Settings carries the button.
|
|
44
|
+
- **The request history task 1004595 stored** (`software_update.request` in project settings) is no longer read. It is left in place and harms nothing.
|
|
45
|
+
- **Proof:** `tests/software_update.mjs` (the `?host=` door and every case that stays `cli`, and the source checks that the ask is gone), `tests/update_pill.mjs` (no ask plan; a `?host=` door draws the button), `tests/deploy_handoff.mjs` (`?host=` resolves by address, and an unknown or bare-slug host moves nothing), and `tests/provision_settings_apply.mjs` (the backfill patch, and a failed read or write never stopping the move).
|
package/docs/adr/README.md
CHANGED
|
@@ -513,3 +513,4 @@ These 20 numbers are each shared by exactly two files. They are **accepted histo
|
|
|
513
513
|
| 0394 | [**Market Watch searches the web through the Messages API on the project's own key, and runs from its own clock-anchored poller** ([task 1004934](https://cloudbongos.com/builders#/task/1004934) · goal 1000137). Not the grade port: the server image has no `claude` CLI, and a measured tool-enabled run costs the same ($0.106 per item). One Sonnet 5 call per item with bounded web search and fetch, on an owner-set key in Settings (the project pays the provider; Bongos holds no money); an hourly, ledger-due, resumable poller on the daily-checks pattern, not the abandoned cron-router; capped per item before it starts and fail closed; about $4–5 per weekly 40-item run.](0394-market-watch-searches-through-the-messages-api-on-the-projects-key-and-runs-from-its-own-poller.md) | modules / economy |
|
|
514
514
|
| 0395 | [**A task says what it needs, and each person's lists show only what they can do** ([task 1004950](https://cloudbongos.com/builders#/task/1004950)). `tasks.needs` ⊆ {owner, server} is its own set, not an `automation_tag` value (that one says whether work runs unattended). Capabilities are read fresh like rank: `owner` from the owner seat (founding builder fallback, the UAT reading), `server` from `builders.capability_grants`, set only by the owner. The recommend lists (claimable feed, optimizer, autonomous runner) show only tasks whose needs the viewer holds; the runner never holds owner. The claim refuses only `server` (`NEEDS_SERVER_ACCESS`, all three surfaces). Visibility elsewhere is unchanged; the board filters by need.](0395-a-task-says-what-it-needs-and-lists-show-only-what-you-can-do.md) | lifecycle / work tracking |
|
|
515
515
|
| 0397 | [**The payment rail is Stripe Connect, one connected account per project; J.P. Morgan Payments is the fallback** ([task 1004906](https://cloudbongos.com/builders#/task/1004906), goal 1000092). The owner chose Stripe on 2026-10-30. Each project holds its money in its own connected account and each payee has one, so Cloud Bongos holds nothing (ADR 0385). Every flow in the ADR 0385 map is named against a Stripe primitive; a processor adapter module is the only place that names Stripe, so the fallback replaces one adapter. The processor is the party that monitors the money it holds. Test mode first; no live key is created, and counsel items 1 to 4 still gate real money.](0397-the-payment-rail-is-stripe-connect-with-one-connected-account-per-project.md) | economy / payments |
|
|
516
|
+
| 0398 | [**Every hosted project takes its own update, and nobody asks for one** ([task 1005128](https://cloudbongos.com/builders#/task/1005128)). "Ask for this upgrade" is gone from every hall. A hosted hall with no upgrade address still names its hub door, by its own web address (`/deploy?host=`), which the hub resolves among the visitor's own projects; every core move writes the missing address into the project's settings. A self-hosted instance keeps the `bongos upgrade` instruction.](0398-every-hosted-project-takes-its-own-update-and-nobody-asks-for-one.md) | upgrades / hosting |
|