@bongos/core 1.24.50 → 1.24.51
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 +25 -20
- package/docs/copy-inventory.md +62 -64
- package/docs/copy-registry.json +230 -238
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-inventory.json +2 -2
- package/docs/page-readings.json +70 -86
- package/modules/status-ui/public/index.html +43 -43
- package/modules/status-ui/public/status.js +26 -27
- 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/loading_mark.mjs +6 -6
- package/tests/status_company_attribution.mjs +1 -1
- package/tests/status_page_wording.mjs +129 -0
|
@@ -3354,5 +3354,7 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
3354
3354
|
landed since 1.24.48 with no explicit bump. run 42360265278. (task 1002620)
|
|
3355
3355
|
1.24.50 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3356
3356
|
landed since 1.24.49 with no explicit bump. run 42362323844. (task 1002620)
|
|
3357
|
+
1.24.51 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
3358
|
+
landed since 1.24.50 with no explicit bump. run 42363111099. (task 1002620)
|
|
3357
3359
|
---------------------------------------------------------------------------
|
|
3358
3360
|
```
|
package/docs/page-inventory.json
CHANGED
|
@@ -1806,8 +1806,8 @@
|
|
|
1806
1806
|
"module": "status-ui",
|
|
1807
1807
|
"page": "index",
|
|
1808
1808
|
"id_from": "file-name",
|
|
1809
|
-
"title": "{{productName}} —
|
|
1810
|
-
"document_title": "{{productName}} —
|
|
1809
|
+
"title": "{{productName}} — build status",
|
|
1810
|
+
"document_title": "{{productName}} — build status",
|
|
1811
1811
|
"path": "/",
|
|
1812
1812
|
"url": "https://status.{apex}/",
|
|
1813
1813
|
"files": [
|
package/docs/page-readings.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"adr": "0341 D3",
|
|
6
6
|
"reread": "node scripts/bongos/page-reader.js --stale",
|
|
7
7
|
"how": ["Generated by node scripts/bongos/page-reader.js (BV2.TW04, task 1004315; ADR 0341 D3). Do not hand-edit.","One entry per page of docs/page-inventory.json. Lines are in page order: the default state first, and a line only another state shows sits where that state shows it, with its state named.","placement: placed = a docs/copy-registry.json row renders it (file, line, string_id); shared = shell text every page of the surface carries (top bar, sidebar, footer), with its row when the registry has one; unplaced = the registry cannot place it (a rewrite becomes an engineer task, ADR 0341 D4).","text keeps {…} where the registry row has a hole, or where a value the page read from its API was filled in. A string that is only such data is counted under omitted.data, not listed.","reading_hash is over the non-shared lines (key, section, text); files_hash is over the page's inventory files. --check compares files_hash only and never opens a browser.","Rendered through the hall-preview harness (hall) and the ui-design kit stub (landing, status), at 1280x800 with the clock pinned, so a reading is the fixture world's page."],
|
|
8
|
-
"counts": {"pages":45,"lines":
|
|
8
|
+
"counts": {"pages":45,"lines":4561,"placed":1581,"shared":434,"unplaced":2546,"omitted_data":3311},
|
|
9
9
|
"pages": [
|
|
10
10
|
{
|
|
11
11
|
"id": "builders:ai-studio",
|
|
@@ -5077,96 +5077,80 @@
|
|
|
5077
5077
|
{
|
|
5078
5078
|
"id": "status:index",
|
|
5079
5079
|
"surface": "status",
|
|
5080
|
-
"title": "{{productName}} —
|
|
5080
|
+
"title": "{{productName}} — build status",
|
|
5081
5081
|
"states_read": ["loaded"],
|
|
5082
|
-
"files_hash": "
|
|
5083
|
-
"reading_hash": "
|
|
5084
|
-
"counts": {"lines":
|
|
5082
|
+
"files_hash": "b30cc05e8f35a8a4",
|
|
5083
|
+
"reading_hash": "5abba39cf5ec9226",
|
|
5084
|
+
"counts": {"lines":66,"placed":47,"shared":9,"unplaced":10},
|
|
5085
5085
|
"omitted": {"data":90},
|
|
5086
5086
|
"notes": [],
|
|
5087
5087
|
"lines": [
|
|
5088
|
-
{"key":"L0001","section":"{…}","text":"
|
|
5089
|
-
{"key":"L0002","section":"{…}","text":"
|
|
5090
|
-
{"key":"L0003","section":"{…}","text":"
|
|
5091
|
-
{"key":"L0004","section":"{…}","text":"
|
|
5092
|
-
{"key":"L0005","section":"navigation","text":"
|
|
5093
|
-
{"key":"L0006","section":"navigation","text":"
|
|
5094
|
-
{"key":"L0007","section":"navigation","text":"
|
|
5095
|
-
{"key":"L0008","section":"navigation","text":"
|
|
5096
|
-
{"key":"L0009","section":"navigation","text":"
|
|
5097
|
-
{"key":"L0010","section":"navigation","text":"
|
|
5098
|
-
{"key":"L0011","section":"navigation","text":"
|
|
5099
|
-
{"key":"L0012","section":"{…}","text":"
|
|
5088
|
+
{"key":"L0001","section":"{…}","text":"Build status, in the open","placement":"placed","file":"modules/status-ui/public/index.html","line":33,"string_id":"2f6423735a84"},
|
|
5089
|
+
{"key":"L0002","section":"{…}","text":"Everything here is built in public. This page shows what shipped, what it cost, and who built it, and it updates every minute.","placement":"placed","file":"modules/status-ui/public/index.html","line":34,"string_id":"244284381bd1"},
|
|
5090
|
+
{"key":"L0003","section":"{…}","text":"Go to {{productName}} →","placement":"placed","file":"modules/status-ui/public/index.html","line":36,"string_id":"4427e4114a14"},
|
|
5091
|
+
{"key":"L0004","section":"{…}","text":"updated at {…}","placement":"placed","file":"modules/status-ui/public/status.js","line":1065,"string_id":"776a9898a824"},
|
|
5092
|
+
{"key":"L0005","section":"navigation","text":"Overview","placement":"shared"},
|
|
5093
|
+
{"key":"L0006","section":"navigation","text":"Builders","placement":"shared"},
|
|
5094
|
+
{"key":"L0007","section":"navigation","text":"Trends","placement":"shared"},
|
|
5095
|
+
{"key":"L0008","section":"navigation","text":"In progress","placement":"shared","file":"modules/status-ui/public/index.html","line":112,"string_id":"fc79a36f2605"},
|
|
5096
|
+
{"key":"L0009","section":"navigation","text":"Spending","placement":"shared"},
|
|
5097
|
+
{"key":"L0010","section":"navigation","text":"Shipped","placement":"shared"},
|
|
5098
|
+
{"key":"L0011","section":"navigation","text":"Snapshot","placement":"shared"},
|
|
5099
|
+
{"key":"L0012","section":"{…}","text":"tasks shipped, last 7 days","placement":"placed","file":"modules/status-ui/public/index.html","line":64,"string_id":"677c54db7834"},
|
|
5100
5100
|
{"key":"L0013","section":"{…}","text":"{{currency}} spent","placement":"placed","file":"modules/status-ui/public/index.html","line":131,"string_id":"35872b9ecc49"},
|
|
5101
|
-
{"key":"L0014","section":"{…}","text":"passed
|
|
5102
|
-
{"key":"L0015","section":"
|
|
5103
|
-
{"key":"L0016","section":"
|
|
5104
|
-
{"key":"L0017","section":"
|
|
5105
|
-
{"key":"L0018","section":"
|
|
5106
|
-
{"key":"L0019","section":"
|
|
5107
|
-
{"key":"L0020","section":"
|
|
5108
|
-
{"key":"L0021","section":"
|
|
5109
|
-
{"key":"L0022","section":"
|
|
5110
|
-
{"key":"L0023","section":"
|
|
5111
|
-
{"key":"L0024","section":"
|
|
5112
|
-
{"key":"L0025","section":"
|
|
5113
|
-
{"key":"L0026","section":"
|
|
5114
|
-
{"key":"L0027","section":"
|
|
5115
|
-
{"key":"L0028","section":"
|
|
5116
|
-
{"key":"L0029","section":"
|
|
5117
|
-
{"key":"L0030","section":"
|
|
5118
|
-
{"key":"L0031","section":"
|
|
5119
|
-
{"key":"L0032","section":"
|
|
5120
|
-
{"key":"L0033","section":"
|
|
5121
|
-
{"key":"L0034","section":"
|
|
5122
|
-
{"key":"L0035","section":"
|
|
5123
|
-
{"key":"L0036","section":"
|
|
5124
|
-
{"key":"L0037","section":"
|
|
5125
|
-
{"key":"L0038","section":"
|
|
5126
|
-
{"key":"L0039","section":"
|
|
5127
|
-
{"key":"L0040","section":"
|
|
5128
|
-
{"key":"L0041","section":"
|
|
5129
|
-
{"key":"L0042","section":"
|
|
5130
|
-
{"key":"L0043","section":"
|
|
5131
|
-
{"key":"L0044","section":"
|
|
5132
|
-
{"key":"L0045","section":"
|
|
5133
|
-
{"key":"L0046","section":"
|
|
5134
|
-
{"key":"L0047","section":"
|
|
5135
|
-
{"key":"L0048","section":"
|
|
5136
|
-
{"key":"L0049","section":"
|
|
5137
|
-
{"key":"L0050","section":"
|
|
5138
|
-
{"key":"L0051","section":"
|
|
5139
|
-
{"key":"L0052","section":"
|
|
5140
|
-
{"key":"L0053","section":"
|
|
5141
|
-
{"key":"L0054","section":"
|
|
5142
|
-
{"key":"L0055","section":"
|
|
5143
|
-
{"key":"L0056","section":"
|
|
5144
|
-
{"key":"L0057","section":"
|
|
5145
|
-
{"key":"L0058","section":"
|
|
5146
|
-
{"key":"L0059","section":"
|
|
5147
|
-
{"key":"L0060","section":"
|
|
5148
|
-
{"key":"L0061","section":"
|
|
5149
|
-
{"key":"L0062","section":"
|
|
5150
|
-
{"key":"L0063","section":"
|
|
5151
|
-
{"key":"L0064","section":"
|
|
5152
|
-
{"key":"L0065","section":"
|
|
5153
|
-
{"key":"L0066","section":"
|
|
5154
|
-
{"key":"L0067","section":"Lately Inscribed","text":"Window","placement":"unplaced"},
|
|
5155
|
-
{"key":"L0068","section":"Lately Inscribed","text":"Last 7 days","placement":"placed","file":"modules/status-ui/public/index.html","line":167,"string_id":"b3bb6b729d30"},
|
|
5156
|
-
{"key":"L0069","section":"Lately Inscribed","text":"Last 30 days","placement":"placed","file":"modules/status-ui/public/index.html","line":168,"string_id":"41cc7f5ec97e"},
|
|
5157
|
-
{"key":"L0070","section":"Lately Inscribed","text":"Last 90 days","placement":"placed","file":"modules/status-ui/public/index.html","line":169,"string_id":"726d3470f7a0"},
|
|
5158
|
-
{"key":"L0071","section":"Lately Inscribed","text":"All time","placement":"placed","file":"modules/status-ui/public/index.html","line":166,"string_id":"a072071b893c"},
|
|
5159
|
-
{"key":"L0072","section":"Lately Inscribed","text":"inscribed by {…} · {…}","placement":"unplaced","occurrences":6},
|
|
5160
|
-
{"key":"L0073","section":"Lately Inscribed","text":"The site now has the three pages every real website needs — privacy, terms and a contact page — linked from the footer of the front page and the projects hub. The privacy page says plainly what is kept about a GitHub account and a project, who else sees it, and how long it stays; the contact page points at the two doors that actually exist, the repository and the builders' hall. Every project built on the platform gets the same pages under its own name, with the claims that are only true of the platform itself removed.","placement":"unplaced"},
|
|
5161
|
-
{"key":"L0074","section":"Lately Inscribed","text":"‹ earlier page","placement":"placed","file":"modules/status-ui/public/index.html","line":200,"string_id":"6d0d64f10bd9"},
|
|
5162
|
-
{"key":"L0075","section":"Lately Inscribed","text":"page {…} of {…}","placement":"placed","file":"modules/status-ui/public/status.js","line":876,"string_id":"4a00bdbfd9be"},
|
|
5163
|
-
{"key":"L0076","section":"Lately Inscribed","text":"later page ›","placement":"placed","file":"modules/status-ui/public/index.html","line":202,"string_id":"9b019d632d3e"},
|
|
5164
|
-
{"key":"L0077","section":"The World","text":"The World","placement":"placed","file":"modules/status-ui/public/index.html","line":209,"string_id":"3e465b62cea8"},
|
|
5165
|
-
{"key":"L0078","section":"The World","text":"A true-to-life portrait of {{worldName}} as she stands today, rendered from the city's own stones.","placement":"placed","file":"modules/status-ui/public/index.html","line":210,"string_id":"623d6b7ae6b7"},
|
|
5166
|
-
{"key":"L0079","section":"The World","text":"The cartographers are still at their survey…","placement":"placed","file":"modules/status-ui/public/index.html","line":214,"string_id":"16f6b8dcd3ec"},
|
|
5167
|
-
{"key":"L0080","section":"The World","text":"Show history of earlier portraits","placement":"placed","file":"modules/status-ui/public/index.html","line":220,"string_id":"81cb441627b8"},
|
|
5168
|
-
{"key":"L0081","section":"footer","text":"By order of the Senate","placement":"shared","file":"modules/status-ui/public/index.html","line":229,"string_id":"1fe8937399f5"},
|
|
5169
|
-
{"key":"L0082","section":"footer","text":"{{Currency}} are wrought by the lawmen's review; they measure the work, and are never coin.","placement":"shared","file":"modules/status-ui/public/index.html","line":232,"string_id":"1b40dc1e9196"}
|
|
5101
|
+
{"key":"L0014","section":"{…}","text":"passed review, last 7 days","placement":"placed","file":"modules/status-ui/public/index.html","line":75,"string_id":"dd4bdd27a1bb"},
|
|
5102
|
+
{"key":"L0015","section":"Top builders","text":"Top builders","placement":"placed","file":"modules/status-ui/public/index.html","line":83,"string_id":"176f8a32a380"},
|
|
5103
|
+
{"key":"L0016","section":"Top builders","text":"Ranked by the {{currency}} each has earned.","placement":"placed","file":"modules/status-ui/public/index.html","line":84,"string_id":"d0022c3ed6b1"},
|
|
5104
|
+
{"key":"L0017","section":"How the work is changing","text":"How the work is changing","placement":"placed","file":"modules/status-ui/public/index.html","line":95,"string_id":"bca6d8e66293"},
|
|
5105
|
+
{"key":"L0018","section":"How the work is changing","text":"Tasks shipped and the time each took, over the last 90 days. The project as a whole, never one builder.","placement":"placed","file":"modules/status-ui/public/index.html","line":96,"string_id":"2210f2507855"},
|
|
5106
|
+
{"key":"L0019","section":"How the work is changing","text":"tasks shipped (90 days)","placement":"placed","file":"modules/status-ui/public/index.html","line":100,"string_id":"53e9b6f93708"},
|
|
5107
|
+
{"key":"L0020","section":"How the work is changing","text":"active builders","placement":"placed","file":"modules/status-ui/public/index.html","line":101,"string_id":"76aa5d6d2000"},
|
|
5108
|
+
{"key":"L0021","section":"How the work is changing","text":"average time per task","placement":"placed","file":"modules/status-ui/public/index.html","line":102,"string_id":"625facbe8b7a"},
|
|
5109
|
+
{"key":"L0022","section":"How the work is changing","text":"Not enough tasks have shipped yet to draw a trend.","placement":"placed","file":"modules/status-ui/public/index.html","line":106,"string_id":"def3e300402e"},
|
|
5110
|
+
{"key":"L0023","section":"In progress","text":"In progress","placement":"placed","file":"modules/status-ui/public/index.html","line":112,"string_id":"fc79a36f2605"},
|
|
5111
|
+
{"key":"L0024","section":"In progress","text":"The versions being built now.","placement":"placed","file":"modules/status-ui/public/index.html","line":113,"string_id":"73df77b458ee"},
|
|
5112
|
+
{"key":"L0025","section":"In progress","text":"{…}% complete · weighted by priority","placement":"placed","file":"modules/status-ui/public/status.js","line":411,"string_id":"78c552726882","occurrences":2},
|
|
5113
|
+
{"key":"L0026","section":"In progress","text":"The work, in brief","placement":"placed","file":"modules/status-ui/public/status.js","line":434,"string_id":"c1ab82f376ec","occurrences":2},
|
|
5114
|
+
{"key":"L0027","section":"Spending","text":"Spending","placement":"unplaced"},
|
|
5115
|
+
{"key":"L0028","section":"Spending","text":"What the build has cost, against the value it has produced.","placement":"placed","file":"modules/status-ui/public/index.html","line":125,"string_id":"18b5241e8dd5"},
|
|
5116
|
+
{"key":"L0029","section":"Spending","text":"{{currency}} spent","placement":"placed","file":"modules/status-ui/public/index.html","line":131,"string_id":"35872b9ecc49"},
|
|
5117
|
+
{"key":"L0030","section":"Spending","text":"value produced","placement":"placed","file":"modules/status-ui/public/index.html","line":135,"string_id":"40d2b3319954"},
|
|
5118
|
+
{"key":"L0031","section":"Spending","text":"yearly budget","placement":"placed","file":"modules/status-ui/public/index.html","line":139,"string_id":"fa0c7ee6a0ba"},
|
|
5119
|
+
{"key":"L0032","section":"Spending","text":"of the budget","placement":"placed","file":"modules/status-ui/public/index.html","line":143,"string_id":"3de9ededa6f7"},
|
|
5120
|
+
{"key":"L0033","section":"Spending","text":"When the value line sits above the spend line, the work is worth more than it cost.","placement":"placed","file":"modules/status-ui/public/index.html","line":149,"string_id":"4b74c11f6b14"},
|
|
5121
|
+
{"key":"L0034","section":"Spending","text":"The chart always shows the whole project; the filters below change only the breakdown.","placement":"placed","file":"modules/status-ui/public/index.html","line":149,"string_id":"22ffc60736f4"},
|
|
5122
|
+
{"key":"L0035","section":"Spending","text":"Source","placement":"unplaced"},
|
|
5123
|
+
{"key":"L0036","section":"Spending","text":"All sources","placement":"placed","file":"modules/status-ui/public/index.html","line":154,"string_id":"cb7eae1a30d5"},
|
|
5124
|
+
{"key":"L0037","section":"Spending","text":"Category","placement":"unplaced"},
|
|
5125
|
+
{"key":"L0038","section":"Spending","text":"All categories","placement":"placed","file":"modules/status-ui/public/index.html","line":160,"string_id":"155d14ab692a"},
|
|
5126
|
+
{"key":"L0039","section":"Spending","text":"Window","placement":"unplaced"},
|
|
5127
|
+
{"key":"L0040","section":"Spending","text":"All time","placement":"placed","file":"modules/status-ui/public/index.html","line":166,"string_id":"a072071b893c"},
|
|
5128
|
+
{"key":"L0041","section":"Spending","text":"Last 7 days","placement":"placed","file":"modules/status-ui/public/index.html","line":167,"string_id":"b3bb6b729d30"},
|
|
5129
|
+
{"key":"L0042","section":"Spending","text":"Last 30 days","placement":"placed","file":"modules/status-ui/public/index.html","line":168,"string_id":"41cc7f5ec97e"},
|
|
5130
|
+
{"key":"L0043","section":"Spending","text":"Last 90 days","placement":"placed","file":"modules/status-ui/public/index.html","line":169,"string_id":"726d3470f7a0"},
|
|
5131
|
+
{"key":"L0044","section":"Spending","text":"Spending by builder.","placement":"placed","file":"modules/status-ui/public/index.html","line":175,"string_id":"2335aef79d55"},
|
|
5132
|
+
{"key":"L0045","section":"Spending","text":"Unattributed","placement":"unplaced"},
|
|
5133
|
+
{"key":"L0046","section":"Spending","text":"is shared cost: the infrastructure and domains the whole project pays for, plus early spending from before costs were tracked per builder. It is never charged to one builder.","placement":"placed","file":"modules/status-ui/public/index.html","line":175,"string_id":"2546b875300e"},
|
|
5134
|
+
{"key":"L0047","section":"Spending","text":"Attributed to builders: {…} · Shared (unattributed): {…} ({…}%).","placement":"placed","file":"modules/status-ui/public/status.js","line":558,"string_id":"ce5865259902"},
|
|
5135
|
+
{"key":"L0048","section":"Spending","text":"unattributed","placement":"unplaced"},
|
|
5136
|
+
{"key":"L0049","section":"Recently shipped","text":"Recently shipped","placement":"placed","file":"modules/status-ui/public/index.html","line":183,"string_id":"b555b1fa2052"},
|
|
5137
|
+
{"key":"L0050","section":"Recently shipped","text":"The newest finished tasks.","placement":"placed","file":"modules/status-ui/public/index.html","line":184,"string_id":"2c7f9f444576"},
|
|
5138
|
+
{"key":"L0051","section":"Recently shipped","text":"Window","placement":"unplaced"},
|
|
5139
|
+
{"key":"L0052","section":"Recently shipped","text":"Last 7 days","placement":"placed","file":"modules/status-ui/public/index.html","line":167,"string_id":"b3bb6b729d30"},
|
|
5140
|
+
{"key":"L0053","section":"Recently shipped","text":"Last 30 days","placement":"placed","file":"modules/status-ui/public/index.html","line":168,"string_id":"41cc7f5ec97e"},
|
|
5141
|
+
{"key":"L0054","section":"Recently shipped","text":"Last 90 days","placement":"placed","file":"modules/status-ui/public/index.html","line":169,"string_id":"726d3470f7a0"},
|
|
5142
|
+
{"key":"L0055","section":"Recently shipped","text":"All time","placement":"placed","file":"modules/status-ui/public/index.html","line":166,"string_id":"a072071b893c"},
|
|
5143
|
+
{"key":"L0056","section":"Recently shipped","text":"{…} by {…} · {…}","placement":"unplaced","occurrences":6},
|
|
5144
|
+
{"key":"L0057","section":"Recently shipped","text":"The site now has the three pages every real website needs — privacy, terms and a contact page — linked from the footer of the front page and the projects hub. The privacy page says plainly what is kept about a GitHub account and a project, who else sees it, and how long it stays; the contact page points at the two doors that actually exist, the repository and the builders' hall. Every project built on the platform gets the same pages under its own name, with the claims that are only true of the platform itself removed.","placement":"unplaced"},
|
|
5145
|
+
{"key":"L0058","section":"Recently shipped","text":"‹ earlier page","placement":"placed","file":"modules/status-ui/public/index.html","line":200,"string_id":"6d0d64f10bd9"},
|
|
5146
|
+
{"key":"L0059","section":"Recently shipped","text":"page {…} of {…}","placement":"placed","file":"modules/status-ui/public/status.js","line":875,"string_id":"4a00bdbfd9be"},
|
|
5147
|
+
{"key":"L0060","section":"Recently shipped","text":"later page ›","placement":"placed","file":"modules/status-ui/public/index.html","line":202,"string_id":"9b019d632d3e"},
|
|
5148
|
+
{"key":"L0061","section":"Snapshot","text":"Snapshot","placement":"unplaced"},
|
|
5149
|
+
{"key":"L0062","section":"Snapshot","text":"{{worldName}} as it looks today, rendered from the live project.","placement":"placed","file":"modules/status-ui/public/index.html","line":210,"string_id":"3786ecf30a95"},
|
|
5150
|
+
{"key":"L0063","section":"Snapshot","text":"Loading the latest snapshot…","placement":"placed","file":"modules/status-ui/public/index.html","line":214,"string_id":"b9584aeba82f"},
|
|
5151
|
+
{"key":"L0064","section":"Snapshot","text":"Show earlier snapshots","placement":"placed","file":"modules/status-ui/public/index.html","line":220,"string_id":"96032bb7b5be"},
|
|
5152
|
+
{"key":"L0065","section":"footer","text":"{{productName}} build status","placement":"shared","file":"modules/status-ui/public/index.html","line":229,"string_id":"774d51243976"},
|
|
5153
|
+
{"key":"L0066","section":"footer","text":"{{Currency}} are awarded by review. They measure work done and are never money.","placement":"shared","file":"modules/status-ui/public/index.html","line":232,"string_id":"834d35e246c5"}
|
|
5170
5154
|
]
|
|
5171
5155
|
}
|
|
5172
5156
|
]
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<title>{{productName}} —
|
|
7
|
-
<meta name="description" content="
|
|
6
|
+
<title>{{productName}} — build status</title>
|
|
7
|
+
<meta name="description" content="How {{worldName}} is being built, in the open: what shipped, what it cost, and who built it.">
|
|
8
8
|
<link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
|
|
9
9
|
<link rel="apple-touch-icon" href="/modules/ui-design/public/brand/apple-touch-icon.png">
|
|
10
10
|
<!-- The faces are the pack's: the server (and the off-box mirror) splice the pack's
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
|
|
31
31
|
<section class="herm" aria-labelledby="herm-title">
|
|
32
32
|
<h1 id="herm-title">{{worldName}}</h1>
|
|
33
|
-
<p class="herm__epigraph">
|
|
34
|
-
<p class="herm__sub">
|
|
33
|
+
<p class="herm__epigraph">Build status, in the open</p>
|
|
34
|
+
<p class="herm__sub">Everything here is built in public. This page shows what shipped, what it cost, and who built it, and it updates every minute.</p>
|
|
35
35
|
<p class="herm__meta">
|
|
36
|
-
<a href="{{publicOrigin}}" target="_blank" rel="noopener">
|
|
36
|
+
<a href="{{publicOrigin}}" target="_blank" rel="noopener">Go to {{productName}} →</a>
|
|
37
37
|
<span class="dot" aria-hidden="true">·</span>
|
|
38
|
-
<span class="herm__updated" id="last-updated">
|
|
38
|
+
<span class="herm__updated" id="last-updated">Checking for updates…</span>
|
|
39
39
|
</p>
|
|
40
40
|
</section>
|
|
41
41
|
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
(public-builders/style.css .hall-nav__*). Built from a SECTIONS constant
|
|
44
44
|
in status.js. Empty until populated — [hidden] keeps the strip from
|
|
45
45
|
flashing as an empty band before chips arrive. -->
|
|
46
|
-
<nav id="status-nav" class="status-nav" aria-label="Sections of the
|
|
46
|
+
<nav id="status-nav" class="status-nav" aria-label="Sections of the page" hidden>
|
|
47
47
|
<div class="status-nav__inner">
|
|
48
48
|
<ul class="status-nav__list" id="status-nav-list"></ul>
|
|
49
49
|
</div>
|
|
@@ -57,22 +57,22 @@
|
|
|
57
57
|
loadHeadline() in status.js, fed by the existing public endpoints
|
|
58
58
|
(recent-shipped, cost-summary, grades). -->
|
|
59
59
|
<section class="tablet tablet--headline" id="headline-tablet" aria-labelledby="headline-heading">
|
|
60
|
-
<h2 id="headline-heading" class="visually-hidden">
|
|
60
|
+
<h2 id="headline-heading" class="visually-hidden">At a glance</h2>
|
|
61
61
|
<div class="headline-grid">
|
|
62
62
|
<div class="stat headline-stat" id="headline-shipped">
|
|
63
63
|
<div class="stat__num" id="headline-shipped-num">—</div>
|
|
64
|
-
<div class="stat__label">
|
|
64
|
+
<div class="stat__label">tasks shipped, last 7 days</div>
|
|
65
65
|
</div>
|
|
66
66
|
<div class="stat headline-stat" id="headline-treasury">
|
|
67
67
|
<div class="stat__num" id="headline-treasury-num">—</div>
|
|
68
|
-
<div class="stat__label" id="headline-treasury-label">of
|
|
68
|
+
<div class="stat__label" id="headline-treasury-label">of this year's budget spent</div>
|
|
69
69
|
<div class="headline-bar" aria-hidden="true">
|
|
70
70
|
<div class="headline-bar__fill" id="headline-treasury-bar" style="width: 0%"></div>
|
|
71
71
|
</div>
|
|
72
72
|
</div>
|
|
73
73
|
<div class="stat headline-stat" id="headline-grade">
|
|
74
74
|
<div class="stat__num" id="headline-grade-num">—</div>
|
|
75
|
-
<div class="stat__label">passed
|
|
75
|
+
<div class="stat__label">passed review, last 7 days</div>
|
|
76
76
|
</div>
|
|
77
77
|
</div>
|
|
78
78
|
</section>
|
|
@@ -80,49 +80,49 @@
|
|
|
80
80
|
<section class="tablet" id="leader-tablet" aria-labelledby="leader-heading">
|
|
81
81
|
<div class="tablet__head">
|
|
82
82
|
<div class="tablet__heading">
|
|
83
|
-
<h2 id="leader-heading">
|
|
84
|
-
<p class="tablet__subtitle">
|
|
83
|
+
<h2 id="leader-heading">Top builders</h2>
|
|
84
|
+
<p class="tablet__subtitle">Ranked by the {{currency}} each has earned.</p>
|
|
85
85
|
</div>
|
|
86
86
|
</div>
|
|
87
87
|
<ol id="leaderboard" class="leader">
|
|
88
|
-
<li class="empty">No
|
|
88
|
+
<li class="empty">No builders yet — be the first.</li>
|
|
89
89
|
</ol>
|
|
90
90
|
</section>
|
|
91
91
|
|
|
92
92
|
<section class="tablet" id="foundry-tablet" aria-labelledby="foundry-heading">
|
|
93
93
|
<div class="tablet__head">
|
|
94
94
|
<div class="tablet__heading">
|
|
95
|
-
<h2 id="foundry-heading">
|
|
96
|
-
<p class="tablet__subtitle">
|
|
95
|
+
<h2 id="foundry-heading">How the work is changing</h2>
|
|
96
|
+
<p class="tablet__subtitle">Tasks shipped and the time each took, over the last 90 days. The project as a whole, never one builder.</p>
|
|
97
97
|
</div>
|
|
98
98
|
</div>
|
|
99
99
|
<div class="cost-summary" id="foundry-stats">
|
|
100
|
-
<div class="stat"><div class="stat__num" id="foundry-shipped">—</div><div class="stat__label">
|
|
101
|
-
<div class="stat"><div class="stat__num" id="foundry-builders">—</div><div class="stat__label">
|
|
102
|
-
<div class="stat"><div class="stat__num" id="foundry-duration">—</div><div class="stat__label">
|
|
100
|
+
<div class="stat"><div class="stat__num" id="foundry-shipped">—</div><div class="stat__label">tasks shipped (90 days)</div></div>
|
|
101
|
+
<div class="stat"><div class="stat__num" id="foundry-builders">—</div><div class="stat__label">active builders</div></div>
|
|
102
|
+
<div class="stat"><div class="stat__num" id="foundry-duration">—</div><div class="stat__label">average time per task</div></div>
|
|
103
103
|
</div>
|
|
104
104
|
<div class="foundry__charts" id="foundry-charts"></div>
|
|
105
105
|
<div class="foundry__kinds" id="foundry-kinds"></div>
|
|
106
|
-
<p class="chart-note" id="foundry-empty" hidden>Not enough shipped
|
|
106
|
+
<p class="chart-note" id="foundry-empty" hidden>Not enough tasks have shipped yet to draw a trend.</p>
|
|
107
107
|
</section>
|
|
108
108
|
|
|
109
109
|
<section class="tablet" id="versions-tablet" aria-labelledby="versions-heading">
|
|
110
110
|
<div class="tablet__head">
|
|
111
111
|
<div class="tablet__heading">
|
|
112
|
-
<h2 id="versions-heading">
|
|
113
|
-
<p class="tablet__subtitle">The
|
|
112
|
+
<h2 id="versions-heading">In progress</h2>
|
|
113
|
+
<p class="tablet__subtitle">The versions being built now.</p>
|
|
114
114
|
</div>
|
|
115
115
|
</div>
|
|
116
116
|
<div id="versions" class="versions">
|
|
117
|
-
<p class="empty loading-mark" role="status">
|
|
117
|
+
<p class="empty loading-mark" role="status">Loading the versions…</p>
|
|
118
118
|
</div>
|
|
119
119
|
</section>
|
|
120
120
|
|
|
121
121
|
<section class="tablet" id="cost-tablet" aria-labelledby="cost-heading">
|
|
122
122
|
<div class="tablet__head">
|
|
123
123
|
<div class="tablet__heading">
|
|
124
|
-
<h2 id="cost-heading">
|
|
125
|
-
<p class="tablet__subtitle">
|
|
124
|
+
<h2 id="cost-heading">Spending</h2>
|
|
125
|
+
<p class="tablet__subtitle">What the build has cost, against the value it has produced.</p>
|
|
126
126
|
</div>
|
|
127
127
|
</div>
|
|
128
128
|
<div class="cost-summary">
|
|
@@ -132,21 +132,21 @@
|
|
|
132
132
|
</div>
|
|
133
133
|
<div class="stat">
|
|
134
134
|
<div class="stat__num" id="value-total">—</div>
|
|
135
|
-
<div class="stat__label">value
|
|
135
|
+
<div class="stat__label">value produced</div>
|
|
136
136
|
</div>
|
|
137
137
|
<div class="stat">
|
|
138
138
|
<div class="stat__num" id="cost-budget">5,000</div>
|
|
139
|
-
<div class="stat__label">
|
|
139
|
+
<div class="stat__label">yearly budget</div>
|
|
140
140
|
</div>
|
|
141
141
|
<div class="stat">
|
|
142
142
|
<div class="stat__num" id="cost-percent">—</div>
|
|
143
|
-
<div class="stat__label">of the
|
|
143
|
+
<div class="stat__label">of the budget</div>
|
|
144
144
|
</div>
|
|
145
145
|
</div>
|
|
146
146
|
<div class="chart-wrap">
|
|
147
|
-
<canvas id="cost-chart" aria-label="cumulative {{currency}} spent against cumulative value
|
|
147
|
+
<canvas id="cost-chart" aria-label="cumulative {{currency}} spent against cumulative value produced, day by day" role="img"></canvas>
|
|
148
148
|
</div>
|
|
149
|
-
<p class="chart-note">
|
|
149
|
+
<p class="chart-note">When the value line sits above the spend line, the work is worth more than it cost. <em>The chart always shows the whole project; the filters below change only the breakdown.</em></p>
|
|
150
150
|
<div class="cost-filters" role="group" aria-label="Filter the spend breakdown" style="display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin:6px 0 10px;">
|
|
151
151
|
<div class="tablet__filter">
|
|
152
152
|
<label for="cost-filter-source" class="tablet__filter-label">Source</label>
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
</div>
|
|
173
173
|
<p id="cost-filter-note" class="cost-split" aria-live="polite"></p>
|
|
174
174
|
<div id="cost-categories" class="cost-cats"></div>
|
|
175
|
-
<p class="chart-note">
|
|
175
|
+
<p class="chart-note">Spending by builder. <em>Unattributed</em> is shared cost: the infrastructure and domains the whole project pays for, plus early spending from before costs were tracked per builder. It is never charged to one builder.</p>
|
|
176
176
|
<p id="cost-attribution-split" class="cost-split" aria-live="polite"></p>
|
|
177
177
|
<div id="cost-builders" class="cost-cats"></div>
|
|
178
178
|
</section>
|
|
@@ -180,12 +180,12 @@
|
|
|
180
180
|
<section class="tablet" id="shipped-tablet" aria-labelledby="shipped-heading">
|
|
181
181
|
<div class="tablet__head">
|
|
182
182
|
<div class="tablet__heading">
|
|
183
|
-
<h2 id="shipped-heading">
|
|
184
|
-
<p class="tablet__subtitle">
|
|
183
|
+
<h2 id="shipped-heading">Recently shipped</h2>
|
|
184
|
+
<p class="tablet__subtitle">The newest finished tasks.</p>
|
|
185
185
|
</div>
|
|
186
186
|
<div class="tablet__filter">
|
|
187
187
|
<label for="shipped-range" class="tablet__filter-label">Window</label>
|
|
188
|
-
<select id="shipped-range" class="tablet__filter-select" aria-label="Filter
|
|
188
|
+
<select id="shipped-range" class="tablet__filter-select" aria-label="Filter shipped tasks by date range">
|
|
189
189
|
<option value="7">Last 7 days</option>
|
|
190
190
|
<option value="30" selected>Last 30 days</option>
|
|
191
191
|
<option value="90">Last 90 days</option>
|
|
@@ -194,9 +194,9 @@
|
|
|
194
194
|
</div>
|
|
195
195
|
</div>
|
|
196
196
|
<ul id="shipped" class="shipped">
|
|
197
|
-
<li class="empty">
|
|
197
|
+
<li class="empty">Nothing has shipped yet.</li>
|
|
198
198
|
</ul>
|
|
199
|
-
<nav id="shipped-pager" class="shipped-pager" hidden aria-label="
|
|
199
|
+
<nav id="shipped-pager" class="shipped-pager" hidden aria-label="Recently shipped pages">
|
|
200
200
|
<button type="button" id="shipped-prev" class="btn btn--ghost btn--sm shipped-pager__btn" aria-label="Previous page">‹ earlier page</button>
|
|
201
201
|
<span id="shipped-pageinfo" class="shipped-pager__info" aria-live="polite">page 1 of 1</span>
|
|
202
202
|
<button type="button" id="shipped-next" class="btn btn--ghost btn--sm shipped-pager__btn" aria-label="Next page">later page ›</button>
|
|
@@ -206,30 +206,30 @@
|
|
|
206
206
|
<section class="tablet tablet--wide" id="world-tablet" aria-labelledby="world-heading">
|
|
207
207
|
<div class="tablet__head">
|
|
208
208
|
<div class="tablet__heading">
|
|
209
|
-
<h2 id="world-heading">
|
|
210
|
-
<p class="tablet__subtitle">
|
|
209
|
+
<h2 id="world-heading">Snapshot</h2>
|
|
210
|
+
<p class="tablet__subtitle">{{worldName}} as it looks today, rendered from the live project.</p>
|
|
211
211
|
</div>
|
|
212
212
|
</div>
|
|
213
213
|
<div id="world-snapshot" class="world-snapshot">
|
|
214
|
-
<p class="empty loading-mark" role="status">
|
|
214
|
+
<p class="empty loading-mark" role="status">Loading the latest snapshot…</p>
|
|
215
215
|
</div>
|
|
216
216
|
<!-- #409: snapshot history collapsed behind a toggle. The latest snapshot
|
|
217
217
|
above is the prime view; the timeline of older snapshots is reference
|
|
218
218
|
material that previously ate ~300px of prime real estate. -->
|
|
219
219
|
<details class="world-history" id="world-history">
|
|
220
|
-
<summary class="world-history__summary">Show
|
|
220
|
+
<summary class="world-history__summary">Show earlier snapshots</summary>
|
|
221
221
|
<div id="world-timeline" class="world-timeline" aria-label="World snapshots over time"></div>
|
|
222
|
-
<p class="world-note" id="world-note" hidden>A new
|
|
222
|
+
<p class="world-note" id="world-note" hidden>A new snapshot is taken each time the project changes. Scroll to see how {{worldName}} has grown.</p>
|
|
223
223
|
</details>
|
|
224
224
|
</section>
|
|
225
225
|
|
|
226
226
|
</main>
|
|
227
227
|
|
|
228
228
|
<footer class="foot">
|
|
229
|
-
<p class="foot__seal">
|
|
229
|
+
<p class="foot__seal">{{productName}} build status</p>
|
|
230
230
|
<!-- task 1002853: every company field is optional, so each clause drops whole when its pack field is empty -->
|
|
231
231
|
<!--brand-if:companyName--><p>{{worldName}} is the work of <!--brand-if:companySite--><a href="{{companySite}}" target="_blank" rel="noopener"><!--/brand-if:companySite--><strong>{{companyName}}</strong><!--brand-if:companySite--></a><!--/brand-if:companySite--><!--brand-if:companyTagline-->, {{companyTagline}}<!--/brand-if:companyTagline-->.</p><!--/brand-if:companyName-->
|
|
232
|
-
<p>{{Currency}} are
|
|
232
|
+
<p>{{Currency}} are awarded by review. They measure work done and are never money.</p>
|
|
233
233
|
</footer>
|
|
234
234
|
|
|
235
235
|
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
|