@bongos/core 1.21.40 → 1.21.41

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 (72) hide show
  1. package/.bongos-core.json +128 -68
  2. package/clients/bongos-client/README.md +1 -1
  3. package/clients/bongos-client/bongos-client.global.js +16 -0
  4. package/clients/bongos-client/index.cjs +16 -0
  5. package/clients/bongos-client/index.d.ts +25 -0
  6. package/clients/bongos-client/index.mjs +16 -0
  7. package/docs/api/openapi.json +492 -3
  8. package/docs/api-reference.md +13 -1
  9. package/docs/copy-inventory.md +29 -12
  10. package/docs/copy-registry.json +177 -14
  11. package/docs/file-map.md +1 -0
  12. package/docs/module-api-changelog.md +2 -0
  13. package/docs/page-readings.json +229 -229
  14. package/modules/hall-ui/public/atlas.html +3 -3
  15. package/modules/hall-ui/public/blockers.html +3 -3
  16. package/modules/hall-ui/public/board-room.html +3 -3
  17. package/modules/hall-ui/public/city.html +3 -3
  18. package/modules/hall-ui/public/collab.html +3 -3
  19. package/modules/hall-ui/public/commands.html +3 -3
  20. package/modules/hall-ui/public/copy-desk.html +3 -3
  21. package/modules/hall-ui/public/craft-mode.js +62 -0
  22. package/modules/hall-ui/public/deploy.html +3 -3
  23. package/modules/hall-ui/public/diagrams.html +3 -3
  24. package/modules/hall-ui/public/drachmae.html +3 -3
  25. package/modules/hall-ui/public/fleet.html +3 -3
  26. package/modules/hall-ui/public/gate.html +3 -3
  27. package/modules/hall-ui/public/goal-map.html +3 -3
  28. package/modules/hall-ui/public/goals.html +3 -3
  29. package/modules/hall-ui/public/government.html +3 -3
  30. package/modules/hall-ui/public/idea.html +3 -3
  31. package/modules/hall-ui/public/ideas.html +3 -3
  32. package/modules/hall-ui/public/index.html +3 -3
  33. package/modules/hall-ui/public/modules.html +3 -3
  34. package/modules/hall-ui/public/page-notes.js +320 -0
  35. package/modules/hall-ui/public/primer.html +3 -3
  36. package/modules/hall-ui/public/profile.html +3 -3
  37. package/modules/hall-ui/public/project-settings.html +3 -3
  38. package/modules/hall-ui/public/ranks.html +3 -3
  39. package/modules/hall-ui/public/roadmap.html +3 -3
  40. package/modules/hall-ui/public/roster.html +3 -3
  41. package/modules/hall-ui/public/sessions.html +3 -3
  42. package/modules/hall-ui/public/settings.html +3 -3
  43. package/modules/hall-ui/public/street.html +3 -3
  44. package/modules/hall-ui/public/studio.html +3 -3
  45. package/modules/hall-ui/public/style.css +144 -0
  46. package/modules/hall-ui/public/task.html +3 -3
  47. package/modules/hall-ui/public/thinking.html +3 -3
  48. package/modules/hall-ui/public/tweak-editor.html +3 -3
  49. package/modules/hall-ui/public/watch.html +3 -3
  50. package/modules/hall-ui/public/work.html +3 -3
  51. package/modules/hall-ui/records/page-notes.md +16 -0
  52. package/modules/page-notes/CLAUDE.md +15 -0
  53. package/modules/page-notes/db.js +147 -0
  54. package/modules/page-notes/migrations/page_notes_001_notes.sql +68 -0
  55. package/modules/page-notes/module.json +13 -0
  56. package/modules/page-notes/notes.js +174 -0
  57. package/modules/page-notes/routes/page-notes.js +172 -0
  58. package/modules/page-notes/split.js +68 -0
  59. package/modules/provisioning/starter-bundles.js +1 -0
  60. package/modules/ui-design/kit/serve.js +1 -1
  61. package/package-lock.json +2 -2
  62. package/package.json +1 -1
  63. package/release-notes.json +6 -0
  64. package/scripts/gds/publish-manifest.js +1 -0
  65. package/src/bongos/module-scope-map.js +4 -0
  66. package/src/bongos/routes.js +4 -1
  67. package/src/module-api.js +1 -1
  68. package/tests/hall_tweak_editor.mjs +1 -1
  69. package/tests/module_loader.mjs +1 -1
  70. package/tests/page_notes.mjs +289 -0
  71. package/tests/page_notes_db.mjs +140 -0
  72. package/tests/page_notes_panel.mjs +145 -0
@@ -91,9 +91,9 @@
91
91
 
92
92
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
93
93
 
94
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
95
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
96
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
94
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
95
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
96
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
97
97
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
98
98
  <script src="/builders/palette.js" defer></script>
99
99
  <script src="/builders/atlas.js?v=2026-09-02-index" defer></script>
@@ -50,9 +50,9 @@
50
50
 
51
51
  <!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
52
52
  chrome exists before the page script runs. -->
53
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
54
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
55
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
53
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
54
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
55
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
56
56
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
57
57
  <script src="/builders/palette.js" defer></script>
58
58
  <!-- shared frontend toolkit (window.OTB — rank labels, number formats) + the
@@ -60,9 +60,9 @@
60
60
 
61
61
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
62
62
 
63
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
64
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
65
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
63
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
64
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
65
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
66
66
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
67
67
  <script src="/builders/palette.js" defer></script>
68
68
  <script src="/builders/dom-utils.js?v=2026-06-16-board"></script>
@@ -83,9 +83,9 @@
83
83
  </div>
84
84
  </div>
85
85
 
86
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
87
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
88
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
86
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
87
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
88
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
89
89
  <script src="/builders/palette.js" defer></script>
90
90
  <script src="/builders/city-draw.js?v=2026-10-02-city1"></script>
91
91
  <script src="/builders/city.js?v=2026-10-02-city1"></script>
@@ -148,9 +148,9 @@
148
148
 
149
149
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
150
150
 
151
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
152
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
153
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
151
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
152
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
153
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
154
154
  <script src="/builders/palette.js" defer></script>
155
155
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
156
156
  <script src="/builders/collab-lib.js?v=2026-09-24-archive"></script>
@@ -54,9 +54,9 @@
54
54
 
55
55
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
56
56
 
57
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
58
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
59
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
57
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
58
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
59
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
60
60
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
61
61
  <script src="/builders/palette.js" defer></script>
62
62
  <script src="/builders/dom-utils.js?v=2026-06-14-domutils"></script>
@@ -177,9 +177,9 @@
177
177
 
178
178
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
179
179
 
180
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
181
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
182
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
180
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
181
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
182
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
183
183
  <script src="/builders/palette.js" defer></script>
184
184
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
185
185
  <script src="/builders/hall-kit.js"></script>
@@ -126,6 +126,61 @@
126
126
  }
127
127
  if (mark) mark.textContent = look;
128
128
  }
129
+
130
+ // ---------- each mode's tools (task 1004496 onward) ----------
131
+ // A tool is a top-bar button beside the switch, shown only in its mode. Its
132
+ // code is NOT on every page: pressing it loads the tool's own script once
133
+ // (same ?v as this file) and calls its open(). Cosmetic, like the mode: the
134
+ // routes behind a tool hold its walls (ADR 0016).
135
+ var TOOLS = {
136
+ artistry: [{ id: 'palette', icon: 'artistry', short: 'Feedback', label: 'Write feedback on this page', script: 'page-notes.js', api: 'OTBPageNotes' }],
137
+ };
138
+ var SCRIPT_V = (function () {
139
+ var src = document.currentScript && document.currentScript.src;
140
+ var m = src && /[?&]v=([^&#]+)/.exec(src);
141
+ return m ? m[1] : '';
142
+ })();
143
+ var loading = {};
144
+ function loadTool(tool) {
145
+ if (window[tool.api]) return Promise.resolve(window[tool.api]);
146
+ if (loading[tool.script]) return loading[tool.script];
147
+ loading[tool.script] = new Promise(function (resolve, reject) {
148
+ var tag = document.createElement('script');
149
+ tag.src = '/builders/' + tool.script + (SCRIPT_V ? '?v=' + SCRIPT_V : '');
150
+ tag.onload = function () { if (window[tool.api]) resolve(window[tool.api]); else reject(new Error('tool did not load')); };
151
+ tag.onerror = function () { delete loading[tool.script]; reject(new Error('tool did not load')); };
152
+ document.head.appendChild(tag);
153
+ });
154
+ return loading[tool.script];
155
+ }
156
+ function toolFor(id) {
157
+ for (var m in TOOLS) for (var i = 0; i < TOOLS[m].length; i++) if (TOOLS[m][i].id === id) return TOOLS[m][i];
158
+ return null;
159
+ }
160
+ function applyTools(mode) {
161
+ var sw = document.getElementById('craft-switch');
162
+ var own = Object.prototype.hasOwnProperty.call(TOOLS, mode) ? TOOLS[mode] : [];
163
+ var old = document.querySelectorAll ? document.querySelectorAll('[data-craft-tool]') : [];
164
+ for (var i = old.length - 1; i >= 0; i--) {
165
+ if (!own.some(function (t) { return t.id === old[i].getAttribute('data-craft-tool'); })) remove(old[i]);
166
+ }
167
+ if (!sw || !sw.parentNode) return;
168
+ own.forEach(function (t) {
169
+ if (document.getElementById('craft-tool-' + t.id)) return;
170
+ var b = document.createElement('button');
171
+ b.type = 'button';
172
+ b.id = 'craft-tool-' + t.id;
173
+ b.className = 'craft-tool craft-tool--' + t.id;
174
+ b.setAttribute('data-craft-tool', t.id);
175
+ b.setAttribute('aria-label', t.label);
176
+ b.title = t.label;
177
+ b.innerHTML = icon(t.icon, 'craft-tool__icon') + '<span class="craft-tool__label">' + esc(t.short) + '</span>';
178
+ b.addEventListener('click', function () {
179
+ loadTool(t).then(function (api) { api.open(); }, function () { b.setAttribute('aria-disabled', 'true'); });
180
+ });
181
+ sw.parentNode.insertBefore(b, sw);
182
+ });
183
+ }
129
184
  // sessionStorage: this session's mode, or that the picker was already shown.
130
185
  var MODE_KEY = 'hall-craft';
131
186
  var ASKED_KEY = 'hall-craft-asked';
@@ -174,6 +229,7 @@
174
229
  if (sw) sw.classList.toggle('craft-switch--unset', !mode);
175
230
  applyNav();
176
231
  applyLook(mode);
232
+ applyTools(mode);
177
233
  try { document.dispatchEvent(new CustomEvent('otb:craft', { detail: { mode: mode } })); } catch (_) { /* old engine */ }
178
234
  }
179
235
 
@@ -363,6 +419,11 @@
363
419
  mounted = true;
364
420
  var sw = document.getElementById('craft-switch');
365
421
  if (sw) sw.addEventListener('click', onSwitchClick);
422
+ // A link to a page's feedback doc (?note=N, every idea a doc became carries
423
+ // one) opens it on arrival, in any mode.
424
+ var note = /[?&]note=([1-9]\d{0,17})(?:&|$)/.exec((window.location && window.location.search) || '');
425
+ var notes = toolFor('palette');
426
+ if (note && notes) loadTool(notes).then(function (api) { api.openNote(note[1]); }, function () { /* the page still works */ });
366
427
  }
367
428
  // Once a signed-in builder is known, ask — unless this session already has a
368
429
  // mode, already saw the picker, or the page opts out.
@@ -382,6 +443,7 @@
382
443
  applyNav: applyNav,
383
444
  LOOKS: LOOKS,
384
445
  artHtml: artHtml,
446
+ TOOLS: TOOLS,
385
447
  switchHtml: switchHtml,
386
448
  mount: mount,
387
449
  onAccess: onAccess,
@@ -74,9 +74,9 @@
74
74
 
75
75
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
76
76
 
77
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
78
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
79
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
77
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
78
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
79
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
80
80
  <script src="/builders/palette.js" defer></script>
81
81
  <script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
82
82
  <script src="/builders/hall-kit.js"></script>
@@ -97,9 +97,9 @@
97
97
 
98
98
  <!-- The app shell (sidebar + top bar + footer). Dependency-free; runs at parse
99
99
  time so the chrome exists before the deferred page scripts execute. -->
100
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
101
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
102
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
100
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
101
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
102
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
103
103
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
104
104
  <script src="/builders/palette.js" defer></script>
105
105
  <script src="/builders/diagram-viewer.js?v=2026-06-14-diagviewer-1" defer></script>
@@ -98,9 +98,9 @@
98
98
 
99
99
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
100
100
 
101
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
102
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
103
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
101
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
102
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
103
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
104
104
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
105
105
  <script src="/builders/palette.js" defer></script>
106
106
  <script src="/builders/md-reader.js?v=2026-09-02-mdreader-2"></script>
@@ -54,9 +54,9 @@
54
54
 
55
55
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
56
56
 
57
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
58
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
59
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
57
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
58
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
59
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
60
60
  <script src="/builders/palette.js" defer></script>
61
61
  <script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
62
62
  <script src="/builders/hall-kit.js"></script>
@@ -77,9 +77,9 @@
77
77
  <div id="gate-modal-root"></div>
78
78
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
79
79
 
80
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
81
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
82
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
80
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
81
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
82
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
83
83
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
84
84
  <script src="/builders/palette.js" defer></script>
85
85
  <script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
@@ -137,9 +137,9 @@
137
137
  </div>
138
138
  </div>
139
139
 
140
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
141
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
142
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
140
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
141
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
142
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
143
143
  <script src="/builders/palette.js" defer></script>
144
144
 
145
145
  <script src="/builders/idea-objects.js?v=2026-09-27-split"></script>
@@ -230,9 +230,9 @@
230
230
 
231
231
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
232
232
 
233
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
234
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
235
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
233
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
234
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
235
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
236
236
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
237
237
  <script src="/builders/palette.js" defer></script>
238
238
  <script src="/builders/dom-utils.js?v=2026-06-14-domutils"></script>
@@ -134,9 +134,9 @@
134
134
 
135
135
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
136
136
 
137
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
138
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
139
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
137
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
138
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
139
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
140
140
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
141
141
  <script src="/builders/palette.js" defer></script>
142
142
  <script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
@@ -50,9 +50,9 @@
50
50
 
51
51
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
52
52
 
53
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
54
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
55
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
53
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
54
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
55
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
56
56
  <script src="/builders/palette.js" defer></script>
57
57
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib" defer></script>
58
58
  <!-- task-detail.js still owns the #/idea/N and #/blocker/N overlay, so a ref
@@ -225,9 +225,9 @@
225
225
 
226
226
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
227
227
 
228
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
229
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
230
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
228
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
229
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
230
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
231
231
  <script src="/builders/palette.js" defer></script>
232
232
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
233
233
  <!-- task 1003069 (R08) — the quick-filing form's routed result links a task
@@ -106,9 +106,9 @@
106
106
  <script src="/builders/brand-apply.js?v=2026-06-27-r75" defer></script>
107
107
  <!-- The app shell (sidebar + top bar + view router). Dependency-free; loaded
108
108
  BEFORE builders.js so the chrome ids exist when events are wired. -->
109
- <script src="/builders/shell-trail.js?v=2026-10-03-looks" defer></script>
110
- <script src="/builders/craft-mode.js?v=2026-10-03-looks" defer></script>
111
- <script src="/builders/shell.js?v=2026-10-03-looks" defer></script>
109
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette" defer></script>
110
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette" defer></script>
111
+ <script src="/builders/shell.js?v=2026-10-04-palette" defer></script>
112
112
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
113
113
  <script src="/builders/palette.js" defer></script>
114
114
  <!-- task 2166: the shared component kit (window.OTBKit) — pager/ledger/rail.
@@ -101,9 +101,9 @@
101
101
 
102
102
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
103
103
 
104
- <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
105
- <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
106
- <script src="/builders/shell.js?v=2026-10-03-looks"></script>
104
+ <script src="/builders/shell-trail.js?v=2026-10-04-palette"></script>
105
+ <script src="/builders/craft-mode.js?v=2026-10-04-palette"></script>
106
+ <script src="/builders/shell.js?v=2026-10-04-palette"></script>
107
107
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
108
108
  <script src="/builders/palette.js" defer></script>
109
109
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>