@bongos/core 1.24.9 → 1.24.11
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 +146 -86
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +14 -0
- package/clients/bongos-client/index.cjs +14 -0
- package/clients/bongos-client/index.d.ts +20 -1
- package/clients/bongos-client/index.mjs +14 -0
- package/docs/api/openapi.json +308 -5
- package/docs/api-reference.md +15 -4
- package/docs/architecture.md +4 -0
- package/docs/copy-inventory.md +109 -75
- package/docs/copy-registry.json +425 -89
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-inventory.json +34 -4
- package/docs/page-readings.json +301 -244
- package/modules/government/decision-rules.js +1 -0
- package/modules/hall-ui/public/ai-studio.html +2 -2
- package/modules/hall-ui/public/atlas.html +2 -2
- package/modules/hall-ui/public/blockers.html +2 -2
- package/modules/hall-ui/public/board-room.html +2 -2
- package/modules/hall-ui/public/city.html +2 -2
- package/modules/hall-ui/public/collab.html +2 -2
- package/modules/hall-ui/public/commands.html +2 -2
- package/modules/hall-ui/public/copy-desk.html +2 -2
- package/modules/hall-ui/public/craft-mode.js +1 -1
- package/modules/hall-ui/public/deploy.html +2 -2
- package/modules/hall-ui/public/diagrams.html +2 -2
- package/modules/hall-ui/public/drachmae.html +2 -2
- package/modules/hall-ui/public/fleet.html +2 -2
- package/modules/hall-ui/public/gate.html +2 -2
- package/modules/hall-ui/public/goal-map.html +2 -2
- package/modules/hall-ui/public/goals.html +2 -2
- package/modules/hall-ui/public/government.html +2 -2
- package/modules/hall-ui/public/idea.html +2 -2
- package/modules/hall-ui/public/ideas.html +2 -2
- package/modules/hall-ui/public/index.html +2 -2
- package/modules/hall-ui/public/market-watch-rules.html +2 -2
- package/modules/hall-ui/public/market-watch-settings.css +217 -0
- package/modules/hall-ui/public/market-watch-settings.html +113 -0
- package/modules/hall-ui/public/market-watch-settings.js +230 -0
- package/modules/hall-ui/public/market-watch-settings.states.json +14 -0
- package/modules/hall-ui/public/modules.html +2 -2
- package/modules/hall-ui/public/my-agents.html +2 -2
- package/modules/hall-ui/public/primer.html +2 -2
- package/modules/hall-ui/public/profile.html +2 -2
- package/modules/hall-ui/public/project-settings.css +12 -0
- package/modules/hall-ui/public/project-settings.html +2 -2
- package/modules/hall-ui/public/project-settings.js +63 -1
- package/modules/hall-ui/public/ranks.html +2 -2
- package/modules/hall-ui/public/roadmap.html +2 -2
- package/modules/hall-ui/public/roster.html +2 -2
- package/modules/hall-ui/public/sessions.html +2 -2
- package/modules/hall-ui/public/settings.html +2 -2
- package/modules/hall-ui/public/shell.js +3 -0
- package/modules/hall-ui/public/street.html +2 -2
- package/modules/hall-ui/public/studio.html +2 -2
- package/modules/hall-ui/public/task.html +2 -2
- package/modules/hall-ui/public/task.js +34 -1
- package/modules/hall-ui/public/thinking.html +2 -2
- package/modules/hall-ui/public/tweak-editor.html +2 -2
- package/modules/hall-ui/public/watch.html +2 -2
- package/modules/hall-ui/public/work.html +2 -2
- package/modules/hall-ui/records/market-watch-settings.md +11 -0
- package/modules/lifecycle/migrations/lifecycle_018_pay_terms.sql +64 -0
- package/modules/lifecycle/pay-terms.js +171 -0
- package/modules/lifecycle/routes/project-settings.js +94 -0
- package/modules/lifecycle/routes/task-write-routes.js +35 -4
- package/modules/market-watch/module.json +3 -2
- package/modules/market-watch/routes/settings.js +128 -0
- package/modules/market-watch/settings.js +207 -0
- package/modules/provisioning/starter-bundles.js +11 -6
- package/modules/ui-design/kit/serve.js +1 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +12 -0
- package/scripts/bongos/government-walk.js +1 -0
- package/scripts/bongos/run-unit-tests.js +4 -0
- package/scripts/bongos/start.js +42 -2
- package/src/bongos/module-scope-map.js +1 -0
- package/src/bongos/serve-internal.js +2 -2
- package/src/module-api.js +1 -1
- package/tests/government_act_alone_buildings.mjs +1 -0
- package/tests/hall_nav.mjs +4 -2
- package/tests/hall_page_gate_map.mjs +4 -0
- package/tests/market_watch_data_db.mjs +27 -0
- package/tests/market_watch_module.mjs +8 -4
- package/tests/market_watch_settings.mjs +392 -0
- package/tests/nav_permission_atoms.mjs +3 -2
- package/tests/patch_gate_ordering.mjs +3 -0
- package/tests/pay_terms.mjs +254 -0
- package/tests/pay_terms_db.mjs +86 -0
- package/tests/project_settings_page.mjs +25 -6
|
@@ -67,6 +67,7 @@ const AREAS = Object.freeze([
|
|
|
67
67
|
'PATCH /project-settings/rot-days',
|
|
68
68
|
'PATCH /project-settings/ship-mode',
|
|
69
69
|
'PATCH /project-settings/tweak-autopickup',
|
|
70
|
+
'PATCH /project-settings/pay-terms', // task 1004990: the project's standing pay terms
|
|
70
71
|
'PATCH /work-categories/:id',
|
|
71
72
|
// task 1004941: the owner approving a Market Watch proposal (a passed
|
|
72
73
|
// matter approves it through the market_watch_proposal act instead)
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
|
|
88
88
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
89
89
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
90
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
91
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
90
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
91
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
92
92
|
<script src="/builders/palette.js" defer></script>
|
|
93
93
|
<script src="/builders/tweak-editor-lib.js?v=2026-09-28-tw23"></script>
|
|
94
94
|
<script src="/builders/studio-lib.js?v=2026-10-09-day"></script>
|
|
@@ -91,8 +91,8 @@
|
|
|
91
91
|
|
|
92
92
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
93
93
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
94
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
95
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
94
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
95
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
96
96
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
97
97
|
<script src="/builders/palette.js" defer></script>
|
|
98
98
|
<script src="/builders/atlas.js?v=2026-09-02-index" defer></script>
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
chrome exists before the page script runs. -->
|
|
61
61
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
62
62
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
63
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
64
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
63
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
64
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></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
|
<!-- the branding pack's currency label, loaded BEFORE blockers.js. -->
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
|
|
61
61
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
62
62
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
63
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
64
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
63
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
64
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></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/hall-kit.js"></script>
|
|
@@ -107,8 +107,8 @@
|
|
|
107
107
|
|
|
108
108
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
109
109
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab" defer></script>
|
|
110
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
111
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
110
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch" defer></script>
|
|
111
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch" defer></script>
|
|
112
112
|
<script src="/builders/palette.js" defer></script>
|
|
113
113
|
<script src="/builders/gov-living.js?v=2026-10-09-positions1" defer></script>
|
|
114
114
|
<script src="/builders/gov-feeds.js?v=2026-10-09-living3" defer></script>
|
|
@@ -161,8 +161,8 @@
|
|
|
161
161
|
|
|
162
162
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
163
163
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
164
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
165
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
164
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
165
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
166
166
|
<script src="/builders/palette.js" defer></script>
|
|
167
167
|
<script src="/builders/collab-lib.js?v=2026-09-24-archive"></script>
|
|
168
168
|
<script src="/builders/collab.js?v=2026-09-24-archive"></script>
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
|
|
54
54
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
55
55
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
56
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
57
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
56
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
57
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
58
58
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
59
59
|
<script src="/builders/palette.js" defer></script>
|
|
60
60
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -179,8 +179,8 @@
|
|
|
179
179
|
|
|
180
180
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
181
181
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
182
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
183
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
182
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
183
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
184
184
|
<script src="/builders/palette.js" defer></script>
|
|
185
185
|
<script src="/builders/hall-kit.js"></script>
|
|
186
186
|
<script src="/builders/copy-desk.js?v=2026-09-01-redesign"></script>
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
artistry: ['studio', 'goals', 'thinking'],
|
|
108
108
|
ideating: ['goal-map', 'thinking', 'goals'],
|
|
109
109
|
governing: ['city', 'blockers', 'board-room',
|
|
110
|
-
'watch', 'gate', 'sessions', 'project-settings', 'deploy', 'fleet', 'government'],
|
|
110
|
+
'watch', 'gate', 'sessions', 'project-settings', 'deploy', 'fleet', 'market-watch-settings', 'government'],
|
|
111
111
|
};
|
|
112
112
|
// A mode can lead with ONE tab and fold the rest of its own under a dropdown
|
|
113
113
|
// (owner, 2026-10-08: the city is Governing's tab, everything else under it).
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
|
|
79
79
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
80
80
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
81
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
82
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
81
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
82
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
83
83
|
<script src="/builders/palette.js" defer></script>
|
|
84
84
|
<script src="/builders/hall-kit.js"></script>
|
|
85
85
|
<!-- the shared ask card the move is drawn with (task 1004829) -->
|
|
@@ -96,8 +96,8 @@
|
|
|
96
96
|
time so the chrome exists before the deferred page scripts execute. -->
|
|
97
97
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
98
98
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
99
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
100
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
99
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
100
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
101
101
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
102
102
|
<script src="/builders/palette.js" defer></script>
|
|
103
103
|
<script src="/builders/diagram-viewer.js?v=2026-06-14-diagviewer-1" defer></script>
|
|
@@ -96,8 +96,8 @@
|
|
|
96
96
|
|
|
97
97
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
98
98
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
99
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
100
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
99
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
100
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
101
101
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
102
102
|
<script src="/builders/palette.js" defer></script>
|
|
103
103
|
<script src="/builders/md-reader.js?v=2026-09-02-mdreader-2"></script>
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
|
|
58
58
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
59
59
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
60
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
61
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
60
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
61
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
62
62
|
<script src="/builders/palette.js" defer></script>
|
|
63
63
|
<script src="/builders/hall-kit.js"></script>
|
|
64
64
|
<script src="/builders/fleet-costs.js"></script>
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
|
|
65
65
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
66
66
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
67
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
68
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
67
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
68
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
69
69
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
70
70
|
<script src="/builders/palette.js" defer></script>
|
|
71
71
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -139,8 +139,8 @@
|
|
|
139
139
|
|
|
140
140
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
141
141
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
142
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
143
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
142
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
143
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></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>
|
|
@@ -243,8 +243,8 @@
|
|
|
243
243
|
|
|
244
244
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
245
245
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
246
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
247
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
246
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
247
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
248
248
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
249
249
|
<script src="/builders/palette.js" defer></script>
|
|
250
250
|
<!-- task 1004727: the ONE karma vote control every task/idea list renders -->
|
|
@@ -154,8 +154,8 @@
|
|
|
154
154
|
|
|
155
155
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
156
156
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
157
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
158
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
157
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
158
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
159
159
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
160
160
|
<script src="/builders/palette.js" defer></script>
|
|
161
161
|
<script src="/builders/hall-kit.js"></script>
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
|
|
53
53
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
54
54
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
55
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
56
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
55
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
56
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
57
57
|
<script src="/builders/palette.js" defer></script>
|
|
58
58
|
<!-- task-detail.js still owns the #/idea/N and #/blocker/N overlay, so a ref
|
|
59
59
|
written inside an idea's own prose keeps resolving from this page. -->
|
|
@@ -227,8 +227,8 @@
|
|
|
227
227
|
|
|
228
228
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
229
229
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
230
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
231
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
230
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
231
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
232
232
|
<script src="/builders/palette.js" defer></script>
|
|
233
233
|
<!-- task 1004727: the ONE karma vote control every task/idea list renders -->
|
|
234
234
|
<script src="/builders/vote-control.js"></script>
|
|
@@ -118,8 +118,8 @@
|
|
|
118
118
|
before the craft picker so the two never stack. Home only. -->
|
|
119
119
|
<script src="/builders/welcome-boot.js?v=2026-10-23-city1" defer></script>
|
|
120
120
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab" defer></script>
|
|
121
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
122
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
121
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch" defer></script>
|
|
122
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch" defer></script>
|
|
123
123
|
<!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
|
|
124
124
|
<script src="/builders/palette.js" defer></script>
|
|
125
125
|
<!-- task 2166: the shared component kit (window.OTBKit) — pager/ledger/rail.
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
|
|
43
43
|
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
44
44
|
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
45
|
-
<script src="/builders/craft-mode.js?v=2026-10-
|
|
46
|
-
<script src="/builders/shell.js?v=2026-10-
|
|
45
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
46
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></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/hall-kit.js"></script>
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/* market-watch-settings.css — the fuel gauge (task 1004938; the design of record is
|
|
2
|
+
docs/design/mocks/market-watch/settings.html, option B). The panel is style.css's
|
|
3
|
+
.scroll and the buttons are its .btn pair; this sheet carries only the gauge, the
|
|
4
|
+
power pill, the cap slider, the cadence chips, the run strip and the key row, in the
|
|
5
|
+
hall's own tokens rather than the mock's literal colours (the owner's hall rule). */
|
|
6
|
+
|
|
7
|
+
.mws { display: flex; flex-direction: column; }
|
|
8
|
+
.mws-soft { color: var(--ink-soft); font-size: 13px; }
|
|
9
|
+
|
|
10
|
+
.mws-hero {
|
|
11
|
+
display: grid;
|
|
12
|
+
grid-template-columns: 220px minmax(0, 1fr);
|
|
13
|
+
gap: 28px;
|
|
14
|
+
align-items: center;
|
|
15
|
+
}
|
|
16
|
+
@media (max-width: 620px) {
|
|
17
|
+
.mws-hero { grid-template-columns: minmax(0, 1fr); justify-items: center; text-align: center; }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* The gauge: spend this month against the cap, and a faint arc for what the next run
|
|
21
|
+
will use. Circles only, no path data. */
|
|
22
|
+
.mws-ring { position: relative; width: 220px; height: 220px; max-width: 100%; }
|
|
23
|
+
.mws-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
|
|
24
|
+
.mws-ring circle { fill: none; stroke-width: 7; }
|
|
25
|
+
.mws-ring__track { stroke: var(--rule-soft); }
|
|
26
|
+
.mws-ring__spent { stroke: var(--accent); stroke-linecap: round; transition: stroke-dasharray 0.3s; }
|
|
27
|
+
.mws-ring__next { stroke: var(--accent); stroke-opacity: 0.35; transition: stroke-dasharray 0.3s; }
|
|
28
|
+
.mws-ring--off { opacity: 0.45; }
|
|
29
|
+
.mws-ring__c { position: absolute; inset: 0; display: grid; place-items: center; text-align: center; }
|
|
30
|
+
.mws-ring__big {
|
|
31
|
+
font-family: var(--font-display);
|
|
32
|
+
font-size: 38px;
|
|
33
|
+
font-weight: 300;
|
|
34
|
+
letter-spacing: -0.03em;
|
|
35
|
+
line-height: 1;
|
|
36
|
+
color: var(--ink);
|
|
37
|
+
}
|
|
38
|
+
.mws-pill {
|
|
39
|
+
display: inline-block;
|
|
40
|
+
margin-top: 8px;
|
|
41
|
+
padding: 2px 9px;
|
|
42
|
+
border-radius: var(--radius-pill);
|
|
43
|
+
font-size: 12px;
|
|
44
|
+
background: var(--accent-tint);
|
|
45
|
+
color: var(--accent-text);
|
|
46
|
+
}
|
|
47
|
+
.mws-pill--empty { background: var(--warn-weak); color: var(--warn); }
|
|
48
|
+
|
|
49
|
+
.mws-controls { display: flex; flex-direction: column; gap: 18px; width: 100%; min-width: 0; }
|
|
50
|
+
@media (max-width: 620px) { .mws-controls { align-items: center; } }
|
|
51
|
+
|
|
52
|
+
/* The switch: one pill, the label says the state and the dot carries the colour. */
|
|
53
|
+
.mws-power {
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: 12px;
|
|
57
|
+
width: max-content;
|
|
58
|
+
max-width: 100%;
|
|
59
|
+
min-height: 46px;
|
|
60
|
+
padding: 6px 6px 6px 16px;
|
|
61
|
+
border: var(--line) solid var(--rule);
|
|
62
|
+
border-radius: var(--radius-pill);
|
|
63
|
+
background: transparent;
|
|
64
|
+
color: var(--ink);
|
|
65
|
+
font: inherit;
|
|
66
|
+
font-weight: 500;
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
}
|
|
69
|
+
.mws-power i {
|
|
70
|
+
display: grid;
|
|
71
|
+
place-items: center;
|
|
72
|
+
width: 34px;
|
|
73
|
+
height: 34px;
|
|
74
|
+
border-radius: 50%;
|
|
75
|
+
font-style: normal;
|
|
76
|
+
font-weight: 600;
|
|
77
|
+
background: var(--accent);
|
|
78
|
+
color: var(--accent-on);
|
|
79
|
+
}
|
|
80
|
+
.mws-power[aria-pressed="false"] i { background: var(--rule); color: var(--ink-soft); }
|
|
81
|
+
.mws-power:hover { border-color: var(--ink-faint); }
|
|
82
|
+
|
|
83
|
+
.mws-slide { display: flex; flex-direction: column; gap: 6px; width: 100%; }
|
|
84
|
+
.mws-slide input { width: 100%; min-height: 24px; accent-color: var(--accent); }
|
|
85
|
+
.mws-cap {
|
|
86
|
+
font-family: var(--font-display);
|
|
87
|
+
font-size: 28px;
|
|
88
|
+
font-weight: 300;
|
|
89
|
+
letter-spacing: -0.02em;
|
|
90
|
+
color: var(--ink);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.mws-cad { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
94
|
+
@media (max-width: 620px) { .mws-cad { justify-content: center; } }
|
|
95
|
+
.mws-chip {
|
|
96
|
+
min-height: 34px;
|
|
97
|
+
padding: 0 14px;
|
|
98
|
+
border: var(--line) solid var(--rule);
|
|
99
|
+
border-radius: var(--radius-pill);
|
|
100
|
+
background: transparent;
|
|
101
|
+
color: var(--ink);
|
|
102
|
+
font: inherit;
|
|
103
|
+
font-size: 14px;
|
|
104
|
+
font-weight: 500;
|
|
105
|
+
white-space: nowrap;
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
}
|
|
108
|
+
.mws-chip:hover { border-color: var(--ink-faint); }
|
|
109
|
+
.mws-chip--on, .mws-chip--on:hover { background: var(--accent); border-color: var(--accent); color: var(--accent-on); }
|
|
110
|
+
|
|
111
|
+
.mws-lbl {
|
|
112
|
+
margin: 26px 0 8px;
|
|
113
|
+
font-size: 12px;
|
|
114
|
+
letter-spacing: 0.06em;
|
|
115
|
+
color: var(--ink-faint);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* The run strip: one tile per run, oldest left; a dash is a run skipped, the dashed
|
|
119
|
+
tile is the next run, and the empty ones after it are the runs to come. */
|
|
120
|
+
.mws-weeks {
|
|
121
|
+
display: grid;
|
|
122
|
+
grid-template-columns: repeat(var(--mws-cells, 9), minmax(0, 1fr));
|
|
123
|
+
gap: 6px;
|
|
124
|
+
max-width: 560px;
|
|
125
|
+
margin: 6px 0 0;
|
|
126
|
+
padding: 0;
|
|
127
|
+
list-style: none;
|
|
128
|
+
}
|
|
129
|
+
.mws-wk {
|
|
130
|
+
display: flex;
|
|
131
|
+
flex-direction: column;
|
|
132
|
+
align-items: center;
|
|
133
|
+
gap: 6px;
|
|
134
|
+
min-width: 0;
|
|
135
|
+
font-family: var(--font-mono);
|
|
136
|
+
font-size: 11px;
|
|
137
|
+
color: var(--ink-faint);
|
|
138
|
+
white-space: nowrap;
|
|
139
|
+
}
|
|
140
|
+
.mws-wk b {
|
|
141
|
+
display: grid;
|
|
142
|
+
place-items: center;
|
|
143
|
+
width: 100%;
|
|
144
|
+
aspect-ratio: 1;
|
|
145
|
+
border: var(--line) solid var(--rule-soft);
|
|
146
|
+
border-radius: 10px;
|
|
147
|
+
font-family: var(--font-body);
|
|
148
|
+
font-size: 13px;
|
|
149
|
+
font-weight: 500;
|
|
150
|
+
color: var(--ink);
|
|
151
|
+
}
|
|
152
|
+
.mws-wk--done b { background: var(--accent-tint); border-color: transparent; }
|
|
153
|
+
.mws-wk--skip b {
|
|
154
|
+
background: repeating-linear-gradient(45deg, var(--surface-2) 0 5px, transparent 5px 10px);
|
|
155
|
+
color: var(--accent-text);
|
|
156
|
+
}
|
|
157
|
+
.mws-wk--next b { border: 1.5px dashed var(--accent); }
|
|
158
|
+
/* On a phone nine tiles leave about 30px each, narrower than "22 sep" in one line, so
|
|
159
|
+
the date stacks: day over month. */
|
|
160
|
+
@media (max-width: 620px) {
|
|
161
|
+
.mws-weeks { gap: 4px; }
|
|
162
|
+
.mws-wk { white-space: normal; }
|
|
163
|
+
.mws-wk span { text-align: center; line-height: 1.25; }
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.mws-legend {
|
|
167
|
+
display: flex;
|
|
168
|
+
flex-wrap: wrap;
|
|
169
|
+
gap: 6px 14px;
|
|
170
|
+
margin-top: 10px;
|
|
171
|
+
font-size: 12.5px;
|
|
172
|
+
color: var(--ink-soft);
|
|
173
|
+
}
|
|
174
|
+
.mws-legend__skip { color: var(--accent-text); }
|
|
175
|
+
|
|
176
|
+
/* The key: write-only, so the row says set or not set and offers replace or clear. */
|
|
177
|
+
.mws-key { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
178
|
+
.mws-key__state {
|
|
179
|
+
padding: 2px 9px;
|
|
180
|
+
border: var(--line) solid var(--rule);
|
|
181
|
+
border-radius: var(--radius-pill);
|
|
182
|
+
font-size: 12px;
|
|
183
|
+
color: var(--ink-soft);
|
|
184
|
+
white-space: nowrap;
|
|
185
|
+
}
|
|
186
|
+
.mws-key__state--set { background: var(--ok-weak); border-color: transparent; color: var(--ok); }
|
|
187
|
+
.mws-key input {
|
|
188
|
+
flex: 1 1 14em;
|
|
189
|
+
min-width: 0;
|
|
190
|
+
min-height: 34px;
|
|
191
|
+
padding: 0 12px;
|
|
192
|
+
border: var(--line) solid var(--rule);
|
|
193
|
+
border-radius: var(--radius-pill);
|
|
194
|
+
background: transparent;
|
|
195
|
+
color: var(--ink);
|
|
196
|
+
font-family: var(--font-mono);
|
|
197
|
+
font-size: 13px;
|
|
198
|
+
}
|
|
199
|
+
.mws-key__note { margin: 8px 0 0; }
|
|
200
|
+
|
|
201
|
+
.mws-error {
|
|
202
|
+
margin: 0 0 12px;
|
|
203
|
+
padding: 8px 12px;
|
|
204
|
+
border: var(--line) solid currentColor;
|
|
205
|
+
border-radius: var(--radius-sm);
|
|
206
|
+
font-size: 13px;
|
|
207
|
+
color: var(--danger);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.mws-power:focus-visible, .mws-chip:focus-visible, .mws-slide input:focus-visible, .mws-key input:focus-visible {
|
|
211
|
+
outline: 2px solid var(--focus);
|
|
212
|
+
outline-offset: 3px;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
@media (prefers-reduced-motion: reduce) {
|
|
216
|
+
.mws-ring__spent, .mws-ring__next { transition: none; }
|
|
217
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Market Watch settings — {{worldName}}</title>
|
|
7
|
+
<meta name="description" content="Turn Market Watch on or off, set its monthly AI cap and how often it runs, see what it spent this month, and set the project's Anthropic key.">
|
|
8
|
+
<link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
|
|
9
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
+
<link rel="stylesheet" href="/builders/style.css?v=2026-09-23-changelist1">
|
|
12
|
+
<link rel="stylesheet" href="/builders/market-watch-settings.css">
|
|
13
|
+
</head>
|
|
14
|
+
<body data-page="market-watch-settings" data-page-title="Market Watch">
|
|
15
|
+
|
|
16
|
+
<div class="app">
|
|
17
|
+
<aside class="app-sidebar" id="app-sidebar" aria-label="Primary"></aside>
|
|
18
|
+
<div class="app-scrim" id="app-scrim" hidden></div>
|
|
19
|
+
<div class="app-body">
|
|
20
|
+
<header class="app-topbar" id="app-topbar"></header>
|
|
21
|
+
<div class="app-content">
|
|
22
|
+
<!-- The page's one h1, for screen readers: no page shows its head (task 1004836). -->
|
|
23
|
+
<div class="page-head page-head--board">
|
|
24
|
+
<h1 class="page-head__h">Market Watch settings</h1>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<main id="hall-main">
|
|
28
|
+
<!-- What a reader who is not the owner sees. The routes are the wall (403); this is
|
|
29
|
+
only what stands in for an empty gauge. -->
|
|
30
|
+
<section class="scroll" id="mws-sealed" aria-labelledby="mws-sealed-h" hidden>
|
|
31
|
+
<h2 class="scroll__h" id="mws-sealed-h">Owner only</h2>
|
|
32
|
+
<p class="scroll__lede">Only the project owner can see and change Market Watch settings.</p>
|
|
33
|
+
</section>
|
|
34
|
+
|
|
35
|
+
<section class="scroll" id="mws-off" aria-labelledby="mws-off-h" hidden>
|
|
36
|
+
<h2 class="scroll__h" id="mws-off-h">Market Watch is not on this project</h2>
|
|
37
|
+
<p class="scroll__lede">Turn the Market Watch module on under <a href="/modules">Modules</a> first. Its settings appear here once it is running.</p>
|
|
38
|
+
</section>
|
|
39
|
+
|
|
40
|
+
<p class="mws-error" id="mws-error" role="alert" hidden></p>
|
|
41
|
+
|
|
42
|
+
<!-- The fuel gauge (docs/design/mocks/market-watch/settings.html, option B). Drawn
|
|
43
|
+
by market-watch-settings.js from GET /market-watch/settings. -->
|
|
44
|
+
<section class="scroll mws" id="mws-body" aria-label="Market Watch settings" hidden>
|
|
45
|
+
<div class="mws-hero">
|
|
46
|
+
<div class="mws-ring" id="mws-ring">
|
|
47
|
+
<svg viewBox="0 0 100 100" aria-hidden="true">
|
|
48
|
+
<circle class="mws-ring__track" cx="50" cy="50" r="44" pathLength="100"/>
|
|
49
|
+
<circle class="mws-ring__spent" id="mws-arc" cx="50" cy="50" r="44" pathLength="100" stroke-dasharray="0 100"/>
|
|
50
|
+
<circle class="mws-ring__next" id="mws-arc2" cx="50" cy="50" r="44" pathLength="100" stroke-dasharray="0 100"/>
|
|
51
|
+
</svg>
|
|
52
|
+
<div class="mws-ring__c">
|
|
53
|
+
<div>
|
|
54
|
+
<div class="mws-ring__big" id="mws-spent">$0</div>
|
|
55
|
+
<div class="mws-soft" id="mws-of"></div>
|
|
56
|
+
<div class="mws-pill" id="mws-left"></div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="mws-controls">
|
|
62
|
+
<button type="button" class="mws-power" id="mws-power" aria-pressed="false">
|
|
63
|
+
<span id="mws-power-t">Market Watch is off</span><i aria-hidden="true">⏻</i>
|
|
64
|
+
</button>
|
|
65
|
+
|
|
66
|
+
<div class="mws-slide">
|
|
67
|
+
<label class="mws-soft" for="mws-cap">monthly AI cap</label>
|
|
68
|
+
<span class="mws-cap" id="mws-cap-t">$20</span>
|
|
69
|
+
<input type="range" min="5" max="60" step="5" value="20" id="mws-cap">
|
|
70
|
+
<span class="mws-soft" id="mws-hint"></span>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div class="mws-cad" id="mws-cad" role="group" aria-label="how often it runs">
|
|
74
|
+
<button type="button" class="mws-chip" data-c="weekly">weekly</button>
|
|
75
|
+
<button type="button" class="mws-chip" data-c="biweekly">every 2 weeks</button>
|
|
76
|
+
<button type="button" class="mws-chip" data-c="monthly">monthly</button>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div class="mws-lbl" id="mws-weeks-h">the last weeks</div>
|
|
82
|
+
<ol class="mws-weeks" id="mws-weeks" aria-labelledby="mws-weeks-h"></ol>
|
|
83
|
+
<div class="mws-legend" id="mws-legend"></div>
|
|
84
|
+
|
|
85
|
+
<!-- The project's own Anthropic key: write-only. The page only ever learns whether
|
|
86
|
+
one is set; it can replace it or clear it, never read it. -->
|
|
87
|
+
<div class="mws-lbl">anthropic key</div>
|
|
88
|
+
<div class="mws-key" id="mws-key">
|
|
89
|
+
<span class="mws-key__state" id="mws-key-state">not set</span>
|
|
90
|
+
<input type="password" id="mws-key-in" autocomplete="off" spellcheck="false" placeholder="paste the project's key" aria-label="the project's Anthropic key">
|
|
91
|
+
<button type="button" class="btn" id="mws-key-save">Save</button>
|
|
92
|
+
<button type="button" class="btn btn--ghost" id="mws-key-clear" hidden>Clear</button>
|
|
93
|
+
</div>
|
|
94
|
+
<p class="mws-soft mws-key__note" id="mws-key-note">Runs use this key, so the project's Anthropic account pays for them. It is stored encrypted and never shown again.</p>
|
|
95
|
+
</section>
|
|
96
|
+
</main>
|
|
97
|
+
|
|
98
|
+
<footer class="app-foot" id="app-foot"></footer>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
<div id="toast" class="toast" role="status" aria-live="polite" data-visible="0"></div>
|
|
104
|
+
|
|
105
|
+
<script src="/builders/dom-utils.js?v=2026-10-25-escape"></script>
|
|
106
|
+
<script src="/builders/shell-trail.js?v=2026-10-08-city-tab"></script>
|
|
107
|
+
<script src="/builders/craft-mode.js?v=2026-10-30-market-watch"></script>
|
|
108
|
+
<script src="/builders/shell.js?v=2026-10-30-market-watch"></script>
|
|
109
|
+
<script src="/builders/palette.js" defer></script>
|
|
110
|
+
<script src="/builders/hall-kit.js"></script>
|
|
111
|
+
<script src="/builders/market-watch-settings.js"></script>
|
|
112
|
+
</body>
|
|
113
|
+
</html>
|