@bongos/core 1.24.15 → 1.24.17

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.
@@ -3286,5 +3286,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
3286
3286
  landed since 1.24.12 with no explicit bump. run 41085201279. (task 1002620)
3287
3287
  1.24.15 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3288
3288
  landed since 1.24.13 with no explicit bump. run 41110951037. (task 1002620)
3289
+ 1.24.16 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3290
+ landed since 1.24.15 with no explicit bump. run 41124515103. (task 1002620)
3291
+ 1.24.17 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
3292
+ landed since 1.24.16 with no explicit bump. run 41129472650. (task 1002620)
3289
3293
  ---------------------------------------------------------------------------
3290
3294
  ```
@@ -1214,6 +1214,7 @@
1214
1214
  "modules/hall-ui/public/settings.js",
1215
1215
  "modules/hall-ui/public/settings-sessions.js",
1216
1216
  "modules/hall-ui/public/settings-passkeys.js",
1217
+ "modules/hall-ui/public/settings-age.js",
1217
1218
  "modules/hall-ui/public/settings-ai-keys.js",
1218
1219
  "modules/hall-ui/public/settings-interaction.js",
1219
1220
  "modules/hall-ui/public/settings-specialities.js",
@@ -5,16 +5,16 @@
5
5
  "adr": "0341 D3",
6
6
  "reread": "node scripts/bongos/page-reader.js --stale",
7
7
  "how": ["Generated by node scripts/bongos/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":52,"lines":5602,"placed":1747,"shared":461,"unplaced":3394,"omitted_data":3766},
8
+ "counts": {"pages":52,"lines":5612,"placed":1753,"shared":461,"unplaced":3398,"omitted_data":3766},
9
9
  "pages": [
10
10
  {
11
11
  "id": "builders:ai-studio",
12
12
  "surface": "builders",
13
13
  "title": "Studio",
14
14
  "states_read": ["pick","describe","make","waiting","result","result-own","failed","balance","balance-all","out"],
15
- "files_hash": "b4dc755790ac158e",
16
- "reading_hash": "7fa800b814783e81",
17
- "counts": {"lines":102,"placed":40,"shared":8,"unplaced":54},
15
+ "files_hash": "48c0f2c2c104a63b",
16
+ "reading_hash": "475acccd2681bd7f",
17
+ "counts": {"lines":102,"placed":38,"shared":8,"unplaced":56},
18
18
  "omitted": {"data":15},
19
19
  "notes": [],
20
20
  "lines": [
@@ -84,9 +84,9 @@
84
84
  {"key":"L0064","section":"How do you want to pay?","text":"PDF","placement":"unplaced","state":"make"},
85
85
  {"key":"L0065","section":"How do you want to pay?","text":"“Turn the sketch into a finished hero picture for the landing pa…”","placement":"unplaced","state":"make"},
86
86
  {"key":"L0066","section":"How do you want to pay?","text":"change","placement":"unplaced","state":"make"},
87
- {"key":"L0067","section":"How do you want to pay?","text":"My own key","placement":"placed","file":"modules/hall-ui/public/ai-studio.js","line":334,"string_id":"b7d4eeb3f762","state":"make"},
88
- {"key":"L0068","section":"How do you want to pay?","text":"Free here. {…} bills you for it directly.","placement":"placed","file":"modules/hall-ui/public/ai-studio.js","line":334,"string_id":"e9a1af5dc515","state":"make"},
89
- {"key":"L0069","section":"How do you want to pay?","text":"{…} key ending {…}","placement":"placed","file":"modules/hall-ui/public/ai-studio.js","line":334,"string_id":"c80c3434ae36","state":"make"},
87
+ {"key":"L0067","section":"How do you want to pay?","text":"My own key","placement":"unplaced","state":"make"},
88
+ {"key":"L0068","section":"How do you want to pay?","text":"Free here. {…} bills you for it directly.","placement":"placed","file":"modules/hall-ui/public/ai-studio.js","line":336,"string_id":"e9a1af5dc515","state":"make"},
89
+ {"key":"L0069","section":"How do you want to pay?","text":"Gemini key ending {…}","placement":"unplaced","state":"make"},
90
90
  {"key":"L0070","section":"How do you want to pay?","text":"My balance","placement":"placed","file":"modules/hall-ui/public/ai-studio.js","line":340,"string_id":"39afdc03594a","state":"make"},
91
91
  {"key":"L0071","section":"How do you want to pay?","text":"Usually a few cents. Up to {…} is set aside, and the rest comes back.","placement":"placed","file":"modules/hall-ui/public/ai-studio.js","line":340,"string_id":"664555b65658","state":"make"},
92
92
  {"key":"L0072","section":"How do you want to pay?","text":"{…} left","placement":"placed","file":"modules/hall-ui/public/market-watch.js","line":73,"string_id":"92b79edf21f6","state":"make"},
@@ -2567,7 +2567,7 @@
2567
2567
  "surface": "builders",
2568
2568
  "title": "Profile",
2569
2569
  "states_read": ["own","works","activity","activity-artist","activity-ideator","other","artist","ideator","out"],
2570
- "files_hash": "d0dbd5199e3b7c44",
2570
+ "files_hash": "8deaaafe7f703b08",
2571
2571
  "reading_hash": "72033a3202ac4be5",
2572
2572
  "counts": {"lines":186,"placed":59,"shared":8,"unplaced":119},
2573
2573
  "omitted": {"data":204},
@@ -3342,9 +3342,9 @@
3342
3342
  "surface": "builders",
3343
3343
  "title": "Settings",
3344
3344
  "states_read": ["account","access","preferences","skills-walkthrough","offered-skills","install-reports","sound","update"],
3345
- "files_hash": "d33af54420ade24e",
3346
- "reading_hash": "1e9791e30dcee0ce",
3347
- "counts": {"lines":186,"placed":124,"shared":8,"unplaced":54},
3345
+ "files_hash": "68a4ace3fa14fe15",
3346
+ "reading_hash": "1e05223eb33cfb07",
3347
+ "counts": {"lines":196,"placed":132,"shared":8,"unplaced":56},
3348
3348
  "omitted": {"data":71},
3349
3349
  "notes": ["skills-walkthrough: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood","offered-skills: an action failed (page.click: Timeout 6000ms exceeded.); read as it stood"],
3350
3350
  "lines": [
@@ -3359,9 +3359,9 @@
3359
3359
  {"key":"L0009","section":"page top","text":"Access & keys","placement":"unplaced"},
3360
3360
  {"key":"L0010","section":"page top","text":"Preferences","placement":"unplaced"},
3361
3361
  {"key":"L0011","section":"page top","text":"Sound","placement":"unplaced"},
3362
- {"key":"L0012","section":"page top","text":"Software update","placement":"placed","file":"modules/hall-ui/public/settings.html","line":457,"string_id":"207af7ce6828"},
3363
- {"key":"L0013","section":"Software update","text":"Software update","placement":"placed","file":"modules/hall-ui/public/settings.html","line":457,"string_id":"207af7ce6828","state":"update"},
3364
- {"key":"L0014","section":"Software update","text":"Which version of Cloud Bongos this project runs, whether a newer one is ready for it, and what each newer version brings.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":458,"string_id":"68da8cb13058","state":"update"},
3362
+ {"key":"L0012","section":"page top","text":"Software update","placement":"placed","file":"modules/hall-ui/public/settings.html","line":482,"string_id":"207af7ce6828"},
3363
+ {"key":"L0013","section":"Software update","text":"Software update","placement":"placed","file":"modules/hall-ui/public/settings.html","line":482,"string_id":"207af7ce6828","state":"update"},
3364
+ {"key":"L0014","section":"Software update","text":"Which version of Cloud Bongos this project runs, whether a newer one is ready for it, and what each newer version brings.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":483,"string_id":"68da8cb13058","state":"update"},
3365
3365
  {"key":"L0015","section":"Software update","text":"This project runs","placement":"unplaced","state":"update"},
3366
3366
  {"key":"L0016","section":"Software update","text":"Newest for this project","placement":"unplaced","state":"update"},
3367
3367
  {"key":"L0017","section":"Software update","text":"— published 21 hours ago","placement":"unplaced","state":"update"},
@@ -3378,29 +3378,29 @@
3378
3378
  {"key":"L0028","section":"footer","text":"Sign out","placement":"shared","file":"modules/hall-ui/public/shell.js","line":520,"string_id":"1883ad7f07fc","state":"update","occurrences":5},
3379
3379
  {"key":"L0029","section":"What's new in these 7 versions","text":"Could not load your security cards: {…}","placement":"placed","file":"modules/hall-ui/public/settings-passkeys.js","line":108,"string_id":"9e77d71db3ec","state":"update"},
3380
3380
  {"key":"L0030","section":"What's new in these 7 versions","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":670,"string_id":"fd1903586e8e","state":"update"},
3381
- {"key":"L0031","section":"Skill voices","text":"Skill voices","placement":"placed","file":"modules/hall-ui/public/settings.html","line":388,"string_id":"ecc12c1dd4de","state":"sound"},
3382
- {"key":"L0032","section":"Skill voices","text":"Each slash-command can run on a different model. The system has a default for every skill; choose another to override it, or leave it on Default.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":389,"string_id":"7f1b1c32d360","state":"sound"},
3381
+ {"key":"L0031","section":"Skill voices","text":"Skill voices","placement":"placed","file":"modules/hall-ui/public/settings.html","line":413,"string_id":"ecc12c1dd4de","state":"sound"},
3382
+ {"key":"L0032","section":"Skill voices","text":"Each slash-command can run on a different model. The system has a default for every skill; choose another to override it, or leave it on Default.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":414,"string_id":"7f1b1c32d360","state":"sound"},
3383
3383
  {"key":"L0033","section":"Skill voices","text":"Skill","placement":"placed","file":"modules/hall-ui/public/settings-specialities.js","line":130,"string_id":"4b0ca7d7171f","state":"sound"},
3384
3384
  {"key":"L0034","section":"Skill voices","text":"Default","placement":"unplaced","state":"sound"},
3385
- {"key":"L0035","section":"Skill voices","text":"Your choice","placement":"placed","file":"modules/hall-ui/public/settings.html","line":397,"string_id":"f96bc227dba0","state":"sound"},
3385
+ {"key":"L0035","section":"Skill voices","text":"Your choice","placement":"placed","file":"modules/hall-ui/public/settings.html","line":422,"string_id":"f96bc227dba0","state":"sound"},
3386
3386
  {"key":"L0036","section":"Skill voices","text":"no LLM","placement":"unplaced","state":"sound","occurrences":22},
3387
3387
  {"key":"L0037","section":"Skill voices","text":"Default ({…})","placement":"placed","file":"modules/hall-ui/public/settings.js","line":63,"string_id":"7c6891813679","state":"sound","occurrences":16},
3388
3388
  {"key":"L0038","section":"Skill voices","text":"Opus","placement":"unplaced","state":"sound","occurrences":21},
3389
3389
  {"key":"L0039","section":"Skill voices","text":"Sonnet","placement":"unplaced","state":"sound","occurrences":21},
3390
3390
  {"key":"L0040","section":"Skill voices","text":"Haiku","placement":"unplaced","state":"sound","occurrences":16},
3391
- {"key":"L0041","section":"Skill voices","text":"Changes save the moment you pick. “Default” clears your override and falls back to the system's choice.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":403,"string_id":"cab7a9526ca1","state":"sound"},
3391
+ {"key":"L0041","section":"Skill voices","text":"Changes save the moment you pick. “Default” clears your override and falls back to the system's choice.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":428,"string_id":"cab7a9526ca1","state":"sound"},
3392
3392
  {"key":"L0042","section":"Sounds","text":"Sounds","placement":"unplaced","state":"sound"},
3393
- {"key":"L0043","section":"Sounds","text":"Sounds are switched off for now. Nothing plays when a task ships, when {{currency}} arrive, or when Claude finishes or needs you.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":410,"string_id":"490f4bbbc75b","state":"sound"},
3393
+ {"key":"L0043","section":"Sounds","text":"Sounds are switched off for now. Nothing plays when a task ships, when {{currency}} arrive, or when Claude finishes or needs you.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":435,"string_id":"490f4bbbc75b","state":"sound"},
3394
3394
  {"key":"L0044","section":"Sounds","text":"Could not load your security cards: {…}","placement":"placed","file":"modules/hall-ui/public/settings-passkeys.js","line":108,"string_id":"9e77d71db3ec","state":"sound"},
3395
3395
  {"key":"L0045","section":"Sounds","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":670,"string_id":"fd1903586e8e","state":"sound"},
3396
- {"key":"L0046","section":"How Claude talks to you","text":"How Claude talks to you","placement":"placed","file":"modules/hall-ui/public/settings.html","line":251,"string_id":"0469a83cf1e8","state":"preferences"},
3397
- {"key":"L0047","section":"How Claude talks to you","text":"How replies are pitched for you — the vocabulary assumed, how much hand-holding local tooling gets, how long an answer runs, and how much of the work behind it is narrated. These reach every session you start. The defaults assume no software-engineering background; change any of them and the rest stay as they are.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":252,"string_id":"63dbe9873b4e","state":"preferences"},
3396
+ {"key":"L0046","section":"How Claude talks to you","text":"How Claude talks to you","placement":"placed","file":"modules/hall-ui/public/settings.html","line":276,"string_id":"0469a83cf1e8","state":"preferences"},
3397
+ {"key":"L0047","section":"How Claude talks to you","text":"How replies are pitched for you — the vocabulary assumed, how much hand-holding local tooling gets, how long an answer runs, and how much of the work behind it is narrated. These reach every session you start. The defaults assume no software-engineering background; change any of them and the rest stay as they are.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":277,"string_id":"63dbe9873b4e","state":"preferences"},
3398
3398
  {"key":"L0048","section":"How Claude talks to you","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"preferences"},
3399
- {"key":"L0049","section":"Your specialities","text":"Your specialities","placement":"placed","file":"modules/hall-ui/public/settings.html","line":270,"string_id":"dd419ffd76f0","state":"preferences"},
3400
- {"key":"L0050","section":"Your specialities","text":"A role says how you work. A speciality says what you work on — and how you, as someone who knows the subject, want to be engaged inside it. Whichever one you are using reaches every session where you hold a claim in that role. Train it by adding things you have written; it also picks things up on its own as you work.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":271,"string_id":"244ea2a3564e","state":"preferences"},
3401
- {"key":"L0051","section":"Your specialities","text":"Markets, incentives, and how to price them.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":299,"string_id":"8bdec961e84a","state":"preferences"},
3399
+ {"key":"L0049","section":"Your specialities","text":"Your specialities","placement":"placed","file":"modules/hall-ui/public/settings.html","line":295,"string_id":"dd419ffd76f0","state":"preferences"},
3400
+ {"key":"L0050","section":"Your specialities","text":"A role says how you work. A speciality says what you work on — and how you, as someone who knows the subject, want to be engaged inside it. Whichever one you are using reaches every session where you hold a claim in that role. Train it by adding things you have written; it also picks things up on its own as you work.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":296,"string_id":"244ea2a3564e","state":"preferences"},
3401
+ {"key":"L0051","section":"Your specialities","text":"Markets, incentives, and how to price them.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":324,"string_id":"8bdec961e84a","state":"preferences"},
3402
3402
  {"key":"L0052","section":"Your specialities","text":"What this adds to your {…} — written by someone else","placement":"unplaced","state":"preferences"},
3403
- {"key":"L0053","section":"Your specialities","text":"Argue from mechanism, not vibes. Always name the assumption a number rests on.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":303,"string_id":"d9dd46194f35","state":"preferences"},
3403
+ {"key":"L0053","section":"Your specialities","text":"Argue from mechanism, not vibes. Always name the assumption a number rests on.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":328,"string_id":"d9dd46194f35","state":"preferences"},
3404
3404
  {"key":"L0054","section":"Your specialities","text":"You {…}.","placement":"placed","file":"modules/hall-ui/public/board-room.js","line":471,"string_id":"819dfb951611","state":"preferences"},
3405
3405
  {"key":"L0055","section":"Your specialities","text":"Trained on","placement":"placed","file":"modules/hall-ui/public/settings-specialities.js","line":322,"string_id":"becc35640e42","state":"preferences","occurrences":2},
3406
3406
  {"key":"L0056","section":"Your specialities","text":"document{…} you added · learned","placement":"placed","file":"modules/hall-ui/public/settings-specialities.js","line":322,"string_id":"a3fd52d9513b","state":"preferences","occurrences":2},
@@ -3411,87 +3411,87 @@
3411
3411
  {"key":"L0061","section":"Your specialities","text":"things from your {…} · shared with: Only you · offers","placement":"unplaced","state":"preferences"},
3412
3412
  {"key":"L0062","section":"Your specialities","text":"Train","placement":"unplaced","state":"preferences"},
3413
3413
  {"key":"L0063","section":"Your specialities","text":"Offered skills","placement":"unplaced","state":"preferences"},
3414
- {"key":"L0064","section":"Create one","text":"Create one","placement":"placed","file":"modules/hall-ui/public/settings.html","line":282,"string_id":"20459b66303a","state":"preferences"},
3414
+ {"key":"L0064","section":"Create one","text":"Create one","placement":"placed","file":"modules/hall-ui/public/settings.html","line":307,"string_id":"20459b66303a","state":"preferences"},
3415
3415
  {"key":"L0065","section":"Create one","text":"Name","placement":"unplaced","state":"preferences"},
3416
- {"key":"L0066","section":"Create one","text":"Role it sits under","placement":"placed","file":"modules/hall-ui/public/settings.html","line":288,"string_id":"12af2af5acf2","state":"preferences"},
3417
- {"key":"L0067","section":"Create one","text":"Pick one…","placement":"placed","file":"modules/hall-ui/public/settings.html","line":290,"string_id":"45378ea261f6","state":"preferences"},
3416
+ {"key":"L0066","section":"Create one","text":"Role it sits under","placement":"placed","file":"modules/hall-ui/public/settings.html","line":313,"string_id":"12af2af5acf2","state":"preferences"},
3417
+ {"key":"L0067","section":"Create one","text":"Pick one…","placement":"placed","file":"modules/hall-ui/public/settings.html","line":315,"string_id":"45378ea261f6","state":"preferences"},
3418
3418
  {"key":"L0068","section":"Create one","text":"Ideator","placement":"unplaced","state":"preferences"},
3419
3419
  {"key":"L0069","section":"Create one","text":"Artist","placement":"unplaced","state":"preferences"},
3420
- {"key":"L0070","section":"Create one","text":"UI design","placement":"placed","file":"modules/hall-ui/public/settings.html","line":294,"string_id":"6516cc82021a","state":"preferences"},
3420
+ {"key":"L0070","section":"Create one","text":"UI design","placement":"placed","file":"modules/hall-ui/public/settings.html","line":319,"string_id":"6516cc82021a","state":"preferences"},
3421
3421
  {"key":"L0071","section":"Create one","text":"Summary","placement":"unplaced","state":"preferences"},
3422
3422
  {"key":"L0072","section":"Create one","text":"(optional)","placement":"unplaced","state":"preferences","occurrences":3},
3423
- {"key":"L0073","section":"Create one","text":"Markets, incentives, and how to price them.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":299,"string_id":"8bdec961e84a","attr":"placeholder","state":"preferences"},
3424
- {"key":"L0074","section":"Create one","text":"How Claude should engage you in it","placement":"placed","file":"modules/hall-ui/public/settings.html","line":302,"string_id":"6dd3c797943b","state":"preferences"},
3425
- {"key":"L0075","section":"Create one","text":"Argue from mechanism, not vibes. Always name the assumption a number rests on.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":303,"string_id":"d9dd46194f35","attr":"placeholder","state":"preferences"},
3426
- {"key":"L0076","section":"Create one","text":"Who can use it","placement":"placed","file":"modules/hall-ui/public/settings.html","line":306,"string_id":"b79ea4077bc5","state":"preferences"},
3427
- {"key":"L0077","section":"Create one","text":"Only me","placement":"placed","file":"modules/hall-ui/public/settings.html","line":308,"string_id":"45b667751b95","state":"preferences"},
3428
- {"key":"L0078","section":"Create one","text":"Anyone in the owning project","placement":"placed","file":"modules/hall-ui/public/settings.html","line":309,"string_id":"8832c7204180","state":"preferences"},
3429
- {"key":"L0079","section":"Create one","text":"Anyone on this instance","placement":"placed","file":"modules/hall-ui/public/settings.html","line":310,"string_id":"7d2ab55d4112","state":"preferences"},
3430
- {"key":"L0080","section":"Create one","text":"May be offered for sale later","placement":"placed","file":"modules/hall-ui/public/settings.html","line":315,"string_id":"6e73716aec6c","state":"preferences"},
3431
- {"key":"L0081","section":"Create one","text":"Records your decision only — there is no marketplace yet, and nothing is listed anywhere.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":317,"string_id":"b40c4a61070e","state":"preferences"},
3432
- {"key":"L0082","section":"Create one","text":"Skills it offers","placement":"placed","file":"modules/hall-ui/public/settings.html","line":321,"string_id":"bbbb6e8ab564","state":"preferences"},
3433
- {"key":"L0083","section":"Create one","text":"Create speciality","placement":"placed","file":"modules/hall-ui/public/settings.html","line":325,"string_id":"af21de422c14","state":"preferences"},
3423
+ {"key":"L0073","section":"Create one","text":"Markets, incentives, and how to price them.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":324,"string_id":"8bdec961e84a","attr":"placeholder","state":"preferences"},
3424
+ {"key":"L0074","section":"Create one","text":"How Claude should engage you in it","placement":"placed","file":"modules/hall-ui/public/settings.html","line":327,"string_id":"6dd3c797943b","state":"preferences"},
3425
+ {"key":"L0075","section":"Create one","text":"Argue from mechanism, not vibes. Always name the assumption a number rests on.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":328,"string_id":"d9dd46194f35","attr":"placeholder","state":"preferences"},
3426
+ {"key":"L0076","section":"Create one","text":"Who can use it","placement":"placed","file":"modules/hall-ui/public/settings.html","line":331,"string_id":"b79ea4077bc5","state":"preferences"},
3427
+ {"key":"L0077","section":"Create one","text":"Only me","placement":"placed","file":"modules/hall-ui/public/settings.html","line":333,"string_id":"45b667751b95","state":"preferences"},
3428
+ {"key":"L0078","section":"Create one","text":"Anyone in the owning project","placement":"placed","file":"modules/hall-ui/public/settings.html","line":334,"string_id":"8832c7204180","state":"preferences"},
3429
+ {"key":"L0079","section":"Create one","text":"Anyone on this instance","placement":"placed","file":"modules/hall-ui/public/settings.html","line":335,"string_id":"7d2ab55d4112","state":"preferences"},
3430
+ {"key":"L0080","section":"Create one","text":"May be offered for sale later","placement":"placed","file":"modules/hall-ui/public/settings.html","line":340,"string_id":"6e73716aec6c","state":"preferences"},
3431
+ {"key":"L0081","section":"Create one","text":"Records your decision only — there is no marketplace yet, and nothing is listed anywhere.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":342,"string_id":"b40c4a61070e","state":"preferences"},
3432
+ {"key":"L0082","section":"Create one","text":"Skills it offers","placement":"placed","file":"modules/hall-ui/public/settings.html","line":346,"string_id":"bbbb6e8ab564","state":"preferences"},
3433
+ {"key":"L0083","section":"Create one","text":"Create speciality","placement":"placed","file":"modules/hall-ui/public/settings.html","line":350,"string_id":"af21de422c14","state":"preferences"},
3434
3434
  {"key":"L0084","section":"Wandering","text":"Wandering","placement":"unplaced","state":"preferences"},
3435
- {"key":"L0085","section":"Wandering","text":"How readily Claude opens a","placement":"placed","file":"modules/hall-ui/public/settings.html","line":337,"string_id":"0bae5deb899d","state":"preferences"},
3436
- {"key":"L0086","section":"Wandering","text":"new thread","placement":"placed","file":"modules/hall-ui/public/settings.html","line":338,"string_id":"86f235ddfe01","state":"preferences"},
3437
- {"key":"L0087","section":"Wandering","text":"of work — a tangent, an investigation, an unprompted suggestion — instead of staying on your claimed task. It never limits the work on the task itself. Your rank sets the starting point; newcomers stay locked low.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":338,"string_id":"99f88f2af2ee","state":"preferences"},
3435
+ {"key":"L0085","section":"Wandering","text":"How readily Claude opens a","placement":"placed","file":"modules/hall-ui/public/settings.html","line":362,"string_id":"0bae5deb899d","state":"preferences"},
3436
+ {"key":"L0086","section":"Wandering","text":"new thread","placement":"placed","file":"modules/hall-ui/public/settings.html","line":363,"string_id":"86f235ddfe01","state":"preferences"},
3437
+ {"key":"L0087","section":"Wandering","text":"of work — a tangent, an investigation, an unprompted suggestion — instead of staying on your claimed task. It never limits the work on the task itself. Your rank sets the starting point; newcomers stay locked low.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":363,"string_id":"99f88f2af2ee","state":"preferences"},
3438
3438
  {"key":"L0088","section":"Wandering","text":"default for your rank","placement":"placed","file":"modules/hall-ui/public/settings.js","line":424,"string_id":"4a287afb0892","state":"preferences"},
3439
3439
  {"key":"L0089","section":"Wandering","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"preferences"},
3440
3440
  {"key":"L0090","section":"Wandering","text":"Now: {…}. Your rank allows up to {…}.","placement":"unplaced","state":"preferences"},
3441
3441
  {"key":"L0091","section":"Rendering","text":"Rendering","placement":"unplaced","state":"preferences"},
3442
- {"key":"L0092","section":"Rendering","text":"How much your session cards — what","placement":"placed","file":"modules/hall-ui/public/settings.html","line":356,"string_id":"160adde1e398","state":"preferences"},
3443
- {"key":"L0093","section":"Rendering","text":", claiming, and shipping show — spend on explaining themselves. Richer cards say more and cost more tokens; leaner ones carry the same facts for less. By default this follows how Claude talks to you, so you can set it once in","placement":"placed","file":"modules/hall-ui/public/settings.html","line":357,"string_id":"1f8aceffb15e","state":"preferences"},
3444
- {"key":"L0094","section":"Rendering","text":"How Claude talks to you","placement":"placed","file":"modules/hall-ui/public/settings.html","line":251,"string_id":"0469a83cf1e8","state":"preferences"},
3445
- {"key":"L0095","section":"Rendering","text":"and leave this alone.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":361,"string_id":"2177da93be9b","state":"preferences"},
3442
+ {"key":"L0092","section":"Rendering","text":"How much your session cards — what","placement":"placed","file":"modules/hall-ui/public/settings.html","line":381,"string_id":"160adde1e398","state":"preferences"},
3443
+ {"key":"L0093","section":"Rendering","text":", claiming, and shipping show — spend on explaining themselves. Richer cards say more and cost more tokens; leaner ones carry the same facts for less. By default this follows how Claude talks to you, so you can set it once in","placement":"placed","file":"modules/hall-ui/public/settings.html","line":382,"string_id":"1f8aceffb15e","state":"preferences"},
3444
+ {"key":"L0094","section":"Rendering","text":"How Claude talks to you","placement":"placed","file":"modules/hall-ui/public/settings.html","line":276,"string_id":"0469a83cf1e8","state":"preferences"},
3445
+ {"key":"L0095","section":"Rendering","text":"and leave this alone.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":386,"string_id":"2177da93be9b","state":"preferences"},
3446
3446
  {"key":"L0096","section":"Rendering","text":"Session card richness","placement":"placed","file":"modules/hall-ui/public/settings-render.js","line":83,"string_id":"64a1f055129e","state":"preferences"},
3447
3447
  {"key":"L0097","section":"Rendering","text":"How much the claim and ship cards show. Richer cards explain more and cost more tokens; the confirmation line is always there whichever you pick.","placement":"placed","file":"modules/hall-ui/public/settings-render.js","line":84,"string_id":"d76a5fcbde7c","state":"preferences"},
3448
3448
  {"key":"L0098","section":"Rendering","text":"Match my interaction profile","placement":"unplaced","state":"preferences"},
3449
3449
  {"key":"L0099","section":"Rendering","text":"default ({…})","placement":"placed","file":"modules/hall-ui/public/settings-render.js","line":64,"string_id":"4adbb8da9999","state":"preferences"},
3450
3450
  {"key":"L0100","section":"Rendering","text":"{…} Change that profile and this follows it.","placement":"placed","file":"modules/hall-ui/public/settings-render.js","line":65,"string_id":"de5b58a187c6","state":"preferences"},
3451
3451
  {"key":"L0101","section":"Rendering","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"preferences"},
3452
- {"key":"L0102","section":"Rendering","text":"Saves the moment you choose; applies from your next session.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":365,"string_id":"72f24fcbe9e0","state":"preferences"},
3453
- {"key":"L0103","section":"Module install reports","text":"Module install reports","placement":"placed","file":"modules/hall-ui/public/settings.html","line":373,"string_id":"dcab235de632","state":"preferences"},
3454
- {"key":"L0104","section":"Module install reports","text":"A store module is scored partly on whether it installs and runs cleanly for the people who use it. Only counts are sent: whether an install worked, and a short code if it did not. No messages, file paths or details about you.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":374,"string_id":"3ce49cfbdd99","state":"preferences"},
3452
+ {"key":"L0102","section":"Rendering","text":"Saves the moment you choose; applies from your next session.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":390,"string_id":"72f24fcbe9e0","state":"preferences"},
3453
+ {"key":"L0103","section":"Module install reports","text":"Module install reports","placement":"placed","file":"modules/hall-ui/public/settings.html","line":398,"string_id":"dcab235de632","state":"preferences"},
3454
+ {"key":"L0104","section":"Module install reports","text":"A store module is scored partly on whether it installs and runs cleanly for the people who use it. Only counts are sent: whether an install worked, and a short code if it did not. No messages, file paths or details about you.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":399,"string_id":"3ce49cfbdd99","state":"preferences"},
3455
3455
  {"key":"L0105","section":"Module install reports","text":"Share what happens when you install a module","placement":"placed","file":"modules/hall-ui/public/settings-usage-reports.js","line":35,"string_id":"e56c2b6a1a1d","state":"preferences"},
3456
3456
  {"key":"L0106","section":"Module install reports","text":"Share counts","placement":"unplaced","state":"preferences"},
3457
3457
  {"key":"L0107","section":"Module install reports","text":"default","placement":"unplaced","state":"preferences"},
3458
3458
  {"key":"L0108","section":"Module install reports","text":"When you install or update a store module, the store learns whether it worked. Nothing else is sent.","placement":"unplaced","state":"preferences"},
3459
3459
  {"key":"L0109","section":"Module install reports","text":"Don’t share","placement":"unplaced","state":"preferences"},
3460
3460
  {"key":"L0110","section":"Module install reports","text":"{…} of {…}","placement":"placed","file":"modules/hall-ui/public/sky-panel.js","line":120,"string_id":"73c1372b43d9","state":"preferences"},
3461
- {"key":"L0111","section":"Module install reports","text":"Saves the moment you choose; applies to your next install.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":381,"string_id":"728531d66c22","state":"preferences"},
3461
+ {"key":"L0111","section":"Module install reports","text":"Saves the moment you choose; applies to your next install.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":406,"string_id":"728531d66c22","state":"preferences"},
3462
3462
  {"key":"L0112","section":"Module install reports","text":"Could not load your security cards: {…}","placement":"placed","file":"modules/hall-ui/public/settings-passkeys.js","line":108,"string_id":"9e77d71db3ec","state":"preferences"},
3463
3463
  {"key":"L0113","section":"Module install reports","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":670,"string_id":"fd1903586e8e","state":"preferences"},
3464
- {"key":"L0114","section":"CLI access","text":"CLI access","placement":"placed","file":"modules/hall-ui/public/settings.html","line":141,"string_id":"a015a43bfc7f","state":"access"},
3465
- {"key":"L0115","section":"CLI access","text":"Mint a fresh CLI token using this browser session and paste the command it gives you into a terminal in your project folder — the quick way back in when a","placement":"placed","file":"modules/hall-ui/public/settings.html","line":142,"string_id":"638bfd6405ce","state":"access"},
3466
- {"key":"L0116","section":"CLI access","text":"command says your session expired.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":145,"string_id":"508ff7083048","state":"access"},
3467
- {"key":"L0117","section":"CLI access","text":"Re-issue CLI token","placement":"placed","file":"modules/hall-ui/public/settings.html","line":148,"string_id":"e60039795803","state":"access"},
3468
- {"key":"L0118","section":"CLI access","text":"no GitHub code to type in.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":149,"string_id":"dfaec940ded4","state":"access"},
3469
- {"key":"L0119","section":"CLI access","text":"Tokens refresh on use; re-issuing never signs you out anywhere else.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":152,"string_id":"7dfdc26f9f79","state":"access"},
3470
- {"key":"L0120","section":"Active sessions","text":"Active sessions","placement":"placed","file":"modules/hall-ui/public/settings.html","line":159,"string_id":"524188fe0078","state":"access"},
3471
- {"key":"L0121","section":"Active sessions","text":"Every place you are currently signed in — this browser, your terminal, any other machine. A session refreshes for another 24 hours each time it is used, so one you have forgotten about can stay alive indefinitely. If a token has leaked, end it here.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":160,"string_id":"c188854da766","state":"access"},
3464
+ {"key":"L0114","section":"CLI access","text":"CLI access","placement":"placed","file":"modules/hall-ui/public/settings.html","line":166,"string_id":"a015a43bfc7f","state":"access"},
3465
+ {"key":"L0115","section":"CLI access","text":"Mint a fresh CLI token using this browser session and paste the command it gives you into a terminal in your project folder — the quick way back in when a","placement":"placed","file":"modules/hall-ui/public/settings.html","line":167,"string_id":"638bfd6405ce","state":"access"},
3466
+ {"key":"L0116","section":"CLI access","text":"command says your session expired.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":170,"string_id":"508ff7083048","state":"access"},
3467
+ {"key":"L0117","section":"CLI access","text":"Re-issue CLI token","placement":"placed","file":"modules/hall-ui/public/settings.html","line":173,"string_id":"e60039795803","state":"access"},
3468
+ {"key":"L0118","section":"CLI access","text":"no GitHub code to type in.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":174,"string_id":"dfaec940ded4","state":"access"},
3469
+ {"key":"L0119","section":"CLI access","text":"Tokens refresh on use; re-issuing never signs you out anywhere else.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":177,"string_id":"7dfdc26f9f79","state":"access"},
3470
+ {"key":"L0120","section":"Active sessions","text":"Active sessions","placement":"placed","file":"modules/hall-ui/public/settings.html","line":184,"string_id":"524188fe0078","state":"access"},
3471
+ {"key":"L0121","section":"Active sessions","text":"Every place you are currently signed in — this browser, your terminal, any other machine. A session refreshes for another 24 hours each time it is used, so one you have forgotten about can stay alive indefinitely. If a token has leaked, end it here.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":185,"string_id":"c188854da766","state":"access"},
3472
3472
  {"key":"L0122","section":"Active sessions","text":"Browser","placement":"unplaced","state":"access"},
3473
3473
  {"key":"L0123","section":"Active sessions","text":"this session","placement":"placed","file":"modules/hall-ui/public/settings-sessions.js","line":44,"string_id":"632527db5bca","state":"access"},
3474
3474
  {"key":"L0124","section":"Active sessions","text":"last used {…} · signed in {…}","placement":"placed","file":"modules/hall-ui/public/settings-sessions.js","line":46,"string_id":"9018bf6e99eb","state":"access","occurrences":3},
3475
3475
  {"key":"L0125","section":"Active sessions","text":"End session","placement":"placed","file":"modules/hall-ui/public/settings-sessions.js","line":46,"string_id":"8d2b4f119ee3","state":"access","occurrences":3},
3476
3476
  {"key":"L0126","section":"Active sessions","text":"Terminal","placement":"unplaced","state":"access"},
3477
3477
  {"key":"L0127","section":"Active sessions","text":"Session","placement":"placed","file":"modules/hall-ui/public/sessions.js","line":233,"string_id":"5e15e4f600fd","state":"access"},
3478
- {"key":"L0128","section":"Active sessions","text":"Sign out everywhere","placement":"placed","file":"modules/hall-ui/public/settings.html","line":168,"string_id":"8ad669ab2565","state":"access"},
3479
- {"key":"L0129","section":"Active sessions","text":"ends every session including this one — you will be asked to sign in again.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":169,"string_id":"12a23cc46ace","state":"access"},
3480
- {"key":"L0130","section":"Active sessions","text":"Ending a session takes effect immediately; the token stops working on its very next request.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":171,"string_id":"8e82771e5b63","state":"access"},
3481
- {"key":"L0131","section":"Your Autobongos runner","text":"Your Autobongos runner","placement":"placed","file":"modules/hall-ui/public/settings.html","line":200,"string_id":"3749997eef4a","state":"access"},
3482
- {"key":"L0132","section":"Your Autobongos runner","text":"Choose which goals your own runner works while you are away. You can only choose from the goals the project allows. If you choose none, your runner takes no work.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":201,"string_id":"2b504633779f","state":"access"},
3478
+ {"key":"L0128","section":"Active sessions","text":"Sign out everywhere","placement":"placed","file":"modules/hall-ui/public/settings.html","line":193,"string_id":"8ad669ab2565","state":"access"},
3479
+ {"key":"L0129","section":"Active sessions","text":"ends every session including this one — you will be asked to sign in again.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":194,"string_id":"12a23cc46ace","state":"access"},
3480
+ {"key":"L0130","section":"Active sessions","text":"Ending a session takes effect immediately; the token stops working on its very next request.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":196,"string_id":"8e82771e5b63","state":"access"},
3481
+ {"key":"L0131","section":"Your Autobongos runner","text":"Your Autobongos runner","placement":"placed","file":"modules/hall-ui/public/settings.html","line":225,"string_id":"3749997eef4a","state":"access"},
3482
+ {"key":"L0132","section":"Your Autobongos runner","text":"Choose which goals your own runner works while you are away. You can only choose from the goals the project allows. If you choose none, your runner takes no work.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":226,"string_id":"2b504633779f","state":"access"},
3483
3483
  {"key":"L0133","section":"Your Autobongos runner","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","state":"access"},
3484
3484
  {"key":"L0134","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"},
3485
- {"key":"L0135","section":"Image-generation key","text":"Image-generation key","placement":"placed","file":"modules/hall-ui/public/settings.html","line":217,"string_id":"783853467d52","state":"access","occurrences":2},
3486
- {"key":"L0136","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":218,"string_id":"600b90074021","state":"access"},
3485
+ {"key":"L0135","section":"Image-generation key","text":"Image-generation key","placement":"placed","file":"modules/hall-ui/public/settings.html","line":242,"string_id":"783853467d52","state":"access","occurrences":2},
3486
+ {"key":"L0136","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":243,"string_id":"600b90074021","state":"access"},
3487
3487
  {"key":"L0137","section":"Image-generation key","text":"Your key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":872,"string_id":"51fd6f1ecb2f","state":"access"},
3488
3488
  {"key":"L0138","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"},
3489
3489
  {"key":"L0139","section":"Image-generation key","text":"Save key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":876,"string_id":"0c79b504aebe","state":"access"},
3490
3490
  {"key":"L0140","section":"Image-generation key","text":"Get a free key ↗","placement":"placed","file":"modules/hall-ui/public/settings.js","line":844,"string_id":"2ae2114b61db","state":"access"},
3491
3491
  {"key":"L0141","section":"Image-generation key","text":"· Stored encrypted; never shown again after saving.","placement":"placed","file":"modules/hall-ui/public/settings.js","line":878,"string_id":"b3757ba3bb46","state":"access"},
3492
- {"key":"L0142","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":226,"string_id":"6c6544f5c011","state":"access"},
3493
- {"key":"L0143","section":"Your AI keys","text":"Your AI keys","placement":"placed","file":"modules/hall-ui/public/settings.html","line":234,"string_id":"b22c34b9c30a","state":"access"},
3494
- {"key":"L0144","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":235,"string_id":"a0a4aaff6057","state":"access"},
3492
+ {"key":"L0142","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":251,"string_id":"6c6544f5c011","state":"access"},
3493
+ {"key":"L0143","section":"Your AI keys","text":"Your AI keys","placement":"placed","file":"modules/hall-ui/public/settings.html","line":259,"string_id":"b22c34b9c30a","state":"access"},
3494
+ {"key":"L0144","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":260,"string_id":"a0a4aaff6057","state":"access"},
3495
3495
  {"key":"L0145","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"},
3496
3496
  {"key":"L0146","section":"Your AI keys","text":"Save key","placement":"placed","file":"modules/hall-ui/public/settings.js","line":876,"string_id":"0c79b504aebe","state":"access"},
3497
3497
  {"key":"L0147","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"},
@@ -3499,7 +3499,7 @@
3499
3499
  {"key":"L0149","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"},
3500
3500
  {"key":"L0150","section":"Your AI keys","text":"Replace","placement":"unplaced","state":"access"},
3501
3501
  {"key":"L0151","section":"Your AI keys","text":"Remove","placement":"unplaced","state":"access"},
3502
- {"key":"L0152","section":"Your AI keys","text":"Stored encrypted; never shown again after saving, only its last four characters.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":240,"string_id":"ef056ef08ff5","state":"access"},
3502
+ {"key":"L0152","section":"Your AI keys","text":"Stored encrypted; never shown again after saving, only its last four characters.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":265,"string_id":"ef056ef08ff5","state":"access"},
3503
3503
  {"key":"L0153","section":"Your AI keys","text":"Could not load your security cards: {…}","placement":"placed","file":"modules/hall-ui/public/settings-passkeys.js","line":108,"string_id":"9e77d71db3ec","state":"access"},
3504
3504
  {"key":"L0154","section":"Your AI keys","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":670,"string_id":"fd1903586e8e","state":"access"},
3505
3505
  {"key":"L0155","section":"Connections","text":"Connections","placement":"unplaced"},
@@ -3513,27 +3513,37 @@
3513
3513
  {"key":"L0163","section":"Display name","text":"Your display name","placement":"placed","file":"modules/hall-ui/public/settings.html","line":87,"string_id":"909b0b7c6ffa","attr":"placeholder"},
3514
3514
  {"key":"L0164","section":"Display name","text":"Save","placement":"unplaced"},
3515
3515
  {"key":"L0165","section":"Display name","text":"Saves when you press Save; shows everywhere at once.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":91,"string_id":"e8e4e49fe8f4"},
3516
- {"key":"L0166","section":"Preferred roles","text":"Preferred roles","placement":"placed","file":"modules/hall-ui/public/settings.html","line":115,"string_id":"e883f2789cae"},
3517
- {"key":"L0167","section":"Preferred roles","text":"The kinds of work you prefer. Task suggestions lean toward your choices — pick one, several, or none.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":116,"string_id":"9f45c63c9697"},
3518
- {"key":"L0168","section":"Preferred roles","text":"Artist","placement":"unplaced","occurrences":2},
3519
- {"key":"L0169","section":"Preferred roles","text":"Ideator","placement":"unplaced","occurrences":2},
3520
- {"key":"L0170","section":"Preferred roles","text":"UI","placement":"unplaced","occurrences":2},
3521
- {"key":"L0171","section":"Preferred roles","text":"Main role","placement":"placed","file":"modules/hall-ui/public/settings.html","line":125,"string_id":"b8a2b32fdbb1"},
3522
- {"key":"L0172","section":"Preferred roles","text":"Your main role leads your profile and your leaderboard entry. Let your work decide, and it is the role you have earned the most in.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":126,"string_id":"09329a8f42ff"},
3523
- {"key":"L0173","section":"Preferred roles","text":"Let my work decide","placement":"unplaced"},
3524
- {"key":"L0174","section":"Preferred roles","text":"Save","placement":"unplaced"},
3525
- {"key":"L0175","section":"Preferred roles","text":"Saves when you press Save; your next","placement":"placed","file":"modules/hall-ui/public/settings.html","line":133,"string_id":"42cbc20a6ec8"},
3526
- {"key":"L0176","section":"Preferred roles","text":"reflects it.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":133,"string_id":"26da1df6fd4a"},
3527
- {"key":"L0177","section":"Preferred roles","text":"Could not load your security cards: {…}","placement":"placed","file":"modules/hall-ui/public/settings-passkeys.js","line":108,"string_id":"9e77d71db3ec"},
3528
- {"key":"L0178","section":"Preferred roles","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":670,"string_id":"fd1903586e8e"},
3529
- {"key":"L0179","section":"What are you doing now?","text":"What are you doing now?","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":671,"string_id":"60853319f290"},
3530
- {"key":"L0180","section":"What are you doing now?","text":"Pick one. You can switch any time from the top bar.","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":672,"string_id":"4f87d5b17b54"},
3531
- {"key":"L0181","section":"What are you doing now?","text":"Building","placement":"unplaced"},
3532
- {"key":"L0182","section":"What are you doing now?","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":3},
3533
- {"key":"L0183","section":"What are you doing now?","text":"Artistry","placement":"unplaced"},
3534
- {"key":"L0184","section":"What are you doing now?","text":"Ideating","placement":"unplaced"},
3535
- {"key":"L0185","section":"What are you doing now?","text":"Turn thoughts into {…}.","placement":"unplaced"},
3536
- {"key":"L0186","section":"What are you doing now?","text":"Ask me again next session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":675,"string_id":"fa86bf403775"}
3516
+ {"key":"L0166","section":"Your age","text":"Your age","placement":"placed","file":"modules/hall-ui/public/settings.html","line":99,"string_id":"9c71cc9855a0"},
3517
+ {"key":"L0167","section":"Your age","text":"AI Studio and getting paid both depend on your age. Pick the group you are in. Only the group is kept, never your birthday.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":100,"string_id":"6adc92ad6df7"},
3518
+ {"key":"L0168","section":"Your age","text":"Nothing on record yet, so AI Studio stays closed to you.","placement":"unplaced"},
3519
+ {"key":"L0169","section":"Your age","text":"I am","placement":"placed","file":"modules/hall-ui/public/settings.html","line":106,"string_id":"8f0951b59496"},
3520
+ {"key":"L0170","section":"Your age","text":"18 or older","placement":"placed","file":"modules/hall-ui/public/settings.html","line":107,"string_id":"b3c840c7f7f8"},
3521
+ {"key":"L0171","section":"Your age","text":"16 to 17","placement":"placed","file":"modules/hall-ui/public/settings.html","line":108,"string_id":"c640f2831617"},
3522
+ {"key":"L0172","section":"Your age","text":"13 to 15","placement":"placed","file":"modules/hall-ui/public/settings.html","line":109,"string_id":"192d7275b7c3"},
3523
+ {"key":"L0173","section":"Your age","text":"Under 13","placement":"placed","file":"modules/hall-ui/public/settings.html","line":110,"string_id":"0bd350244e3a"},
3524
+ {"key":"L0174","section":"Your age","text":"Save","placement":"unplaced"},
3525
+ {"key":"L0175","section":"Your age","text":"AI Studio is for adults only, because the AI companies behind it only serve adults.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":116,"string_id":"23367da3f4ba"},
3526
+ {"key":"L0176","section":"Preferred roles","text":"Preferred roles","placement":"placed","file":"modules/hall-ui/public/settings.html","line":140,"string_id":"e883f2789cae"},
3527
+ {"key":"L0177","section":"Preferred roles","text":"The kinds of work you prefer. Task suggestions lean toward your choices — pick one, several, or none.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":141,"string_id":"9f45c63c9697"},
3528
+ {"key":"L0178","section":"Preferred roles","text":"Artist","placement":"unplaced","occurrences":2},
3529
+ {"key":"L0179","section":"Preferred roles","text":"Ideator","placement":"unplaced","occurrences":2},
3530
+ {"key":"L0180","section":"Preferred roles","text":"UI","placement":"unplaced","occurrences":2},
3531
+ {"key":"L0181","section":"Preferred roles","text":"Main role","placement":"placed","file":"modules/hall-ui/public/settings.html","line":150,"string_id":"b8a2b32fdbb1"},
3532
+ {"key":"L0182","section":"Preferred roles","text":"Your main role leads your profile and your leaderboard entry. Let your work decide, and it is the role you have earned the most in.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":151,"string_id":"09329a8f42ff"},
3533
+ {"key":"L0183","section":"Preferred roles","text":"Let my work decide","placement":"unplaced"},
3534
+ {"key":"L0184","section":"Preferred roles","text":"Save","placement":"unplaced"},
3535
+ {"key":"L0185","section":"Preferred roles","text":"Saves when you press Save; your next","placement":"placed","file":"modules/hall-ui/public/settings.html","line":158,"string_id":"42cbc20a6ec8"},
3536
+ {"key":"L0186","section":"Preferred roles","text":"reflects it.","placement":"placed","file":"modules/hall-ui/public/settings.html","line":158,"string_id":"26da1df6fd4a"},
3537
+ {"key":"L0187","section":"Preferred roles","text":"Could not load your security cards: {…}","placement":"placed","file":"modules/hall-ui/public/settings-passkeys.js","line":108,"string_id":"9e77d71db3ec"},
3538
+ {"key":"L0188","section":"Preferred roles","text":"Builders hall · this session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":670,"string_id":"fd1903586e8e"},
3539
+ {"key":"L0189","section":"What are you doing now?","text":"What are you doing now?","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":671,"string_id":"60853319f290"},
3540
+ {"key":"L0190","section":"What are you doing now?","text":"Pick one. You can switch any time from the top bar.","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":672,"string_id":"4f87d5b17b54"},
3541
+ {"key":"L0191","section":"What are you doing now?","text":"Building","placement":"unplaced"},
3542
+ {"key":"L0192","section":"What are you doing now?","text":"{…} and {…}","placement":"placed","file":"modules/hall-ui/public/profile-nudge.js","line":77,"string_id":"56b00d773232","occurrences":3},
3543
+ {"key":"L0193","section":"What are you doing now?","text":"Artistry","placement":"unplaced"},
3544
+ {"key":"L0194","section":"What are you doing now?","text":"Ideating","placement":"unplaced"},
3545
+ {"key":"L0195","section":"What are you doing now?","text":"Turn thoughts into {…}.","placement":"unplaced"},
3546
+ {"key":"L0196","section":"What are you doing now?","text":"Ask me again next session","placement":"placed","file":"modules/hall-ui/public/craft-mode.js","line":675,"string_id":"fa86bf403775"}
3537
3547
  ]
3538
3548
  },
3539
3549
  {
@@ -4206,7 +4216,7 @@
4206
4216
  "surface": "builders",
4207
4217
  "title": "Studio",
4208
4218
  "states_read": ["home","out","flow","flow-pick","status","words-offer","words-edit","reviews","full","full-back","approvals","approvals-before","approvals-phone","approvals-note","approved","sent-back","approvals-page"],
4209
- "files_hash": "9eda81ed0ffd5014",
4219
+ "files_hash": "6c591072e20de9f0",
4210
4220
  "reading_hash": "bcba11e6cef56218",
4211
4221
  "counts": {"lines":31,"placed":16,"shared":6,"unplaced":9},
4212
4222
  "omitted": {"data":4},
@@ -65,6 +65,10 @@ function listPublic(rows) {
65
65
  function chooseKey(stored, payWith) {
66
66
  const own = ['openrouter', 'gemini'].find((p) => (stored || []).includes(p));
67
67
  if (payWith === 'ours') return { source: 'ours' };
68
+ // A named provider picks that key when both are saved.
69
+ if (isProvider(payWith)) {
70
+ return (stored || []).includes(payWith) ? { source: 'own', provider: payWith } : { error: 'no_own_key' };
71
+ }
68
72
  if (payWith === 'own' && !own) return { error: 'no_own_key' };
69
73
  if (payWith !== undefined && payWith !== null && payWith !== 'own') return { error: 'bad_pay_with' };
70
74
  return own ? { source: 'own', provider: own } : { source: 'ours' };
@@ -173,7 +173,7 @@ module.exports = function buildAiStudioRouter() {
173
173
  if (api.validateOrRespond(req, res, {
174
174
  prompt: { required: true, type: 'string', maxLength: S.MAX_PROMPT + 200 },
175
175
  file_ids: { required: true, type: 'array', maxItems: S.MAX_FILES },
176
- pay_with: { type: 'string', enum: ['own', 'ours'] },
176
+ pay_with: { type: 'string', enum: ['own', 'ours', 'openrouter', 'gemini'] },
177
177
  })) return;
178
178
  if (!S.isAdult(await db.latestAgeTier(req.builder.id))) return res.fail('adults_only', { status: 403, message: ADULTS_ONLY });
179
179
  const checked = S.checkRequest(req.body);
@@ -107,25 +107,31 @@
107
107
 
108
108
  // The own key the server will run on: OpenRouter first, as keys.chooseKey
109
109
  // prefers it (it reports its cost). null when none is saved.
110
- function ownKey(keys) {
110
+ function ownKey(keys) { return ownKeys(keys)[0] || null; }
111
+
112
+ // Every own key that is saved, OpenRouter first: step 3 offers one card each,
113
+ // so a builder with both picks which one runs.
114
+ function ownKeys(keys) {
111
115
  const list = (keys && keys.keys) || [];
112
- const set = (p) => list.find((k) => k && k.provider === p && k.set);
113
- const k = set('openrouter') || set('gemini');
114
- if (!k) return null;
115
- return k.provider === 'openrouter'
116
- ? { provider: 'openrouter', name: 'OpenRouter', billedBy: 'OpenRouter', last4: k.last4 }
117
- : { provider: 'gemini', name: 'Gemini', billedBy: 'Google', last4: k.last4 };
116
+ return ['openrouter', 'gemini']
117
+ .map((p) => list.find((k) => k && k.provider === p && k.set))
118
+ .filter(Boolean)
119
+ .map((k) => (k.provider === 'openrouter'
120
+ ? { provider: 'openrouter', name: 'OpenRouter', billedBy: 'OpenRouter', last4: k.last4 }
121
+ : { provider: 'gemini', name: 'Gemini', billedBy: 'Google', last4: k.last4 }));
118
122
  }
119
123
 
120
- // Step 3's two cards. balance is GET /ai-studio/balance's body.
124
+ // Step 3's cards. balance is GET /ai-studio/balance's body.
121
125
  function payChoices(keys, balance) {
122
- const own = ownKey(keys);
126
+ const owns = ownKeys(keys);
127
+ const own = owns[0] || null;
123
128
  const b = balance || {};
124
129
  const avail = b.balance ? b.balance.available_micro : null;
125
130
  const max = isMicro(b.max_cost_micro) ? b.max_cost_micro : null;
126
131
  const payments = !!b.balance;
127
132
  return {
128
133
  own,
134
+ owns,
129
135
  payments,
130
136
  setAside: max === null ? '' : usd(max),
131
137
  left: payments ? `${balanceUsd(avail)} left` : '',
@@ -260,7 +266,7 @@
260
266
 
261
267
  const lib = {
262
268
  MAX_FILES, MAX_IMAGE_BYTES, MAX_PDF_BYTES, IMAGE_TYPES, PDF_TYPE, STEPS, TOPUP_CHOICES, ANSWER_AFTER_SEC,
263
- usd, balanceUsd, sizeText, routeOf, checkFile, isImage, stepMarks, quoteLine, ownKey, payChoices,
269
+ usd, balanceUsd, sizeText, routeOf, checkFile, isImage, stepMarks, quoteLine, ownKey, ownKeys, payChoices,
264
270
  waitSteps, clock, isFinished, receipt, againLine, monthSummary, ledgerLine, replyHtml, homeLine,
265
271
  };
266
272
  if (typeof module !== 'undefined' && module.exports) module.exports = lib;