@bongos/core 1.19.583 → 1.19.585
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 -15
- package/docs/copy-inventory.md +34 -33
- package/docs/copy-registry.json +52 -43
- package/docs/module-api-changelog.md +4 -0
- package/modules/public-landing/public/assets/cosmos.css +64 -2
- package/modules/public-landing/public/projects.html +105 -3
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +1 -1
- package/tests/hub_map_orb_states.mjs +255 -0
- package/tests/wizard_draft_resume.mjs +194 -0
package/docs/copy-registry.json
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"generator": "scripts/gds/copy-inventory.js",
|
|
4
4
|
"goal": 1000074,
|
|
5
5
|
"counts": {
|
|
6
|
-
"strings":
|
|
7
|
-
"unique_ids":
|
|
8
|
-
"certain":
|
|
6
|
+
"strings": 1710,
|
|
7
|
+
"unique_ids": 1479,
|
|
8
|
+
"certain": 1710,
|
|
9
9
|
"heuristic": 0,
|
|
10
10
|
"duplicate_ids": 162
|
|
11
11
|
},
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"landing": {
|
|
24
24
|
"at": "modules/public-landing/public",
|
|
25
25
|
"files": 5,
|
|
26
|
-
"strings":
|
|
26
|
+
"strings": 373
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"blind_spots": [
|
|
@@ -92,9 +92,9 @@
|
|
|
92
92
|
"modules/public-landing/public/projects.html:1018",
|
|
93
93
|
"modules/public-landing/public/projects.html:1049",
|
|
94
94
|
"modules/public-landing/public/projects.html:1088",
|
|
95
|
-
"modules/public-landing/public/projects.html:
|
|
96
|
-
"modules/public-landing/public/projects.html:
|
|
97
|
-
"modules/public-landing/public/projects.html:
|
|
95
|
+
"modules/public-landing/public/projects.html:1167",
|
|
96
|
+
"modules/public-landing/public/projects.html:1207",
|
|
97
|
+
"modules/public-landing/public/projects.html:1220"
|
|
98
98
|
]
|
|
99
99
|
},
|
|
100
100
|
{
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"modules/public-landing/public/contact.html:71",
|
|
107
107
|
"modules/public-landing/public/index.html:900",
|
|
108
108
|
"modules/public-landing/public/privacy.html:80",
|
|
109
|
-
"modules/public-landing/public/projects.html:
|
|
109
|
+
"modules/public-landing/public/projects.html:1345",
|
|
110
110
|
"modules/public-landing/public/terms.html:84"
|
|
111
111
|
]
|
|
112
112
|
},
|
|
@@ -119,8 +119,8 @@
|
|
|
119
119
|
"modules/public-landing/public/projects.html:1019",
|
|
120
120
|
"modules/public-landing/public/projects.html:1052",
|
|
121
121
|
"modules/public-landing/public/projects.html:1091",
|
|
122
|
-
"modules/public-landing/public/projects.html:
|
|
123
|
-
"modules/public-landing/public/projects.html:
|
|
122
|
+
"modules/public-landing/public/projects.html:1168",
|
|
123
|
+
"modules/public-landing/public/projects.html:1208"
|
|
124
124
|
]
|
|
125
125
|
},
|
|
126
126
|
{
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"modules/public-landing/public/contact.html:71",
|
|
133
133
|
"modules/public-landing/public/index.html:900",
|
|
134
134
|
"modules/public-landing/public/privacy.html:80",
|
|
135
|
-
"modules/public-landing/public/projects.html:
|
|
135
|
+
"modules/public-landing/public/projects.html:1345",
|
|
136
136
|
"modules/public-landing/public/terms.html:84"
|
|
137
137
|
]
|
|
138
138
|
},
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
"modules/public-landing/public/index.html:906",
|
|
184
184
|
"modules/public-landing/public/projects.html:550",
|
|
185
185
|
"modules/public-landing/public/projects.html:550",
|
|
186
|
-
"modules/public-landing/public/projects.html:
|
|
186
|
+
"modules/public-landing/public/projects.html:1345"
|
|
187
187
|
]
|
|
188
188
|
},
|
|
189
189
|
{
|
|
@@ -218,8 +218,8 @@
|
|
|
218
218
|
"at": [
|
|
219
219
|
"modules/public-landing/public/projects.html:864",
|
|
220
220
|
"modules/public-landing/public/projects.html:865",
|
|
221
|
-
"modules/public-landing/public/projects.html:
|
|
222
|
-
"modules/public-landing/public/projects.html:
|
|
221
|
+
"modules/public-landing/public/projects.html:1247",
|
|
222
|
+
"modules/public-landing/public/projects.html:1248"
|
|
223
223
|
]
|
|
224
224
|
},
|
|
225
225
|
{
|
|
@@ -13011,7 +13011,7 @@
|
|
|
13011
13011
|
"surface": "landing",
|
|
13012
13012
|
"text": "A non-profit, capture-resistant commons.",
|
|
13013
13013
|
"file": "modules/public-landing/public/projects.html",
|
|
13014
|
-
"line":
|
|
13014
|
+
"line": 1345,
|
|
13015
13015
|
"origin": "html-text",
|
|
13016
13016
|
"confidence": "certain"
|
|
13017
13017
|
},
|
|
@@ -13029,7 +13029,7 @@
|
|
|
13029
13029
|
"surface": "landing",
|
|
13030
13030
|
"text": "A pair of bongo drums",
|
|
13031
13031
|
"file": "modules/public-landing/public/projects.html",
|
|
13032
|
-
"line":
|
|
13032
|
+
"line": 1274,
|
|
13033
13033
|
"origin": "html-attr:aria-label",
|
|
13034
13034
|
"confidence": "certain"
|
|
13035
13035
|
},
|
|
@@ -13218,7 +13218,7 @@
|
|
|
13218
13218
|
"surface": "landing",
|
|
13219
13219
|
"text": "Builders' hall",
|
|
13220
13220
|
"file": "modules/public-landing/public/projects.html",
|
|
13221
|
-
"line":
|
|
13221
|
+
"line": 1345,
|
|
13222
13222
|
"origin": "html-text",
|
|
13223
13223
|
"confidence": "certain"
|
|
13224
13224
|
},
|
|
@@ -13245,7 +13245,7 @@
|
|
|
13245
13245
|
"surface": "landing",
|
|
13246
13246
|
"text": "Built by agents, on",
|
|
13247
13247
|
"file": "modules/public-landing/public/projects.html",
|
|
13248
|
-
"line":
|
|
13248
|
+
"line": 1345,
|
|
13249
13249
|
"origin": "html-text",
|
|
13250
13250
|
"confidence": "certain"
|
|
13251
13251
|
},
|
|
@@ -13425,7 +13425,7 @@
|
|
|
13425
13425
|
"surface": "landing",
|
|
13426
13426
|
"text": "Create my project",
|
|
13427
13427
|
"file": "modules/public-landing/public/projects.html",
|
|
13428
|
-
"line":
|
|
13428
|
+
"line": 1221,
|
|
13429
13429
|
"origin": "html-text",
|
|
13430
13430
|
"confidence": "certain"
|
|
13431
13431
|
},
|
|
@@ -13461,7 +13461,7 @@
|
|
|
13461
13461
|
"surface": "landing",
|
|
13462
13462
|
"text": "Domain you own",
|
|
13463
13463
|
"file": "modules/public-landing/public/projects.html",
|
|
13464
|
-
"line":
|
|
13464
|
+
"line": 1196,
|
|
13465
13465
|
"origin": "html-text",
|
|
13466
13466
|
"confidence": "certain"
|
|
13467
13467
|
},
|
|
@@ -13722,7 +13722,7 @@
|
|
|
13722
13722
|
"surface": "landing",
|
|
13723
13723
|
"text": "GitHub username",
|
|
13724
13724
|
"file": "modules/public-landing/public/projects.html",
|
|
13725
|
-
"line":
|
|
13725
|
+
"line": 1247,
|
|
13726
13726
|
"origin": "html-text",
|
|
13727
13727
|
"confidence": "certain"
|
|
13728
13728
|
},
|
|
@@ -13731,7 +13731,7 @@
|
|
|
13731
13731
|
"surface": "landing",
|
|
13732
13732
|
"text": "GitHub username",
|
|
13733
13733
|
"file": "modules/public-landing/public/projects.html",
|
|
13734
|
-
"line":
|
|
13734
|
+
"line": 1248,
|
|
13735
13735
|
"origin": "html-attr:placeholder",
|
|
13736
13736
|
"confidence": "certain"
|
|
13737
13737
|
},
|
|
@@ -13812,7 +13812,7 @@
|
|
|
13812
13812
|
"surface": "landing",
|
|
13813
13813
|
"text": "Invite builders",
|
|
13814
13814
|
"file": "modules/public-landing/public/projects.html",
|
|
13815
|
-
"line":
|
|
13815
|
+
"line": 1244,
|
|
13816
13816
|
"origin": "html-text",
|
|
13817
13817
|
"confidence": "certain"
|
|
13818
13818
|
},
|
|
@@ -13848,7 +13848,7 @@
|
|
|
13848
13848
|
"surface": "landing",
|
|
13849
13849
|
"text": "Its address in the sky",
|
|
13850
13850
|
"file": "modules/public-landing/public/projects.html",
|
|
13851
|
-
"line":
|
|
13851
|
+
"line": 1183,
|
|
13852
13852
|
"origin": "html-text",
|
|
13853
13853
|
"confidence": "certain"
|
|
13854
13854
|
},
|
|
@@ -14019,7 +14019,7 @@
|
|
|
14019
14019
|
"surface": "landing",
|
|
14020
14020
|
"text": "Next →",
|
|
14021
14021
|
"file": "modules/public-landing/public/projects.html",
|
|
14022
|
-
"line":
|
|
14022
|
+
"line": 1168,
|
|
14023
14023
|
"origin": "html-text",
|
|
14024
14024
|
"confidence": "certain"
|
|
14025
14025
|
},
|
|
@@ -14028,7 +14028,7 @@
|
|
|
14028
14028
|
"surface": "landing",
|
|
14029
14029
|
"text": "Next →",
|
|
14030
14030
|
"file": "modules/public-landing/public/projects.html",
|
|
14031
|
-
"line":
|
|
14031
|
+
"line": 1208,
|
|
14032
14032
|
"origin": "html-text",
|
|
14033
14033
|
"confidence": "certain"
|
|
14034
14034
|
},
|
|
@@ -14109,7 +14109,7 @@
|
|
|
14109
14109
|
"surface": "landing",
|
|
14110
14110
|
"text": "One tap files the request and the platform starts standing your project up — server, database, address. Here's the beat you're about to drop:",
|
|
14111
14111
|
"file": "modules/public-landing/public/projects.html",
|
|
14112
|
-
"line":
|
|
14112
|
+
"line": 1216,
|
|
14113
14113
|
"origin": "html-text",
|
|
14114
14114
|
"confidence": "certain"
|
|
14115
14115
|
},
|
|
@@ -14163,7 +14163,7 @@
|
|
|
14163
14163
|
"surface": "landing",
|
|
14164
14164
|
"text": "Open source (AGPL-3.0)",
|
|
14165
14165
|
"file": "modules/public-landing/public/projects.html",
|
|
14166
|
-
"line":
|
|
14166
|
+
"line": 1345,
|
|
14167
14167
|
"origin": "html-text",
|
|
14168
14168
|
"confidence": "certain"
|
|
14169
14169
|
},
|
|
@@ -14199,7 +14199,7 @@
|
|
|
14199
14199
|
"surface": "landing",
|
|
14200
14200
|
"text": "Optional — invite people by GitHub username. Each one gets an invitation to accept from their own projects page, and they need to have signed in here at least once. Skip this and invite anyone later; nothing about your project waits on it.",
|
|
14201
14201
|
"file": "modules/public-landing/public/projects.html",
|
|
14202
|
-
"line":
|
|
14202
|
+
"line": 1245,
|
|
14203
14203
|
"origin": "html-text",
|
|
14204
14204
|
"confidence": "certain"
|
|
14205
14205
|
},
|
|
@@ -14280,7 +14280,7 @@
|
|
|
14280
14280
|
"surface": "landing",
|
|
14281
14281
|
"text": "Project handle",
|
|
14282
14282
|
"file": "modules/public-landing/public/projects.html",
|
|
14283
|
-
"line":
|
|
14283
|
+
"line": 1186,
|
|
14284
14284
|
"origin": "html-text",
|
|
14285
14285
|
"confidence": "certain"
|
|
14286
14286
|
},
|
|
@@ -14316,7 +14316,7 @@
|
|
|
14316
14316
|
"surface": "landing",
|
|
14317
14317
|
"text": "Projects aren’t created from this instance — this is a project, not the platform that hosts them.",
|
|
14318
14318
|
"file": "modules/public-landing/public/projects.html",
|
|
14319
|
-
"line":
|
|
14319
|
+
"line": 1337,
|
|
14320
14320
|
"origin": "html-text",
|
|
14321
14321
|
"confidence": "certain"
|
|
14322
14322
|
},
|
|
@@ -14469,7 +14469,7 @@
|
|
|
14469
14469
|
"surface": "landing",
|
|
14470
14470
|
"text": "Ready to roll",
|
|
14471
14471
|
"file": "modules/public-landing/public/projects.html",
|
|
14472
|
-
"line":
|
|
14472
|
+
"line": 1215,
|
|
14473
14473
|
"origin": "html-text",
|
|
14474
14474
|
"confidence": "certain"
|
|
14475
14475
|
},
|
|
@@ -14775,7 +14775,7 @@
|
|
|
14775
14775
|
"surface": "landing",
|
|
14776
14776
|
"text": "Start without an address — possible, but sign-in on your project can’t be set up until it has one.",
|
|
14777
14777
|
"file": "modules/public-landing/public/projects.html",
|
|
14778
|
-
"line":
|
|
14778
|
+
"line": 1203,
|
|
14779
14779
|
"origin": "html-text",
|
|
14780
14780
|
"confidence": "certain"
|
|
14781
14781
|
},
|
|
@@ -14883,7 +14883,7 @@
|
|
|
14883
14883
|
"surface": "landing",
|
|
14884
14884
|
"text": "The drums are rolling",
|
|
14885
14885
|
"file": "modules/public-landing/public/projects.html",
|
|
14886
|
-
"line":
|
|
14886
|
+
"line": 1230,
|
|
14887
14887
|
"origin": "html-text",
|
|
14888
14888
|
"confidence": "certain"
|
|
14889
14889
|
},
|
|
@@ -14901,7 +14901,7 @@
|
|
|
14901
14901
|
"surface": "landing",
|
|
14902
14902
|
"text": "The handle names your project on the platform — and its address comes with it. Once it stands up, a few GitHub steps (the next screen walks you through them) switch sign-in on.",
|
|
14903
14903
|
"file": "modules/public-landing/public/projects.html",
|
|
14904
|
-
"line":
|
|
14904
|
+
"line": 1184,
|
|
14905
14905
|
"origin": "html-text",
|
|
14906
14906
|
"confidence": "certain"
|
|
14907
14907
|
},
|
|
@@ -14991,7 +14991,7 @@
|
|
|
14991
14991
|
"surface": "landing",
|
|
14992
14992
|
"text": "These are the same steps however a project is created — nothing here is special to this page.",
|
|
14993
14993
|
"file": "modules/public-landing/public/projects.html",
|
|
14994
|
-
"line":
|
|
14994
|
+
"line": 1265,
|
|
14995
14995
|
"origin": "html-text",
|
|
14996
14996
|
"confidence": "certain"
|
|
14997
14997
|
},
|
|
@@ -15018,7 +15018,7 @@
|
|
|
15018
15018
|
"surface": "landing",
|
|
15019
15019
|
"text": "This files the request; the control plane does the real standup and nothing touches servers from this page. You'll get the few steps only you can do right after.",
|
|
15020
15020
|
"file": "modules/public-landing/public/projects.html",
|
|
15021
|
-
"line":
|
|
15021
|
+
"line": 1223,
|
|
15022
15022
|
"origin": "html-text",
|
|
15023
15023
|
"confidence": "certain"
|
|
15024
15024
|
},
|
|
@@ -15108,7 +15108,16 @@
|
|
|
15108
15108
|
"surface": "landing",
|
|
15109
15109
|
"text": "Use a domain I own instead",
|
|
15110
15110
|
"file": "modules/public-landing/public/projects.html",
|
|
15111
|
-
"line":
|
|
15111
|
+
"line": 1194,
|
|
15112
|
+
"origin": "html-text",
|
|
15113
|
+
"confidence": "certain"
|
|
15114
|
+
},
|
|
15115
|
+
{
|
|
15116
|
+
"id": "9be878db0d86",
|
|
15117
|
+
"surface": "landing",
|
|
15118
|
+
"text": "Use my GitHub repositories instead",
|
|
15119
|
+
"file": "modules/public-landing/public/projects.html",
|
|
15120
|
+
"line": 1163,
|
|
15112
15121
|
"origin": "html-text",
|
|
15113
15122
|
"confidence": "certain"
|
|
15114
15123
|
},
|
|
@@ -15504,7 +15513,7 @@
|
|
|
15504
15513
|
"surface": "landing",
|
|
15505
15514
|
"text": "Your steps — the parts only you can play",
|
|
15506
15515
|
"file": "modules/public-landing/public/projects.html",
|
|
15507
|
-
"line":
|
|
15516
|
+
"line": 1260,
|
|
15508
15517
|
"origin": "html-text",
|
|
15509
15518
|
"confidence": "certain"
|
|
15510
15519
|
},
|
|
@@ -15522,7 +15531,7 @@
|
|
|
15522
15531
|
"surface": "landing",
|
|
15523
15532
|
"text": "Yours from the moment it stands up. You can point a domain you own at it any time.",
|
|
15524
15533
|
"file": "modules/public-landing/public/projects.html",
|
|
15525
|
-
"line":
|
|
15534
|
+
"line": 1192,
|
|
15526
15535
|
"origin": "html-text",
|
|
15527
15536
|
"confidence": "certain"
|
|
15528
15537
|
},
|
|
@@ -16179,7 +16188,7 @@
|
|
|
16179
16188
|
"surface": "landing",
|
|
16180
16189
|
"text": "← Back",
|
|
16181
16190
|
"file": "modules/public-landing/public/projects.html",
|
|
16182
|
-
"line":
|
|
16191
|
+
"line": 1167,
|
|
16183
16192
|
"origin": "html-text",
|
|
16184
16193
|
"confidence": "certain"
|
|
16185
16194
|
},
|
|
@@ -16188,7 +16197,7 @@
|
|
|
16188
16197
|
"surface": "landing",
|
|
16189
16198
|
"text": "← Back",
|
|
16190
16199
|
"file": "modules/public-landing/public/projects.html",
|
|
16191
|
-
"line":
|
|
16200
|
+
"line": 1207,
|
|
16192
16201
|
"origin": "html-text",
|
|
16193
16202
|
"confidence": "certain"
|
|
16194
16203
|
},
|
|
@@ -16197,7 +16206,7 @@
|
|
|
16197
16206
|
"surface": "landing",
|
|
16198
16207
|
"text": "← Back",
|
|
16199
16208
|
"file": "modules/public-landing/public/projects.html",
|
|
16200
|
-
"line":
|
|
16209
|
+
"line": 1220,
|
|
16201
16210
|
"origin": "html-text",
|
|
16202
16211
|
"confidence": "certain"
|
|
16203
16212
|
},
|
|
@@ -1615,5 +1615,9 @@ is load-bearing: the script throws rather than guess if it is missing, and
|
|
|
1615
1615
|
landed since 1.19.581 with no explicit bump. run 34160253741. (task 1002620)
|
|
1616
1616
|
1.19.583 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1617
1617
|
landed since 1.19.582 with no explicit bump. run 34162998083. (task 1002620)
|
|
1618
|
+
1.19.584 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1619
|
+
landed since 1.19.583 with no explicit bump. run 34164936809. (task 1002620)
|
|
1620
|
+
1.19.585 — CI auto-patch (publish-on-merge, ADR 0161): carrier for merges
|
|
1621
|
+
landed since 1.19.584 with no explicit bump. run 34165392436. (task 1002620)
|
|
1618
1622
|
---------------------------------------------------------------------------
|
|
1619
1623
|
```
|
|
@@ -50,6 +50,10 @@
|
|
|
50
50
|
|
|
51
51
|
/* the gate's locked space palette (dark mode's sky) */
|
|
52
52
|
--space-deep:#05060f; --space-mid:#0a0c20; --space-high:#0d0f28; --nebula:#2b2456;
|
|
53
|
+
/* the black hole's interior (task 1002328) — the one colour that is NOT
|
|
54
|
+
theme-relative: a black hole is the absence of a surface in either sky, so it
|
|
55
|
+
is declared once here and never restated dark. Explore's own --orb-void. */
|
|
56
|
+
--orb-void:#0b0b10;
|
|
53
57
|
--sun-lit:#fb923c; --gold:#ffd98a; --gold-soft:#f6c976;
|
|
54
58
|
|
|
55
59
|
/* semantic state tier — each is painted as 12px/700 chip TEXT on its own
|
|
@@ -822,6 +826,60 @@ p.sec-p{font-size:var(--fs-lede);font-weight:500;color:var(--ink-soft);line-heig
|
|
|
822
826
|
.worldOrb[data-material="obsidian"][data-shape="blob"]{--tpl-src:var(--plate-obsidian-blob-cut);--tpl-ar:.794;--tpl-zoom:1.55448;--tpl-px:-.2697;--tpl-py:-.15965;}
|
|
823
827
|
.worldOrb[data-material="obsidian"][data-shape="pair"]{--tpl-src:var(--plate-obsidian-pair-cut);--tpl-ar:2.23705;--tpl-zoom:1.0248;--tpl-px:-.01015;--tpl-py:-.30191;}
|
|
824
828
|
.worldOrb[data-material="obsidian"][data-shape="bead"]{--tpl-src:var(--plate-obsidian-bead-cut);--tpl-ar:1.0027;--tpl-zoom:1.34698;--tpl-px:-.17053;--tpl-py:-.17255;}
|
|
829
|
+
/* ── THE VISIBILITY RENDER-TYPE (data-orb), a SECOND axis over the planet above
|
|
830
|
+
(BV1.R09, task 1002328; ADR 0182 D1, criterion proj-visibility-states). The
|
|
831
|
+
planet is what a project LOOKS like — the owner's chosen shape and material.
|
|
832
|
+
This is what its door SAYS, derived server-side and read off the feed. The
|
|
833
|
+
three readings are the Explore page's (task 1002326, modules/status-ui/public/
|
|
834
|
+
explore.html), so the two in-repo surfaces that draw this feed agree.
|
|
835
|
+
|
|
836
|
+
PUBLIC is the baseline and takes no rule: the planet as drawn is the public
|
|
837
|
+
planet. Only the two states that differ from it declare anything here. ── */
|
|
838
|
+
|
|
839
|
+
/* PRIVATE — a star: visible from anywhere, with no surface to land on. The object
|
|
840
|
+
keeps its own artwork and its own name (D1: private is on the map UNDER its
|
|
841
|
+
name; what it withholds is the door, not the identity) and gains a star's light.
|
|
842
|
+
A drop-shadow on the disc's own filter, the .worldOrb.match idiom below: the
|
|
843
|
+
object is a MASK, so an outline or a box-shadow would be clipped away. Composed
|
|
844
|
+
after the contact shadow, which dark states as a no-op filter for this reason.
|
|
845
|
+
|
|
846
|
+
Carried as a VARIABLE rather than written into the filter directly, because the
|
|
847
|
+
search spotlight below sets `filter` on the same element and is later in the
|
|
848
|
+
cascade: written inline it would be clobbered, and a private project would
|
|
849
|
+
quietly draw as a planet for as long as a query matched it. */
|
|
850
|
+
.worldOrb[data-orb="star"]{
|
|
851
|
+
--star-light:drop-shadow(0 0 7px color-mix(in srgb,var(--acc,var(--accent)) 75%,transparent))
|
|
852
|
+
drop-shadow(0 0 20px color-mix(in srgb,var(--acc,var(--accent)) 40%,transparent));}
|
|
853
|
+
.worldOrb[data-orb="star"] .disc{filter:var(--orb-shadow) var(--star-light);}
|
|
854
|
+
/* the corona sits BEHIND the object (the relationship ring's grammar, z-index:-1),
|
|
855
|
+
so the star reads as a point of light the object is standing in */
|
|
856
|
+
.worldOrb[data-orb="star"] .disc::after{content:"";position:absolute;
|
|
857
|
+
left:50%;top:50%;width:calc(100% + 34px);aspect-ratio:1;translate:-50% -50%;border-radius:50%;z-index:-1;
|
|
858
|
+
background:radial-gradient(circle,color-mix(in srgb,var(--acc,var(--accent)) 26%,transparent) 0 34%,transparent 70%);}
|
|
859
|
+
/* the ring wins the ::after when the viewer owns or builds on the project — the
|
|
860
|
+
relationship is the more useful thing to say, and the glow above still reads */
|
|
861
|
+
.worldOrb[data-orb="star"][data-rel="owner"] .disc::after,
|
|
862
|
+
.worldOrb[data-orb="star"][data-rel="builder"] .disc::after{background:none;}
|
|
863
|
+
|
|
864
|
+
/* STEALTH — a black hole: existence without identity. The object is REPLACED, not
|
|
865
|
+
decorated: ::before is where the planet plate is painted, so switching it off is
|
|
866
|
+
what makes this the one orb on the map carrying no artwork. Nothing here reads a
|
|
867
|
+
per-project value — every black hole is drawn identically, on the page's own
|
|
868
|
+
accent, because interchangeable is the whole point of the metaphor (D2a). With
|
|
869
|
+
the mask gone a box-shadow is no longer clipped, so the ring is a real ring. */
|
|
870
|
+
.worldOrb[data-orb="black-hole"]{cursor:default;}
|
|
871
|
+
.worldOrb[data-orb="black-hole"] .disc{border-radius:50%;background:var(--orb-void);
|
|
872
|
+
box-shadow:0 0 0 1.5px var(--accent),0 0 14px 2px color-mix(in srgb,var(--accent) 55%,transparent);}
|
|
873
|
+
.worldOrb[data-orb="black-hole"] .disc::before{display:none;}
|
|
874
|
+
/* it does not rise to meet the pointer: there is nothing behind it to open */
|
|
875
|
+
.worldOrb[data-orb="black-hole"]:hover .disc{translate:none;}
|
|
876
|
+
/* the placeholder name is not a project's name, and does not dress as one */
|
|
877
|
+
.worldOrb[data-orb="black-hole"] .nm{color:var(--ink-soft);font-style:italic;}
|
|
878
|
+
/* the table's anonymous row: same rule, and no pointer, since the row's click
|
|
879
|
+
target (its address) is exactly what the row does not have */
|
|
880
|
+
.tbl .tblRow.anon{cursor:default;}
|
|
881
|
+
.tbl .tblRow.anon .ptitle{color:var(--ink-soft);font-style:italic;}
|
|
882
|
+
|
|
825
883
|
/* the relationship ring: yours takes the accent (the one live thing about the
|
|
826
884
|
orb); building there is a hairline of it */
|
|
827
885
|
.worldOrb[data-rel="owner"] .disc::after,.worldOrb[data-rel="builder"] .disc::after{content:"";position:absolute;
|
|
@@ -986,8 +1044,12 @@ p.sec-p{font-size:var(--fs-lede);font-weight:500;color:var(--ink-soft);line-heig
|
|
|
986
1044
|
/* the spotlight is a drop-shadow in the accent on the disc's own filter — a
|
|
987
1045
|
glow that follows the silhouette (the object is a mask, so an outline or a
|
|
988
1046
|
box-shadow would be clipped away). Composed after the contact shadow, which
|
|
989
|
-
dark states as a no-op filter for exactly this.
|
|
990
|
-
|
|
1047
|
+
dark states as a no-op filter for exactly this.
|
|
1048
|
+
|
|
1049
|
+
A star composes its own light in after the spotlight (--star-light, set above;
|
|
1050
|
+
the empty fallback makes this a no-op for every other orb), so a private project
|
|
1051
|
+
the query matched does not stop looking private for as long as it matches. */
|
|
1052
|
+
.worldOrb.match .disc{filter:var(--orb-shadow) drop-shadow(0 0 16px color-mix(in srgb,var(--acc,var(--accent)) 60%,transparent)) var(--star-light,);}
|
|
991
1053
|
.field .hoverCard{position:absolute;z-index:6;pointer-events:none;display:flex;flex-direction:column;gap:2px;
|
|
992
1054
|
background:var(--bg-card);border:1px solid var(--rule);border-radius:var(--radius-sm);
|
|
993
1055
|
padding:9px 13px;max-width:240px;}
|
|
@@ -1154,6 +1154,13 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1154
1154
|
<!-- visibility stated BEFORE GitHub's own radio is the first place it
|
|
1155
1155
|
appears (task 1002721, owner firsthand in the QA walk) -->
|
|
1156
1156
|
<div class="hint" style="grid-column:1 / -1;">Creating the repo yourself on GitHub? Public or private is your choice there — both work here, and we never change it.</div>
|
|
1157
|
+
<!-- the way back from the manual fallback (task 1003683). Choosing "or enter
|
|
1158
|
+
it manually" used to hide the connect offer for good: #ghConnect renders
|
|
1159
|
+
only while repoAccess is 'need-connect', and nothing ever set it back, so
|
|
1160
|
+
a full reload was the only route to the button. Stays hidden when the
|
|
1161
|
+
fallback was FORCED (repoAccess 'unavailable'), where connecting cannot
|
|
1162
|
+
help and the offer would be a lie. -->
|
|
1163
|
+
<button type="button" class="linklike" id="ghManualBack" style="grid-column:1 / -1;" hidden>Use my GitHub repositories instead</button>
|
|
1157
1164
|
</div>
|
|
1158
1165
|
<div class="hint" id="h-home"> </div>
|
|
1159
1166
|
<div class="nav">
|
|
@@ -1546,6 +1553,39 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1546
1553
|
ORB_SHAPES.forEach(function (s) { ['tint', 'wash', 'chrome'].forEach(function (y) { ORB_TEMPLATES.push(s + '-' + y); }); });
|
|
1547
1554
|
ORB_SHAPES.forEach(function (s) { ORB_MATERIALS.forEach(function (m) { ['tint', 'wash', 'plain'].forEach(function (y) { ORB_TEMPLATES.push(s + '-' + m + '-' + y); }); }); });
|
|
1548
1555
|
var ORB_WALK = ['blob-tint', 'pair-gold-wash', 'bead-obsidian-plain', 'blob-frost-wash', 'pair-chrome', 'bead-gold-tint', 'blob-obsidian-wash', 'pair-frost-tint', 'bead-wash', 'blob-gold-plain', 'pair-obsidian-tint', 'bead-frost-wash'];
|
|
1556
|
+
/* THE VISIBILITY RENDER-TYPE — a SECOND axis, and not the planet above (BV1.R09,
|
|
1557
|
+
task 1002328; ADR 0182 D1, criterion proj-visibility-states). The planet is
|
|
1558
|
+
what a project LOOKS like — the owner's chosen shape and material. This is what
|
|
1559
|
+
its door SAYS: public draws a planet, private a star, stealth a black hole.
|
|
1560
|
+
Dark matter never arrives; the feed excludes it in SQL, because a client-side
|
|
1561
|
+
filter ships the husk to anyone who opens a network tab.
|
|
1562
|
+
|
|
1563
|
+
THE VALUE IS READ, NEVER DERIVED. `orb` is computed server-side in
|
|
1564
|
+
modules/platform-identity/projects-feed.js, which holds the only copy of the
|
|
1565
|
+
state→orb mapping in the repo; this page reads that field and does not own a
|
|
1566
|
+
`state` table of its own. The three words below are LABELS for the states, not
|
|
1567
|
+
a second mapping — and they are explore.js's words (R07, task 1002326), so the
|
|
1568
|
+
two in-repo surfaces say the same thing. */
|
|
1569
|
+
var ORB_STATE = { planet: 'Public', star: 'Private', 'black-hole': 'Stealth' };
|
|
1570
|
+
/* FAIL-CLOSED, the choice projects-feed.js makes for the same question: a row
|
|
1571
|
+
whose render-type this page does not recognise is NOT DRAWN. The risk is a
|
|
1572
|
+
fourth state shipped by a newer server and read by an older page — drawing it
|
|
1573
|
+
as the default would publish, as a public planet, a project that chose not to
|
|
1574
|
+
be one. Applied to CATALOG rows only: the viewer's own provisioning rows never
|
|
1575
|
+
came from the feed and carry no `orb`. */
|
|
1576
|
+
function drawableCatalogRow(p) {
|
|
1577
|
+
return Object.prototype.hasOwnProperty.call(ORB_STATE, String((p && p.orb) || ''));
|
|
1578
|
+
}
|
|
1579
|
+
/* Is this row anonymous on the map? The one predicate the sky and the table both
|
|
1580
|
+
ask, so neither can answer it differently (ADR 0182 D2a). */
|
|
1581
|
+
function isBlackHole(p) { return String((p && p.orb) || '') === 'black-hole'; }
|
|
1582
|
+
/* What a black hole is allowed to say. Deliberately takes no project argument:
|
|
1583
|
+
there is no identifying value in scope to leak by accident, now or when the
|
|
1584
|
+
feed grows a column. explore.js's anonymousCard() makes the same choice. */
|
|
1585
|
+
function anonymousName() { return 'A project'; }
|
|
1586
|
+
function anonymousBlurb() {
|
|
1587
|
+
return 'Something is here. Its name, and everything else about it, stay with its owner.';
|
|
1588
|
+
}
|
|
1549
1589
|
var catalog = [];
|
|
1550
1590
|
var mineOrigins = {}; /* normalized host → 'owner' | 'builder' */
|
|
1551
1591
|
var ownedInstances = []; /* the viewer's OWN provisioning rows (never torn_down) */
|
|
@@ -1689,6 +1729,27 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1689
1729
|
(spot ? list.concat(dimmed) : list).forEach(function (p, i) {
|
|
1690
1730
|
var slot = ORB_SLOTS[i % ORB_SLOTS.length];
|
|
1691
1731
|
var isDim = spot && i >= list.length;
|
|
1732
|
+
/* A BLACK HOLE IS DRAWN FROM NOTHING BUT ITS EXISTENCE (ADR 0182 D2a).
|
|
1733
|
+
A <span>, not an <a>: there is nowhere to go. No name, no address, no
|
|
1734
|
+
badge, no liveness chip — and no planet artwork, because the shape /
|
|
1735
|
+
material walk is an identity THIS PAGE assigns, and an identity assigned
|
|
1736
|
+
to rows that are supposed to be interchangeable is exactly what lets an
|
|
1737
|
+
observer follow one of them from yesterday's feed into today's. The
|
|
1738
|
+
server redacted the row; this is the page declining to re-identify it. */
|
|
1739
|
+
if (isBlackHole(p)) {
|
|
1740
|
+
var bh = document.createElement('span');
|
|
1741
|
+
bh.className = 'worldOrb blackHole' + (spot ? (isDim ? ' dim' : ' match') : '');
|
|
1742
|
+
bh.setAttribute('data-generated', '');
|
|
1743
|
+
bh.setAttribute('data-orb', 'black-hole');
|
|
1744
|
+
if (isDim) bh.setAttribute('aria-hidden', 'true');
|
|
1745
|
+
/* no --acc: the accent is per-project identity too, so a black hole takes
|
|
1746
|
+
the page's own and is the same colour as every other black hole */
|
|
1747
|
+
bh.style.cssText = '--d:' + slot[2] + 'px;left:' + slot[0] + '%;top:' + slot[1] + '%';
|
|
1748
|
+
bh.title = anonymousBlurb();
|
|
1749
|
+
bh.innerHTML = '<span class="disc"></span><span class="nm">' + esc(anonymousName()) + '</span>';
|
|
1750
|
+
layer.appendChild(bh);
|
|
1751
|
+
return;
|
|
1752
|
+
}
|
|
1692
1753
|
var a = document.createElement('a');
|
|
1693
1754
|
a.className = 'worldOrb' + (spot ? (isDim ? ' dim' : ' match') : '');
|
|
1694
1755
|
/* a dimmed orb is BACKDROP: at .25 opacity its label cannot carry
|
|
@@ -1698,6 +1759,12 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1698
1759
|
a.setAttribute('data-generated', '');
|
|
1699
1760
|
var rel = relOf(p);
|
|
1700
1761
|
a.setAttribute('data-rel', rel);
|
|
1762
|
+
/* the door the project chose, as the feed derived it. An IDENTIFIED state —
|
|
1763
|
+
public or private — is on the map under its own name; what the state
|
|
1764
|
+
changes is how it is drawn and who may walk in, never whether it is named.
|
|
1765
|
+
An owned-only entry never came from the feed, so it claims no state. */
|
|
1766
|
+
var orbState = drawableCatalogRow(p) ? String(p.orb) : '';
|
|
1767
|
+
if (orbState) a.setAttribute('data-orb', orbState);
|
|
1701
1768
|
/* the planet: shape, material and style as data attributes (shape[-material]-style;
|
|
1702
1769
|
no material = chrome), cosmos.css does the rest */
|
|
1703
1770
|
var tpl = templateOf(p), tplParts = tpl.split('-');
|
|
@@ -1724,7 +1791,10 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1724
1791
|
if (href) { a.target = '_blank'; a.rel = 'noopener'; }
|
|
1725
1792
|
}
|
|
1726
1793
|
a.setAttribute('data-origin', String(p.origin || ''));
|
|
1727
|
-
|
|
1794
|
+
/* the state in words as well as in the drawing — a visitor should not have
|
|
1795
|
+
to have learned the shapes to tell a planet from a star (the explore
|
|
1796
|
+
page's rule: the orb is decorative, the plain word carries the meaning) */
|
|
1797
|
+
a.title = [p.tagline || p.name || '', ORB_STATE[orbState] || ''].filter(Boolean).join(' · ');
|
|
1728
1798
|
a.style.cssText = '--acc:' + accentOf(p) +
|
|
1729
1799
|
';--d:' + slot[2] + 'px;left:' + slot[0] + '%;top:' + slot[1] + '%';
|
|
1730
1800
|
a.innerHTML =
|
|
@@ -1765,7 +1835,21 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1765
1835
|
not a peer in the catalog's sort order. */
|
|
1766
1836
|
body.querySelectorAll('li[data-generated]').forEach(function (n) { n.remove(); });
|
|
1767
1837
|
body.insertAdjacentHTML('beforeend', list.map(function (p) {
|
|
1838
|
+
/* The table is a PEER VIEW of the map, not a back door around D2a: a black
|
|
1839
|
+
hole says exactly as little here as it does in the sky. No name, no
|
|
1840
|
+
address, no facts, no doors — and no liveness chip, because a chip is a
|
|
1841
|
+
claim about a specific project. The row exists so the count is honest;
|
|
1842
|
+
that is the whole of what it publishes. */
|
|
1843
|
+
if (isBlackHole(p)) {
|
|
1844
|
+
return '<li class="tblRow anon" data-generated data-orb="black-hole">' +
|
|
1845
|
+
'<span class="worldOrb blackHole" data-orb="black-hole" style="--d:64px" aria-hidden="true">' +
|
|
1846
|
+
'<span class="disc"></span></span>' +
|
|
1847
|
+
'<div class="tWho"><span class="ptitle">' + esc(anonymousName()) + '</span></div>' +
|
|
1848
|
+
'<p class="ptag">' + esc(anonymousBlurb()) + '</p>' +
|
|
1849
|
+
'</li>';
|
|
1850
|
+
}
|
|
1768
1851
|
var rel = relOf(p);
|
|
1852
|
+
var orbState = drawableCatalogRow(p) ? String(p.orb) : '';
|
|
1769
1853
|
var pill = rel === 'owner' ? '<span class="pill">yours</span>'
|
|
1770
1854
|
: rel === 'builder' ? '<span class="pill">you build here</span>' : '';
|
|
1771
1855
|
/* the project's own planet, the object the sky and the Your-projects row
|
|
@@ -1775,6 +1859,7 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1775
1859
|
var planet = '<span class="worldOrb"' + planetAttrs({ tpl: templateOf(p) }) +
|
|
1776
1860
|
' style="--acc:' + accentOf(p) + ';--d:64px" aria-hidden="true"><span class="disc"></span></span>';
|
|
1777
1861
|
return '<li class="tblRow" data-generated ' + (p._inst ? 'data-manage="' + esc(String(p._inst.id)) + '" ' : '') +
|
|
1862
|
+
(orbState ? 'data-orb="' + esc(orbState) + '" ' : '') +
|
|
1778
1863
|
'data-origin="' + esc(String(p.origin || '')) + '">' + planet +
|
|
1779
1864
|
'<div class="tWho">' + (p._inst
|
|
1780
1865
|
? '<a class="ptitle" data-manage="' + esc(String(p._inst.id)) + '" href="?view=manage&id=' + esc(String(p._inst.id)) + '">' + esc(p.name) + '</a>'
|
|
@@ -1810,7 +1895,13 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1810
1895
|
entries. The sky, the table, the search box and the count read the same
|
|
1811
1896
|
list and can never disagree about what exists. */
|
|
1812
1897
|
var catalogHosts = {};
|
|
1813
|
-
|
|
1898
|
+
/* FAIL-CLOSED FIRST, before anything else reads these rows (task 1002328): a
|
|
1899
|
+
render-type this page does not recognise is not drawn, not counted, and —
|
|
1900
|
+
the reason it is filtered HERE rather than inside the renderers — not allowed
|
|
1901
|
+
to claim a host either, or it would suppress the viewer's own entry for that
|
|
1902
|
+
same project in the loop below. */
|
|
1903
|
+
var drawnCatalog = catalog.filter(drawableCatalogRow);
|
|
1904
|
+
drawnCatalog.forEach(function (p) {
|
|
1814
1905
|
var h = hostOf(p.origin);
|
|
1815
1906
|
catalogHosts[h] = 1;
|
|
1816
1907
|
p._inst = ownedByHost[h] || null;
|
|
@@ -1818,7 +1909,7 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
1818
1909
|
create — their own instance row is a truthful source, never a guess */
|
|
1819
1910
|
if (p.type == null && p._inst && p._inst.type) p.type = p._inst.type;
|
|
1820
1911
|
});
|
|
1821
|
-
var browse =
|
|
1912
|
+
var browse = drawnCatalog.slice();
|
|
1822
1913
|
ownedInstances.forEach(function (inst) {
|
|
1823
1914
|
var h = inst.domain ? hostOf(inst.domain) : '';
|
|
1824
1915
|
if (h && catalogHosts[h]) return; /* annotated onto its catalog row above */
|
|
@@ -3498,6 +3589,7 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
3498
3589
|
}
|
|
3499
3590
|
$('ghConnectBtn').addEventListener('click', connectRepos);
|
|
3500
3591
|
$('ghManualToggle').addEventListener('click', function () { repoAccess = 'manual'; syncHome(); $('f-owner').focus(); });
|
|
3592
|
+
$('ghManualBack').addEventListener('click', function () { repoAccess = 'need-connect'; syncHome(); $('ghConnectBtn').focus(); });
|
|
3501
3593
|
|
|
3502
3594
|
function syncHome() {
|
|
3503
3595
|
var need = repoAccess === 'need-connect';
|
|
@@ -3508,6 +3600,9 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
3508
3600
|
$('ghAdopt').hidden = !(ok && adopt);
|
|
3509
3601
|
$('ghFresh').hidden = !(ok && !adopt);
|
|
3510
3602
|
$('manualHome').hidden = !isManualHome();
|
|
3603
|
+
/* only when the visitor CHOSE manual: with 'unavailable' the server cannot hold a
|
|
3604
|
+
token, so a connect round-trip would land back here having changed nothing */
|
|
3605
|
+
$('ghManualBack').hidden = repoAccess !== 'manual';
|
|
3511
3606
|
if (need) {
|
|
3512
3607
|
/* Informed consent (ADR 0155): this grants `repo`, which GitHub's own screen
|
|
3513
3608
|
words as full control of ALL your repositories — so say plainly why we ask
|
|
@@ -4568,7 +4663,14 @@ summary{min-height:24px;padding:3px 0;}
|
|
|
4568
4663
|
re-enters to the real draft step the moment /me answers */
|
|
4569
4664
|
var step = authKnown && state.step >= 1 && state.step <= 7 ? state.step : 1;
|
|
4570
4665
|
if (step === 1) {
|
|
4666
|
+
/* Pre-auth, step 1 is a PLACEHOLDER, not where the visitor is — but show()
|
|
4667
|
+
persists whatever step it renders, so it used to overwrite the draft's real
|
|
4668
|
+
position with 1 and leave onAuth() nothing to re-enter to (task 1003683). Every
|
|
4669
|
+
return through GitHub landed the visitor back at the name step. Put the real
|
|
4670
|
+
step back after rendering the placeholder, in memory AND in the draft. */
|
|
4671
|
+
var resumeStep = state.step;
|
|
4571
4672
|
show(1, false);
|
|
4673
|
+
if (!authKnown && resumeStep >= 1 && resumeStep <= 7) { state.step = resumeStep; saveDraft(); }
|
|
4572
4674
|
if (focus) $('newName').focus();
|
|
4573
4675
|
} else {
|
|
4574
4676
|
show(step, !!focus);
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bongos/core",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.585",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bongos/core",
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.585",
|
|
10
10
|
"license": "AGPL-3.0-or-later",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"express": "^4.21.2",
|