@bongos/core 1.21.36 → 1.21.37

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 (49) hide show
  1. package/.bongos-core.json +59 -54
  2. package/docs/copy-inventory.md +8 -8
  3. package/docs/copy-registry.json +8 -8
  4. package/docs/module-api-changelog.md +2 -0
  5. package/docs/page-readings.json +234 -234
  6. package/modules/hall-ui/public/atlas.html +3 -3
  7. package/modules/hall-ui/public/blockers.html +3 -3
  8. package/modules/hall-ui/public/board-room.html +3 -3
  9. package/modules/hall-ui/public/city.html +3 -3
  10. package/modules/hall-ui/public/collab.html +3 -3
  11. package/modules/hall-ui/public/commands.html +3 -3
  12. package/modules/hall-ui/public/copy-desk.html +3 -3
  13. package/modules/hall-ui/public/craft-mode.js +44 -6
  14. package/modules/hall-ui/public/deploy.html +3 -3
  15. package/modules/hall-ui/public/diagrams.html +3 -3
  16. package/modules/hall-ui/public/drachmae.html +3 -3
  17. package/modules/hall-ui/public/fleet.html +3 -3
  18. package/modules/hall-ui/public/gate.html +3 -3
  19. package/modules/hall-ui/public/goal-map.html +3 -3
  20. package/modules/hall-ui/public/goals.html +3 -3
  21. package/modules/hall-ui/public/government.html +3 -3
  22. package/modules/hall-ui/public/idea.html +3 -3
  23. package/modules/hall-ui/public/ideas.html +3 -3
  24. package/modules/hall-ui/public/index.html +3 -3
  25. package/modules/hall-ui/public/modules.html +3 -3
  26. package/modules/hall-ui/public/primer.html +3 -3
  27. package/modules/hall-ui/public/profile.html +3 -3
  28. package/modules/hall-ui/public/project-settings.html +3 -3
  29. package/modules/hall-ui/public/ranks.html +3 -3
  30. package/modules/hall-ui/public/roadmap.html +3 -3
  31. package/modules/hall-ui/public/roster.html +3 -3
  32. package/modules/hall-ui/public/sessions.html +3 -3
  33. package/modules/hall-ui/public/settings.html +3 -3
  34. package/modules/hall-ui/public/street.html +3 -3
  35. package/modules/hall-ui/public/studio.html +3 -3
  36. package/modules/hall-ui/public/style.css +121 -2
  37. package/modules/hall-ui/public/task.html +3 -3
  38. package/modules/hall-ui/public/thinking.html +3 -3
  39. package/modules/hall-ui/public/tweak-editor.html +3 -3
  40. package/modules/hall-ui/public/watch.html +3 -3
  41. package/modules/hall-ui/public/work.html +3 -3
  42. package/modules/hall-ui/records/craft-mode.md +8 -0
  43. package/package-lock.json +2 -2
  44. package/package.json +1 -1
  45. package/release-notes.json +6 -0
  46. package/src/module-api.js +1 -1
  47. package/tests/craft_mode_looks.mjs +170 -0
  48. package/tests/craft_mode_nav.mjs +7 -5
  49. package/tests/hall_tweak_editor.mjs +1 -1
@@ -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-nav"></script>
95
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
96
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
54
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
55
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
64
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
65
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
87
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
88
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
152
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
153
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
58
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
59
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
181
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
182
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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>
@@ -8,8 +8,9 @@
8
8
  //
9
9
  // It is a MODE the existing hall wears, never a second hall (the founding-mode
10
10
  // precedent, docs/design/project-startup-direction.md). The nav follows the mode
11
- // (task 1004493, MODE_TABS below); the tools and colours that follow it are their
12
- // own tasks (1004494 onward). Legacy mode is the hall exactly as it was.
11
+ // (task 1004493, MODE_TABS below), and so does the look (task 1004495, LOOKS
12
+ // below); the mode tools are their own tasks (1004496 onward). Legacy mode is the
13
+ // hall exactly as it was.
13
14
  //
14
15
  // NO MODE is the default and the fallback: a reader who closes the picker, a
15
16
  // browser whose storage throws, a page that opts out — none of them get the
@@ -44,15 +45,15 @@
44
45
 
45
46
  // ---------- each mode's tabs (task 1004493) ----------
46
47
  // A mode shows only the nav items its craft needs, by NAV id (shell.js). ALWAYS
47
- // is the owner's list of tabs no mode may hide (2026-10-01: Builders first), and
48
- // every mode's list is ALWAYS plus its own. A mode with no entry here — Legacy,
48
+ // is the owner's list of tabs no mode may hide (2026-10-01: Builders first;
49
+ // 2026-10-03: Collab and Profile too), and every mode's list is ALWAYS plus its own. A mode with no entry here — Legacy,
49
50
  // or no mode at all — shows every tab, exactly as the hall did before.
50
51
  // Government lives in Governing alone, and Governing is the shortest list.
51
52
  // Hiding is cosmetic: a hidden tab's page still opens by its URL (ADR 0016).
52
- var ALWAYS_TABS = ['roster'];
53
+ var ALWAYS_TABS = ['roster', 'collab', 'profile'];
53
54
  var MODE_TABS = {
54
55
  building: ['home', 'roadmap', 'goals', 'goal-map', 'work', 'blockers', 'thinking', 'studio',
55
- 'standing', 'profile', 'collab',
56
+ 'standing',
56
57
  'primer', 'ranks', 'economy', 'commands', 'diagrams', 'atlas', 'modules', 'apidocs'],
57
58
  artistry: ['studio', 'goals', 'thinking'],
58
59
  ideating: ['goal-map', 'thinking', 'goals'],
@@ -91,6 +92,40 @@
91
92
  else head.removeAttribute('data-craft-off');
92
93
  }
93
94
  }
95
+ // ---------- each mode's look (task 1004495) ----------
96
+ // Artistry, Ideating and Governing each wear a look: the colour tokens in
97
+ // style.css (keyed on html[data-craft]), plus two things only this script can
98
+ // draw — the mode's words beside the page title, and its door's scene framed
99
+ // under the brand (artHtml, the picker's own art, so the two never drift).
100
+ // Building, Legacy and no mode have no entry here and wear nothing.
101
+ var LOOKS = { artistry: 'the studio · night', ideating: 'the sky', governing: 'the city' };
102
+ function remove(el) { if (el && el.parentNode) el.parentNode.removeChild(el); }
103
+ function applyLook(mode) {
104
+ var look = Object.prototype.hasOwnProperty.call(LOOKS, mode) ? LOOKS[mode] : null;
105
+ var plate = document.getElementById('craft-plate');
106
+ if (plate && plate.getAttribute('data-plate') !== (look ? mode : null)) { remove(plate); plate = null; }
107
+ var nav = document.getElementById('app-sidebar');
108
+ var brand = look && nav && nav.querySelector ? nav.querySelector('.app-sidebar__brand') : null;
109
+ if (!plate && brand && brand.parentNode) {
110
+ plate = document.createElement('div');
111
+ plate.id = 'craft-plate';
112
+ plate.className = 'craft-plate';
113
+ plate.setAttribute('data-plate', mode);
114
+ plate.setAttribute('aria-hidden', 'true');
115
+ plate.innerHTML = artHtml(mode);
116
+ brand.parentNode.insertBefore(plate, brand.nextSibling);
117
+ }
118
+ var mark = document.getElementById('craft-eyebrow');
119
+ if (!look) { remove(mark); return; }
120
+ var title = document.getElementById('topbar-title');
121
+ if (!mark && title && title.parentNode) {
122
+ mark = document.createElement('span');
123
+ mark.id = 'craft-eyebrow';
124
+ mark.className = 'craft-eyebrow';
125
+ title.parentNode.insertBefore(mark, title.nextSibling);
126
+ }
127
+ if (mark) mark.textContent = look;
128
+ }
94
129
  // sessionStorage: this session's mode, or that the picker was already shown.
95
130
  var MODE_KEY = 'hall-craft';
96
131
  var ASKED_KEY = 'hall-craft-asked';
@@ -138,6 +173,7 @@
138
173
  var sw = document.getElementById('craft-switch');
139
174
  if (sw) sw.classList.toggle('craft-switch--unset', !mode);
140
175
  applyNav();
176
+ applyLook(mode);
141
177
  try { document.dispatchEvent(new CustomEvent('otb:craft', { detail: { mode: mode } })); } catch (_) { /* old engine */ }
142
178
  }
143
179
 
@@ -344,6 +380,8 @@
344
380
  ALWAYS_TABS: ALWAYS_TABS.slice(),
345
381
  tabsFor: tabsFor,
346
382
  applyNav: applyNav,
383
+ LOOKS: LOOKS,
384
+ artHtml: artHtml,
347
385
  switchHtml: switchHtml,
348
386
  mount: mount,
349
387
  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-nav"></script>
78
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
79
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
101
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
102
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
102
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
103
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
58
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
59
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
81
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
82
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
141
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
142
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
234
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
235
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
138
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
139
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
54
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
55
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav"></script>
229
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
230
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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-nav" defer></script>
110
- <script src="/builders/craft-mode.js?v=2026-10-03-nav" defer></script>
111
- <script src="/builders/shell.js?v=2026-10-03-nav" defer></script>
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>
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-nav"></script>
105
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
106
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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>
@@ -115,9 +115,9 @@
115
115
 
116
116
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
117
117
 
118
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
119
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
120
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
118
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
119
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
120
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
121
121
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
122
122
  <script src="/builders/palette.js" defer></script>
123
123
  <!-- the shared markdown reader (window.OTBMdReader) — primer.js renders through
@@ -206,9 +206,9 @@
206
206
 
207
207
  <!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
208
208
  chrome exists before the page script runs. -->
209
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
210
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
211
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
209
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
210
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
211
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
212
212
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
213
213
  <script src="/builders/palette.js" defer></script>
214
214
  <!-- shared frontend toolkit (window.OTB) — loaded before profile.js, which pulls from it. -->
@@ -58,9 +58,9 @@
58
58
 
59
59
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
60
60
 
61
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
62
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
63
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
61
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
62
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
63
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
64
64
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
65
65
  <script src="/builders/palette.js" defer></script>
66
66
  <script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
@@ -77,9 +77,9 @@
77
77
 
78
78
  <!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
79
79
  chrome exists before the page script runs. -->
80
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
81
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
82
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
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>
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
  <!-- shared frontend toolkit (window.OTB) — loaded before ranks.js, which pulls from it. -->
@@ -41,9 +41,9 @@
41
41
 
42
42
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
43
43
 
44
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
45
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
46
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
44
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
45
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
46
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
47
47
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
48
48
  <script src="/builders/palette.js" defer></script>
49
49
  <script src="/builders/dom-utils.js?v=2026-06-14-domutils"></script>
@@ -53,9 +53,9 @@
53
53
 
54
54
  <!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
55
55
  chrome exists before the page script runs. -->
56
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
57
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
58
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
56
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
57
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
58
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
59
59
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
60
60
  <script src="/builders/palette.js" defer></script>
61
61
  <!-- shared frontend toolkit (window.OTB — rank labels, number formats) + the
@@ -111,9 +111,9 @@
111
111
 
112
112
  <!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
113
113
  chrome exists before the page script runs. -->
114
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
115
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
116
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
114
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
115
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
116
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
117
117
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
118
118
  <script src="/builders/palette.js" defer></script>
119
119
  <!-- shared frontend toolkit (window.OTB) — loaded BEFORE sessions.js so it can pull from it. -->
@@ -435,9 +435,9 @@
435
435
 
436
436
  <!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
437
437
  chrome exists before the page scripts run. -->
438
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
439
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
440
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
438
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
439
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
440
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
441
441
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
442
442
  <script src="/builders/palette.js" defer></script>
443
443
  <!-- shared frontend toolkit (window.OTB) — loaded before consuming IIFEs. -->
@@ -208,9 +208,9 @@
208
208
  </div>
209
209
  </div>
210
210
 
211
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
212
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
213
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
211
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
212
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
213
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
214
214
  <script src="/builders/palette.js" defer></script>
215
215
  <script src="/builders/city-draw.js?v=2026-10-02-street1"></script>
216
216
  <script src="/builders/street-draw.js?v=2026-10-02-street1"></script>
@@ -176,9 +176,9 @@
176
176
 
177
177
  <div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
178
178
 
179
- <script src="/builders/shell-trail.js?v=2026-10-03-nav"></script>
180
- <script src="/builders/craft-mode.js?v=2026-10-03-nav"></script>
181
- <script src="/builders/shell.js?v=2026-10-03-nav"></script>
179
+ <script src="/builders/shell-trail.js?v=2026-10-03-looks"></script>
180
+ <script src="/builders/craft-mode.js?v=2026-10-03-looks"></script>
181
+ <script src="/builders/shell.js?v=2026-10-03-looks"></script>
182
182
  <script src="/builders/palette.js" defer></script>
183
183
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
184
184
  <!-- The kit, for its ONE renderer: the full-size ship-time visual figure