@bongos/core 1.24.73 → 1.24.74
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.
- package/.bongos-core.json +67 -57
- package/docs/copy-inventory.md +1 -1
- package/docs/copy-registry.json +1 -1
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-inventory.json +33 -0
- package/docs/page-readings.json +36 -36
- package/modules/hall-ui/public/ai-studio.html +2 -1
- package/modules/hall-ui/public/atlas.html +2 -1
- package/modules/hall-ui/public/blockers.html +2 -1
- package/modules/hall-ui/public/board-room.html +2 -1
- package/modules/hall-ui/public/city.html +2 -1
- package/modules/hall-ui/public/collab.html +2 -1
- package/modules/hall-ui/public/commands.html +2 -1
- package/modules/hall-ui/public/copy-desk.html +2 -1
- package/modules/hall-ui/public/deploy.html +2 -1
- package/modules/hall-ui/public/goal-map.html +2 -1
- package/modules/hall-ui/public/goals.html +2 -1
- package/modules/hall-ui/public/government.html +2 -1
- package/modules/hall-ui/public/idea.html +2 -1
- package/modules/hall-ui/public/ideas.html +2 -1
- package/modules/hall-ui/public/index.html +2 -1
- package/modules/hall-ui/public/market-watch-item.html +2 -1
- package/modules/hall-ui/public/market-watch-rules.html +2 -1
- package/modules/hall-ui/public/market-watch.html +2 -1
- package/modules/hall-ui/public/modules.html +2 -1
- package/modules/hall-ui/public/money.html +2 -1
- package/modules/hall-ui/public/my-agents.html +2 -1
- package/modules/hall-ui/public/primer.html +2 -1
- package/modules/hall-ui/public/profile.html +2 -1
- package/modules/hall-ui/public/project-settings.html +2 -1
- package/modules/hall-ui/public/roster.html +2 -1
- package/modules/hall-ui/public/settings.html +2 -1
- package/modules/hall-ui/public/shell-game.js +50 -0
- package/modules/hall-ui/public/shell.js +11 -11
- package/modules/hall-ui/public/street.html +2 -1
- package/modules/hall-ui/public/studio.html +2 -1
- package/modules/hall-ui/public/task.html +2 -1
- package/modules/hall-ui/public/thinking.html +2 -1
- package/modules/hall-ui/public/tweak-editor.html +2 -1
- package/modules/hall-ui/public/watch.html +2 -1
- package/modules/hall-ui/public/work.html +2 -1
- package/modules/hall-ui/records/game-mode.md +20 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/src/module-api.js +1 -1
- package/tests/goal_map_page.mjs +2 -2
- package/tests/hall_city.mjs +1 -1
- package/tests/hall_fullscreen.mjs +101 -0
- package/tests/hall_my_agents.mjs +1 -1
- package/tests/hall_street.mjs +1 -1
- package/tests/nav_permission_atoms.mjs +1 -1
|
@@ -160,9 +160,10 @@
|
|
|
160
160
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
161
161
|
|
|
162
162
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
163
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
163
164
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
164
165
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
165
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
166
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
166
167
|
<script src="/builders/hall-dialog.js"></script>
|
|
167
168
|
<script src="/builders/palette.js" defer></script>
|
|
168
169
|
<script src="/builders/collab-lib.js?v=2026-09-24-archive"></script>
|
|
@@ -52,9 +52,10 @@
|
|
|
52
52
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
53
53
|
|
|
54
54
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
55
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
55
56
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
56
57
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
57
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
58
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
58
59
|
<script src="/builders/hall-dialog.js"></script>
|
|
59
60
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
60
61
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -178,9 +178,10 @@
|
|
|
178
178
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
179
179
|
|
|
180
180
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
181
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
181
182
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
182
183
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
183
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
184
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
184
185
|
<script src="/builders/hall-dialog.js"></script>
|
|
185
186
|
<script src="/builders/palette.js" defer></script>
|
|
186
187
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -79,9 +79,10 @@
|
|
|
79
79
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
80
80
|
|
|
81
81
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
82
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
82
83
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
83
84
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
84
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
85
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
85
86
|
<script src="/builders/hall-dialog.js"></script>
|
|
86
87
|
<script src="/builders/palette.js" defer></script>
|
|
87
88
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -138,9 +138,10 @@
|
|
|
138
138
|
</div>
|
|
139
139
|
|
|
140
140
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
141
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
141
142
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
142
143
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
143
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
144
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
144
145
|
<script src="/builders/hall-dialog.js"></script>
|
|
145
146
|
<script src="/builders/palette.js" defer></script>
|
|
146
147
|
|
|
@@ -251,9 +251,10 @@
|
|
|
251
251
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
252
252
|
|
|
253
253
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
254
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
254
255
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
255
256
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
256
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
257
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
257
258
|
<script src="/builders/hall-dialog.js"></script>
|
|
258
259
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
259
260
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -155,9 +155,10 @@
|
|
|
155
155
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
156
156
|
|
|
157
157
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
158
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
158
159
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
159
160
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
160
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
161
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
161
162
|
<script src="/builders/hall-dialog.js"></script>
|
|
162
163
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
163
164
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -51,9 +51,10 @@
|
|
|
51
51
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
52
52
|
|
|
53
53
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
54
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
54
55
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
55
56
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
56
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
57
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
57
58
|
<script src="/builders/hall-dialog.js"></script>
|
|
58
59
|
<script src="/builders/palette.js" defer></script>
|
|
59
60
|
<!-- task-detail.js still owns the #/idea/N and #/blocker/N overlay, so a ref
|
|
@@ -226,9 +226,10 @@
|
|
|
226
226
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
227
227
|
|
|
228
228
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
229
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
229
230
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
230
231
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
231
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
232
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
232
233
|
<script src="/builders/hall-dialog.js"></script>
|
|
233
234
|
<script src="/builders/palette.js" defer></script>
|
|
234
235
|
<!-- task 1004727: the ONE karma vote control every task/idea list renders -->
|
|
@@ -107,9 +107,10 @@
|
|
|
107
107
|
<!-- task 1004785: the first-visit-of-the-day welcome (the tower). Before shell.js, which asks it
|
|
108
108
|
before the craft picker so the two never stack. Home only. -->
|
|
109
109
|
<script src="/builders/welcome-boot.js?v=2026-11-07-brand-mark" defer></script>
|
|
110
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode" defer></script>
|
|
110
111
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers" defer></script>
|
|
111
112
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals" defer></script>
|
|
112
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
113
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode" defer></script>
|
|
113
114
|
<script src="/builders/hall-dialog.js" defer></script>
|
|
114
115
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
115
116
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -72,9 +72,10 @@
|
|
|
72
72
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
73
73
|
|
|
74
74
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
75
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
75
76
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
76
77
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
77
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
78
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
78
79
|
<script src="/builders/hall-dialog.js"></script>
|
|
79
80
|
<script src="/builders/palette.js" defer></script>
|
|
80
81
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -41,9 +41,10 @@
|
|
|
41
41
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
42
42
|
|
|
43
43
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
44
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
44
45
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
45
46
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
46
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
47
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
47
48
|
<script src="/builders/hall-dialog.js"></script>
|
|
48
49
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
49
50
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -186,9 +186,10 @@
|
|
|
186
186
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
187
187
|
|
|
188
188
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
189
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
189
190
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
190
191
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
191
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
192
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
192
193
|
<script src="/builders/hall-dialog.js"></script>
|
|
193
194
|
<script src="/builders/palette.js" defer></script>
|
|
194
195
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -126,9 +126,10 @@
|
|
|
126
126
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
127
127
|
|
|
128
128
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
129
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
129
130
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
130
131
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
131
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
132
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
132
133
|
<script src="/builders/hall-dialog.js"></script>
|
|
133
134
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
134
135
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -80,9 +80,10 @@
|
|
|
80
80
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
81
81
|
|
|
82
82
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
83
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
83
84
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
84
85
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
85
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
86
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
86
87
|
<script src="/builders/hall-dialog.js"></script>
|
|
87
88
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
88
89
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -82,9 +82,10 @@
|
|
|
82
82
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
83
83
|
|
|
84
84
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
85
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
85
86
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
86
87
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
87
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
88
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
88
89
|
<script src="/builders/hall-dialog.js"></script>
|
|
89
90
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
90
91
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -111,9 +111,10 @@
|
|
|
111
111
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
112
112
|
|
|
113
113
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
114
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
114
115
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
115
116
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
116
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
117
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
117
118
|
<script src="/builders/hall-dialog.js"></script>
|
|
118
119
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
119
120
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -247,9 +247,10 @@
|
|
|
247
247
|
<!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
|
|
248
248
|
chrome exists before the page script runs. -->
|
|
249
249
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
250
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
250
251
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
251
252
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
252
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
253
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
253
254
|
<script src="/builders/hall-dialog.js"></script>
|
|
254
255
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
255
256
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -75,9 +75,10 @@
|
|
|
75
75
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
76
76
|
|
|
77
77
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
78
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
78
79
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
79
80
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
80
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
81
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
81
82
|
<script src="/builders/hall-dialog.js"></script>
|
|
82
83
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
83
84
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -57,9 +57,10 @@
|
|
|
57
57
|
<!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
|
|
58
58
|
chrome exists before the page script runs. -->
|
|
59
59
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
60
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
60
61
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
61
62
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
62
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
63
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
63
64
|
<script src="/builders/hall-dialog.js"></script>
|
|
64
65
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
65
66
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -392,9 +392,10 @@
|
|
|
392
392
|
<!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
|
|
393
393
|
chrome exists before the page scripts run. -->
|
|
394
394
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
395
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
395
396
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
396
397
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
397
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
398
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
398
399
|
<script src="/builders/hall-dialog.js"></script>
|
|
399
400
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
400
401
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// shell-game.js — game mode: the hall-wide half of the shell's full-screen switch
|
|
2
|
+
// (task 1005142, BONGOS-V3 R02, goal 1000141; docs/specs/bongos-v3-game-conversion.md
|
|
3
|
+
// §Reuse, do not rebuild). The switch itself is shell.js's and stays there: this
|
|
4
|
+
// file only answers ONE question for it — is the hall in game mode? — and when it
|
|
5
|
+
// is, every page opens in full screen (no sidebar, no top bar, no foot) whatever
|
|
6
|
+
// that page remembers on its own. Nothing here hides anything: shell.js does, with
|
|
7
|
+
// the same html[data-fullscreen="on"] state, the same corner button and the same
|
|
8
|
+
// Escape hand-off (a page listener that calls preventDefault keeps the press).
|
|
9
|
+
//
|
|
10
|
+
// The mode is one localStorage key (`hall-game`), so it follows the browser across
|
|
11
|
+
// every hall page, and one attribute, html[data-game="on"], for a sheet or script
|
|
12
|
+
// that wants to read it. Leaving full screen in game mode (the button, Escape)
|
|
13
|
+
// brings the bars back for THAT page load only: the next page opens without them
|
|
14
|
+
// again, and a page's own remembered choice is never overwritten. `?game=on` /
|
|
15
|
+
// `?game=off` on any hall URL sets it by hand until the start screen does (R03).
|
|
16
|
+
// Loaded BEFORE shell.js on every hall page; a page without this file is simply
|
|
17
|
+
// never in game mode.
|
|
18
|
+
(function () {
|
|
19
|
+
'use strict';
|
|
20
|
+
var KEY = 'hall-game';
|
|
21
|
+
var HINT_KEY = 'hall-game-hint';
|
|
22
|
+
function read(store, key) { try { return window[store].getItem(key); } catch (_) { return null; } }
|
|
23
|
+
function write(store, key, value) { try { window[store].setItem(key, value); } catch (_) { /* private mode */ } }
|
|
24
|
+
function on() { return read('localStorage', KEY) === 'on'; }
|
|
25
|
+
function stamp() {
|
|
26
|
+
var root = document.documentElement;
|
|
27
|
+
if (on()) root.dataset.game = 'on'; else delete root.dataset.game;
|
|
28
|
+
}
|
|
29
|
+
// Turn the mode on or off, and have the shell show what this page should now show.
|
|
30
|
+
function set(value) {
|
|
31
|
+
write('localStorage', KEY, value ? 'on' : 'off');
|
|
32
|
+
stamp();
|
|
33
|
+
if (window.OTBShell && window.OTBShell.setFullscreen) window.OTBShell.setFullscreen(null);
|
|
34
|
+
}
|
|
35
|
+
// Whether the shell should say how to leave full screen. Outside game mode,
|
|
36
|
+
// always (its own rule); inside it, once per tab — every page opens in full
|
|
37
|
+
// screen there, and the same sentence on every page load is noise.
|
|
38
|
+
function hint() {
|
|
39
|
+
if (!on()) return true;
|
|
40
|
+
if (read('sessionStorage', HINT_KEY)) return false;
|
|
41
|
+
write('sessionStorage', HINT_KEY, '1');
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
var asked = new URLSearchParams(window.location.search || '').get('game');
|
|
46
|
+
if (asked === 'on' || asked === 'off') write('localStorage', KEY, asked);
|
|
47
|
+
} catch (_) { /* old engine: the stored value stands */ }
|
|
48
|
+
stamp();
|
|
49
|
+
window.OTBShellGame = { on: on, set: set, hint: hint };
|
|
50
|
+
})();
|
|
@@ -577,11 +577,11 @@
|
|
|
577
577
|
|
|
578
578
|
// ---------- full screen (task 1004327; standard since task 1004430) ----------
|
|
579
579
|
// One switch on EVERY shelled page hides the sidebar, top bar and foot; the same
|
|
580
|
-
// button
|
|
581
|
-
//
|
|
582
|
-
//
|
|
583
|
-
//
|
|
584
|
-
|
|
580
|
+
// button and Escape bring them back. Opt out with <body data-fullscreen-switch="off">;
|
|
581
|
+
// the bare attribute means the page lays itself out for it, else it is `plain`.
|
|
582
|
+
// State: html[data-fullscreen="on"], remembered PER PAGE (`hall-fullscreen:<data-page>`).
|
|
583
|
+
// task 1005142: in game mode (shell-game.js) EVERY page opens in it, whatever it remembers.
|
|
584
|
+
var GAME = window.OTBShellGame || { on: function () { return false; }, hint: function () { return true; } };
|
|
585
585
|
var FULLSCREEN_KEY = 'hall-fullscreen:';
|
|
586
586
|
function fullscreenAttr() {
|
|
587
587
|
var b = document.body;
|
|
@@ -615,7 +615,7 @@
|
|
|
615
615
|
}
|
|
616
616
|
function storedFullscreen() {
|
|
617
617
|
var page = fullscreenPage();
|
|
618
|
-
if (!page) return
|
|
618
|
+
if (!page || GAME.on()) return !!page;
|
|
619
619
|
try { return window.localStorage.getItem(FULLSCREEN_KEY + page) === 'on'; } catch (_) { return false; }
|
|
620
620
|
}
|
|
621
621
|
function isFullscreen() { return document.documentElement.dataset.fullscreen === 'on'; }
|
|
@@ -628,7 +628,7 @@
|
|
|
628
628
|
var root = document.documentElement;
|
|
629
629
|
if (on) root.dataset.fullscreen = 'on'; else delete root.dataset.fullscreen;
|
|
630
630
|
if (on && fullscreenAttr() === null) root.dataset.fullscreenPlain = 'on'; else delete root.dataset.fullscreenPlain;
|
|
631
|
-
if (on)
|
|
631
|
+
if (!on) hideFullscreenHint(); else if (GAME.hint()) showFullscreenHint();
|
|
632
632
|
var btn = document.getElementById('fullscreen-toggle');
|
|
633
633
|
if (btn) {
|
|
634
634
|
var label = on ? 'Exit full screen (Esc)' : 'Full screen — hide the sidebar and top bar';
|
|
@@ -646,10 +646,10 @@
|
|
|
646
646
|
function setFullscreen(on) {
|
|
647
647
|
var page = fullscreenPage();
|
|
648
648
|
if (!page) return;
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
//
|
|
649
|
+
// Game mode never rewrites a page's own memory; `null` re-reads what should show.
|
|
650
|
+
if (on != null && !GAME.on()) try { window.localStorage.setItem(FULLSCREEN_KEY + page, on ? 'on' : 'off'); } catch (_) { /* private mode */ }
|
|
651
|
+
applyFullscreen(on == null ? storedFullscreen() : on);
|
|
652
|
+
// A page that sizes itself to its box (the sky's canvas) re-measures on resize.
|
|
653
653
|
try { window.dispatchEvent(new Event('resize')); } catch (_) { /* old engine */ }
|
|
654
654
|
}
|
|
655
655
|
function inTextField(el) {
|
|
@@ -229,9 +229,10 @@
|
|
|
229
229
|
</div>
|
|
230
230
|
|
|
231
231
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
232
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
232
233
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
233
234
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
234
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
235
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
235
236
|
<script src="/builders/hall-dialog.js"></script>
|
|
236
237
|
<script src="/builders/palette.js" defer></script>
|
|
237
238
|
<script src="/builders/gov-living.js?v=2026-10-09-positions1"></script>
|
|
@@ -222,9 +222,10 @@
|
|
|
222
222
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
223
223
|
|
|
224
224
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
225
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
225
226
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
226
227
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
227
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
228
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
228
229
|
<script src="/builders/hall-dialog.js"></script>
|
|
229
230
|
<script src="/builders/palette.js" defer></script>
|
|
230
231
|
<!-- The kit, for its ONE renderer: the full-size ship-time visual figure
|
|
@@ -57,9 +57,10 @@
|
|
|
57
57
|
<!-- The app shell (sidebar + top bar + footer). Dependency-free; runs at parse
|
|
58
58
|
time so the chrome exists before the deferred page scripts execute. -->
|
|
59
59
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
60
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
60
61
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
61
62
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
62
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
63
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
63
64
|
<script src="/builders/hall-dialog.js"></script>
|
|
64
65
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
65
66
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -139,9 +139,10 @@
|
|
|
139
139
|
</div>
|
|
140
140
|
|
|
141
141
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
142
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
142
143
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
143
144
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
144
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
145
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
145
146
|
<script src="/builders/hall-dialog.js"></script>
|
|
146
147
|
<script src="/builders/palette.js" defer></script>
|
|
147
148
|
|
|
@@ -143,9 +143,10 @@
|
|
|
143
143
|
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
144
144
|
|
|
145
145
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
146
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
146
147
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
147
148
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
148
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
149
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
149
150
|
<script src="/builders/hall-dialog.js"></script>
|
|
150
151
|
<script src="/builders/palette.js" defer></script>
|
|
151
152
|
<script src="/builders/brand-holes.js?v=2026-09-29-aqfix"></script>
|
|
@@ -269,9 +269,10 @@
|
|
|
269
269
|
<!-- The app shell (sidebar + top bar). Dependency-free; loaded FIRST so the
|
|
270
270
|
chrome exists before the page script runs. -->
|
|
271
271
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
272
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
272
273
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
273
274
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
274
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
275
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
275
276
|
<script src="/builders/hall-dialog.js"></script>
|
|
276
277
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
277
278
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -172,9 +172,10 @@
|
|
|
172
172
|
<!-- The app shell (sidebar + top bar + footer). Dependency-free; runs at parse
|
|
173
173
|
time so the chrome exists before the deferred page scripts execute. -->
|
|
174
174
|
<script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
|
|
175
|
+
<script src="/builders/shell-game.js?v=2026-11-09-game-mode"></script>
|
|
175
176
|
<script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
|
|
176
177
|
<script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
|
|
177
|
-
<script src="/builders/shell.js?v=2026-11-
|
|
178
|
+
<script src="/builders/shell.js?v=2026-11-09-game-mode"></script>
|
|
178
179
|
<script src="/builders/hall-dialog.js"></script>
|
|
179
180
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
180
181
|
<script src="/builders/palette.js" defer></script>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Game mode — every hall page opens without its bars (task 1005142, BONGOS-V3 R02)
|
|
2
|
+
|
|
3
|
+
Covers: every shelled hall page (`shell-game.js`, `shell.js`). Spec: `docs/specs/bongos-v3-game-conversion.md` §Reuse, do not rebuild. The switch itself is in `hall-navigation.md`.
|
|
4
|
+
|
|
5
|
+
## What it settled
|
|
6
|
+
|
|
7
|
+
- **Game mode is the existing full-screen switch, made hall-wide. There is no second full-screen mode.** The switch was already on every page (task 1004430) but remembered per page, so a reader had to turn it on 33 times. Game mode is one `localStorage` key, `hall-game`; while it is `on`, `shell.js` `storedFullscreen()` answers yes for every page, whatever that page remembers. What hides, the corner button and the Escape hand-off are the shell's, unchanged.
|
|
8
|
+
- **`shell-game.js` holds the mode and nothing else**: `window.OTBShellGame` = `on()`, `set(bool)`, `hint()`. It stamps `html[data-game="on"]` for a sheet or script that wants to read the mode. `shell.js` reads it through a fallback object, so a page without the file is never in game mode. It is its own file because `shell.js` sits on the 1,500-line ratchet; the start screen and options menu (R03, R04) are expected to grow here, not in `shell.js`.
|
|
9
|
+
- **Load order**: `shell-game.js` before `shell-trail.js` / `craft-mode.js` / `shell.js`, loaded the same way (deferred or not) as the shell on that page. Test-pinned.
|
|
10
|
+
- **Leaving is for this page load only.** In game mode the corner button and Escape bring the bars back, and nothing is written: the next page opens without them again, and a page's own `hall-fullscreen:<page>` memory is never overwritten. Turning game mode off (`set(false)`) hands each page back what it remembered. `OTBShell.setFullscreen(null)` is the "re-read what should show" call `set()` uses.
|
|
11
|
+
- **No page may opt out.** `<body data-fullscreen-switch="off">` would keep that page's sidebar in game mode; the test fails on one. A new hall page needs `#app-topbar` and the `shell-game.js` tag, like the rest.
|
|
12
|
+
- **The "how to leave" line shows once per tab in game mode** (`sessionStorage 'hall-game-hint'`), not on every page load. Outside game mode the shell's rule is unchanged.
|
|
13
|
+
- **How it is turned on today**: `?game=on` / `?game=off` on any hall URL, or `OTBShellGame.set()`. Nothing in the hall's interface sets it yet; the start screen (R03) is where that lands.
|
|
14
|
+
|
|
15
|
+
## For the tasks after this one
|
|
16
|
+
|
|
17
|
+
- A HUD or options menu that wants Escape must call `preventDefault()` on the press. `shell.js` `onFullscreenKey` waits one tick before leaving so a listener added after it still wins.
|
|
18
|
+
- Until the options menu exists, Escape is the only way to reach navigation in game mode. Do not remove it before R04 lands.
|
|
19
|
+
|
|
20
|
+
Tests: `tests/hall_fullscreen.mjs` (the eight `game mode:` cases run the real `shell-game.js` + `shell.js`), and the script lists in `tests/hall_city.mjs`, `tests/hall_street.mjs`, `tests/hall_my_agents.mjs`, `tests/goal_map_page.mjs`.
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.74",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.24.
|
|
9
|
+
"version": "1.24.74",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.74",
|
|
4
4
|
"description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"main": "src/platform-server.js",
|
package/release-notes.json
CHANGED
|
@@ -11463,5 +11463,11 @@
|
|
|
11463
11463
|
"id": "1005140",
|
|
11464
11464
|
"text": "When a project's board votes in a new form of government, that choice now stays in force after the server restarts. Before, it was quietly lost on every restart and the project fell back to the original one-person rule. A proj"
|
|
11465
11465
|
}
|
|
11466
|
+
],
|
|
11467
|
+
"1.24.74": [
|
|
11468
|
+
{
|
|
11469
|
+
"id": "1005142",
|
|
11470
|
+
"text": "The hall has a game mode: once it is on, every page opens full screen with no sidebar, and Escape brings the menus back when you need them."
|
|
11471
|
+
}
|
|
11466
11472
|
]
|
|
11467
11473
|
}
|
package/src/module-api.js
CHANGED
|
@@ -81,7 +81,7 @@ const { sleep } = require('./sleep');
|
|
|
81
81
|
// MAJOR (see allowBoxScope below): passes the request through untouched.
|
|
82
82
|
function deprecatedNoopMiddleware(_req, _res, next) { next(); }
|
|
83
83
|
|
|
84
|
-
const CORE_VERSION = '1.24.
|
|
84
|
+
const CORE_VERSION = '1.24.74'; // CI auto-patch carrier (ADR 0161); changelog: docs/module-api-changelog.md
|
|
85
85
|
|
|
86
86
|
// A namespaced logger so a module's log lines are attributable + consistent.
|
|
87
87
|
// Usage: const log = api.logger('discord'); log.info('mounted');
|
package/tests/goal_map_page.mjs
CHANGED
|
@@ -434,9 +434,9 @@ await test('the page is the sky\'s own surface — the same sheet and the same s
|
|
|
434
434
|
assert.match(html, /<main id="hall-main" class="sky-stage">/, 'the sky is drawn in the stage, the skip link\'s target');
|
|
435
435
|
const scripts = (h) => [...h.matchAll(/<script src="\/builders\/([^"?]+)\?v=([^"]+)"/g)].map((m) => [m[1], m[2]]);
|
|
436
436
|
// criterion-uat-ui.js (task 1004402): the rings' UAT state words, shared with the goal page.
|
|
437
|
-
assert.deepEqual(scripts(html).filter((s) => !['dom-utils.js', 'shell-trail.js', 'craft-mode.js', 'shell.js'].includes(s[0])).map((s) => s[0]), ['idea-objects.js', 'criterion-uat-ui.js', 'sky-data.js', 'sky-layout.js', 'sky-draw.js', 'sky-interaction.js', 'sky-panel.js', 'sky-composer.js', 'sky-tour.js']);
|
|
437
|
+
assert.deepEqual(scripts(html).filter((s) => !['dom-utils.js', 'shell-game.js', 'shell-trail.js', 'craft-mode.js', 'shell.js'].includes(s[0])).map((s) => s[0]), ['idea-objects.js', 'criterion-uat-ui.js', 'sky-data.js', 'sky-layout.js', 'sky-draw.js', 'sky-interaction.js', 'sky-panel.js', 'sky-composer.js', 'sky-tour.js']);
|
|
438
438
|
// Both doors load the shell (tasks 1004327, 1004430); the SKY's files are the same.
|
|
439
|
-
const skyScripts = (h) => scripts(h).filter((s) => !['dom-utils.js', 'shell-trail.js', 'craft-mode.js', 'shell.js'].includes(s[0]));
|
|
439
|
+
const skyScripts = (h) => scripts(h).filter((s) => !['dom-utils.js', 'shell-game.js', 'shell-trail.js', 'craft-mode.js', 'shell.js'].includes(s[0]));
|
|
440
440
|
assert.deepEqual(skyScripts(html), skyScripts(thinking), 'the two doors load the same sky files at the same stamp');
|
|
441
441
|
assert.equal(html.match(/thinking\.css\?v=([^"]+)/)[1], thinking.match(/thinking\.css\?v=([^"]+)/)[1]);
|
|
442
442
|
assert.match(read('thinking.css'), /body\[data-page\] \.sky-stage \{/, 'the sheet dresses the one stage both doors draw in inside the hall');
|
package/tests/hall_city.mjs
CHANGED
|
@@ -289,7 +289,7 @@ test('the city sits in the hall chrome, behind the shell\'s full-screen switch',
|
|
|
289
289
|
// task 1004685 (the living city): gov-living.js, the model under the drawing, and
|
|
290
290
|
// gov-feeds.js, its one reader per page (shared with the shell's tally), load before it
|
|
291
291
|
// task 1004702: the card answers its first ask in place, so the deck's card and sender (and the desk rows under them) load before the page
|
|
292
|
-
assert.deepEqual(scripts, ['dom-utils', 'shell-trail', 'craft-mode', 'shell', 'hall-dialog', 'palette', 'gov-living', 'gov-feeds', 'city-draw', 'hall-kit', 'street-draw', 'street-card', 'street-inside', 'street-desk', 'street-deck', 'city-decide', 'city-switchboard', 'city'], 'the shell first, then the shared dialog (task 1005085), as on every hall page');
|
|
292
|
+
assert.deepEqual(scripts, ['dom-utils', 'shell-game', 'shell-trail', 'craft-mode', 'shell', 'hall-dialog', 'palette', 'gov-living', 'gov-feeds', 'city-draw', 'hall-kit', 'street-draw', 'street-card', 'street-inside', 'street-desk', 'street-deck', 'city-decide', 'city-switchboard', 'city'], 'the shell first, then the shared dialog (task 1005085), as on every hall page');
|
|
293
293
|
// task 1004925: every script but dom-utils.js is deferred, so none holds up the
|
|
294
294
|
// parser; defer runs them in document order, which is why the order above still
|
|
295
295
|
// holds. dom-utils.js stays synchronous: the one-escaper guard
|