@bongos/core 1.20.46 → 1.20.48

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 (68) hide show
  1. package/.bongos-core.json +103 -68
  2. package/docs/copy-inventory.md +230 -225
  3. package/docs/copy-registry.json +371 -286
  4. package/docs/module-api-changelog.md +4 -0
  5. package/docs/page-inventory.json +7 -4
  6. package/docs/page-readings.json +248 -249
  7. package/modules/hall-ui/public/atlas.html +1 -1
  8. package/modules/hall-ui/public/blockers.html +1 -1
  9. package/modules/hall-ui/public/board-room.html +1 -1
  10. package/modules/hall-ui/public/bulk-toolbar.js +291 -0
  11. package/modules/hall-ui/public/collab.html +1 -1
  12. package/modules/hall-ui/public/commands.html +1 -1
  13. package/modules/hall-ui/public/copy-desk.html +1 -1
  14. package/modules/hall-ui/public/deploy.html +1 -1
  15. package/modules/hall-ui/public/diagrams.html +1 -1
  16. package/modules/hall-ui/public/drachmae.html +1 -1
  17. package/modules/hall-ui/public/fleet.html +1 -1
  18. package/modules/hall-ui/public/gate.html +1 -1
  19. package/modules/hall-ui/public/goals-page.js +29 -44
  20. package/modules/hall-ui/public/goals-render.js +33 -21
  21. package/modules/hall-ui/public/goals.html +13 -17
  22. package/modules/hall-ui/public/government.html +1 -1
  23. package/modules/hall-ui/public/hall-render.js +3 -0
  24. package/modules/hall-ui/public/idea.html +1 -1
  25. package/modules/hall-ui/public/ideas.html +1 -1
  26. package/modules/hall-ui/public/index.html +1 -1
  27. package/modules/hall-ui/public/modules.html +1 -1
  28. package/modules/hall-ui/public/primer.html +1 -1
  29. package/modules/hall-ui/public/profile.html +1 -1
  30. package/modules/hall-ui/public/project-settings.html +1 -1
  31. package/modules/hall-ui/public/ranks.html +1 -1
  32. package/modules/hall-ui/public/roadmap.html +1 -1
  33. package/modules/hall-ui/public/roster.html +1 -1
  34. package/modules/hall-ui/public/sessions.html +1 -1
  35. package/modules/hall-ui/public/settings.html +1 -1
  36. package/modules/hall-ui/public/shell.js +82 -1
  37. package/modules/hall-ui/public/studio.html +1 -1
  38. package/modules/hall-ui/public/style.css +110 -3
  39. package/modules/hall-ui/public/task.html +1 -1
  40. package/modules/hall-ui/public/thinking.html +1 -1
  41. package/modules/hall-ui/public/tweak-editor.html +1 -1
  42. package/modules/hall-ui/public/watch.html +1 -1
  43. package/modules/hall-ui/public/work-founding.states.json +39 -0
  44. package/modules/hall-ui/public/work.css +4 -66
  45. package/modules/hall-ui/public/work.html +3 -2
  46. package/modules/hall-ui/public/work.js +17 -236
  47. package/modules/hall-ui/records/founding-mode.md +31 -0
  48. package/modules/onboarding/founding-mode.js +185 -0
  49. package/modules/onboarding/port.js +7 -0
  50. package/modules/ui-design/kit/fixtures/me-founding.json +24 -0
  51. package/modules/ui-design/kit/serve.js +3 -1
  52. package/package-lock.json +2 -2
  53. package/package.json +1 -1
  54. package/release-notes.json +12 -0
  55. package/src/bongos/routes/me.js +18 -1
  56. package/src/module-api.js +1 -1
  57. package/tests/bulk_toolbar.mjs +202 -0
  58. package/tests/claim_action.mjs +13 -4
  59. package/tests/founding_mode.mjs +294 -0
  60. package/tests/goal_category_ui.mjs +1 -0
  61. package/tests/goal_criterion_confirm_ui.mjs +2 -0
  62. package/tests/goal_forest_page.mjs +1 -0
  63. package/tests/goal_invite_consent.mjs +1 -1
  64. package/tests/goal_mine_lens.mjs +1 -0
  65. package/tests/hall_board_world.mjs +1 -1
  66. package/tests/hall_mine_lens.mjs +1 -0
  67. package/tests/hall_tweak_editor.mjs +1 -1
  68. package/tests/nav_permission_atoms.mjs +1 -1
@@ -126,6 +126,7 @@ async function renderList() {
126
126
  // task 1003458: the page loads claim-action.js before this script; the stub
127
127
  // must mirror that, or the destructure of window.OTBClaimAction throws.
128
128
  vm.runInContext(read('modules/hall-ui/public/claim-action.js'), sandbox, { filename: 'claim-action.js' });
129
+ vm.runInContext(read('modules/hall-ui/public/bulk-toolbar.js'), sandbox, { filename: 'bulk-toolbar.js' }); // task 1003141
129
130
  vm.runInContext(TASK_LIB_SRC, sandbox, { filename: 'task-lib.js' });
130
131
  vm.runInContext(GOALS_LIB_SRC, sandbox, { filename: 'goals-lib.js' });
131
132
  vm.runInContext(GOAL_FOREST_RENDER_SRC, sandbox, { filename: 'goal-forest-render.js' });
@@ -157,6 +157,8 @@ async function render({ rank = 'metic', goalStatus = 'open', criteria = Object.v
157
157
  // must mirror that, or the destructure of window.OTBClaimAction throws.
158
158
  vm.runInContext(fs.readFileSync(path.join(ROOT, 'modules/hall-ui/public/claim-action.js'), 'utf8'), sandbox, { filename: 'claim-action.js' });
159
159
  vm.runInContext(TASK_LIB_SRC, sandbox, { filename: 'task-lib.js' });
160
+ // task 1003141: goals-render.js builds the shared bulk toolbar at boot.
161
+ vm.runInContext(fs.readFileSync(path.join(ROOT, 'modules/hall-ui/public/bulk-toolbar.js'), 'utf8'), sandbox, { filename: 'bulk-toolbar.js' });
160
162
  vm.runInContext(GOALS_LIB_SRC, sandbox, { filename: 'goals-lib.js' });
161
163
  vm.runInContext(GOAL_FOREST_RENDER_SRC, sandbox, { filename: 'goal-forest-render.js' });
162
164
  vm.runInContext(GOALS_RENDER_SRC, sandbox, { filename: 'goals-render.js' });
@@ -80,6 +80,7 @@ async function boot({ status = 200, fail = false, payload = { nodes: [], edges:
80
80
  // task 1003458: the page loads claim-action.js before this script; the stub
81
81
  // must mirror that, or the destructure of window.OTBClaimAction throws.
82
82
  vm.runInContext(read('claim-action.js'), sandbox, { filename: 'claim-action.js' });
83
+ vm.runInContext(read('bulk-toolbar.js'), sandbox, { filename: 'bulk-toolbar.js' }); // task 1003141
83
84
  vm.runInContext(RENDER_JS, sandbox, { filename: 'goals-render.js' });
84
85
 
85
86
  const state = { current: 7, forest: null, forestError: false };
@@ -171,7 +171,7 @@ function harness({ pendingRequests = [] } = {}) {
171
171
  vm.createContext(sandbox);
172
172
  // task 1003458: claim-action.js sits between task-lib and goals-render on the
173
173
  // real page (goals.html); the stub mirrors that order.
174
- for (const f of ['hall-kit.js', 'task-lib.js', 'claim-action.js', 'goals-lib.js', 'goal-forest-render.js', 'goals-render.js']) {
174
+ for (const f of ['hall-kit.js', 'task-lib.js', 'claim-action.js', 'bulk-toolbar.js', 'goals-lib.js', 'goal-forest-render.js', 'goals-render.js']) {
175
175
  vm.runInContext(read(P + f), sandbox, { filename: f });
176
176
  }
177
177
 
@@ -150,6 +150,7 @@ async function boot({
150
150
  // task 1003458: the page loads claim-action.js before this script; the stub
151
151
  // must mirror that, or the destructure of window.OTBClaimAction throws.
152
152
  vm.runInContext(hall('claim-action.js'), sandbox, { filename: 'claim-action.js' });
153
+ vm.runInContext(hall('bulk-toolbar.js'), sandbox, { filename: 'bulk-toolbar.js' }); // task 1003141
153
154
  vm.runInContext(GOALS_RENDER_SRC, sandbox, { filename: 'goals-render.js' });
154
155
  vm.runInContext(GOALS_PAGE_SRC, sandbox, { filename: 'goals-page.js' });
155
156
  for (let i = 0; i < 30; i += 1) await new Promise((r) => setTimeout(r, 0));
@@ -80,7 +80,7 @@ test('.task IS the panel — --bg-card at the full radius, with no drawn edge at
80
80
  // gets missed: "Git" came back 17x24 after a height-only fix.
81
81
  for (const sel of ['.task__select', '.wip__select']) {
82
82
  test(`${sel} is a 24px target with a 14px drawn box`, () => {
83
- const css = sel.includes('wip') ? workCss : styleCss;
83
+ const css = styleCss; // .wip__select joined .task__select here when the goal board borrowed it (task 1003141)
84
84
  const box = rule(css, sel);
85
85
  assert.ok(box, `${sel} has a rule`);
86
86
  assert.match(box, /width:\s*24px/, 'the HIT AREA is 24px — this is what the floor measures');
@@ -204,6 +204,7 @@ function bootWorkBoard({ signedIn = true, goalsFail = false } = {}) {
204
204
  // task 1003458: the page loads claim-action.js before this script; the stub
205
205
  // must mirror that, or the destructure of window.OTBClaimAction throws.
206
206
  vm.runInContext(fs.readFileSync(path.join(HALL, 'claim-action.js'), 'utf8'), sandbox, { filename: 'claim-action.js' });
207
+ vm.runInContext(fs.readFileSync(path.join(HALL, 'bulk-toolbar.js'), 'utf8'), sandbox, { filename: 'bulk-toolbar.js' }); // task 1003141
207
208
  vm.runInContext(WORK_JS, sandbox, { filename: 'work.js' });
208
209
  (documentObj.listeners.DOMContentLoaded || []).forEach((fn) => fn());
209
210
 
@@ -635,7 +635,7 @@ try {
635
635
  assert.match(HTML, /<body data-page="tweak-editor"[^>]*data-fullscreen-switch/);
636
636
  assert.equal((HTML.match(/<h1\b/g) || []).length, 1);
637
637
  assert.ok(HTML.indexOf('tweak-editor-lib.js') < HTML.indexOf('tweak-editor.js?'), 'the lib loads first');
638
- assert.match(HTML, /shell\.js\?v=2026-09-30-commands/);
638
+ assert.match(HTML, /shell\.js\?v=2026-09-30-founding-commands/);
639
639
  assert.equal(/fonts\.googleapis\.com\/css/.test(HTML), false);
640
640
  for (const id of ['tw-bar', 'tw-counter', 'tw-open', 'tw-open-more', 'tw-divider', 'tw-openwrap', 'tw-open-menu', 'tw-open-tab', 'tw-open-split', 'tw-frame', 'tw-frame-view', 'tw-split-close', 'tw-download', 'tw-upload', 'tw-file', 'tw-submit', 'tw-paper', 'tw-doc', 'tw-notice', 'tw-done', 'tw-take', 'tw-pick', 'tw-picks', 'tw-refused', 'tw-refused-title', 'tw-refused-list', 'tw-refused-next', 'tw-refused-download', 'tw-refused-close']) {
641
641
  assert.ok(new RegExp(`id="${id}"`).test(HTML), `#${id} is in the markup`);
@@ -87,7 +87,7 @@ test('the hall-preview fixture carries every atom /me resolves', () => {
87
87
  // the file and left the query alone, so a returning browser kept the cached copy —
88
88
  // a fix that reaches nobody looks identical to a fix that does not work.
89
89
 
90
- const SHELL_SHA = '4e14115a3737db9a';
90
+ const SHELL_SHA = '3e4f905947bc39d2';
91
91
 
92
92
  test('shell.js has not changed without its cache-bust being bumped', () => {
93
93
  const actual = crypto.createHash('sha256').update(SHELL).digest('hex').slice(0, 16);