@bongos/core 1.24.42 → 1.24.44

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.
Files changed (92) hide show
  1. package/.bongos-core.json +108 -103
  2. package/docs/copy-inventory.md +115 -165
  3. package/docs/copy-registry.json +230 -781
  4. package/docs/file-map.md +1 -1
  5. package/docs/module-api-changelog.md +4 -0
  6. package/docs/onboarding/primer.md +1 -1
  7. package/docs/page-inventory.json +10 -38
  8. package/docs/page-readings.json +528 -627
  9. package/modules/hall-ui/public/ai-studio.html +4 -4
  10. package/modules/hall-ui/public/atlas.html +4 -4
  11. package/modules/hall-ui/public/blockers.html +4 -4
  12. package/modules/hall-ui/public/board-room.html +4 -4
  13. package/modules/hall-ui/public/builders.js +22 -505
  14. package/modules/hall-ui/public/city.html +4 -4
  15. package/modules/hall-ui/public/collab.html +4 -4
  16. package/modules/hall-ui/public/commands.html +4 -4
  17. package/modules/hall-ui/public/copy-desk.html +4 -4
  18. package/modules/hall-ui/public/craft-mode.js +2 -2
  19. package/modules/hall-ui/public/deploy.html +4 -4
  20. package/modules/hall-ui/public/dom-utils.js +2 -1
  21. package/modules/hall-ui/public/goal-map.html +4 -4
  22. package/modules/hall-ui/public/goals.html +16 -4
  23. package/modules/hall-ui/public/government.html +4 -4
  24. package/modules/hall-ui/public/hall-render.js +23 -524
  25. package/modules/hall-ui/public/hall-widgets.js +11 -109
  26. package/modules/hall-ui/public/idea.html +4 -4
  27. package/modules/hall-ui/public/ideas.html +4 -4
  28. package/modules/hall-ui/public/index.html +6 -19
  29. package/modules/hall-ui/public/index.states.json +0 -33
  30. package/modules/hall-ui/public/market-watch-item.html +4 -4
  31. package/modules/hall-ui/public/market-watch-rules.html +4 -4
  32. package/modules/hall-ui/public/market-watch.html +4 -4
  33. package/modules/hall-ui/public/modules.html +4 -4
  34. package/modules/hall-ui/public/money.html +4 -4
  35. package/modules/hall-ui/public/my-agents.html +4 -4
  36. package/modules/hall-ui/public/palette.js +7 -6
  37. package/modules/hall-ui/public/primer.html +4 -4
  38. package/modules/hall-ui/public/profile-own.js +639 -0
  39. package/modules/hall-ui/public/profile.css +2 -1
  40. package/modules/hall-ui/public/profile.html +48 -5
  41. package/modules/hall-ui/public/profile.js +27 -2
  42. package/modules/hall-ui/public/profile.states.json +18 -0
  43. package/modules/hall-ui/public/project-settings.html +4 -4
  44. package/modules/hall-ui/public/roadmap.css +7 -138
  45. package/modules/hall-ui/public/roadmap.js +35 -293
  46. package/modules/hall-ui/public/roster.html +4 -4
  47. package/modules/hall-ui/public/settings.html +4 -4
  48. package/modules/hall-ui/public/shell-trail.js +2 -1
  49. package/modules/hall-ui/public/shell.js +31 -28
  50. package/modules/hall-ui/public/street.html +4 -4
  51. package/modules/hall-ui/public/studio.html +4 -4
  52. package/modules/hall-ui/public/task.html +4 -4
  53. package/modules/hall-ui/public/thinking.html +4 -4
  54. package/modules/hall-ui/public/tweak-editor.html +4 -4
  55. package/modules/hall-ui/public/watch.html +4 -4
  56. package/modules/hall-ui/public/work.html +5 -5
  57. package/modules/onboarding/founding-mode.js +2 -1
  58. package/package-lock.json +2 -2
  59. package/package.json +1 -1
  60. package/release-notes.json +12 -0
  61. package/scripts/bongos/gen-hall-sitemap.js +1 -0
  62. package/src/bongos/serve-internal.js +6 -6
  63. package/src/module-api.js +1 -1
  64. package/tests/craft_mode_nav.mjs +2 -1
  65. package/tests/curve_controls_delegation.mjs +9 -8
  66. package/tests/curve_kind_overlay.mjs +5 -5
  67. package/tests/founding_mode.mjs +5 -3
  68. package/tests/hall_acclaim_vote_control.mjs +5 -3
  69. package/tests/hall_audit.mjs +10 -6
  70. package/tests/hall_board_world.mjs +40 -26
  71. package/tests/hall_builders_page_pass.mjs +14 -5
  72. package/tests/hall_goals_band.mjs +88 -0
  73. package/tests/hall_home_ships_bounded.mjs +10 -21
  74. package/tests/hall_kit_charts.mjs +7 -5
  75. package/tests/hall_loading.mjs +2 -1
  76. package/tests/hall_nav.mjs +41 -39
  77. package/tests/hall_numbers_page.mjs +100 -0
  78. package/tests/hall_page_gate_map.mjs +5 -1
  79. package/tests/hall_palette.mjs +19 -24
  80. package/tests/hall_profile_world.mjs +7 -2
  81. package/tests/hall_reading_room.mjs +3 -2
  82. package/tests/hall_reading_world.mjs +17 -18
  83. package/tests/hall_sitemap.mjs +2 -1
  84. package/tests/helpers.mjs +8 -2
  85. package/tests/leaderboard_roles.mjs +1 -1
  86. package/tests/module_contributions.mjs +6 -4
  87. package/tests/nav_permission_atoms.mjs +4 -2
  88. package/tests/page_tweak_artist.mjs +2 -1
  89. package/tests/rank_tier_single_source.mjs +3 -0
  90. package/tests/task_visuals.mjs +3 -1
  91. package/modules/hall-ui/public/roadmap.html +0 -58
  92. package/modules/hall-ui/public/roadmap.states.json +0 -31
@@ -236,7 +236,7 @@ function extract(src, start, end) {
236
236
 
237
237
  await test('the standing card adds the place inside the builder\'s main role, only when it says something new', () => {
238
238
  const src = read('modules/hall-ui/public/hall-render.js');
239
- const code = extract(src, 'const lbState = { rows: [] };', ' return { acclaimEvidenceHtml');
239
+ const code = extract(src, 'const lbState = { rows: [] };', ' return { lbState');
240
240
  const sandbox = { rows: FIX.leaderboard };
241
241
  vm.createContext(sandbox);
242
242
  vm.runInContext(`${code}; lbState.rows = rows; this.place = leaderboardPlace; this.text = rolePlaceText;`, sandbox);
@@ -314,11 +314,13 @@ test('hall-widget registry: placement rules reject bad registrations, accept goo
314
314
  assert.ok(reg({ id: 'e', view: 'home', zone: 'home-main', summary: true }));
315
315
  assert.ok(reg({ id: 'f', view: 'home', zone: 'home-main', collapsedByDefault: true }));
316
316
  assert.ok(reg({ id: 'g', view: 'home', zone: 'home-main', core: true }));
317
- // a non-Home view needs no zone (Standing widgets carry `group` instead)
318
- assert.ok(reg({ id: 'h', view: 'standing', group: 'work' }));
317
+ // task 1005050: 'standing' (Accomplishments) left the views with the view
318
+ // itself — it folded into the Profile page — so a widget naming it is refused.
319
+ assert.equal(reg({ id: 'h', view: 'standing', group: 'work' }), null);
320
+ assert.match(errors.at(-1), /unknown view "standing"/);
319
321
 
320
- // only the accepted four reached the registry
321
- assert.deepEqual(OTB.hallWidgetIds(), ['e', 'f', 'g', 'h']);
322
+ // only the accepted three reached the registry
323
+ assert.deepEqual(OTB.hallWidgetIds(), ['e', 'f', 'g']);
322
324
  } finally {
323
325
  console.error = realError;
324
326
  delete global.window;
@@ -97,8 +97,10 @@ test('the hall-preview fixture carries every atom /me resolves', () => {
97
97
  // core-update banner; task 1005045: the Market Watch settings item left (one sidebar item);
98
98
  // task 1005046: Ranks, Economy and Diagrams left Docs (one reading room, the Primer);
99
99
  // task 1005049: Sessions and Autobongos left the sidebar (tabs on Watch);
100
- // task 1005076: the setup flow's holdForSetup.
101
- const SHELL_SHA = '248d104831bae0de';
100
+ // task 1005076: the setup flow's holdForSetup;
101
+ // task 1005050: Accomplishments left it (folded into Profile; its hashes redirect);
102
+ // task 1005051: Roadmap left it (folded into Goals; /roadmap redirects).
103
+ const SHELL_SHA = '5e52e0337239f532';
102
104
 
103
105
  test('shell.js has not changed without its cache-bust being bumped', () => {
104
106
  const actual = crypto.createHash('sha256').update(SHELL).digest('hex').slice(0, 16);
@@ -195,7 +195,8 @@ await test('the status page and the acclaim feed render the helper', () => {
195
195
  const status = readFileSync(new URL('../modules/status-ui/public/status.js', import.meta.url), 'utf8');
196
196
  assert.match(status, /t\.helper_display_name \|\| t\.helper_login/);
197
197
  assert.match(status, /with help from \$\{helper\}/);
198
- const hall = readFileSync(new URL('../modules/hall-ui/public/builders.js', import.meta.url), 'utf8');
198
+ // task 1005050: the acclaim feed moved with Accomplishments to the profile's "Just you" screen.
199
+ const hall = readFileSync(new URL('../modules/hall-ui/public/profile-own.js', import.meta.url), 'utf8');
199
200
  assert.match(hall, /with help from \$\{escapeHtml\(helperName\)\}/, 'escaped before it reaches innerHTML');
200
201
  const feed = readFileSync(new URL('../modules/lifecycle/routes/tasks.js', import.meta.url), 'utf8');
201
202
  assert.match(feed, /helper\.helper_login, helper\.helper_display_name/, 'the acclaim feed carries the helper');
@@ -93,6 +93,9 @@ const STATIC_LADDER_FILES = [
93
93
  'modules/discord/discord-channels.js',
94
94
  'modules/memory/search.js',
95
95
  'modules/hall-ui/public/profile.js',
96
+ // task 1005050: Where you stand moved with Accomplishments to the profile's "Just
97
+ // you" screen and reads the rung above yours off this ladder.
98
+ 'modules/hall-ui/public/profile-own.js',
96
99
  // task 1005048: the rank <select> on each roster row moved from watch.js to the
97
100
  // Builders page with the roster itself; the copy moved with it.
98
101
  'modules/hall-ui/public/roster.js',
@@ -280,7 +280,9 @@ await t('the callers reach for OTBVisual, and no longer for the kit', () => {
280
280
  assert.ok(!/OTBKit(\.|\[')?\s*(shipVisualThumbHtml|taskVisualFigureHtml|isTaskVisualUrl)/.test(src),
281
281
  `${f} still reads a visual renderer off OTBKit`);
282
282
  }
283
- assert.ok(HALL('hall-render.js').includes('window.OTBVisual.shipVisualThumbHtml'));
283
+ // task 1005050: Home's ship ledger (the one hall-render.js thumbnail) left with
284
+ // Accomplishments; the Profile's Works ledger is the ship-thumbnail caller now.
285
+ assert.ok(HALL('profile.js').includes('window.OTBVisual.shipVisualThumbHtml'));
284
286
  assert.ok(HALL('studio.js').includes('vis.taskVisualFigureHtml('));
285
287
  });
286
288
 
@@ -1,58 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>Roadmap — {{worldName}}</title>
7
- <meta name="description" content="How the whole build is doing — the program at a glance, then each version — {{worldName}}.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
9
- <link rel="preconnect" href="https://fonts.googleapis.com">
10
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
- <link rel="stylesheet" href="/builders/style.css?v=2026-07-24-deck1">
12
- <link rel="stylesheet" href="/builders/roadmap.css">
13
- </head>
14
- <body data-page="roadmap" data-page-title="Roadmap">
15
-
16
- <div class="app">
17
- <aside class="app-sidebar" id="app-sidebar" aria-label="Primary"></aside>
18
- <div class="app-scrim" id="app-scrim" hidden></div>
19
- <div class="app-body">
20
- <header class="app-topbar" id="app-topbar"></header>
21
- <div class="app-content">
22
- <!-- The page had no <h1> at all before task 1003306, so it failed
23
- one-header-main-h1 on every render. The deck takes the BOARD voice,
24
- not the reading room's: it is a working surface whose figures are the
25
- thing to look at, and its own name is the quietest thing on it. -->
26
- <div class="page-head page-head--board">
27
- <h1 class="page-head__h">Roadmap</h1>
28
- <p class="page-head__sub" id="roadmap-sub">Loading the roadmap…</p>
29
- </div>
30
-
31
- <main id="hall-main">
32
- <div id="rm-root">
33
- <div class="hall-loading hall-loading--page" role="status">Loading the roadmap…</div>
34
- </div>
35
- </main>
36
-
37
- <footer class="app-foot" id="app-foot"></footer>
38
- </div>
39
- </div>
40
- </div>
41
-
42
- <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
43
-
44
- <script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
45
- <script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
46
- <script src="/builders/craft-mode.js?v=2026-11-05-oversight"></script>
47
- <script src="/builders/shell.js?v=2026-11-05-setup-gate"></script>
48
- <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
49
- <script src="/builders/palette.js" defer></script>
50
- <!-- The chart kit and the timeline's series builders (task 1003447). Both MUST
51
- precede roadmap.js: the page reads window.OTBKit / window.OTBRoadmapTimeline
52
- at render time, so loading either after would be a blank section in
53
- production and a green unit suite. tests/hall_kit_charts.mjs pins the order. -->
54
- <script src="/builders/hall-kit.js"></script>
55
- <script src="/builders/roadmap-timeline.js"></script>
56
- <script src="/builders/roadmap.js?v=2026-09-03-timeline"></script>
57
- </body>
58
- </html>
@@ -1,31 +0,0 @@
1
- {
2
- "_": "The hall's roadmap deck through modules/ui-design/kit/render.js (task 1003306). The deck is the hall's densest figure surface — a hero band, four status groups and a summarised goal layer per version — so its floors are the 24px one (the goal rows are links in a tight list) and horizontal overflow at 320.",
3
- "page": "/builders/roadmap",
4
- "surface": "hall-ui",
5
- "stub": { "prefix": "/builders/" },
6
- "modeQuery": false,
7
- "_feeds": "The kit's stub carries the public-landing fixtures, not the hall's versions/goals feeds, so the deck renders its EMPTY state here and the feed 404s are declared, never hidden. The populated deck is the hall-preview harness's job: node scripts/hall-preview/server.js --port 4612 --fixture-me, then this same file with --base-in/--base-out pointed at it.",
8
- "ignoreRequests": [
9
- "/api/(gds|bongos)/me$",
10
- "/api/(gds|bongos)/me/",
11
- "/api/(gds|bongos)/versions",
12
- "/api/(gds|bongos)/goals",
13
- "/api/(gds|bongos)/tasks",
14
- "/api/(gds|bongos)/inbox/",
15
- "/api/(gds|bongos)/public/"
16
- ],
17
- "ignoreConsole": [
18
- "/api/(gds|bongos)/",
19
- "\\b401\\b",
20
- "\\b404\\b",
21
- "Unauthorized",
22
- "Not Found",
23
- "load failed",
24
- "roadmap"
25
- ],
26
- "states": {
27
- "in": { "auth": true, "expect": { "visible": ["#rm-root"] } },
28
- "out": { "auth": false }
29
- },
30
- "reducedMotion": { "auth": true }
31
- }