@bongos/core 1.24.42 → 1.24.43

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 (79) hide show
  1. package/.bongos-core.json +93 -83
  2. package/docs/copy-inventory.md +86 -104
  3. package/docs/copy-registry.json +159 -351
  4. package/docs/module-api-changelog.md +2 -0
  5. package/docs/onboarding/primer.md +1 -1
  6. package/docs/page-inventory.json +3 -3
  7. package/docs/page-readings.json +386 -428
  8. package/modules/hall-ui/public/ai-studio.html +4 -4
  9. package/modules/hall-ui/public/atlas.html +4 -4
  10. package/modules/hall-ui/public/blockers.html +4 -4
  11. package/modules/hall-ui/public/board-room.html +4 -4
  12. package/modules/hall-ui/public/builders.js +22 -505
  13. package/modules/hall-ui/public/city.html +4 -4
  14. package/modules/hall-ui/public/collab.html +4 -4
  15. package/modules/hall-ui/public/commands.html +4 -4
  16. package/modules/hall-ui/public/copy-desk.html +4 -4
  17. package/modules/hall-ui/public/craft-mode.js +1 -1
  18. package/modules/hall-ui/public/deploy.html +4 -4
  19. package/modules/hall-ui/public/dom-utils.js +2 -1
  20. package/modules/hall-ui/public/goal-map.html +4 -4
  21. package/modules/hall-ui/public/goals.html +4 -4
  22. package/modules/hall-ui/public/government.html +4 -4
  23. package/modules/hall-ui/public/hall-render.js +23 -524
  24. package/modules/hall-ui/public/hall-widgets.js +11 -109
  25. package/modules/hall-ui/public/idea.html +4 -4
  26. package/modules/hall-ui/public/ideas.html +4 -4
  27. package/modules/hall-ui/public/index.html +6 -19
  28. package/modules/hall-ui/public/index.states.json +0 -33
  29. package/modules/hall-ui/public/market-watch-item.html +4 -4
  30. package/modules/hall-ui/public/market-watch-rules.html +4 -4
  31. package/modules/hall-ui/public/market-watch.html +4 -4
  32. package/modules/hall-ui/public/modules.html +4 -4
  33. package/modules/hall-ui/public/money.html +4 -4
  34. package/modules/hall-ui/public/my-agents.html +4 -4
  35. package/modules/hall-ui/public/palette.js +7 -6
  36. package/modules/hall-ui/public/primer.html +4 -4
  37. package/modules/hall-ui/public/profile-own.js +639 -0
  38. package/modules/hall-ui/public/profile.css +2 -1
  39. package/modules/hall-ui/public/profile.html +48 -5
  40. package/modules/hall-ui/public/profile.js +27 -2
  41. package/modules/hall-ui/public/profile.states.json +18 -0
  42. package/modules/hall-ui/public/project-settings.html +4 -4
  43. package/modules/hall-ui/public/roadmap.html +4 -4
  44. package/modules/hall-ui/public/roster.html +4 -4
  45. package/modules/hall-ui/public/settings.html +4 -4
  46. package/modules/hall-ui/public/shell-trail.js +2 -1
  47. package/modules/hall-ui/public/shell.js +28 -25
  48. package/modules/hall-ui/public/street.html +4 -4
  49. package/modules/hall-ui/public/studio.html +4 -4
  50. package/modules/hall-ui/public/task.html +4 -4
  51. package/modules/hall-ui/public/thinking.html +4 -4
  52. package/modules/hall-ui/public/tweak-editor.html +4 -4
  53. package/modules/hall-ui/public/watch.html +4 -4
  54. package/modules/hall-ui/public/work.html +4 -4
  55. package/package-lock.json +2 -2
  56. package/package.json +1 -1
  57. package/release-notes.json +6 -0
  58. package/src/module-api.js +1 -1
  59. package/tests/curve_controls_delegation.mjs +9 -8
  60. package/tests/curve_kind_overlay.mjs +5 -5
  61. package/tests/hall_acclaim_vote_control.mjs +5 -3
  62. package/tests/hall_audit.mjs +10 -6
  63. package/tests/hall_board_world.mjs +40 -26
  64. package/tests/hall_builders_page_pass.mjs +14 -5
  65. package/tests/hall_home_ships_bounded.mjs +10 -21
  66. package/tests/hall_kit_charts.mjs +3 -2
  67. package/tests/hall_loading.mjs +2 -1
  68. package/tests/hall_nav.mjs +36 -37
  69. package/tests/hall_numbers_page.mjs +100 -0
  70. package/tests/hall_palette.mjs +19 -24
  71. package/tests/hall_profile_world.mjs +7 -2
  72. package/tests/hall_reading_room.mjs +3 -2
  73. package/tests/helpers.mjs +8 -2
  74. package/tests/leaderboard_roles.mjs +1 -1
  75. package/tests/module_contributions.mjs +6 -4
  76. package/tests/nav_permission_atoms.mjs +3 -2
  77. package/tests/page_tweak_artist.mjs +2 -1
  78. package/tests/rank_tier_single_source.mjs +3 -0
  79. package/tests/task_visuals.mjs +3 -1
package/tests/helpers.mjs CHANGED
@@ -542,7 +542,9 @@ const PROFILE_CRAFTS_JS = fs.readFileSync(path.join(ROOT, 'modules/hall-ui/publi
542
542
  // tab each. The default leads with the ideator, so the trail is the first tab
543
543
  // and a suite that reads it needs no switch; switchCraft('engineer') opens the
544
544
  // works and goals, switchCraft('artist') the approved pages.
545
- export function bootProfilePage({ signedIn = true, trail = [], roles = ['ideator', 'engineer'], artistPages = [] } = {}) {
545
+ // `search` is the page's ?query (task 1005050: ?id= decides whose profile it is), and
546
+ // `withOwn` also loads profile-own.js, the "Just you" screen drawn on your own profile.
547
+ export function bootProfilePage({ signedIn = true, trail = [], roles = ['ideator', 'engineer'], artistPages = [], search = '', withOwn = false } = {}) {
546
548
  const els = new Map();
547
549
  const makeEl = () => ({
548
550
  dataset: {}, style: {}, textContent: '', hidden: false, _html: '',
@@ -617,6 +619,8 @@ export function bootProfilePage({ signedIn = true, trail = [], roles = ['ideator
617
619
  return { active: () => current, activate(id) { current = id; onChange(id); }, setCount() {} };
618
620
  },
619
621
  shipVisualThumbHtml: () => '',
622
+ // profile-own.js's peer-recognition pager (task 1005050).
623
+ paginate: (rows) => rows, wirePager() {}, pagerBarHtml: () => '',
620
624
  };
621
625
 
622
626
  const windowObj = {
@@ -638,7 +642,7 @@ export function bootProfilePage({ signedIn = true, trail = [], roles = ['ideator
638
642
  rankLabel: (r) => r,
639
643
  toast() {},
640
644
  },
641
- location: { hostname: 'builders.cloudbongos.com', search: '', pathname: '/profile' },
645
+ location: { hostname: 'builders.cloudbongos.com', search, pathname: '/profile' },
642
646
  localStorage: { getItem: () => null, setItem() {} },
643
647
  addEventListener() {},
644
648
  matchMedia: () => ({ matches: false }),
@@ -655,6 +659,7 @@ export function bootProfilePage({ signedIn = true, trail = [], roles = ['ideator
655
659
  vm.runInContext(PROFILE_ROLES_JS, sandbox, { filename: 'profile-roles.js' });
656
660
  vm.runInContext(IDEA_OBJECTS_JS, sandbox, { filename: 'idea-objects.js' });
657
661
  vm.runInContext(PROFILE_CRAFTS_JS, sandbox, { filename: 'profile-crafts.js' });
662
+ if (withOwn) vm.runInContext(fs.readFileSync(path.join(ROOT, 'modules/hall-ui/public/profile-own.js'), 'utf8'), sandbox, { filename: 'profile-own.js' });
658
663
  vm.runInContext(PROFILE_JS, sandbox, { filename: 'profile.js' });
659
664
 
660
665
  const htmlFor = (mountId) => {
@@ -666,6 +671,7 @@ export function bootProfilePage({ signedIn = true, trail = [], roles = ['ideator
666
671
  htmlFor,
667
672
  switchCraft: (id) => { if (tabsOnChange) tabsOnChange(id); },
668
673
  el: (id) => documentObj.getElementById(id),
674
+ window: windowObj,
669
675
  };
670
676
  }
671
677
 
@@ -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,9 @@ 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
+ const SHELL_SHA = '050dbf4ceac560dc';
102
103
 
103
104
  test('shell.js has not changed without its cache-bust being bumped', () => {
104
105
  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