@bongos/core 1.21.144 → 1.21.146
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 +73 -63
- package/clients/bongos-client/index.d.ts +2 -2
- package/docs/api/openapi.json +8 -4
- package/docs/copy-inventory.md +23 -23
- package/docs/copy-registry.json +37 -37
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-readings.json +145 -142
- package/modules/hall-ui/public/atlas.html +1 -1
- package/modules/hall-ui/public/blockers.html +2 -2
- package/modules/hall-ui/public/blockers.js +1 -1
- package/modules/hall-ui/public/board-room.html +1 -1
- package/modules/hall-ui/public/city.html +1 -1
- package/modules/hall-ui/public/collab.html +1 -1
- package/modules/hall-ui/public/commands.html +1 -1
- package/modules/hall-ui/public/copy-desk.html +1 -1
- package/modules/hall-ui/public/deploy.html +1 -1
- package/modules/hall-ui/public/diagrams.html +1 -1
- package/modules/hall-ui/public/drachmae.html +1 -1
- package/modules/hall-ui/public/fleet.html +1 -1
- package/modules/hall-ui/public/gate.html +1 -1
- package/modules/hall-ui/public/goal-map.html +1 -1
- package/modules/hall-ui/public/goals.html +1 -1
- package/modules/hall-ui/public/government.html +1 -1
- package/modules/hall-ui/public/idea.html +1 -1
- package/modules/hall-ui/public/ideas.html +1 -1
- package/modules/hall-ui/public/index.html +1 -1
- package/modules/hall-ui/public/modules.html +1 -1
- package/modules/hall-ui/public/my-agents.html +1 -1
- package/modules/hall-ui/public/primer.html +1 -1
- package/modules/hall-ui/public/profile-charts.js +21 -1
- package/modules/hall-ui/public/profile.html +1 -1
- package/modules/hall-ui/public/project-settings.html +1 -1
- package/modules/hall-ui/public/ranks.html +1 -1
- package/modules/hall-ui/public/roadmap.html +1 -1
- package/modules/hall-ui/public/roster.html +1 -1
- package/modules/hall-ui/public/sessions.html +1 -1
- package/modules/hall-ui/public/settings-software-update.js +14 -3
- package/modules/hall-ui/public/settings.html +2 -2
- package/modules/hall-ui/public/shell.js +10 -6
- package/modules/hall-ui/public/street.html +1 -1
- package/modules/hall-ui/public/studio.html +1 -1
- package/modules/hall-ui/public/task.html +1 -1
- package/modules/hall-ui/public/thinking.html +1 -1
- package/modules/hall-ui/public/tweak-editor.html +1 -1
- package/modules/hall-ui/public/watch.html +1 -1
- package/modules/hall-ui/public/work.html +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +16 -0
- package/scripts/gds/provision-auto-upgrade.js +30 -7
- package/src/bongos/routes/core-update.js +14 -2
- package/src/bongos/upgrade-hold.js +96 -0
- package/src/module-api.js +1 -1
- package/tests/blockers_page_ui.mjs +3 -2
- package/tests/core_auto_upgrade.mjs +64 -3
- package/tests/core_upgrade_owner_door.mjs +25 -2
- package/tests/hall_profile_world.mjs +19 -1
- package/tests/nav_permission_atoms.mjs +3 -2
- package/tests/upgrade_hold.mjs +207 -0
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
|
|
94
94
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
95
95
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
96
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
96
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<div class="app-content">
|
|
24
24
|
<div class="page-head page-head--board">
|
|
25
25
|
<h1 class="page-head__h">Blockers</h1>
|
|
26
|
-
<p class="page-head__sub" id="blockers-sub">
|
|
26
|
+
<p class="page-head__sub" id="blockers-sub">A credential, a purchase, a product call, etc. gated at the owner level. Any tasks awaiting the same block will unblock automatically on resolution.</p>
|
|
27
27
|
</div>
|
|
28
28
|
|
|
29
29
|
<main id="hall-main">
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
chrome exists before the page script runs. -->
|
|
53
53
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
54
54
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
55
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
55
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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
|
|
@@ -300,7 +300,7 @@
|
|
|
300
300
|
|
|
301
301
|
function fileFormHtml() {
|
|
302
302
|
return '<div class="td-actions" id="blockers-file-toggle">'
|
|
303
|
-
+ '<button type="button" class="btn-ghost" id="blockers-file-open">+ File
|
|
303
|
+
+ '<button type="button" class="btn-ghost" id="blockers-file-open">+ File blocker</button>'
|
|
304
304
|
+ '</div>'
|
|
305
305
|
+ '<form class="td-form" id="blockers-file-form" hidden>'
|
|
306
306
|
+ '<label class="td-field td-field--wide"><span>Title</span>'
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
|
|
63
63
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
64
64
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
65
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
65
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
|
|
106
106
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
107
107
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
108
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
108
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
109
109
|
<script src="/builders/palette.js" defer></script>
|
|
110
110
|
<script src="/builders/gov-living.js?v=2026-10-09-positions1"></script>
|
|
111
111
|
<script src="/builders/gov-feeds.js?v=2026-10-09-living3"></script>
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
|
|
151
151
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
152
152
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
153
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
153
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
|
|
57
57
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
58
58
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
59
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
59
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
|
|
180
180
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
181
181
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
182
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
182
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
|
|
77
77
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
78
78
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
79
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
79
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
time so the chrome exists before the deferred page scripts execute. -->
|
|
100
100
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
101
101
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
102
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
102
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
|
|
101
101
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
102
102
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
103
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
103
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
|
|
57
57
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
58
58
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
59
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
59
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
|
|
80
80
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
81
81
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
82
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
82
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
|
|
140
140
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
141
141
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
142
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
142
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
|
|
233
233
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
234
234
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
235
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
235
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
|
|
137
137
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
138
138
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
139
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
139
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
|
|
53
53
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
54
54
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
55
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
55
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
|
|
228
228
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
229
229
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
230
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
230
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
BEFORE builders.js so the chrome ids exist when events are wired. -->
|
|
109
109
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab" defer></script>
|
|
110
110
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3" defer></script>
|
|
111
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
111
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1" 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.
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
|
|
104
104
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
105
105
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
106
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
106
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
|
|
62
62
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
63
63
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
64
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
64
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
65
65
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
66
66
|
<script src="/builders/palette.js" defer></script>
|
|
67
67
|
<script src="/builders/dom-utils.js?v=2026-06-14-domutils"></script>
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
|
|
118
118
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
119
119
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
120
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
120
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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
|
|
@@ -219,6 +219,20 @@
|
|
|
219
219
|
return out;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
+
// task 1004756: works shipped PER WEEK, from the record already in hand (any
|
|
223
|
+
// viewer). The cumulative lines only climb, so they cannot show whether
|
|
224
|
+
// someone is active now; a week's count can. "All time" spans from the first
|
|
225
|
+
// ship, capped at PACE_MAX_DAYS so it never draws 300 columns.
|
|
226
|
+
function weeklyShipped(rows, rangeDays, now) {
|
|
227
|
+
let days = rangeDays;
|
|
228
|
+
if (days == null) {
|
|
229
|
+
const first = (rows || []).reduce((m, r) => { const t = Date.parse(r && r.shipped_at); return Number.isFinite(t) && t < m ? t : m; }, Infinity);
|
|
230
|
+
days = Number.isFinite(first) ? Math.ceil((midnight(now) + DAY - first) / DAY) : 7;
|
|
231
|
+
}
|
|
232
|
+
days = Math.max(7, Math.min(days, PACE_MAX_DAYS));
|
|
233
|
+
return { days, buckets: weeklyBuckets((rows || []).map((r) => ({ day: r && r.shipped_at, n: 1 })), days, now) };
|
|
234
|
+
}
|
|
235
|
+
|
|
222
236
|
// ---- the figures --------------------------------------------------------------
|
|
223
237
|
|
|
224
238
|
// A hover/keyboard readout shared by the time charts and the columns: the
|
|
@@ -559,7 +573,13 @@
|
|
|
559
573
|
}
|
|
560
574
|
if (rows.length) {
|
|
561
575
|
const worksFull = cumulativeByDay(rows, () => 1);
|
|
576
|
+
const weekly = weeklyShipped(rows, range.days, now);
|
|
577
|
+
const weeklyTotal = weekly.buckets.reduce((s, b) => s + b.n, 0);
|
|
562
578
|
figs.push(
|
|
579
|
+
columnChart({
|
|
580
|
+
id: 'chart-weekly', title: 'Works shipped, by week', buckets: weekly.buckets,
|
|
581
|
+
footer: `${fmtNum(weeklyTotal)} in the last ${weekly.buckets.length} weeks · each column is one week`,
|
|
582
|
+
}),
|
|
563
583
|
timeChart({
|
|
564
584
|
id: 'chart-works', title: 'Works shipped', points: clipToWindow(worksFull, windowStart), now, windowStart,
|
|
565
585
|
valueText: (v) => `${fmtNum(v)} work${v === 1 ? '' : 's'}`,
|
|
@@ -652,5 +672,5 @@
|
|
|
652
672
|
await draw({ api, API, builderId, isOwn, name, rows, earnings, now, rangeId, selfStreak });
|
|
653
673
|
}
|
|
654
674
|
|
|
655
|
-
window.OTBProfileCharts = { render, cumulativeByDay, craftMix, weeklyBuckets, clipToWindow, earningsKinds, earningsLede };
|
|
675
|
+
window.OTBProfileCharts = { render, cumulativeByDay, craftMix, weeklyBuckets, weeklyShipped, clipToWindow, earningsKinds, earningsLede };
|
|
656
676
|
})();
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
chrome exists before the page script runs. -->
|
|
210
210
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
211
211
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
212
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
212
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
213
213
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
214
214
|
<script src="/builders/palette.js" defer></script>
|
|
215
215
|
<!-- shared frontend toolkit (window.OTB) — loaded before profile.js, which pulls from it. -->
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
|
|
73
73
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
74
74
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
75
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
75
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
76
76
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
77
77
|
<script src="/builders/palette.js" defer></script>
|
|
78
78
|
<script src="/builders/dom-utils.js?v=2026-06-16-gate"></script>
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
chrome exists before the page script runs. -->
|
|
80
80
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
81
81
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
82
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
82
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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. -->
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
45
45
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
46
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
46
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
chrome exists before the page script runs. -->
|
|
56
56
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
57
57
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
58
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
58
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
chrome exists before the page script runs. -->
|
|
114
114
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
115
115
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
116
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
116
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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. -->
|
|
@@ -166,6 +166,14 @@
|
|
|
166
166
|
return `${head}${warn}<ol class="su-versions" aria-labelledby="su-new-h">${items.join('')}</ol>${more ? `<div class="row-end">${more}</div>` : ''}${beyond}`;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
// A move this project's own ledger says was rolled back (task 1004730): the server's plain
|
|
170
|
+
// sentence, said as it is. It names the version tried, that it was rolled back, and that
|
|
171
|
+
// the project is still on its old version and working; nothing here re-derives it.
|
|
172
|
+
function heldHtml(held) {
|
|
173
|
+
if (!held || !held.message) return '';
|
|
174
|
+
return `<p class="panel-status" role="status">${escapeHtml(held.message)}</p>`;
|
|
175
|
+
}
|
|
176
|
+
|
|
169
177
|
function render(data) {
|
|
170
178
|
const body = byId('su-body');
|
|
171
179
|
const note = byId('su-note');
|
|
@@ -177,19 +185,22 @@
|
|
|
177
185
|
|
|
178
186
|
if (u.reading !== 'ok') {
|
|
179
187
|
body.innerHTML = row('This project runs', u.running ? mono(u.running) : 'a version it could not name')
|
|
188
|
+
+ heldHtml(data.held)
|
|
180
189
|
+ `<p class="panel-status panel-status--danger" role="status">Could not check for a newer version: ${escapeHtml(u.error || 'no answer')}.</p>`;
|
|
181
190
|
if (note) note.textContent = notes.join(' ');
|
|
182
191
|
return;
|
|
183
192
|
}
|
|
184
193
|
|
|
185
|
-
let html = row('This project runs', mono(u.running));
|
|
194
|
+
let html = row('This project runs', mono(u.running)) + heldHtml(data.held);
|
|
195
|
+
const onHold = !!(data.held && u.offered && data.held.version === u.offered);
|
|
186
196
|
if (!u.offered) {
|
|
187
197
|
html += row('Newest for this project', `${mono(u.running)} — this project is up to date.`, '<span class="su-pill su-pill--ok">Up to date</span>');
|
|
188
198
|
} else {
|
|
189
199
|
const when = ago(u.offered_published_at);
|
|
190
200
|
const pending = data.can_update && data.ask && data.ask.available && askPending(data.ask, u.offered);
|
|
191
|
-
html += row('Newest for this project', `${mono(u.offered)}${when ? ` — published ${escapeHtml(when)}` : ''}`, `<span class="su-pill">${pending ? 'Requested' : 'Update ready'}</span>`);
|
|
192
|
-
|
|
201
|
+
html += row('Newest for this project', `${mono(u.offered)}${when ? ` — published ${escapeHtml(when)}` : ''}`, `<span class="su-pill">${onHold ? 'On hold' : pending ? 'Requested' : 'Update ready'}</span>`);
|
|
202
|
+
// No button to take again the very version that was just rolled back here (task 1004730).
|
|
203
|
+
if (!onHold) html += doorHtml(data, u.offered);
|
|
193
204
|
html += whatsNewHtml(u.whats_new, (data.door || {}).kind === 'local');
|
|
194
205
|
}
|
|
195
206
|
// A newer line this project's channel does not take is a fact worth one sentence — it
|
|
@@ -472,7 +472,7 @@
|
|
|
472
472
|
chrome exists before the page scripts run. -->
|
|
473
473
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
474
474
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
475
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
475
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
476
476
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
477
477
|
<script src="/builders/palette.js" defer></script>
|
|
478
478
|
<!-- shared frontend toolkit (window.OTB) — loaded before consuming IIFEs. -->
|
|
@@ -498,7 +498,7 @@
|
|
|
498
498
|
settings.js is against the 1500-line ratchet. -->
|
|
499
499
|
<script src="/builders/settings-render.js?v=2026-09-16-render-levels"></script>
|
|
500
500
|
<!-- task 1004296: Settings → Software update. Own file on the same precedent. -->
|
|
501
|
-
<script src="/builders/settings-software-update.js?v=2026-10-
|
|
501
|
+
<script src="/builders/settings-software-update.js?v=2026-10-17-hold"></script>
|
|
502
502
|
<!-- task 1004501: Settings → Your Autobongos runner. Own file on the same precedent. -->
|
|
503
503
|
<script src="/builders/settings-autobongos.js?v=2026-10-01-autobongos"></script>
|
|
504
504
|
<!-- task 1003793: Settings → Module install reports. Own file on the same precedent. -->
|
|
@@ -774,7 +774,7 @@
|
|
|
774
774
|
coreUpdateAsked = true;
|
|
775
775
|
api.request('GET', '/api/bongos/core-update').then(function (res) {
|
|
776
776
|
if (!res || res.status !== 200 || !res.data) return;
|
|
777
|
-
if (res.data.update) renderCoreUpdateBanner(res.data.update);
|
|
777
|
+
if (res.data.update) renderCoreUpdateBanner(res.data.update, res.data.held);
|
|
778
778
|
}, function () { /* fail-soft: no banner is the correct answer to no answer */ });
|
|
779
779
|
}
|
|
780
780
|
|
|
@@ -789,7 +789,7 @@
|
|
|
789
789
|
// is current AND when the registry could not be read; `reading` separates them,
|
|
790
790
|
// and neither renders. A banner is a claim about being out of date, and a wrong
|
|
791
791
|
// one on a project that is actually current is worse than silence.
|
|
792
|
-
function renderCoreUpdateBanner(update) {
|
|
792
|
+
function renderCoreUpdateBanner(update, held) {
|
|
793
793
|
if (!update || update.reading !== 'ok' || !update.behind || !update.latest) return;
|
|
794
794
|
// A dismissal is remembered PER VERSION, not forever: the next release is new
|
|
795
795
|
// news and must re-announce itself, or the surface is dead after one click.
|
|
@@ -826,10 +826,14 @@
|
|
|
826
826
|
: (onUpdatePanel
|
|
827
827
|
? '<span class="core-update-notice__hint">Its details are below.</span>'
|
|
828
828
|
: '<a class="core-update-notice__action" href="' + SOFTWARE_UPDATE_HREF + '">Upgrade</a>');
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
829
|
+
// task 1004730: the newest version already failed here and was rolled back. Say so, never
|
|
830
|
+
// "available" with a button to take it again; Software update carries the full sentence.
|
|
831
|
+
var hold = held && held.version === update.latest ? held : null;
|
|
832
|
+
el.innerHTML = (hold
|
|
833
|
+
? '<span>Core <strong>' + esc(hold.version) + '</strong> was tried on this project and rolled back. It is still on ' +
|
|
834
|
+
esc(hold.still_on) + ' and working.</span><a class="core-update-notice__action" href="' + SOFTWARE_UPDATE_HREF + '">Details</a>'
|
|
835
|
+
: '<span>Core <strong>' + esc(update.latest) + '</strong> is available — this project runs ' +
|
|
836
|
+
esc(update.running || 'an unknown version') + '.</span>' + action) +
|
|
833
837
|
'<button type="button" class="core-update-notice__close" aria-label="Dismiss">×</button>';
|
|
834
838
|
el.querySelector('.core-update-notice__close').addEventListener('click', function () {
|
|
835
839
|
try {
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
|
|
231
231
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
232
232
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
233
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
233
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
234
234
|
<script src="/builders/palette.js" defer></script>
|
|
235
235
|
<script src="/builders/gov-living.js?v=2026-10-09-positions1"></script>
|
|
236
236
|
<script src="/builders/gov-feeds.js?v=2026-10-09-living3"></script>
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
|
|
191
191
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
192
192
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
193
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
193
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
194
194
|
<script src="/builders/palette.js" defer></script>
|
|
195
195
|
<script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
|
|
196
196
|
<!-- The kit, for its ONE renderer: the full-size ship-time visual figure
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
time so the chrome exists before the deferred page scripts execute. -->
|
|
57
57
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
58
58
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
59
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
59
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></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
|
<!-- shared frontend toolkit (window.OTB) — loaded FIRST so task.js can pull from it. -->
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
|
|
141
141
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
142
142
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
143
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
143
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
144
144
|
<script src="/builders/palette.js" defer></script>
|
|
145
145
|
|
|
146
146
|
<script src="/builders/idea-objects.js?v=2026-09-27-split"></script>
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
|
|
145
145
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
146
146
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
147
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
147
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
148
148
|
<script src="/builders/palette.js" defer></script>
|
|
149
149
|
<script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
|
|
150
150
|
<script src="/builders/brand-holes.js?v=2026-09-29-aqfix"></script>
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
chrome exists before the page script runs. -->
|
|
168
168
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
169
169
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
170
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
170
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
171
171
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
172
172
|
<script src="/builders/palette.js" defer></script>
|
|
173
173
|
<!-- shared frontend toolkit (window.OTB) — loaded before watch.js, which pulls from it. -->
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
time so the chrome exists before the deferred page scripts execute. -->
|
|
174
174
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
175
175
|
<script src="/builders/craft-mode.js?v=2026-10-09-living3"></script>
|
|
176
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
176
|
+
<script src="/builders/shell.js?v=2026-10-17-upgrade-hold1"></script>
|
|
177
177
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
178
178
|
<script src="/builders/palette.js" defer></script>
|
|
179
179
|
<!-- shared frontend toolkit (window.OTB) — loaded FIRST so work.js can pull from it. -->
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.21.
|
|
3
|
+
"version": "1.21.146",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.21.
|
|
9
|
+
"version": "1.21.146",
|
|
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.21.
|
|
3
|
+
"version": "1.21.146",
|
|
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
|
@@ -9874,5 +9874,21 @@
|
|
|
9874
9874
|
"id": "1004347",
|
|
9875
9875
|
"text": "Your two new lines for the Repo Atlas page are in, word for word, and none were refused. Before and after pictures of the page on a desktop and a phone, light and dark, are attached. It is waiting for you in the Approval queue"
|
|
9876
9876
|
}
|
|
9877
|
+
],
|
|
9878
|
+
"1.21.145": [
|
|
9879
|
+
{
|
|
9880
|
+
"id": "1004756",
|
|
9881
|
+
"text": "Every builder profile now has a chart of how many works were shipped each week, so you can see at a glance whether someone is active lately, not just a line that only ever goes up."
|
|
9882
|
+
},
|
|
9883
|
+
{
|
|
9884
|
+
"id": "1004348",
|
|
9885
|
+
"text": "The Blockers page now uses the owner's own words, written on a Chromebook and brought back from Google Docs. The line under the page title is shorter and plainer, and the button reads \"+ File blocker\". Both rewritten lines wen"
|
|
9886
|
+
}
|
|
9887
|
+
],
|
|
9888
|
+
"1.21.146": [
|
|
9889
|
+
{
|
|
9890
|
+
"id": "1004730",
|
|
9891
|
+
"text": "When an automatic core update fails on a hosted project and is rolled back, that version is not retried over and over, and the project's owner now sees in their own Settings and update banner which version was tried, that it w"
|
|
9892
|
+
}
|
|
9877
9893
|
]
|
|
9878
9894
|
}
|