@bongos/core 1.19.381 → 1.19.383
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 +69 -29
- package/clients/bongos-client/README.md +1 -1
- package/clients/bongos-client/bongos-client.global.js +4 -0
- package/clients/bongos-client/index.cjs +4 -0
- package/clients/bongos-client/index.d.ts +6 -0
- package/clients/bongos-client/index.mjs +4 -0
- package/docs/api/openapi.json +141 -3
- package/docs/api-reference.md +5 -3
- package/docs/copy-inventory.md +14 -9
- package/docs/copy-registry.json +87 -42
- package/docs/design/landing-page-direction-v2.md +90 -0
- package/docs/design/mocks/landing/landing-sheet.html +131 -0
- package/docs/design/mocks/landing/v1.html +956 -0
- package/docs/design/mocks/landing/v2.html +708 -0
- package/docs/design/mocks/landing/v3.html +911 -0
- package/migrations/core_228_idea_inbox_captured_by_idx.sql +61 -0
- package/modules/dev-box/app/src/vendor/bongos-client.cjs +4 -0
- package/modules/hall-ui/public/hall-kit.js +67 -6
- package/modules/hall-ui/public/profile.html +34 -2
- package/modules/hall-ui/public/profile.js +279 -0
- package/modules/ideas/inbox.js +98 -0
- package/modules/ideas/routes/inbox.js +39 -0
- package/modules/lifecycle/activity.js +205 -0
- package/modules/lifecycle/lifecycle.js +7 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/hall-preview/server.js +13 -3
- package/src/bongos/routes/builders.js +67 -0
- package/src/module-api.js +5 -1
- package/tests/profile_activity.mjs +625 -0
package/docs/copy-inventory.md
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
> Deterministic on a given tree — regenerate and commit rather than hand-editing.
|
|
5
5
|
> Machine-readable twin: [`copy-registry.json`](copy-registry.json).
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**1496 strings** across 3 surfaces · 1317 distinct pieces of copy · 1496 certain, 0 heuristic · 140 shown in more than one place.
|
|
8
8
|
|
|
9
9
|
## Surfaces
|
|
10
10
|
|
|
11
11
|
| surface | lives at | files | strings |
|
|
12
12
|
|---|---|---|---|
|
|
13
|
-
| `builders-hall` | `modules/hall-ui/public` | 71 |
|
|
13
|
+
| `builders-hall` | `modules/hall-ui/public` | 71 | 1129 |
|
|
14
14
|
| `status-dashboard` | `modules/status-ui/public` | 4 | 98 |
|
|
15
15
|
| `landing` | `public-landing` | 5 | 269 |
|
|
16
16
|
|
|
@@ -78,7 +78,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
78
78
|
| `12ee050d0180` | 2x | Copy desk | modules/hall-ui/public/copy-desk.html:15, modules/hall-ui/public/copy-desk.html:15 |
|
|
79
79
|
| … | | _100 more in the JSON registry_ | |
|
|
80
80
|
|
|
81
|
-
## `builders-hall` —
|
|
81
|
+
## `builders-hall` — 1129 strings
|
|
82
82
|
|
|
83
83
|
| id | conf | text | where |
|
|
84
84
|
|---|---|---|---|
|
|
@@ -111,7 +111,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
111
111
|
| `ac57fe1ccd6e` | certain | , follow its acceptance criteria, stay within touches[], /builder-ship | `modules/hall-ui/public/work.js:839` |
|
|
112
112
|
| `d36226548dc9` | certain | , membership | `modules/hall-ui/public/government.js:823` |
|
|
113
113
|
| `741e355954ac` | certain | , not at ship). | `modules/hall-ui/public/diagrams.html:61` |
|
|
114
|
-
| `b31a6bd7edc5` | certain | , or | `modules/hall-ui/public/profile.js:271` |
|
|
115
114
|
| `c7c9b0afc38e` | certain | , then mark it as read on the Home page. | `modules/hall-ui/public/work.html:40` |
|
|
116
115
|
| `24174ce79df3` | certain | 1 · Task lifecycle | `modules/hall-ui/public/diagrams.html:58` |
|
|
117
116
|
| `e4e929617054` | certain | 2 · Builder rank ladder | `modules/hall-ui/public/diagrams.html:66` |
|
|
@@ -137,6 +136,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
137
136
|
| `303f8d90266f` | certain | Achievements could not be loaded. | `modules/hall-ui/public/builders.js:1138` |
|
|
138
137
|
| `6ca31dd5eb91` | certain | Acknowledge the primer | `modules/hall-ui/public/primer.html:65` |
|
|
139
138
|
| `4461b13f95c2` | certain | Actions apply at once. Closing stops and deletes the box; you can start a fresh one anytime. | `modules/hall-ui/public/settings.html:162` |
|
|
139
|
+
| `f6036360c90c` | certain | Activity, by craft | `modules/hall-ui/public/profile.html:84` |
|
|
140
140
|
| `62eded408097` | certain | Add {…} | `modules/hall-ui/public/profile-nudge.js:68` |
|
|
141
141
|
| `7cf0163d4cde` | certain | Aggregate totals across every recorded work session. | `modules/hall-ui/public/sessions.html:35` |
|
|
142
142
|
| `8b736e365191` | certain | All builders | `modules/hall-ui/public/hall-render.js:1039` |
|
|
@@ -295,7 +295,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
295
295
|
| `8f597eabf4ac` | certain | Could not load the drachmae guide. | `modules/hall-ui/public/drachmae.js:162` |
|
|
296
296
|
| `b2147cc90e36` | certain | Could not load the idea template. Reload, or file from the terminal with capture.js. | `modules/hall-ui/public/ideas.js:438` |
|
|
297
297
|
| `6264ebc9ede0` | certain | Could not load the primer. | `modules/hall-ui/public/primer.js:620` |
|
|
298
|
-
| `7604af13c40e` | certain | Could not load the profile. | `modules/hall-ui/public/profile.js:
|
|
298
|
+
| `7604af13c40e` | certain | Could not load the profile. | `modules/hall-ui/public/profile.js:615` |
|
|
299
299
|
| `8b69e445592a` | certain | Could not load the question labels; showing the answers as stored. | `modules/hall-ui/public/idea.js:229` |
|
|
300
300
|
| `edd5bafbe075` | certain | Could not load the queue just now. | `modules/hall-ui/public/ideas.js:387` |
|
|
301
301
|
| `02bb0570996a` | certain | Could not load the ranks. | `modules/hall-ui/public/ranks.js:197` |
|
|
@@ -392,6 +392,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
392
392
|
| `44f928d13699` | certain | Event sounds | `modules/hall-ui/public/settings.html:282` |
|
|
393
393
|
| `8690c6424585` | certain | Every builder in {{worldName}} — rank, {{currency}}, karma, and active claims. | `modules/hall-ui/public/watch.html:61` |
|
|
394
394
|
| `2ae1eb35611e` | certain | Every done-when criterion for this goal, with its full detail. | `modules/hall-ui/public/goals.html:186` |
|
|
395
|
+
| `8825f1d90dd1` | certain | Every idea this builder captured — promoted, discarded, merged, or still open. | `modules/hall-ui/public/profile.html:104` |
|
|
395
396
|
| `1e05b7fe42c8` | certain | Every project you build on across the platform. | `modules/hall-ui/public/my-projects.html:24` |
|
|
396
397
|
| `efafe5ce29ed` | certain | Every task linked to this criterion has shipped — a Metic can confirm it | `modules/hall-ui/public/goals-render.js:588` |
|
|
397
398
|
| `ddebbccd4b37` | certain | Everyone building across hosted projects, ranked by track record. Descriptive only — cross-project numbers nev | `modules/hall-ui/public/people.html:23` |
|
|
@@ -432,6 +433,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
432
433
|
| `e2a9e33abe60` | certain | Goal tasks | `modules/hall-ui/public/goals.html:112` |
|
|
433
434
|
| `e0bc28d10785` | certain | Goals could not be loaded. Refresh to try again. | `modules/hall-ui/public/goals-page.js:867` |
|
|
434
435
|
| `4517f2253d0f` | certain | Goals couldn’t be loaded just now. Refresh to try again. | `modules/hall-ui/public/goals.js:112` |
|
|
436
|
+
| `6a85997bda21` | certain | Goals created | `modules/hall-ui/public/profile.html:96` |
|
|
435
437
|
| `2ed2cb8fbffd` | certain | Goals page | `modules/hall-ui/public/goals.js:94` |
|
|
436
438
|
| `320a0516a33e` | certain | Goals seeded — awaiting kickoff | `modules/hall-ui/public/roadmap.js:205` |
|
|
437
439
|
| `bba4caf837e9` | certain | Goals — {{worldName}} | `modules/hall-ui/public/goals.html:6` |
|
|
@@ -465,6 +467,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
465
467
|
| `ba82ec56f1e3` | certain | Idea — {{worldName}} | `modules/hall-ui/public/idea.html:6` |
|
|
466
468
|
| `ba82ec56f1e3` | certain | Idea — {{worldName}} | `modules/hall-ui/public/idea.html:6` |
|
|
467
469
|
| `e181637c5a5e` | certain | Ideas awaiting triage | `modules/hall-ui/public/builders.js:845` |
|
|
470
|
+
| `d4e21769ce1c` | certain | Ideas filed, and what became of them | `modules/hall-ui/public/profile.html:103` |
|
|
468
471
|
| `379b20d548ad` | certain | Ideas whose author has said "I had the thought but not the full picture". Anyone can develop one — the author | `modules/hall-ui/public/ideas.html:33` |
|
|
469
472
|
| `ef224c9de7c8` | certain | Ideas — {{worldName}} | `modules/hall-ui/public/ideas.html:6` |
|
|
470
473
|
| `ef224c9de7c8` | certain | Ideas — {{worldName}} | `modules/hall-ui/public/ideas.html:6` |
|
|
@@ -538,6 +541,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
538
541
|
| `df335a1224ae` | certain | Member since {…} | `modules/hall-ui/public/hall-render.js:490` |
|
|
539
542
|
| `df335a1224ae` | certain | Member since {…} | `modules/hall-ui/public/hall-render.js:544` |
|
|
540
543
|
| `df335a1224ae` | certain | Member since {…} | `modules/hall-ui/public/profile.js:58` |
|
|
544
|
+
| `c7a670e9552d` | certain | Merged into | `modules/hall-ui/public/profile.js:322` |
|
|
541
545
|
| `7637613c231b` | certain | Metic rank and above may vote | `modules/hall-ui/public/builders.js:729` |
|
|
542
546
|
| `d7ce4a3bb745` | certain | Minimize the welcome panel | `modules/hall-ui/public/hall-widgets.js:52` |
|
|
543
547
|
| `19b0ed5781ae` | certain | Minimum rank required to claim this task | `modules/hall-ui/public/task-lib.js:65` |
|
|
@@ -569,7 +573,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
569
573
|
| `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/builders.js:475` |
|
|
570
574
|
| `c255749ec989` | certain | No achievements earned yet. | `modules/hall-ui/public/profile.js:108` |
|
|
571
575
|
| `83f62fc94271` | certain | No builder account found for this sign-in. | `modules/hall-ui/public/settings.js:1278` |
|
|
572
|
-
| `2e9c154c09cd` | certain | No builder selected. Open a builder from the | `modules/hall-ui/public/profile.js:271` |
|
|
573
576
|
| `6d6fd2314248` | certain | No cross-project activity reported yet. | `modules/hall-ui/public/profile.js:239` |
|
|
574
577
|
| `6d6fd2314248` | certain | No cross-project activity reported yet. | `modules/hall-ui/public/scouting.js:29` |
|
|
575
578
|
| `b1ada579483c` | certain | No custom ranks yet | `modules/hall-ui/public/government.js:309` |
|
|
@@ -706,7 +709,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
706
709
|
| `aa4db91b5732` | certain | Released #{…}. It returns to the queue. | `modules/hall-ui/public/work.js:892` |
|
|
707
710
|
| `aa4db91b5732` | certain | Released #{…}. It returns to the queue. | `modules/hall-ui/public/work.js:945` |
|
|
708
711
|
| `9c74a2572f4d` | certain | Remote control (recommended) | `modules/hall-ui/public/hall-render.js:650` |
|
|
709
|
-
| `65e3399a8fbf` | certain | Remove filter | `modules/hall-ui/public/hall-kit.js:
|
|
712
|
+
| `65e3399a8fbf` | certain | Remove filter | `modules/hall-ui/public/hall-kit.js:308` |
|
|
710
713
|
| `dacd113fb3b2` | certain | Remove your image-generation key? Art generation will stop until you add one again. | `modules/hall-ui/public/settings.js:1080` |
|
|
711
714
|
| `20882d6ffdd0` | certain | Removed {…} from builder {…}. | `modules/hall-ui/public/government.js:316` |
|
|
712
715
|
| `b06589044b0b` | certain | Render session cards as widgets (prettier, costs tokens) instead of plain text (cheaper, identical info). | `modules/hall-ui/public/settings.js:502` |
|
|
@@ -803,6 +806,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
803
806
|
| `98d037e427b8` | certain | Stale — describes something that changed | `modules/hall-ui/public/copy-desk.html:94` |
|
|
804
807
|
| `9d4372b173cf` | certain | Standing sections | `modules/hall-ui/public/index.html:70` |
|
|
805
808
|
| `ec1c2dae4a90` | certain | Standing there | `modules/hall-ui/public/profile.js:230` |
|
|
809
|
+
| `efe530c0e3a7` | certain | Still open | `modules/hall-ui/public/profile.js:327` |
|
|
806
810
|
| `4e09b7f4288b` | certain | Stops and deletes your box. Provision a fresh one anytime. | `modules/hall-ui/public/box-panel.js:150` |
|
|
807
811
|
| `6c6544f5c011` | certain | Stored encrypted; never shown again after saving — only its last four digits. | `modules/hall-ui/public/settings.html:146` |
|
|
808
812
|
| `1dd8f7dd6139` | certain | Submit "{…}" for review | `modules/hall-ui/public/modules.js:159` |
|
|
@@ -916,6 +920,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
916
920
|
| `70dc106494cf` | certain | What is wrong with it, and what would better look like? | `modules/hall-ui/public/copy-desk.html:101` |
|
|
917
921
|
| `ae44a375e814` | certain | What it unlocks | `modules/hall-ui/public/ranks.js:109` |
|
|
918
922
|
| `00dc1f0f83e1` | certain | What kind of wrong? | `modules/hall-ui/public/copy-desk.html:89` |
|
|
923
|
+
| `5f2b989bbf6a` | certain | What this builder has done, seen one craft at a time. | `modules/hall-ui/public/profile.html:85` |
|
|
919
924
|
| `41b2aef03c03` | certain | What this project runs today | `modules/hall-ui/public/government.js:657` |
|
|
920
925
|
| `3dade88f0584` | certain | What your box would cost: | `modules/hall-ui/public/box-panel.js:235` |
|
|
921
926
|
| `b8743d16eab8` | certain | What {…} unlocks | `modules/hall-ui/public/hall-render.js:82` |
|
|
@@ -935,6 +940,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
935
940
|
| `c5fd76a9e03d` | certain | Won {…} | `modules/hall-ui/public/builders.js:482` |
|
|
936
941
|
| `c5fd76a9e03d` | certain | Won {…} | `modules/hall-ui/public/profile.js:115` |
|
|
937
942
|
| `520d139df9eb` | certain | Work is complete but the version is held — no tasks are being claimed here right now. | `modules/hall-ui/public/roadmap.js:223` |
|
|
943
|
+
| `0e6b8e8f26cc` | certain | Works completed | `modules/hall-ui/public/profile.html:91` |
|
|
938
944
|
| `52e5fe3c6075` | certain | Write a Full Idea | `modules/hall-ui/public/ideas.html:43` |
|
|
939
945
|
| `7664f4373d1f` | certain | Write one | `modules/hall-ui/public/idea.js:243` |
|
|
940
946
|
| `c368b56ecf40` | certain | Xenos builders start with a focused set of pages — ship your first | `modules/hall-ui/public/not-ready.html:26` |
|
|
@@ -1090,7 +1096,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1090
1096
|
| `fac041ec6dd7` | certain | selectable today | `modules/hall-ui/public/government.js:625` |
|
|
1091
1097
|
| `a6f55d7aa6f7` | certain | shipped (live) | `modules/hall-ui/public/roadmap.js:273` |
|
|
1092
1098
|
| `026ba1289d4d` | certain | shipped · | `modules/hall-ui/public/goals-render.js:641` |
|
|
1093
|
-
| `ec6d8c900bc8` | certain | sign in | `modules/hall-ui/public/profile.js:271` |
|
|
1094
1099
|
| `da30b952a60b` | certain | system / unattributed | `modules/hall-ui/public/goals-page.js:249` |
|
|
1095
1100
|
| `da30b952a60b` | certain | system / unattributed | `modules/hall-ui/public/work.js:496` |
|
|
1096
1101
|
| `cfc61d8cabe6` | certain | tally: {…} yes · {…} no — sitting under | `modules/hall-ui/public/government.js:823` |
|
|
@@ -1104,7 +1109,6 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1104
1109
|
| `65702f92a8c8` | certain | to claim your first task. | `modules/hall-ui/public/hall-render.js:691` |
|
|
1105
1110
|
| `5520469f2834` | certain | to copy the task prompt and paste it into a fresh Claude Code session to begin. | `modules/hall-ui/public/work.html:54` |
|
|
1106
1111
|
| `b8e12f871044` | certain | to graduate and open the rest of {{worldName}}'s builder hub. | `modules/hall-ui/public/not-ready.html:28` |
|
|
1107
|
-
| `47204e5f11de` | certain | to see your own profile. | `modules/hall-ui/public/profile.js:271` |
|
|
1108
1112
|
| `23488ca48320` | certain | to take a task right here — no terminal needed. Then click | `modules/hall-ui/public/work.html:54` |
|
|
1109
1113
|
| `c0449d0ec0b8` | certain | trend, latest {…} | `modules/hall-ui/public/hall-render.js:1002` |
|
|
1110
1114
|
| `679c0150f586` | certain | upkeep: undeclared | `modules/hall-ui/public/modules.js:73` |
|
|
@@ -1140,6 +1144,7 @@ Identical copy within one surface. Sometimes right (a repeated button), sometime
|
|
|
1140
1144
|
| `cc5106af4b35` | certain | {…} of {…} criteria satisfied | `modules/hall-ui/public/goals-lib.js:30` |
|
|
1141
1145
|
| `cc5106af4b35` | certain | {…} of {…} criteria satisfied | `modules/hall-ui/public/goals-render.js:566` |
|
|
1142
1146
|
| `cc5106af4b35` | certain | {…} of {…} criteria satisfied | `modules/hall-ui/public/goals.js:45` |
|
|
1147
|
+
| `c3d9687e2375` | certain | {…} of {…} shipped | `modules/hall-ui/public/profile.js:428` |
|
|
1143
1148
|
| `f32710d0ef37` | certain | {…} of {…} steps cleared. | `modules/hall-ui/public/hall-render.js:879` |
|
|
1144
1149
|
| `60743fe1e40d` | certain | {…} per page | `modules/hall-ui/public/hall-kit.js:71` |
|
|
1145
1150
|
| `e41b92264220` | certain | {…} places · {…} | `modules/hall-ui/public/copy-desk.js:117` |
|
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": 1496,
|
|
7
|
+
"unique_ids": 1317,
|
|
8
|
+
"certain": 1496,
|
|
9
9
|
"heuristic": 0,
|
|
10
10
|
"duplicate_ids": 140
|
|
11
11
|
},
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"builders-hall": {
|
|
14
14
|
"at": "modules/hall-ui/public",
|
|
15
15
|
"files": 71,
|
|
16
|
-
"strings":
|
|
16
|
+
"strings": 1129
|
|
17
17
|
},
|
|
18
18
|
"status-dashboard": {
|
|
19
19
|
"at": "modules/status-ui/public",
|
|
@@ -1740,15 +1740,6 @@
|
|
|
1740
1740
|
"origin": "html-text",
|
|
1741
1741
|
"confidence": "certain"
|
|
1742
1742
|
},
|
|
1743
|
-
{
|
|
1744
|
-
"id": "b31a6bd7edc5",
|
|
1745
|
-
"surface": "builders-hall",
|
|
1746
|
-
"text": ", or",
|
|
1747
|
-
"file": "modules/hall-ui/public/profile.js",
|
|
1748
|
-
"line": 271,
|
|
1749
|
-
"origin": "js-markup",
|
|
1750
|
-
"confidence": "certain"
|
|
1751
|
-
},
|
|
1752
1743
|
{
|
|
1753
1744
|
"id": "c7c9b0afc38e",
|
|
1754
1745
|
"surface": "builders-hall",
|
|
@@ -1974,6 +1965,15 @@
|
|
|
1974
1965
|
"origin": "html-text",
|
|
1975
1966
|
"confidence": "certain"
|
|
1976
1967
|
},
|
|
1968
|
+
{
|
|
1969
|
+
"id": "f6036360c90c",
|
|
1970
|
+
"surface": "builders-hall",
|
|
1971
|
+
"text": "Activity, by craft",
|
|
1972
|
+
"file": "modules/hall-ui/public/profile.html",
|
|
1973
|
+
"line": 84,
|
|
1974
|
+
"origin": "html-text",
|
|
1975
|
+
"confidence": "certain"
|
|
1976
|
+
},
|
|
1977
1977
|
{
|
|
1978
1978
|
"id": "62eded408097",
|
|
1979
1979
|
"surface": "builders-hall",
|
|
@@ -3401,7 +3401,7 @@
|
|
|
3401
3401
|
"surface": "builders-hall",
|
|
3402
3402
|
"text": "Could not load the profile.",
|
|
3403
3403
|
"file": "modules/hall-ui/public/profile.js",
|
|
3404
|
-
"line":
|
|
3404
|
+
"line": 615,
|
|
3405
3405
|
"origin": "js-notice",
|
|
3406
3406
|
"confidence": "certain"
|
|
3407
3407
|
},
|
|
@@ -4269,6 +4269,15 @@
|
|
|
4269
4269
|
"origin": "html-text",
|
|
4270
4270
|
"confidence": "certain"
|
|
4271
4271
|
},
|
|
4272
|
+
{
|
|
4273
|
+
"id": "8825f1d90dd1",
|
|
4274
|
+
"surface": "builders-hall",
|
|
4275
|
+
"text": "Every idea this builder captured — promoted, discarded, merged, or still open.",
|
|
4276
|
+
"file": "modules/hall-ui/public/profile.html",
|
|
4277
|
+
"line": 104,
|
|
4278
|
+
"origin": "html-text",
|
|
4279
|
+
"confidence": "certain"
|
|
4280
|
+
},
|
|
4272
4281
|
{
|
|
4273
4282
|
"id": "1e05b7fe42c8",
|
|
4274
4283
|
"surface": "builders-hall",
|
|
@@ -4629,6 +4638,15 @@
|
|
|
4629
4638
|
"origin": "js-markup",
|
|
4630
4639
|
"confidence": "certain"
|
|
4631
4640
|
},
|
|
4641
|
+
{
|
|
4642
|
+
"id": "6a85997bda21",
|
|
4643
|
+
"surface": "builders-hall",
|
|
4644
|
+
"text": "Goals created",
|
|
4645
|
+
"file": "modules/hall-ui/public/profile.html",
|
|
4646
|
+
"line": 96,
|
|
4647
|
+
"origin": "html-text",
|
|
4648
|
+
"confidence": "certain"
|
|
4649
|
+
},
|
|
4632
4650
|
{
|
|
4633
4651
|
"id": "2ed2cb8fbffd",
|
|
4634
4652
|
"surface": "builders-hall",
|
|
@@ -4926,6 +4944,15 @@
|
|
|
4926
4944
|
"origin": "js-markup",
|
|
4927
4945
|
"confidence": "certain"
|
|
4928
4946
|
},
|
|
4947
|
+
{
|
|
4948
|
+
"id": "d4e21769ce1c",
|
|
4949
|
+
"surface": "builders-hall",
|
|
4950
|
+
"text": "Ideas filed, and what became of them",
|
|
4951
|
+
"file": "modules/hall-ui/public/profile.html",
|
|
4952
|
+
"line": 103,
|
|
4953
|
+
"origin": "html-text",
|
|
4954
|
+
"confidence": "certain"
|
|
4955
|
+
},
|
|
4929
4956
|
{
|
|
4930
4957
|
"id": "379b20d548ad",
|
|
4931
4958
|
"surface": "builders-hall",
|
|
@@ -5583,6 +5610,15 @@
|
|
|
5583
5610
|
"origin": "js-markup",
|
|
5584
5611
|
"confidence": "certain"
|
|
5585
5612
|
},
|
|
5613
|
+
{
|
|
5614
|
+
"id": "c7a670e9552d",
|
|
5615
|
+
"surface": "builders-hall",
|
|
5616
|
+
"text": "Merged into",
|
|
5617
|
+
"file": "modules/hall-ui/public/profile.js",
|
|
5618
|
+
"line": 322,
|
|
5619
|
+
"origin": "js-markup",
|
|
5620
|
+
"confidence": "certain"
|
|
5621
|
+
},
|
|
5586
5622
|
{
|
|
5587
5623
|
"id": "7637613c231b",
|
|
5588
5624
|
"surface": "builders-hall",
|
|
@@ -5862,15 +5898,6 @@
|
|
|
5862
5898
|
"origin": "js-text-assign",
|
|
5863
5899
|
"confidence": "certain"
|
|
5864
5900
|
},
|
|
5865
|
-
{
|
|
5866
|
-
"id": "2e9c154c09cd",
|
|
5867
|
-
"surface": "builders-hall",
|
|
5868
|
-
"text": "No builder selected. Open a builder from the",
|
|
5869
|
-
"file": "modules/hall-ui/public/profile.js",
|
|
5870
|
-
"line": 271,
|
|
5871
|
-
"origin": "js-markup",
|
|
5872
|
-
"confidence": "certain"
|
|
5873
|
-
},
|
|
5874
5901
|
{
|
|
5875
5902
|
"id": "6d6fd2314248",
|
|
5876
5903
|
"surface": "builders-hall",
|
|
@@ -7100,7 +7127,7 @@
|
|
|
7100
7127
|
"surface": "builders-hall",
|
|
7101
7128
|
"text": "Remove filter",
|
|
7102
7129
|
"file": "modules/hall-ui/public/hall-kit.js",
|
|
7103
|
-
"line":
|
|
7130
|
+
"line": 308,
|
|
7104
7131
|
"origin": "js-markup",
|
|
7105
7132
|
"confidence": "certain"
|
|
7106
7133
|
},
|
|
@@ -7968,6 +7995,15 @@
|
|
|
7968
7995
|
"origin": "js-markup",
|
|
7969
7996
|
"confidence": "certain"
|
|
7970
7997
|
},
|
|
7998
|
+
{
|
|
7999
|
+
"id": "efe530c0e3a7",
|
|
8000
|
+
"surface": "builders-hall",
|
|
8001
|
+
"text": "Still open",
|
|
8002
|
+
"file": "modules/hall-ui/public/profile.js",
|
|
8003
|
+
"line": 327,
|
|
8004
|
+
"origin": "js-markup",
|
|
8005
|
+
"confidence": "certain"
|
|
8006
|
+
},
|
|
7971
8007
|
{
|
|
7972
8008
|
"id": "4e09b7f4288b",
|
|
7973
8009
|
"surface": "builders-hall",
|
|
@@ -8985,6 +9021,15 @@
|
|
|
8985
9021
|
"origin": "html-text",
|
|
8986
9022
|
"confidence": "certain"
|
|
8987
9023
|
},
|
|
9024
|
+
{
|
|
9025
|
+
"id": "5f2b989bbf6a",
|
|
9026
|
+
"surface": "builders-hall",
|
|
9027
|
+
"text": "What this builder has done, seen one craft at a time.",
|
|
9028
|
+
"file": "modules/hall-ui/public/profile.html",
|
|
9029
|
+
"line": 85,
|
|
9030
|
+
"origin": "html-text",
|
|
9031
|
+
"confidence": "certain"
|
|
9032
|
+
},
|
|
8988
9033
|
{
|
|
8989
9034
|
"id": "41b2aef03c03",
|
|
8990
9035
|
"surface": "builders-hall",
|
|
@@ -9156,6 +9201,15 @@
|
|
|
9156
9201
|
"origin": "js-markup",
|
|
9157
9202
|
"confidence": "certain"
|
|
9158
9203
|
},
|
|
9204
|
+
{
|
|
9205
|
+
"id": "0e6b8e8f26cc",
|
|
9206
|
+
"surface": "builders-hall",
|
|
9207
|
+
"text": "Works completed",
|
|
9208
|
+
"file": "modules/hall-ui/public/profile.html",
|
|
9209
|
+
"line": 91,
|
|
9210
|
+
"origin": "html-text",
|
|
9211
|
+
"confidence": "certain"
|
|
9212
|
+
},
|
|
9159
9213
|
{
|
|
9160
9214
|
"id": "52e5fe3c6075",
|
|
9161
9215
|
"surface": "builders-hall",
|
|
@@ -10551,15 +10605,6 @@
|
|
|
10551
10605
|
"origin": "js-markup",
|
|
10552
10606
|
"confidence": "certain"
|
|
10553
10607
|
},
|
|
10554
|
-
{
|
|
10555
|
-
"id": "ec6d8c900bc8",
|
|
10556
|
-
"surface": "builders-hall",
|
|
10557
|
-
"text": "sign in",
|
|
10558
|
-
"file": "modules/hall-ui/public/profile.js",
|
|
10559
|
-
"line": 271,
|
|
10560
|
-
"origin": "js-markup",
|
|
10561
|
-
"confidence": "certain"
|
|
10562
|
-
},
|
|
10563
10608
|
{
|
|
10564
10609
|
"id": "da30b952a60b",
|
|
10565
10610
|
"surface": "builders-hall",
|
|
@@ -10677,15 +10722,6 @@
|
|
|
10677
10722
|
"origin": "html-text",
|
|
10678
10723
|
"confidence": "certain"
|
|
10679
10724
|
},
|
|
10680
|
-
{
|
|
10681
|
-
"id": "47204e5f11de",
|
|
10682
|
-
"surface": "builders-hall",
|
|
10683
|
-
"text": "to see your own profile.",
|
|
10684
|
-
"file": "modules/hall-ui/public/profile.js",
|
|
10685
|
-
"line": 271,
|
|
10686
|
-
"origin": "js-markup",
|
|
10687
|
-
"confidence": "certain"
|
|
10688
|
-
},
|
|
10689
10725
|
{
|
|
10690
10726
|
"id": "23488ca48320",
|
|
10691
10727
|
"surface": "builders-hall",
|
|
@@ -11001,6 +11037,15 @@
|
|
|
11001
11037
|
"origin": "js-markup",
|
|
11002
11038
|
"confidence": "certain"
|
|
11003
11039
|
},
|
|
11040
|
+
{
|
|
11041
|
+
"id": "c3d9687e2375",
|
|
11042
|
+
"surface": "builders-hall",
|
|
11043
|
+
"text": "{…} of {…} shipped",
|
|
11044
|
+
"file": "modules/hall-ui/public/profile.js",
|
|
11045
|
+
"line": 428,
|
|
11046
|
+
"origin": "js-markup",
|
|
11047
|
+
"confidence": "certain"
|
|
11048
|
+
},
|
|
11004
11049
|
{
|
|
11005
11050
|
"id": "f32710d0ef37",
|
|
11006
11051
|
"surface": "builders-hall",
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# The landing page, direction v2: three compositions of the chrome world (task 1003297)
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-08-27 · **Goal:** 1000080 (Apex UI pass 2) · **Criterion:** `apex-landing-built-design-recorded` (this round is the composition half; A3, task 1003298, builds the page and writes `DESIGN.md`) · **World:** chrome-blobs, composition A, picked by the owner on 2026-08-27 (`apex-pass-2-direction.md` §5 to §7).
|
|
4
|
+
|
|
5
|
+
This document records the landing composition round: what it had to do, how it was run, the three versions put in front of the owner, the light-mode decision the round asks for, the owner's pick, the shot list of real imagery still owed, and the copy strings the copy desk will need. It supersedes `landing-page-direction.md` (the 2026-08-13 marigold page) for the look of `/`; the structural decisions of `front-door-and-hub-direction.md` (two equal doors, the hub's top bar, the apex-only split) carry as givens. No build file was touched.
|
|
6
|
+
|
|
7
|
+
## 1. What this round had to do
|
|
8
|
+
|
|
9
|
+
Three MATERIALLY different full-page compositions of `cloudbongos.com/` inside the approved world, as real HTML mocks under `docs/design/mocks/landing/v{1,2,3}.html` with a contact sheet `landing-sheet.html`, both modes, desktop and a 390 frame. Every version carries: two equal doors that read as one claim; the bongo pair as the mark; the platform's proof (real GDS surfaces, real project orbs, nothing invented); the hall link in the footer; the apex-only regions marked so the shared `index.html` still serves a child instance's plain landing. The taste pre-flight applies (hero at most four text elements, headline at most two lines, lede at most twenty words, nav on one line at most 80px, one eyebrow per three sections at most, no three-equal-card row, no div-built fake screenshots, no em dash or emoji in visible copy, real imagery or a labeled placeholder, motion motivated and reduced-motion safe).
|
|
10
|
+
|
|
11
|
+
The owner's steer from the world round, applied here: (1) the **animated chrome background** is the named signature interaction, code-led, one authored moment, dead under reduced motion, with at least one version whose forms are bongo-shaped; (2) the **light-mode decision** is put to the owner explicitly with the three compositions (rebuild light to the dark standard, or ship the landing dark-only while the hall and the hub keep both modes).
|
|
12
|
+
|
|
13
|
+
## 2. Method, as run
|
|
14
|
+
|
|
15
|
+
1. Code-led (`.impeccable/config.json`: `buildPath: code`), no new comps, no direction roll: the world is pinned by the owner's pick, and the template (`docs/design/references/2026-08-26/<redacted>.jpg`) beats the mock where they differ.
|
|
16
|
+
2. One shared brief (mechanics, the fifteen-token colour rule, every dark rule written twice, no page-local `:root`, the apex-only sentinels, the taste bans, the full content spine with real strings and real numbers) and one version paragraph per builder: a distinct hero geometry, a distinct motion thesis, a distinct light answer. Three builders ran in parallel under `/impeccable` (setup on the surface brief `.impeccable/surfaces/public-landing-index-html.md`, the craft floor, the animate playbook).
|
|
17
|
+
3. Hero material: the round-2 plates only (`r2-chrome-blobs-set.jpg`, `r2-chrome-blob-one.jpg`, `r2-bongos-chrome-b.jpg`, `r2-bongos-chrome-a-cut.png`). Two alpha cutouts of the blob plates (`r2-chrome-blobs-set-cut.png`, `r2-chrome-blob-one-cut.png`, background remover, 2 credits, $0.05 logged as art) were added so a light mode with the chrome on the pale ground could be built at all; the Higgsfield rule holds (hero plates only, no UI).
|
|
18
|
+
4. Real numbers from the public ledger on 2026-08-27 (refreshed after the review pass, when the figures had already moved by a few hours of shipping): 1,110 tasks shipped of 1,561 on V1 (`/public/progress`), 69,790 credits of value and $48,251 spent (`/public/cost-summary`), 9 builders holding credits (`/public/leaderboard`); the six latest shipped tasks from `/public/recent-shipped` at 16:42Z to 16:48Z; the three featured projects from `/projects/featured` (Example at example.com, Demo at demo.cloudbongos.com, Emersonian Circles). The mocks bake these in; the build renders them live.
|
|
19
|
+
5. Verification, every version: clean render (no console errors or warnings, no failed requests, no horizontal overflow, the right `data-mode`) at 1440x900 and 390x844 in both modes through `playwright-core` on the system browser; the reduced-motion pass leaves no running animation and no live frame loop; a mechanical rule check (taste bans, token discipline, dark twins, sentinels, structure, asset paths); then a reviewer pass against the template and the brief with the fixes applied in one batch.
|
|
20
|
+
|
|
21
|
+
## 3. The three versions
|
|
22
|
+
|
|
23
|
+
| # | File | Composition (the first viewport) | Signature interaction | Light answer | Honest risk |
|
|
24
|
+
|---|---|---|---|---|---|
|
|
25
|
+
| v1 | `mocks/landing/v1.html` | **The room.** Composition A carried to a full page: the staggered lowercase headline over the chrome field, the callouts on the rendered bongo pair lower right, the joined pill doors centred on the round blob | **The drift.** The three chrome layers float on slow independent loops and answer the pointer with a gentle parallax; the bongos stay still | The black specimen panel, refined | Closest to what was approved, so the least new information; the panel is still a panel |
|
|
26
|
+
| v2 | `mocks/landing/v2.html` | **The bongo field.** A centred two-line headline over a field whose forms are the bongo pair itself: chrome flowing inside drum-shaped silhouettes at three depths; no separate hero object | **The flow.** The chrome slides inside the bongo shapes while the shapes drift across the void; on load they settle from a soft blur | Dark hero, light page: the first viewport stays black in both modes | Bongo silhouettes can tip into clip-art; the field must read as liquid chrome first and as bongos second |
|
|
27
|
+
| v3 | `mocks/landing/v3.html` | **The template's page.** The owner's reference followed closely: the big round blob dominates, the two-line headline crosses it, the callouts sit at the template's three positions, the doors float inside the blob, the three-quarter bongo cutout at the right edge | **The breath.** The big blob breathes and its iridescence drifts while the small bead orbits it | Light rebuilt to the dark standard: the chrome as cutouts on the pale ground, no black anywhere | The closest to the reference, so the most exposed to "it looks like the template"; the light cutouts are the only version that answers light without black |
|
|
28
|
+
|
|
29
|
+
Below the fold every version carries the same spine in its own order: the lifecycle (the rail with one lit step and the five clauses), the ledger proof (real shipped work), living proof (the real project orbs; apex-only), Verro Labs (apex-only), the basics (two columns; apex-only), the closing pair, the footer (the commons line apex-only; the hall link).
|
|
30
|
+
|
|
31
|
+
### 3.1 What the review found, and what was fixed before the owner saw the sheet
|
|
32
|
+
|
|
33
|
+
Each version was reviewed by two independent lenses (a design director over the renders and the template; a verifier measuring glyph-pixel contrast at several animation phases, control sizes, overflow at 1440/390/320, animations with and without reduced motion, keyboard order and focus, assets, sentinels), and every must-fix was handed to a skeptic to refute. What survived, and what was done:
|
|
34
|
+
|
|
35
|
+
- **v1.** Dark first viewport confirmed as composition A verbatim (every plate position, the h1 clamp and the callout positions diffed against the approved mock). One must: a 23 px link. Shoulds taken: the light hero was underset (a 158 px void between the stat row and the doors, a 122 px void under them, a black stripe through the panel) and it abandoned the version's own device (in light the callouts had become a three-up stat strip); fixed by aligning the doors to the panel's edge, closing the gaps, and keeping the callouts on the object inside the panel. The third featured project was added, the ledger re-fetched.
|
|
36
|
+
- **v2.** The first fix round turned the field's forms from blurred pillows into drum profiles with lit hoops; the review then found they read as open-topped copper tubs and that half the viewport was empty black (the fidelity reviewer's must, downgraded by the skeptic because the version's thesis is the field itself, was taken anyway as a should). Second round: two forms instead of four (the near one at hero scale behind the h1), the head as a tensioned skin under a specular hoop, crops re-aimed at the plate's iridescent bands, the flow's rest frame set to its brightest phase, the light seam lifted above the fold so the toggle changes the first screen, structural hairlines at 3:1, the Demo bead lit, the third project added, the ledger's top six restored verbatim, six short links fixed. Below the fold the reviewer called v2 the strongest of the round (the beat rail down the margin of a live ledger).
|
|
37
|
+
- **v3.** Five confirmed musts: the breathe ran at 14 s (under the 20 s floor, so it pulsed) and was slowed to about 30 s; the `credits of value` callout and the lede crossed the blob's bright shoulder (1.0 to 3.5:1) and were moved onto black; at 390 the callouts sat on chrome under 4.5:1 and were put on a black ground; six short links fixed. Shoulds taken: the door pill was an opaque slab over the blob's centre (now 50 percent black, the approved mock's value); the three project beads were one crop used three times (now three crops); the light hero's left half was unresolved (leaders now meet the silhouette, the orb lowered); the truncated ledger title restored. Two findings were refuted by the skeptics and left alone (the `69,751` figure passes once its halo is credited; the light bongo pair is whole, only the sweeping form bleeds by design).
|
|
38
|
+
- **All three.** Every page passes the mechanical rule check and renders clean in both modes at 1440 and 390 with reduced motion leaving nothing running. The ship's grade round then caught two pre-flight misses and both were fixed: v1's headline had kept composition A's three-line stagger (the pre-flight caps it at two lines; v1 now breaks `building digitally,` / `as simple as bongos.` like v3), and the top bar wrapped to two rows at 390 in every version (composition A's own behaviour; every version now collapses the bar to one row under 900 px: the glyph alone, the three links, the toggle, sign in, under 80 px down to 320). Findings recorded but not fixed here, for the build: the `builders` callout is the count of builders holding credits on the public leaderboard (`/public/leaderboard`, nine on 2026-08-27; the world round's `6` was the ninety-day active count from `/public/analytics/ecosystem`), so the build must pick one definition and caption it honestly; the thinnest light-mode pairs clear 4.5:1 by 9 percent and are contract-token pairs (`--ink-faint` on `--bg`), so any lift is a token-layer decision for the whole world; hero figures and ledger rows are baked into the mocks and drift within hours, so the build should render them from `/public/progress`, `/public/cost-summary` and `/public/recent-shipped` at request time.
|
|
39
|
+
|
|
40
|
+
## 4. Review
|
|
41
|
+
|
|
42
|
+
Open `docs/design/mocks/landing/landing-sheet.html` in a browser. Dark is the default; flip to light to see each version's light answer; `template` swaps the first tile for the owner's reference; the middle tile is the full page, the right tile the page at 390; `open full` walks any version at full size. The head comment of each version states its thesis, first-viewport geometry, signature and light answer.
|
|
43
|
+
|
|
44
|
+
## 5. The light-mode decision
|
|
45
|
+
|
|
46
|
+
The world round's light landing rehoused the chrome in a black specimen panel and the owner called it weak. The settled constraint (dark-first with a real, tested light mode) stands until the owner decides. The versions show the range:
|
|
47
|
+
|
|
48
|
+
1. **Keep light, panel refined (v1).** Least work in the build; the panel stays the one black object on a pale page.
|
|
49
|
+
2. **Dark hero, light page (v2).** The chrome keeps its black; everything under the fold goes light. The seam is a designed edge.
|
|
50
|
+
3. **Light rebuilt to the dark standard (v3).** The chrome forms as cutouts on the pale ground; the only answer with no black at all. Costs the cutout plates (done) and one more pass of contrast work in the build.
|
|
51
|
+
4. **Dark-only landing.** The landing ships dark while the hall and the hub keep both modes; the toggle leaves the landing. Simplest build, and the one the owner floated.
|
|
52
|
+
|
|
53
|
+
## 6. The owner's pick
|
|
54
|
+
|
|
55
|
+
**2026-08-27: v3, the template's page, with light mode rebuilt to the dark standard (option 3 in §5).** Both decisions taken in session with the three versions open (published as self-contained artifacts after the local sheet's `file://` tiles did not show for the owner). No merge, no raises: A3 builds v3 as it stands, the breath as its signature (blob 32 s, sheen 40 s, bead orbit 60 s, the converge on load, dead under reduced motion), and the light landing as the chrome cutouts on the pale ground with a contact shadow, the toggle staying on the landing.
|
|
56
|
+
|
|
57
|
+
What the pick settles: the settled constraint (dark-first with a real, tested light mode) stands for the landing; the light cutouts (`r2-chrome-blobs-set-cut.png`, `r2-chrome-blob-one-cut.png`, `r2-bongos-chrome-a-cut.png`) are production material for the light mode, so the build's asset set is the three black plates plus the three cutouts. v1 and v2 stay on disk as built and verified; what they leave behind for the build: v1's pointer parallax as an optional second layer of the drift, v2's beat rail down the margin of the live ledger (the reviewer's strongest below-the-fold block of the round) as the ledger proof's alternative form, and v2's mode-invariant black stage as the pattern for any surface that must keep black in light.
|
|
58
|
+
|
|
59
|
+
## 7. Shot list: real imagery still owed
|
|
60
|
+
|
|
61
|
+
No version left a placeholder slot: every image on the three pages is a real plate (the round-2 chrome set, the single blob, the two bongo pairs, the two new blob cutouts) or the real Verro Labs medallion, and the proof is the ledger rendered as page content, so no hall or hub capture is used. What the build will still owe:
|
|
62
|
+
|
|
63
|
+
- **Per-project marks for the living-proof orbs.** `art_url` is `null` for all three featured projects (Example, Demo, Emersonian Circles), so every version falls back to the chrome bead (v1 rotates the second bead so the pair reads as two objects; v3 scales three beads unequally). If the owner wants each project to carry its own mark, that is one text-free render per project (square, on black, about 424 px, the hero-plate rule applies) or the project's own art through `art_url`.
|
|
64
|
+
- **The Verro Labs medallion** is the same upscaled 217 px source the live page uses; a higher-resolution original or a vector is still owed (already noted in the live page's own comment).
|
|
65
|
+
|
|
66
|
+
## 8. Copy strings for the copy desk
|
|
67
|
+
|
|
68
|
+
Strings that differ from the live `public-landing/index.html` or are new. Everything else is verbatim (the live page's em dash in the Verro Labs copy became a comma in the brief, per the taste ban).
|
|
69
|
+
|
|
70
|
+
| Where | String | Note |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| Ledger (all) | `1,108 of 1,561 shipped on V1` | real, 2026-08-27 |
|
|
73
|
+
| Ledger sub-line | v1 `The six most recent, as the ledger recorded them.` · v3 `The six most recent, straight from the ledger.` · v2 column head `latest shipped` | new; one wording to pick |
|
|
74
|
+
| Ledger titles | live task titles containing an em dash (1002792, 1002889) were rewritten (`write-once: no route can edit one`, `URL.pathname: %20 breaks require()`) by v1 and v3; v2 skipped those rows instead | **build decision:** a landing that renders live titles will meet em dashes; either normalise punctuation at render time or accept them in quoted data |
|
|
75
|
+
| Ledger title 1003251 | trailing `(owner decision 2026-08-24)` dropped by v3 | truncation rule for long titles |
|
|
76
|
+
| Ledger column heads | v1 `Task` `What shipped` `Builder` `When` | new |
|
|
77
|
+
| Living proof captions | `a game, 11 builders` · `a live demo instance, 1 builder` · `1 builder` (Emersonian Circles, v3 only) · orb link text `example.com` / `demo.cloudbongos.com` (v2) | from the feed's `type`, `builders`, tagline |
|
|
78
|
+
| Living proof heading | v2 renders it lowercase (`built on cloud bongos`), v1 and v3 keep `Built on Cloud Bongos` | casing decision for the display voice |
|
|
79
|
+
| The basics heading | v2 adds an h2 `the basics`; v3 uses eyebrows `For founders` / `For builders` over `Types of projects` / `Ways to get paid` | one structure to pick |
|
|
80
|
+
| Closing pair heading | v1 `Pick your door.` · v2 `Two doors, one ledger.` · v3 none (a bead over the pill) | new; optional |
|
|
81
|
+
| Closing doors | `Start a project` / `Find a project` (v2 and v3 put the primary first; v1 keeps the hero's order, secondary left) | order decision |
|
|
82
|
+
| Skip link | `Skip to content` | new, all versions |
|
|
83
|
+
| Hall link | `Builders' hall` (footer, all versions) | new; server-stamped `{{buildersOrigin}}` in the build |
|
|
84
|
+
|
|
85
|
+
## 9. What carries forward
|
|
86
|
+
|
|
87
|
+
- **A3 (task 1003298)** builds the picked version (or the merge the owner names) into `public-landing/index.html` on the branding-pack token contract, writes `DESIGN.md` from the build, and closes the light-mode decision in code (the toggle stays or leaves the landing per §6). The signature interaction is built as designed here: CSS or canvas, one authored moment, reduced motion kills it, the plates stay text-free hero material.
|
|
88
|
+
- **A4 (task 1003299)** carries the owner's request to see the projects page in this world.
|
|
89
|
+
- The hero-scale bongo object is a rendered plate in the mocks; whether production uses the plate or an SVG rebuilt in the chrome material is A3's call (the small mark stays the inline SVG).
|
|
90
|
+
- **Plate paths in the token layer.** Chromium resolves a `url()` inside a CSS custom property against the document, not the stylesheet that declared it (verified in this round with a probe page: the token layer's five-level relative path looked for the plate under `.claude/worktrees/` from the `landing/` folder). All three mocks re-declare the plate tokens on `body` with document-relative paths. In the build, reference plates with root-absolute paths (`/assets/...`) in the token layer, or declare them in the page.
|
|
@@ -0,0 +1,131 @@
|
|
|
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>Landing composition round: three versions of the chrome world (task 1003297)</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root{--ink:#14151a;--soft:#585c6b;--faint:#8a8fa0;--line:#d9dce5;--bg:#f3f4f8;--card:#ffffff;--kick:#0b5fff;}
|
|
9
|
+
:root[data-mode="dark"]{--ink:#f1f2f7;--soft:#a9aec0;--faint:#737890;--line:#2a2e3b;--bg:#0c0e14;--card:#151822;--kick:#7aa2ff;}
|
|
10
|
+
@media (prefers-color-scheme:dark){:root:not([data-mode="light"]){--ink:#f1f2f7;--soft:#a9aec0;--faint:#737890;--line:#2a2e3b;--bg:#0c0e14;--card:#151822;--kick:#7aa2ff;}}
|
|
11
|
+
*{box-sizing:border-box;margin:0;padding:0}
|
|
12
|
+
body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;padding:clamp(18px,3vw,40px);-webkit-font-smoothing:antialiased;line-height:1.5}
|
|
13
|
+
h1{font-size:clamp(22px,3vw,32px);letter-spacing:-.4px;margin-bottom:6px}
|
|
14
|
+
.sub{color:var(--soft);max-width:96ch;font-size:14.5px;margin-bottom:8px}
|
|
15
|
+
.sub b{color:var(--ink)}
|
|
16
|
+
.read{border-left:3px solid var(--kick);padding:10px 14px;margin:14px 0 18px;font-size:14px;max-width:104ch;background:color-mix(in srgb,var(--kick) 7%,transparent);border-radius:0 8px 8px 0}
|
|
17
|
+
.read code{font-family:ui-monospace,Consolas,monospace;font-size:12.5px}
|
|
18
|
+
.read ol{margin:6px 0 0 18px}
|
|
19
|
+
.bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 22px;position:sticky;top:0;background:var(--bg);padding:10px 0;z-index:5;border-bottom:1px solid var(--line)}
|
|
20
|
+
.bar span{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);margin-left:10px}
|
|
21
|
+
.bar span:first-child{margin-left:0}
|
|
22
|
+
.bar button{cursor:pointer;font:inherit;font-weight:600;font-size:13px;padding:6px 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);color:var(--ink)}
|
|
23
|
+
.bar button[aria-pressed="true"]{background:var(--ink);color:var(--card);border-color:var(--ink)}
|
|
24
|
+
.cand{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:16px 18px 18px;margin-bottom:22px}
|
|
25
|
+
.kick{font-size:11px;letter-spacing:.9px;text-transform:uppercase;color:var(--kick);font-weight:700}
|
|
26
|
+
.cand h2{font-size:20px;margin:2px 0 4px;letter-spacing:-.2px}
|
|
27
|
+
.meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px 22px;font-size:13.5px;color:var(--soft);margin:6px 0 12px}
|
|
28
|
+
.meta b{color:var(--ink);font-weight:600}
|
|
29
|
+
.tiles{display:grid;grid-template-columns:3fr 3fr 1fr;gap:12px;align-items:start}
|
|
30
|
+
@media (max-width:1100px){.tiles{grid-template-columns:1fr 1fr}}
|
|
31
|
+
@media (max-width:640px){.tiles{grid-template-columns:1fr}}
|
|
32
|
+
.tile{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg)}
|
|
33
|
+
.tileHead{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;color:var(--soft);border-bottom:1px solid var(--line)}
|
|
34
|
+
.tileHead a{color:var(--kick);font-weight:600;text-decoration:none}
|
|
35
|
+
.frame{position:relative;width:100%;aspect-ratio:1440/900;overflow:hidden}
|
|
36
|
+
.frame iframe{position:absolute;top:0;left:0;width:1440px;height:900px;border:0;transform-origin:0 0}
|
|
37
|
+
.frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top}
|
|
38
|
+
.tall .frame{aspect-ratio:1440/2600}
|
|
39
|
+
.tall .frame iframe{height:2600px}
|
|
40
|
+
.phone .frame{aspect-ratio:390/844}
|
|
41
|
+
.phone .frame iframe{width:390px;height:844px}
|
|
42
|
+
.tmpl{display:flex;gap:10px;align-items:center;margin:0 0 10px;font-size:12.5px;color:var(--soft)}
|
|
43
|
+
.tmpl img{height:56px;border-radius:6px;border:1px solid var(--line)}
|
|
44
|
+
.decide{border:1.5px solid var(--kick);border-radius:16px;padding:16px 18px;margin-bottom:22px;font-size:14px;max-width:110ch}
|
|
45
|
+
.decide h2{font-size:18px;margin-bottom:6px}
|
|
46
|
+
.decide ol{margin:6px 0 0 20px}
|
|
47
|
+
.decide li{margin:4px 0}
|
|
48
|
+
footer{color:var(--faint);font-size:12.5px;margin-top:28px}
|
|
49
|
+
</style>
|
|
50
|
+
<script>
|
|
51
|
+
(function(){try{var q=new URLSearchParams(location.search).get('mode');var m=(q==='light'||q==='dark')?q:'dark';document.documentElement.setAttribute('data-mode',m);}catch(e){}})();
|
|
52
|
+
</script>
|
|
53
|
+
</head>
|
|
54
|
+
<body>
|
|
55
|
+
|
|
56
|
+
<h1>The landing in the chrome world: three full-page compositions, one to approve</h1>
|
|
57
|
+
<p class="sub">Round 2 of the apex pass (task 1003297, goal 1000080), after the world round picked <b>chrome-blobs, composition A</b>. Each version is the whole page (hero, the lifecycle, the ledger proof, living proof, Verro Labs, the basics, the closing pair, the footer with the hall link), built code-led on the chosen mock and the owner's template, with the round-2 hero plates and no new comps. Each carries the owner's named signature interaction, <b>the animated chrome background</b>, done a different way, and a <b>different answer to light mode</b>. Mocks are judged <b>dark first</b>; flip to light to see each version's light answer. The left tile is the first viewport at 1440, the middle tile the full page scrolled, the right tile the page at 390. <b>Template</b> swaps the first tile for the owner's reference. <b>Owner's pick (2026-08-27): v3, the template's page, with light mode rebuilt to the dark standard.</b> Open this sheet from the checkout that holds <code>docs/design/mocks/landing/</code>; the tiles are local iframes.</p>
|
|
58
|
+
|
|
59
|
+
<div class="read">
|
|
60
|
+
<b>How to read the three.</b> Same content, same token layer (<code>../world/chrome-blobs/_tokens.css</code>), same mechanics, same template; the composition, the motion and the light answer differ. <b>v1</b> keeps the approved first viewport and lets the chrome drift. <b>v2</b> makes the chrome forms bongo-shaped (the owner's ask) and keeps the first viewport black in both modes. <b>v3</b> follows the owner's reference more closely than the mock did (the headline crossing the big blob, the doors inside it) and rebuilds light mode with the chrome on the pale ground. The pick can be a version, or a steer that merges two.
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div class="decide" id="light">
|
|
64
|
+
<h2>The decision this round asks of the owner: light mode</h2>
|
|
65
|
+
The world round's light landing put the chrome in a black panel and the owner called it weak. The settled constraint (dark-first with a real, tested light mode) stands until decided. The three versions show the range:
|
|
66
|
+
<ol>
|
|
67
|
+
<li><b>v1</b>: the black specimen panel, refined (the chrome stays on black inside one panel on the pale page).</li>
|
|
68
|
+
<li><b>v2</b>: dark hero, light page (the first viewport is black in both modes because the chrome needs black; the rest of the page goes light).</li>
|
|
69
|
+
<li><b>v3</b>: light rebuilt to the dark standard (the chrome forms cut out and set on the pale ground, no black anywhere).</li>
|
|
70
|
+
<li>Or: the landing ships <b>dark-only</b> while the hall and the hub keep both modes.</li>
|
|
71
|
+
</ol>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
<div class="bar">
|
|
75
|
+
<span>mode</span>
|
|
76
|
+
<button data-md="dark" aria-pressed="true" type="button">dark</button>
|
|
77
|
+
<button data-md="light" aria-pressed="false" type="button">light</button>
|
|
78
|
+
<span>show</span>
|
|
79
|
+
<button data-v="mock" aria-pressed="true" type="button">mock</button>
|
|
80
|
+
<button data-v="template" aria-pressed="false" type="button">template</button>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<div id="cands"></div>
|
|
84
|
+
|
|
85
|
+
<footer>Mocks: <code>docs/design/mocks/landing/v{1,2,3}.html</code> on the chosen world's token layer <code>docs/design/mocks/world/chrome-blobs/_tokens.css</code>. Template: <code>docs/design/references/2026-08-26/site-2-iridescent-chrome-blobs-warm-cta.jpg</code>. Plates: <code>.impeccable/mocks/world-assets/r2-*</code> (kept out of the published core). Decision record: <code>docs/design/landing-page-direction-v2.md</code>; the world pick: <code>docs/design/apex-pass-2-direction.md</code>.</footer>
|
|
86
|
+
|
|
87
|
+
<script>
|
|
88
|
+
var REF='../../references/2026-08-26/site-2-iridescent-chrome-blobs-warm-cta.jpg';
|
|
89
|
+
var CANDS=[
|
|
90
|
+
{slug:'v1',name:'v1, the room',
|
|
91
|
+
thesis:'Composition A carried to a full page: the staggered lowercase headline over the chrome field, the callouts on the bongo pair, the joined pill doors centred on the round blob.',
|
|
92
|
+
signature:'The drift: the three chrome layers float on slow independent loops and answer the pointer with a gentle parallax; the bongos stay still.',
|
|
93
|
+
light:'The black specimen panel, refined.'},
|
|
94
|
+
{slug:'v2',name:'v2, the bongo field',
|
|
95
|
+
thesis:'Centred headline on two lines over a field whose forms are the bongo pair itself: four drum-profile silhouettes at four depths, masked over the chrome plate, with lit hoops, tension rods and matte heads; no separate hero object.',
|
|
96
|
+
signature:'The chrome slides inside the drum shapes while the pairs drift across the void on long loops; on load they settle from a soft blur within two thirds of a second.',
|
|
97
|
+
light:'Dark hero, light page: the first viewport stays black in both modes.'},
|
|
98
|
+
{slug:'v3',name:'v3, the template\'s page',
|
|
99
|
+
thesis:'The owner\'s reference followed closely: one big blob (the single-blob plate, whole and uncropped) dominates centre-left, the two-line headline crosses it, the callouts sit at the template\'s three positions, the doors float inside the blob, the three-quarter bongo cutout rides the sweeping form at the right.',
|
|
100
|
+
signature:'The breath: the big blob breathes (14 s) and its iridescence drifts (40 s) while the small bead orbits it (60 s); on load the three forms converge into place.',
|
|
101
|
+
light:'Light rebuilt to the dark standard: the same sculpture as alpha cutouts on the pale ground with a contact shadow, type on clean paper, no black panel anywhere.'}
|
|
102
|
+
];
|
|
103
|
+
var mode='dark', view='mock';
|
|
104
|
+
function tile(c,label,cls){
|
|
105
|
+
var src=c.slug+'.html?mode='+mode;
|
|
106
|
+
var body = (view==='template' && !cls) ? '<img src="'+REF+'" alt="the owner\'s template">' : '<iframe loading="lazy" src="'+src+'" title="'+c.name+': '+label+'"></iframe>';
|
|
107
|
+
return '<div class="tile '+(cls||'')+'"><div class="tileHead"><span>'+label+'</span><a href="'+src+'" target="_blank">open full</a></div><div class="frame">'+body+'</div></div>';
|
|
108
|
+
}
|
|
109
|
+
function render(){
|
|
110
|
+
document.getElementById('cands').innerHTML=CANDS.map(function(c,i){
|
|
111
|
+
return '<section class="cand" id="'+c.slug+'">'+
|
|
112
|
+
'<div class="kick">Version '+(i+1)+' of 3</div><h2>'+c.name+'</h2>'+
|
|
113
|
+
'<div class="meta"><div><b>Composition.</b> '+c.thesis+'</div><div><b>Signature.</b> '+c.signature+'</div><div><b>Light answer.</b> '+c.light+'</div></div>'+
|
|
114
|
+
'<div class="tiles">'+tile(c,'first viewport at 1440')+tile(c,'the full page','tall')+tile(c,'at 390','phone')+'</div>'+
|
|
115
|
+
'</section>';
|
|
116
|
+
}).join('');
|
|
117
|
+
fit();
|
|
118
|
+
}
|
|
119
|
+
function fit(){
|
|
120
|
+
document.querySelectorAll('.frame').forEach(function(f){
|
|
121
|
+
var fr=f.querySelector('iframe'); if(!fr) return;
|
|
122
|
+
var w=f.closest('.phone')?390:1440; fr.style.transform='scale('+(f.clientWidth/w)+')';
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
document.querySelectorAll('[data-md]').forEach(function(b){b.onclick=function(){mode=b.dataset.md;document.documentElement.setAttribute('data-mode',mode);document.querySelectorAll('[data-md]').forEach(function(x){x.setAttribute('aria-pressed',String(x===b));});render();};});
|
|
126
|
+
document.querySelectorAll('[data-v]').forEach(function(b){b.onclick=function(){view=b.dataset.v;document.querySelectorAll('[data-v]').forEach(function(x){x.setAttribute('aria-pressed',String(x===b));});render();};});
|
|
127
|
+
window.addEventListener('resize',fit);
|
|
128
|
+
render();
|
|
129
|
+
</script>
|
|
130
|
+
</body>
|
|
131
|
+
</html>
|