@bongos/core 1.21.83 → 1.21.84
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 +37 -32
- package/clients/bongos-client/index.d.ts +1 -1
- package/docs/adr/0369-ship-mode-decides-who-starts-a-ship-not-how-it-lands.md +1 -0
- package/docs/api/openapi.json +7 -0
- package/docs/api-reference.md +1 -1
- package/docs/copy-inventory.md +32 -28
- package/docs/copy-registry.json +70 -34
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-inventory.json +2 -1
- package/docs/page-readings.json +121 -113
- package/modules/provisioning/birth.js +28 -1
- package/modules/provisioning/routes/provisioning.js +3 -1
- package/modules/public-landing/public/projects.html +46 -5
- package/modules/public-landing/public/projects.states.json +1 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/src/bongos/project-settings.js +16 -2
- package/src/branding.js +3 -0
- package/src/module-api.js +1 -1
- package/tests/projects_hub.mjs +1 -1
- package/tests/projects_hub_app_step.mjs +1 -1
- package/tests/provision_settings_apply.mjs +4 -1
- package/tests/provisioning_settings_env.mjs +3 -1
- package/tests/wizard_physics_more.mjs +5 -5
- package/tests/wizard_ship_mode.mjs +187 -0
- package/tests/wizard_six_screens.mjs +3 -2
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":44,"lines":
|
|
8
|
+
"counts": {"pages":44,"lines":5106,"placed":1628,"shared":410,"unplaced":3068,"omitted_data":2546},
|
|
9
9
|
"pages": [
|
|
10
10
|
{
|
|
11
11
|
"id": "builders:atlas",
|
|
@@ -4578,10 +4578,10 @@
|
|
|
4578
4578
|
"id": "landing:projects",
|
|
4579
4579
|
"surface": "landing",
|
|
4580
4580
|
"title": "{{productName}} — projects",
|
|
4581
|
-
"states_read": ["out-map","in-map","in-map-projects","in-map-profile","in-map-kbd","in-map-search","in-map-mine-on","in-table","in-table-by-builders","in-mine","in-manage","in-manage-address","in-manage-planet","in-manage-card","in-manage-look","in-manage-kind","in-manage-invite","in-manage-invite-handoff","in-manage-invite-guild","in-manage-app-live","in-manage-app-building","in-manage-app-failed","in-manage-app-retry","in-manage-app-offer","in-manage-app-connect","in-manage-snag","in-manage-gone","in-manage-missing","out-manage","in-new","in-new-fork-ticked","in-new-terms-refused","in-new-fork-demo","in-new-demo-what","in-new-demo-review-address","in-new-what","in-new-name-prefilled","in-new-checks","in-new-checks-filled","in-new-checks-entity","in-new-review","in-new-review-code","in-new-review-address","in-new-review-app","in-new-review-extras","in-new-review-team","in-new-review-run","in-new-review-confirmed","in-new-look","in-new-done","in-new-resume-offer","in-new-look-custom","out-new","out-map-projects","card","card-noart","card-self","in-manage-demo","in-mine-dns-pending","in-manage-dns-pending","in-mine-empty","card-floor","card-backdrop","in-new-done-live"],
|
|
4582
|
-
"files_hash": "
|
|
4583
|
-
"reading_hash": "
|
|
4584
|
-
"counts": {"lines":
|
|
4581
|
+
"states_read": ["out-map","in-map","in-map-projects","in-map-profile","in-map-kbd","in-map-search","in-map-mine-on","in-table","in-table-by-builders","in-mine","in-manage","in-manage-address","in-manage-planet","in-manage-card","in-manage-look","in-manage-kind","in-manage-invite","in-manage-invite-handoff","in-manage-invite-guild","in-manage-app-live","in-manage-app-building","in-manage-app-failed","in-manage-app-retry","in-manage-app-offer","in-manage-app-connect","in-manage-snag","in-manage-gone","in-manage-missing","out-manage","in-new","in-new-fork-ticked","in-new-terms-refused","in-new-fork-demo","in-new-demo-what","in-new-demo-review-address","in-new-what","in-new-name-prefilled","in-new-checks","in-new-checks-filled","in-new-checks-entity","in-new-review","in-new-review-code","in-new-review-address","in-new-review-app","in-new-review-extras","in-new-review-team","in-new-review-run","in-new-review-ship","in-new-review-confirmed","in-new-look","in-new-done","in-new-resume-offer","in-new-look-custom","out-new","out-map-projects","card","card-noart","card-self","in-manage-demo","in-mine-dns-pending","in-manage-dns-pending","in-mine-empty","card-floor","card-backdrop","in-new-done-live"],
|
|
4582
|
+
"files_hash": "bc8a696000bbb24d",
|
|
4583
|
+
"reading_hash": "f36b4a70808934f5",
|
|
4584
|
+
"counts": {"lines":919,"placed":227,"shared":21,"unplaced":671},
|
|
4585
4585
|
"omitted": {"data":141},
|
|
4586
4586
|
"notes": [],
|
|
4587
4587
|
"lines": [
|
|
@@ -4600,14 +4600,14 @@
|
|
|
4600
4600
|
{"key":"L0013","section":"Mercury is alive.","text":"your projects page","placement":"unplaced","state":"in-new-done-live"},
|
|
4601
4601
|
{"key":"L0014","section":"Mercury is alive.","text":"Your project is answering at","placement":"unplaced","state":"in-new-done-live"},
|
|
4602
4602
|
{"key":"L0015","section":"Mercury is alive.","text":". Finish the steps below and the hall is yours.","placement":"unplaced","state":"in-new-done-live"},
|
|
4603
|
-
{"key":"L0016","section":"Invite builders","text":"Invite builders","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
4604
|
-
{"key":"L0017","section":"Invite builders","text":"Optional. Invite people by GitHub username. The invite comes from your project’s hall, and you can invite anyone later.","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
4603
|
+
{"key":"L0016","section":"Invite builders","text":"Invite builders","placement":"placed","file":"modules/public-landing/public/projects.html","line":2041,"string_id":"20786b02f47a","state":"in-new-done-live"},
|
|
4604
|
+
{"key":"L0017","section":"Invite builders","text":"Optional. Invite people by GitHub username. The invite comes from your project’s hall, and you can invite anyone later.","placement":"placed","file":"modules/public-landing/public/projects.html","line":2042,"string_id":"4cb1fddfb7bf","state":"in-new-done-live"},
|
|
4605
4605
|
{"key":"L0018","section":"Invite builders","text":"GitHub username","placement":"placed","file":"modules/public-landing/public/projects.html","line":1315,"string_id":"a5257c88eb07","attr":"placeholder","state":"in-new-done-live"},
|
|
4606
4606
|
{"key":"L0019","section":"Invite builders","text":"Invite","placement":"unplaced","state":"in-new-done-live"},
|
|
4607
4607
|
{"key":"L0020","section":"Invite builders","text":"Skip","placement":"unplaced","state":"in-new-done-live"},
|
|
4608
4608
|
{"key":"L0021","section":"Invite builders","text":"You can invite builders any time from","placement":"unplaced","state":"in-new-done-live"},
|
|
4609
4609
|
{"key":"L0022","section":"Invite builders","text":"the project’s own page","placement":"unplaced","state":"in-new-done-live"},
|
|
4610
|
-
{"key":"L0023","section":"Your steps — the parts only you can play","text":"Your steps — the parts only you can play","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
4610
|
+
{"key":"L0023","section":"Your steps — the parts only you can play","text":"Your steps — the parts only you can play","placement":"placed","file":"modules/public-landing/public/projects.html","line":2058,"string_id":"8391cfe0dd03","state":"in-new-done-live"},
|
|
4611
4611
|
{"key":"L0024","section":"Your steps — the parts only you can play","text":"Wire GitHub sign-in","placement":"unplaced","state":"in-new-done-live"},
|
|
4612
4612
|
{"key":"L0025","section":"Your steps — the parts only you can play","text":"This platform is {…} on a local address, and GitHub refuses app setups it can’t reach over the {…} internet — so the one-click flow can’t complete here. On a publicly-addressed platform this is one click.","placement":"unplaced","state":"in-new-done-live"},
|
|
4613
4613
|
{"key":"L0026","section":"Your steps — the parts only you can play","text":"Prefer to create an OAuth app by hand?","placement":"unplaced","state":"in-new-done-live"},
|
|
@@ -4616,12 +4616,12 @@
|
|
|
4616
4616
|
{"key":"L0029","section":"Your steps — the parts only you can play","text":"Continue","placement":"unplaced","state":"in-new-done-live"},
|
|
4617
4617
|
{"key":"L0030","section":"Your steps — the parts only you can play","text":"Add or remove modules later in","placement":"unplaced","state":"in-new-done-live"},
|
|
4618
4618
|
{"key":"L0031","section":"Your steps — the parts only you can play","text":"the project’s settings","placement":"unplaced","state":"in-new-done-live"},
|
|
4619
|
-
{"key":"L0032","section":"Your steps — the parts only you can play","text":"These steps are the same however a project is created.","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
4619
|
+
{"key":"L0032","section":"Your steps — the parts only you can play","text":"These steps are the same however a project is created.","placement":"placed","file":"modules/public-landing/public/projects.html","line":2069,"string_id":"c33b28f6f397","state":"in-new-done-live"},
|
|
4620
4620
|
{"key":"L0033","section":"Your steps — the parts only you can play","text":"Start another project","placement":"unplaced","state":"in-new-done-live"},
|
|
4621
|
-
{"key":"L0034","section":"footer","text":"A non-profit, capture-resistant commons.","placement":"shared","file":"modules/public-landing/public/projects.html","line":
|
|
4622
|
-
{"key":"L0035","section":"footer","text":"Built by agents, on","placement":"shared","file":"modules/public-landing/public/projects.html","line":
|
|
4621
|
+
{"key":"L0034","section":"footer","text":"A non-profit, capture-resistant commons.","placement":"shared","file":"modules/public-landing/public/projects.html","line":2085,"string_id":"afe83bbbd0d4","state":"in-new-done-live","occurrences":18},
|
|
4622
|
+
{"key":"L0035","section":"footer","text":"Built by agents, on","placement":"shared","file":"modules/public-landing/public/projects.html","line":2085,"string_id":"ee7d8b276a29","state":"in-new-done-live","occurrences":18},
|
|
4623
4623
|
{"key":"L0036","section":"footer","text":"Cloud Bongos","placement":"shared","file":"modules/public-landing/public/projects.html","line":748,"string_id":"eeda19200aeb","state":"in-new-done-live","occurrences":18},
|
|
4624
|
-
{"key":"L0037","section":"footer","text":"Open source","placement":"shared","file":"modules/public-landing/public/projects.html","line":
|
|
4624
|
+
{"key":"L0037","section":"footer","text":"Open source","placement":"shared","file":"modules/public-landing/public/projects.html","line":2085,"string_id":"d6314ddcc1d0","state":"in-new-done-live","occurrences":18},
|
|
4625
4625
|
{"key":"L0038","section":"footer","text":"AGPL-3.0","placement":"shared","state":"in-new-done-live","occurrences":18},
|
|
4626
4626
|
{"key":"L0039","section":"navigation","text":"About","placement":"shared","state":"in-new-done-live","occurrences":18},
|
|
4627
4627
|
{"key":"L0040","section":"navigation","text":"Docs","placement":"shared","state":"in-new-done-live","occurrences":18},
|
|
@@ -4636,7 +4636,7 @@
|
|
|
4636
4636
|
{"key":"L0049","section":"Setting up Mercury","text":"your projects page","placement":"unplaced","state":"in-new-done"},
|
|
4637
4637
|
{"key":"L0050","section":"Setting up Mercury","text":"Raising the server, database, and address — nothing needed from you.","placement":"unplaced","state":"in-new-done"},
|
|
4638
4638
|
{"key":"L0051","section":"Setting up Mercury","text":"Jump","placement":"unplaced","state":"in-new-done"},
|
|
4639
|
-
{"key":"L0052","section":"Setting up Mercury","text":"Arrows or A and D steer, space jumps.","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
4639
|
+
{"key":"L0052","section":"Setting up Mercury","text":"Arrows or A and D steer, space jumps.","placement":"placed","file":"modules/public-landing/public/projects.html","line":2031,"string_id":"23d29225956a","state":"in-new-done"},
|
|
4640
4640
|
{"key":"L0053","section":"Setting up Mercury","text":"Best: 0 of 3 projects","placement":"unplaced","state":"in-new-done"},
|
|
4641
4641
|
{"key":"L0054","section":"page top","text":"New {…}","placement":"unplaced","state":"in-new-demo-what"},
|
|
4642
4642
|
{"key":"L0055","section":"page top","text":"← Your projects","placement":"placed","file":"modules/public-landing/public/projects.html","line":1042,"string_id":"b675934f9d39","state":"in-manage"},
|
|
@@ -4987,8 +4987,8 @@
|
|
|
4987
4987
|
{"key":"L0400","section":"page top","text":"Cloud Bongos","placement":"placed","file":"modules/public-landing/public/projects.html","line":748,"string_id":"eeda19200aeb"},
|
|
4988
4988
|
{"key":"L0401","section":"page top","text":"this platform","placement":"placed","file":"modules/public-landing/public/projects.html","line":851,"string_id":"b2d6dad7c766"},
|
|
4989
4989
|
{"key":"L0402","section":"page top","text":"← Back","placement":"placed","file":"modules/public-landing/public/projects.html","line":1456,"string_id":"5df2baabf82e","state":"in-new-fork-demo"},
|
|
4990
|
-
{"key":"L0403","section":"Give it a look.","text":"Give it a look.","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
4991
|
-
{"key":"L0404","section":"Give it a look.","text":"So builders always know which project they’re in.","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
4990
|
+
{"key":"L0403","section":"Give it a look.","text":"Give it a look.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1992,"string_id":"f6e9a4d6fc76","state":"in-new-look"},
|
|
4991
|
+
{"key":"L0404","section":"Give it a look.","text":"So builders always know which project they’re in.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1993,"string_id":"84d900949f32","state":"in-new-look"},
|
|
4992
4992
|
{"key":"L0405","section":"Give it a look.","text":"Pick a look","placement":"unplaced","state":"in-new-look"},
|
|
4993
4993
|
{"key":"L0406","section":"Give it a look.","text":"The chrome world","placement":"unplaced","state":"in-new-look"},
|
|
4994
4994
|
{"key":"L0407","section":"Give it a look.","text":"Salmon on pale grey. The platform’s own look.","placement":"unplaced","state":"in-new-look"},
|
|
@@ -5012,8 +5012,8 @@
|
|
|
5012
5012
|
{"key":"L0425","section":"Give it a look.","text":"Light mode","placement":"unplaced","state":"in-new-look"},
|
|
5013
5013
|
{"key":"L0426","section":"Give it a look.","text":"Dark mode","placement":"unplaced","state":"in-new-look"},
|
|
5014
5014
|
{"key":"L0427","section":"Give it a look.","text":"Mercury · Game · new repo · {…}.example.com","placement":"unplaced","state":"in-new-look"},
|
|
5015
|
-
{"key":"L0428","section":"Give it a look.","text":"Create my project","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
5016
|
-
{"key":"L0429","section":"Give it a look.","text":"Right after, you’ll get the few steps only you can do.","placement":"placed","file":"modules/public-landing/public/projects.html","line":
|
|
5015
|
+
{"key":"L0428","section":"Give it a look.","text":"Create my project","placement":"placed","file":"modules/public-landing/public/projects.html","line":1999,"string_id":"330038e92a44","state":"in-new-look"},
|
|
5016
|
+
{"key":"L0429","section":"Give it a look.","text":"Right after, you’ll get the few steps only you can do.","placement":"placed","file":"modules/public-landing/public/projects.html","line":2001,"string_id":"f2527f43a06d","state":"in-new-look"},
|
|
5017
5017
|
{"key":"L0430","section":"A few quick checks.","text":"A few quick checks.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1590,"string_id":"63a164caa4aa","state":"in-new-checks"},
|
|
5018
5018
|
{"key":"L0431","section":"A few quick checks.","text":"These decide which legal and payout options we can offer.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1591,"string_id":"c51a588fd405","state":"in-new-checks"},
|
|
5019
5019
|
{"key":"L0432","section":"A few quick checks.","text":"Where are you?","placement":"placed","file":"modules/public-landing/public/projects.html","line":1596,"string_id":"022fd33fabed","state":"in-new-checks"},
|
|
@@ -5370,7 +5370,7 @@
|
|
|
5370
5370
|
{"key":"L0783","section":"Check what we set up.","text":"Search your repos…","placement":"placed","file":"modules/public-landing/public/projects.html","line":1718,"string_id":"3a0ba637acad","attr":"placeholder","state":"in-new-review-code"},
|
|
5371
5371
|
{"key":"L0784","section":"Check what we set up.","text":"No repositories match “”.","placement":"unplaced","state":"in-new-review-code"},
|
|
5372
5372
|
{"key":"L0785","section":"Check what we set up.","text":"We never change it: public stays public, private stays private.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1722,"string_id":"94af1e958179","state":"in-new-review-code"},
|
|
5373
|
-
{"key":"L0786","section":"Check what we set up.","text":"Edit","placement":"unplaced","state":"in-new-demo-review-address","occurrences":
|
|
5373
|
+
{"key":"L0786","section":"Check what we set up.","text":"Edit","placement":"unplaced","state":"in-new-demo-review-address","occurrences":7},
|
|
5374
5374
|
{"key":"L0787","section":"Check what we set up.","text":"Address","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5375
5375
|
{"key":"L0788","section":"Check what we set up.","text":"{…}.example.com","placement":"unplaced","state":"in-new-review-confirmed"},
|
|
5376
5376
|
{"key":"L0789","section":"Check what we set up.","text":"Your own domain. Your projects page walks you through pointing it here.","placement":"unplaced","state":"in-new-review-confirmed"},
|
|
@@ -5401,101 +5401,109 @@
|
|
|
5401
5401
|
{"key":"L0814","section":"Check what we set up.","text":"Search extras…","placement":"placed","file":"modules/public-landing/public/projects.html","line":1857,"string_id":"74f80d9e1abc","attr":"placeholder","state":"in-new-review-extras"},
|
|
5402
5402
|
{"key":"L0815","section":"Check what we set up.","text":"Every project also has the same 18 core parts, always on: the platform, its work tracking and the builders’ hall.","placement":"unplaced","state":"in-new-review-extras"},
|
|
5403
5403
|
{"key":"L0816","section":"Check what we set up.","text":"Team size","placement":"placed","file":"modules/public-landing/public/projects.html","line":1872,"string_id":"2542cdb8ca69","state":"in-new-demo-review-address"},
|
|
5404
|
-
{"key":"L0817","section":"Check what we set up.","text":"
|
|
5405
|
-
{"key":"L0818","section":"Check what we set up.","text":"
|
|
5406
|
-
{"key":"L0819","section":"Check what we set up.","text":"
|
|
5407
|
-
{"key":"L0820","section":"Check what we set up.","text":"
|
|
5408
|
-
{"key":"L0821","section":"Check what we set up.","text":"
|
|
5409
|
-
{"key":"L0822","section":"Check what we set up.","text":"We
|
|
5410
|
-
{"key":"L0823","section":"Check what we set up.","text":"
|
|
5411
|
-
{"key":"L0824","section":"Check what we set up.","text":"
|
|
5412
|
-
{"key":"L0825","section":"Check what we set up.","text":"
|
|
5413
|
-
{"key":"L0826","section":"Check what we set up.","text":"
|
|
5414
|
-
{"key":"L0827","section":"Check what we set up.","text":"
|
|
5415
|
-
{"key":"L0828","section":"Check what we set up.","text":"
|
|
5416
|
-
{"key":"L0829","section":"Check what we set up.","text":"
|
|
5417
|
-
{"key":"L0830","section":"Check what we set up.","text":"
|
|
5418
|
-
{"key":"L0831","section":"Check what we set up.","text":"
|
|
5419
|
-
{"key":"L0832","section":"Check what we set up.","text":"
|
|
5420
|
-
{"key":"L0833","section":"Check what we set up.","text":"
|
|
5421
|
-
{"key":"L0834","section":"Check what we set up.","text":"
|
|
5422
|
-
{"key":"L0835","section":"Check what we set up.","text":"
|
|
5423
|
-
{"key":"L0836","section":"Check what we set up.","text":"
|
|
5424
|
-
{"key":"L0837","section":"Check what we set up.","text":"
|
|
5425
|
-
{"key":"L0838","section":"Check what we set up.","text":"
|
|
5426
|
-
{"key":"L0839","section":"Check what we set up.","text":"
|
|
5427
|
-
{"key":"L0840","section":"Check what we set up.","text":"
|
|
5428
|
-
{"key":"L0841","section":"Check what we set up.","text":"
|
|
5429
|
-
{"key":"L0842","section":"Check what we set up.","text":"Hosting","placement":"unplaced","state":"in-new-review-run"},
|
|
5430
|
-
{"key":"L0843","section":"Check what we set up.","text":"
|
|
5431
|
-
{"key":"L0844","section":"Check what we set up.","text":"
|
|
5432
|
-
{"key":"L0845","section":"Check what we set up.","text":"
|
|
5433
|
-
{"key":"L0846","section":"Check what we set up.","text":"
|
|
5434
|
-
{"key":"L0847","section":"Check what we set up.","text":"
|
|
5435
|
-
{"key":"L0848","section":"Check what we set up.","text":"
|
|
5436
|
-
{"key":"L0849","section":"Check what we set up.","text":"
|
|
5437
|
-
{"key":"L0850","section":"Check what we set up.","text":"
|
|
5438
|
-
{"key":"L0851","section":"Check what we set up.","text":"
|
|
5439
|
-
{"key":"L0852","section":"Check what we set up.","text":"
|
|
5440
|
-
{"key":"L0853","section":"Check what we set up.","text":"
|
|
5441
|
-
{"key":"L0854","section":"Check what we set up.","text":"
|
|
5442
|
-
{"key":"L0855","section":"
|
|
5443
|
-
{"key":"L0856","section":"
|
|
5444
|
-
{"key":"L0857","section":"
|
|
5445
|
-
{"key":"L0858","section":"
|
|
5446
|
-
{"key":"L0859","section":"
|
|
5447
|
-
{"key":"L0860","section":"
|
|
5448
|
-
{"key":"L0861","section":"
|
|
5449
|
-
{"key":"L0862","section":"
|
|
5450
|
-
{"key":"L0863","section":"What are you making?{…}","text":"
|
|
5451
|
-
{"key":"L0864","section":"What are you making?{…}","text":"
|
|
5452
|
-
{"key":"L0865","section":"What are you making?{…}","text":"
|
|
5453
|
-
{"key":"L0866","section":"What are you making?{…}","text":"
|
|
5454
|
-
{"key":"L0867","section":"What are you making?{…}","text":"
|
|
5455
|
-
{"key":"L0868","section":"What are you making?{…}","text":"
|
|
5456
|
-
{"key":"L0869","section":"
|
|
5457
|
-
{"key":"L0870","section":"
|
|
5458
|
-
{"key":"L0871","section":"
|
|
5459
|
-
{"key":"L0872","section":"
|
|
5460
|
-
{"key":"L0873","section":"
|
|
5461
|
-
{"key":"L0874","section":"
|
|
5462
|
-
{"key":"L0875","section":"
|
|
5463
|
-
{"key":"L0876","section":"
|
|
5464
|
-
{"key":"L0877","section":"Try a demo.","text":"
|
|
5465
|
-
{"key":"L0878","section":"Try a demo.","text":"
|
|
5466
|
-
{"key":"L0879","section":"Try a demo.","text":"
|
|
5467
|
-
{"key":"L0880","section":"Try a demo.","text":"
|
|
5468
|
-
{"key":"L0881","section":"Try a demo.","text":"
|
|
5469
|
-
{"key":"L0882","section":"
|
|
5470
|
-
{"key":"L0883","section":"
|
|
5471
|
-
{"key":"L0884","section":"
|
|
5472
|
-
{"key":"L0885","section":"
|
|
5473
|
-
{"key":"L0886","section":"
|
|
5474
|
-
{"key":"L0887","section":"
|
|
5475
|
-
{"key":"L0888","section":"
|
|
5476
|
-
{"key":"L0889","section":"
|
|
5477
|
-
{"key":"L0890","section":"page top","text":"
|
|
5478
|
-
{"key":"L0891","section":"page top","text":"
|
|
5479
|
-
{"key":"L0892","section":"page top","text":"
|
|
5480
|
-
{"key":"L0893","section":"page top","text":"
|
|
5481
|
-
{"key":"L0894","section":"
|
|
5482
|
-
{"key":"L0895","section":"
|
|
5483
|
-
{"key":"L0896","section":"
|
|
5484
|
-
{"key":"L0897","section":"
|
|
5485
|
-
{"key":"L0898","section":"page top","text":"
|
|
5486
|
-
{"key":"L0899","section":"page top","text":"
|
|
5487
|
-
{"key":"L0900","section":"
|
|
5488
|
-
{"key":"L0901","section":"
|
|
5489
|
-
{"key":"L0902","section":"
|
|
5490
|
-
{"key":"L0903","section":"
|
|
5491
|
-
{"key":"L0904","section":"
|
|
5492
|
-
{"key":"L0905","section":"
|
|
5493
|
-
{"key":"L0906","section":"
|
|
5494
|
-
{"key":"L0907","section":"
|
|
5495
|
-
{"key":"L0908","section":"
|
|
5496
|
-
{"key":"L0909","section":"
|
|
5497
|
-
{"key":"L0910","section":"
|
|
5498
|
-
{"key":"L0911","section":"
|
|
5404
|
+
{"key":"L0817","section":"Check what we set up.","text":"3 people","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5405
|
+
{"key":"L0818","section":"Check what we set up.","text":"4 hours each. When the time box runs out, we ask if you want to keep it.","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5406
|
+
{"key":"L0819","section":"Check what we set up.","text":"Rewards","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5407
|
+
{"key":"L0820","section":"Check what we set up.","text":"None","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5408
|
+
{"key":"L0821","section":"Check what we set up.","text":"It’s a {…}, for learning.","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5409
|
+
{"key":"L0822","section":"Check what we set up.","text":"We run","placement":"placed","file":"modules/public-landing/public/projects.html","line":1923,"string_id":"f533b87cea7a","state":"in-new-demo-review-address"},
|
|
5410
|
+
{"key":"L0823","section":"Check what we set up.","text":"Everything, for you","placement":"placed","file":"modules/public-landing/public/projects.html","line":1927,"string_id":"654dfc6855b5","state":"in-new-demo-review-address"},
|
|
5411
|
+
{"key":"L0824","section":"Check what we set up.","text":"A {…} is all managed and {…} to your team.","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5412
|
+
{"key":"L0825","section":"Check what we set up.","text":"Shipping","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5413
|
+
{"key":"L0826","section":"Check what we set up.","text":"Auto (recommended)","placement":"placed","file":"modules/public-landing/public/projects.html","line":1965,"string_id":"caf18d1a2b8e","state":"in-new-demo-review-address"},
|
|
5414
|
+
{"key":"L0827","section":"Check what we set up.","text":"The AI ships finished work on its own. You can change this later in your project’s settings.","placement":"unplaced","state":"in-new-demo-review-address"},
|
|
5415
|
+
{"key":"L0828","section":"Check what we set up.","text":"2 people now","placement":"unplaced","state":"in-new-review-team"},
|
|
5416
|
+
{"key":"L0829","section":"Check what we set up.","text":"About 5 by month three · people you invite.","placement":"unplaced","state":"in-new-review-team"},
|
|
5417
|
+
{"key":"L0830","section":"Check what we set up.","text":"One person","placement":"placed","file":"modules/public-landing/public/projects.html","line":1876,"string_id":"3d085c437cdd","state":"in-new-review"},
|
|
5418
|
+
{"key":"L0831","section":"Check what we set up.","text":"A team","placement":"placed","file":"modules/public-landing/public/projects.html","line":1877,"string_id":"3cc8f26a3e24","state":"in-new-review-team"},
|
|
5419
|
+
{"key":"L0832","section":"Check what we set up.","text":"People at the start, you included","placement":"placed","file":"modules/public-landing/public/projects.html","line":1880,"string_id":"088f9d52d056","state":"in-new-review-team"},
|
|
5420
|
+
{"key":"L0833","section":"Check what we set up.","text":"We guess about 5 people by month three. Adjust it if you know better.","placement":"unplaced","state":"in-new-review-team"},
|
|
5421
|
+
{"key":"L0834","section":"Check what we set up.","text":"Adjust month three","placement":"placed","file":"modules/public-landing/public/projects.html","line":1888,"string_id":"c684f20e82de","state":"in-new-review-team"},
|
|
5422
|
+
{"key":"L0835","section":"Check what we set up.","text":"Who can join?","placement":"placed","file":"modules/public-landing/public/projects.html","line":1891,"string_id":"66c9b4b830ff","state":"in-new-review-team"},
|
|
5423
|
+
{"key":"L0836","section":"Check what we set up.","text":"People I invite","placement":"placed","file":"modules/public-landing/public/projects.html","line":1893,"string_id":"22fb59ddffa5","state":"in-new-review-team"},
|
|
5424
|
+
{"key":"L0837","section":"Check what we set up.","text":"Anyone can apply","placement":"placed","file":"modules/public-landing/public/projects.html","line":1894,"string_id":"2bea869cf0f7","state":"in-new-review-team"},
|
|
5425
|
+
{"key":"L0838","section":"Check what we set up.","text":"Not decided yet","placement":"unplaced","state":"in-new-review-team"},
|
|
5426
|
+
{"key":"L0839","section":"Check what we set up.","text":"Intent only. You set the real terms later.","placement":"unplaced","state":"in-new-review-team"},
|
|
5427
|
+
{"key":"L0840","section":"Check what we set up.","text":"Just you.","placement":"unplaced","state":"in-new-review"},
|
|
5428
|
+
{"key":"L0841","section":"Check what we set up.","text":"Some of it","placement":"placed","file":"modules/public-landing/public/projects.html","line":1928,"string_id":"0d6142d47f8e","state":"in-new-review-run","occurrences":2},
|
|
5429
|
+
{"key":"L0842","section":"Check what we set up.","text":"Hosting, Starting module kit, Module marketplace: buy, Builder guild access","placement":"unplaced","state":"in-new-review-run"},
|
|
5430
|
+
{"key":"L0843","section":"Check what we set up.","text":"On my machines","placement":"placed","file":"modules/public-landing/public/projects.html","line":1929,"string_id":"accb3d6b7e10","state":"in-new-review-run"},
|
|
5431
|
+
{"key":"L0844","section":"Check what we set up.","text":"Free core only","placement":"placed","file":"modules/public-landing/public/projects.html","line":1930,"string_id":"1497b6e85da0","state":"in-new-review-run"},
|
|
5432
|
+
{"key":"L0845","section":"Check what we set up.","text":"Your hybrid suite","placement":"placed","file":"modules/public-landing/public/projects.html","line":1934,"string_id":"63535be9eb75","state":"in-new-review-run"},
|
|
5433
|
+
{"key":"L0846","section":"Check what we set up.","text":"Hosting","placement":"unplaced","state":"in-new-review-run"},
|
|
5434
|
+
{"key":"L0847","section":"Check what we set up.","text":"Labor payment and HR","placement":"placed","file":"modules/public-landing/public/projects.html","line":1937,"string_id":"65ec327451c0","state":"in-new-review-run"},
|
|
5435
|
+
{"key":"L0848","section":"Check what we set up.","text":"Starting module kit","placement":"placed","file":"modules/public-landing/public/projects.html","line":1938,"string_id":"a63316df318a","state":"in-new-review-run"},
|
|
5436
|
+
{"key":"L0849","section":"Check what we set up.","text":"Module marketplace: buy","placement":"placed","file":"modules/public-landing/public/projects.html","line":1939,"string_id":"34a7872cc0f6","state":"in-new-review-run"},
|
|
5437
|
+
{"key":"L0850","section":"Check what we set up.","text":"Module marketplace: sell","placement":"placed","file":"modules/public-landing/public/projects.html","line":1940,"string_id":"b34c8d4cc6d7","state":"in-new-review-run"},
|
|
5438
|
+
{"key":"L0851","section":"Check what we set up.","text":"Builder guild access","placement":"placed","file":"modules/public-landing/public/projects.html","line":1941,"string_id":"0379baef7921","state":"in-new-review-run"},
|
|
5439
|
+
{"key":"L0852","section":"Check what we set up.","text":"Create a builder guild","placement":"placed","file":"modules/public-landing/public/projects.html","line":1942,"string_id":"1a8c7472a7b0","state":"in-new-review-run"},
|
|
5440
|
+
{"key":"L0853","section":"Check what we set up.","text":"Company creation","placement":"placed","file":"modules/public-landing/public/projects.html","line":1943,"string_id":"f0bcc3a2ff77","state":"in-new-review-run"},
|
|
5441
|
+
{"key":"L0854","section":"Check what we set up.","text":"Expert consulting","placement":"placed","file":"modules/public-landing/public/projects.html","line":1944,"string_id":"70e3e447cf7c","state":"in-new-review-run"},
|
|
5442
|
+
{"key":"L0855","section":"Check what we set up.","text":"Public marketed project","placement":"placed","file":"modules/public-landing/public/projects.html","line":1945,"string_id":"392b3876e595","state":"in-new-review-run"},
|
|
5443
|
+
{"key":"L0856","section":"Check what we set up.","text":"Hosting, payouts and the {…} kit, managed.","placement":"unplaced","state":"in-new-review"},
|
|
5444
|
+
{"key":"L0857","section":"Check what we set up.","text":"Manual","placement":"unplaced","state":"in-new-review-ship","occurrences":2},
|
|
5445
|
+
{"key":"L0858","section":"Check what we set up.","text":"The AI waits for you to approve each ship. You can change this later in your project’s settings.","placement":"unplaced","state":"in-new-review-ship"},
|
|
5446
|
+
{"key":"L0859","section":"Check what we set up.","text":"When the AI finishes a task","placement":"placed","file":"modules/public-landing/public/projects.html","line":1962,"string_id":"61346f5e6ac1","state":"in-new-review-ship"},
|
|
5447
|
+
{"key":"L0860","section":"Check what we set up.","text":"The AI ships finished work on its own. You don’t run any commands.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1966,"string_id":"28be59585de3","state":"in-new-review-ship"},
|
|
5448
|
+
{"key":"L0861","section":"Check what we set up.","text":"The AI stops before each ship and waits for you to approve it.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1971,"string_id":"3813606fd319","state":"in-new-review-ship"},
|
|
5449
|
+
{"key":"L0862","section":"Check what we set up.","text":"Looks right, continue","placement":"placed","file":"modules/public-landing/public/projects.html","line":1982,"string_id":"2f400cf7bff0","state":"in-new-demo-review-address"},
|
|
5450
|
+
{"key":"L0863","section":"What are you making?{…}","text":"What are you making?","placement":"placed","file":"modules/public-landing/public/projects.html","line":1557,"string_id":"0de8e7d6db3a","state":"in-new-demo-what"},
|
|
5451
|
+
{"key":"L0864","section":"What are you making?{…}","text":"Name","placement":"unplaced","state":"in-new-demo-what"},
|
|
5452
|
+
{"key":"L0865","section":"What are you making?{…}","text":"Moonbase","placement":"unplaced","attr":"placeholder","state":"in-new-demo-what"},
|
|
5453
|
+
{"key":"L0866","section":"What are you making?{…}","text":"its handle on the platform:","placement":"unplaced","state":"in-new-name-prefilled"},
|
|
5454
|
+
{"key":"L0867","section":"What are you making?{…}","text":"Kind","placement":"unplaced","state":"in-new-demo-what"},
|
|
5455
|
+
{"key":"L0868","section":"What are you making?{…}","text":"Game","placement":"unplaced","state":"in-new-demo-what"},
|
|
5456
|
+
{"key":"L0869","section":"What are you making?{…}","text":"Research","placement":"unplaced","state":"in-new-demo-what"},
|
|
5457
|
+
{"key":"L0870","section":"What are you making?{…}","text":"Business","placement":"unplaced","state":"in-new-demo-what"},
|
|
5458
|
+
{"key":"L0871","section":"What are you making?{…}","text":"Non-profit","placement":"unplaced","state":"in-new-demo-what"},
|
|
5459
|
+
{"key":"L0872","section":"What are you making?{…}","text":"Not sure","placement":"placed","file":"modules/public-landing/public/projects.html","line":1569,"string_id":"1ad2e4e0a89e","state":"in-new-demo-what"},
|
|
5460
|
+
{"key":"L0873","section":"What are you making?{…}","text":"In a sentence","placement":"placed","file":"modules/public-landing/public/projects.html","line":1573,"string_id":"fa123fc3eda3","state":"in-new-demo-what"},
|
|
5461
|
+
{"key":"L0874","section":"What are you making?{…}","text":"(optional — puts it on the public map)","placement":"placed","file":"modules/public-landing/public/projects.html","line":1573,"string_id":"1e4a3b17c34d","state":"in-new-demo-what"},
|
|
5462
|
+
{"key":"L0875","section":"What are you making?{…}","text":"A co-op space game built by its players","placement":"placed","file":"modules/public-landing/public/projects.html","line":1574,"string_id":"9e63686515c4","attr":"placeholder","state":"in-new-demo-what"},
|
|
5463
|
+
{"key":"L0876","section":"What are you making?{…}","text":"Continue","placement":"unplaced","state":"in-new-demo-what"},
|
|
5464
|
+
{"key":"L0877","section":"Try a demo.","text":"Try a demo.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1515,"string_id":"64e08f62d974","state":"in-new-fork-demo"},
|
|
5465
|
+
{"key":"L0878","section":"Try a demo.","text":"A small, time-boxed project to learn by doing. You can keep it at the end.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1516,"string_id":"7307d49b93d0","state":"in-new-fork-demo"},
|
|
5466
|
+
{"key":"L0879","section":"Try a demo.","text":"People, you included","placement":"placed","file":"modules/public-landing/public/projects.html","line":1518,"string_id":"1aad9d74d45d","state":"in-new-fork-demo"},
|
|
5467
|
+
{"key":"L0880","section":"Try a demo.","text":"Hours each","placement":"placed","file":"modules/public-landing/public/projects.html","line":1525,"string_id":"980106c03cfe","state":"in-new-fork-demo"},
|
|
5468
|
+
{"key":"L0881","section":"Try a demo.","text":"Your idea","placement":"placed","file":"modules/public-landing/public/projects.html","line":1533,"string_id":"69d41637ccf0","state":"in-new-fork-demo"},
|
|
5469
|
+
{"key":"L0882","section":"Try a demo.","text":"A voting app for movie night","placement":"placed","file":"modules/public-landing/public/projects.html","line":1534,"string_id":"02951f951543","attr":"placeholder","state":"in-new-fork-demo"},
|
|
5470
|
+
{"key":"L0883","section":"Try a demo.","text":"3 people × 4 hours = 12 builder-hours.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1536,"string_id":"8525371bf56a","state":"in-new-fork-demo"},
|
|
5471
|
+
{"key":"L0884","section":"Try a demo.","text":"Enough for a small version. Trim it to one shared list, voting and a winner reveal; accounts and notifications will not fit.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1536,"string_id":"9150fa905ba4","state":"in-new-fork-demo"},
|
|
5472
|
+
{"key":"L0885","section":"Try a demo.","text":"Invite by GitHub handle","placement":"placed","file":"modules/public-landing/public/projects.html","line":1538,"string_id":"3f2e43c432aa","state":"in-new-fork-demo"},
|
|
5473
|
+
{"key":"L0886","section":"Try a demo.","text":"teammate’s handle","placement":"placed","file":"modules/public-landing/public/projects.html","line":1539,"string_id":"787275f310ed","attr":"placeholder","state":"in-new-fork-demo","occurrences":2},
|
|
5474
|
+
{"key":"L0887","section":"Try a demo.","text":"And one more","placement":"placed","file":"modules/public-landing/public/projects.html","line":1541,"string_id":"54bf9a39d47f","state":"in-new-fork-demo"},
|
|
5475
|
+
{"key":"L0888","section":"Try a demo.","text":"An unkept demo goes offline after 30 days. We warn you first, and it can come back.","placement":"placed","file":"modules/public-landing/public/projects.html","line":1545,"string_id":"a116d2432c29","state":"in-new-fork-demo"},
|
|
5476
|
+
{"key":"L0889","section":"Try a demo.","text":"Continue","placement":"unplaced","state":"in-new-fork-demo"},
|
|
5477
|
+
{"key":"L0890","section":"page top","text":"· checked just now","placement":"unplaced","state":"in-map"},
|
|
5478
|
+
{"key":"L0891","section":"page top","text":"you build here","placement":"unplaced","state":"in-map","occurrences":2},
|
|
5479
|
+
{"key":"L0892","section":"page top","text":"standing up","placement":"unplaced","state":"in-map"},
|
|
5480
|
+
{"key":"L0893","section":"page top","text":"unreachable","placement":"unplaced","state":"in-map"},
|
|
5481
|
+
{"key":"L0894","section":"page top","text":"· since {…}","placement":"unplaced","state":"in-map","occurrences":2},
|
|
5482
|
+
{"key":"L0895","section":"page top","text":"snagged","placement":"unplaced","state":"in-map"},
|
|
5483
|
+
{"key":"L0896","section":"page top","text":"drag","placement":"unplaced"},
|
|
5484
|
+
{"key":"L0897","section":"page top","text":"pan","placement":"unplaced"},
|
|
5485
|
+
{"key":"L0898","section":"page top","text":"scroll","placement":"unplaced"},
|
|
5486
|
+
{"key":"L0899","section":"page top","text":"zoom","placement":"unplaced"},
|
|
5487
|
+
{"key":"L0900","section":"page top","text":"click a project","placement":"placed","file":"modules/public-landing/public/projects.html","line":860,"string_id":"2735c2eb8bc6"},
|
|
5488
|
+
{"key":"L0901","section":"page top","text":"open it","placement":"placed","file":"modules/public-landing/public/projects.html","line":860,"string_id":"453a2469b584"},
|
|
5489
|
+
{"key":"L0902","section":"{…}","text":"Runs","placement":"unplaced","state":"card-floor","occurrences":3},
|
|
5490
|
+
{"key":"L0903","section":"{…}","text":"tidewater.cloudbongos.com","placement":"unplaced","state":"card-floor"},
|
|
5491
|
+
{"key":"L0904","section":"{…}","text":"Listed","placement":"unplaced","state":"card-floor","occurrences":3},
|
|
5492
|
+
{"key":"L0905","section":"{…}","text":"Apply to join","placement":"placed","file":"modules/public-landing/public/projects.html","line":1220,"string_id":"766def944c53","state":"card-floor"},
|
|
5493
|
+
{"key":"L0906","section":"page top","text":"builders","placement":"unplaced","state":"card"},
|
|
5494
|
+
{"key":"L0907","section":"page top","text":"shipped in 30 days","placement":"placed","file":"modules/public-landing/public/projects.html","line":937,"string_id":"75d4a6fa0422","state":"card"},
|
|
5495
|
+
{"key":"L0908","section":"Cloud Bongos","text":"Cloud Bongos","placement":"placed","file":"modules/public-landing/public/projects.html","line":748,"string_id":"eeda19200aeb","state":"card-self"},
|
|
5496
|
+
{"key":"L0909","section":"Cloud Bongos","text":"this platform","placement":"placed","file":"modules/public-landing/public/projects.html","line":851,"string_id":"b2d6dad7c766","state":"card-self"},
|
|
5497
|
+
{"key":"L0910","section":"Cloud Bongos","text":"yours","placement":"unplaced","state":"card-self"},
|
|
5498
|
+
{"key":"L0911","section":"Cloud Bongos","text":"Runs","placement":"unplaced","state":"card-self"},
|
|
5499
|
+
{"key":"L0912","section":"Cloud Bongos","text":"Home →","placement":"unplaced","state":"card-self"},
|
|
5500
|
+
{"key":"L0913","section":"Cloud Bongos","text":"Builders' hall","placement":"placed","file":"modules/public-landing/public/projects.html","line":899,"string_id":"90a128c97eae","state":"card-self"},
|
|
5501
|
+
{"key":"L0914","section":"{…}","text":"you build here","placement":"unplaced","state":"card-noart","occurrences":2},
|
|
5502
|
+
{"key":"L0915","section":"{…}","text":"{…}-circles.cloudbongos.com","placement":"unplaced","state":"card-noart"},
|
|
5503
|
+
{"key":"L0916","section":"{…}","text":"Type","placement":"unplaced","state":"card"},
|
|
5504
|
+
{"key":"L0917","section":"{…}","text":"Game","placement":"unplaced","state":"card"},
|
|
5505
|
+
{"key":"L0918","section":"{…}","text":"example.com","placement":"unplaced","state":"card"},
|
|
5506
|
+
{"key":"L0919","section":"{…}","text":"Builders' hall","placement":"placed","file":"modules/public-landing/public/projects.html","line":899,"string_id":"90a128c97eae","state":"card"}
|
|
5499
5507
|
]
|
|
5500
5508
|
},
|
|
5501
5509
|
{
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
// that came and went would leave a stale line behind.
|
|
22
22
|
|
|
23
23
|
const BIRTH_KEY = 'founding_birth';
|
|
24
|
+
// The wizard's ship-mode answer (task 1004629): auto | manual, stamped beside the birth on
|
|
25
|
+
// the row the create route just made. Reserved like the birth (out of SETTINGS_VOCAB): the
|
|
26
|
+
// instance's own project_settings['ship.mode'] is where the setting LIVES and where the
|
|
27
|
+
// owner changes it later; this is only what the project was born with.
|
|
28
|
+
const SHIP_MODE_KEY = 'ship_mode';
|
|
24
29
|
const ISO = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/;
|
|
25
30
|
|
|
26
31
|
const storedOf = (row) => (row && row.settings && typeof row.settings === 'object' && !Array.isArray(row.settings) ? row.settings : {});
|
|
@@ -43,11 +48,18 @@ function demoBox(row) {
|
|
|
43
48
|
return { people, hours_each: hours };
|
|
44
49
|
}
|
|
45
50
|
|
|
51
|
+
// The closed ship-mode list is the core's own (src/bongos/project-settings.js), never retyped here.
|
|
52
|
+
const parseShipMode = (raw) => require('../../src/module-api').projectSettings.parseShipMode(raw);
|
|
53
|
+
|
|
54
|
+
// bornShipMode(row) — PURE. The ship mode the wizard asked for, or '' for none (or junk).
|
|
55
|
+
const bornShipMode = (row) => parseShipMode(storedOf(row)[SHIP_MODE_KEY]).mode || '';
|
|
56
|
+
|
|
46
57
|
// The companion env (SETTINGS_COMPANION_ENV). src/branding.js maps them onto founding.*.
|
|
47
58
|
const BIRTH_COMPANION_ENV = Object.freeze({
|
|
48
59
|
FOUNDING_BIRTH: bornAt,
|
|
49
60
|
DEMO_PEOPLE: (row) => { const d = demoBox(row); return d ? String(d.people) : ''; },
|
|
50
61
|
DEMO_HOURS: (row) => { const d = demoBox(row); return d ? String(d.hours_each) : ''; },
|
|
62
|
+
SHIP_MODE: bornShipMode,
|
|
51
63
|
});
|
|
52
64
|
|
|
53
65
|
// stampBirth(db, instanceId, now) — the create route's one write, on the row it just
|
|
@@ -61,4 +73,19 @@ async function stampBirth(db, instanceId, now = new Date()) {
|
|
|
61
73
|
);
|
|
62
74
|
}
|
|
63
75
|
|
|
64
|
-
|
|
76
|
+
// stampShipMode(db, instanceId, raw) — the wizard's ship-mode answer, on the row the create
|
|
77
|
+
// route just made. An absent or unusable answer writes nothing, so the instance reads "never
|
|
78
|
+
// chosen" and asks at its first ship (task 1004630). Write-once, like the birth.
|
|
79
|
+
async function stampShipMode(db, instanceId, raw) {
|
|
80
|
+
const { mode } = parseShipMode(raw);
|
|
81
|
+
if (!mode) return false;
|
|
82
|
+
await db.query(
|
|
83
|
+
`UPDATE provisioning_instances
|
|
84
|
+
SET settings = COALESCE(settings, '{}'::jsonb) || jsonb_build_object($2::text, $3::text)
|
|
85
|
+
WHERE id = $1 AND NOT (COALESCE(settings, '{}'::jsonb) ? $2::text)`,
|
|
86
|
+
[instanceId, SHIP_MODE_KEY, mode],
|
|
87
|
+
);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
module.exports = { BIRTH_KEY, BIRTH_COMPANION_ENV, SHIP_MODE_KEY, stampBirth, stampShipMode };
|
|
@@ -359,7 +359,7 @@ module.exports = function provisioningRoutes() {
|
|
|
359
359
|
// exactly the set the panel preselected. An explicit [] is the different
|
|
360
360
|
// answer "none of them". maxItems is a sanity ceiling well above a catalog
|
|
361
361
|
// that is three modules wide today.
|
|
362
|
-
modules: { type: 'array', itemsType: 'string', maxItems: 50 }, terms_acknowledged: { type: 'boolean' }, demo: { type: 'object' }, // the wizard's terms tick (task 1004417, ../terms-ack.js); the demo route's { people, hours_each } (task 1004420, ../demo.js)
|
|
362
|
+
modules: { type: 'array', itemsType: 'string', maxItems: 50 }, terms_acknowledged: { type: 'boolean' }, demo: { type: 'object' }, ship_mode: { type: 'string', enum: ['auto', 'manual'] }, // the wizard's terms tick (task 1004417, ../terms-ack.js); the demo route's { people, hours_each } (task 1004420, ../demo.js)
|
|
363
363
|
})) return;
|
|
364
364
|
const body = req.body || {};
|
|
365
365
|
const detailFault = badProjectDetail(body.detail);
|
|
@@ -475,6 +475,8 @@ module.exports = function provisioningRoutes() {
|
|
|
475
475
|
// provision intent exists, so the runner's web.env already carries the marker and the demo's box.
|
|
476
476
|
// Best-effort: a project that misses its marker opens as an ordinary hall; the create still stands.
|
|
477
477
|
if (created) await birth.stampBirth(pool, instance.id).catch((err) => log.error('[provisioning] birth marker not stamped', err));
|
|
478
|
+
// The wizard's ship mode (task 1004629) rides beside it; a miss means the project asks at its first ship.
|
|
479
|
+
if (created) await birth.stampShipMode(pool, instance.id, body.ship_mode).catch((err) => log.error('[provisioning] ship mode not stamped', err));
|
|
478
480
|
const demoRow = created && demoAsk.demo ? await demo.startDemoProject(pool, provisioning, instance.id, demoAsk.demo) : null;
|
|
479
481
|
// Enqueue the provision intent (idempotent: an already-open intent is returned)
|
|
480
482
|
// — but ONLY when the instance actually needs standing up. Blindly enqueueing on
|