@bongos/core 1.19.726 → 1.19.727

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.
Files changed (226) hide show
  1. package/.bongos-core.json +176 -491
  2. package/.devcontainer/Dockerfile +1 -1
  3. package/.devcontainer/devcontainer.json +2 -2
  4. package/.devcontainer/healthcheck.sh +1 -1
  5. package/.devcontainer/init-firewall.sh +1 -1
  6. package/.devcontainer/post-create.sh +2 -2
  7. package/.env.local.example +1 -1
  8. package/Dockerfile +1 -1
  9. package/docs/copy-inventory.md +1 -1
  10. package/docs/copy-registry.json +9 -9
  11. package/docs/module-api-changelog.md +2 -0
  12. package/docs/recipes/devbox-app-release.md +4 -4
  13. package/modules/dev-box/app/scripts/dmgbuild-settings.py +5 -5
  14. package/modules/dev-box/app/scripts/gen-brand.js +1 -1
  15. package/modules/dev-box/app/src/brand.js +1 -1
  16. package/modules/dev-box/app/test/unit.mjs +16 -16
  17. package/modules/dev-box/box-access.js +1 -1
  18. package/modules/dev-box/routes/box.js +1 -1
  19. package/modules/discord/discord-approvals.js +1 -1
  20. package/modules/grading/grader-model.js +1 -1
  21. package/modules/grading/grader-prompt.js +1 -1
  22. package/modules/grading/grader-workers/quality.js +1 -1
  23. package/modules/hall-ui/module.json +1 -1
  24. package/modules/hall-ui/public/brand-apply.js +1 -1
  25. package/modules/hall-ui/public/shell.js +1 -1
  26. package/modules/hall-ui/public/work.js +1 -1
  27. package/modules/lifecycle/conflict-resolve.js +1 -1
  28. package/modules/lifecycle/db-analytics.js +1 -1
  29. package/modules/lifecycle/routes/analytics.js +1 -1
  30. package/modules/onboarding/approval-broadcast.js +1 -1
  31. package/modules/onboarding/onboarding.js +1 -1
  32. package/modules/provisioning/tests/liveness.mjs +1 -1
  33. package/modules/public-landing/public/index.html +1 -1
  34. package/modules/public-landing/public/projects-floor.states.json +2 -2
  35. package/modules/public-landing/public/projects.probes.json +4 -4
  36. package/modules/public-landing/public/projects.states.json +2 -2
  37. package/modules/status-ui/module.json +1 -1
  38. package/modules/status-ui/public/status.js +4 -4
  39. package/modules/status-ui/public/style.css +1 -1
  40. package/modules/ui-design/kit/fixtures/cost-summary.json +1 -1
  41. package/modules/ui-design/kit/fixtures/featured-hub.json +1 -1
  42. package/modules/ui-design/kit/fixtures/featured.json +1 -1
  43. package/modules/ui-design/kit/fixtures/leaderboard.json +1 -1
  44. package/modules/ui-design/kit/fixtures/my-projects.json +1 -1
  45. package/modules/ui-design/kit/fixtures/progress.json +1 -1
  46. package/modules/ui-design/kit/fixtures/recent-shipped.json +1 -1
  47. package/package-lock.json +2 -2
  48. package/package.json +1 -1
  49. package/scripts/cron/style_guide_audit.sh +1 -1
  50. package/scripts/discord/lib.js +1 -1
  51. package/scripts/discord/post.js +1 -1
  52. package/scripts/gds/audit-authorship.sh +1 -1
  53. package/scripts/gds/audit-replay.sh +29 -2
  54. package/scripts/gds/audit-ships.js +1 -1
  55. package/scripts/gds/backfill-sessions.js +2 -2
  56. package/scripts/gds/cf-tunnel.js +4 -4
  57. package/scripts/gds/claude-materialize.js +2 -2
  58. package/scripts/gds/cli-lib.js +6 -6
  59. package/scripts/gds/cutover-codemod.js +1 -1
  60. package/scripts/gds/dev-lib.js +2 -2
  61. package/scripts/gds/diagnose-achievements.js +2 -2
  62. package/scripts/gds/fitness-checks-identity.js +6 -4
  63. package/scripts/gds/gen-diagrams.js +1 -1
  64. package/scripts/gds/leak-scan-allowlist.js +293 -0
  65. package/scripts/gds/learning-capture.js +1 -1
  66. package/scripts/gds/linkify-refs.js +2 -2
  67. package/scripts/gds/local-preview-lib.js +1 -1
  68. package/scripts/gds/mirror-lineage-check.js +1 -1
  69. package/scripts/gds/mirror-redact.js +17 -2
  70. package/scripts/gds/newcomer-floor.templates.json +1 -1
  71. package/scripts/gds/package-core.js +18 -1
  72. package/scripts/gds/paste-token.js +1 -1
  73. package/scripts/gds/provision-units.js +2 -2
  74. package/scripts/gds/publish-manifest.js +15 -0
  75. package/scripts/gds/repo-metrics.js +1 -1
  76. package/scripts/gds/sandbox-stage.js +1 -1
  77. package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +1 -1
  78. package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +1 -1
  79. package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +1 -1
  80. package/scripts/gds/seed-bongos-tasks.js +2 -2
  81. package/scripts/gds/seed-gds-v4-tasks.js +1 -1
  82. package/scripts/gds/seed-medusa-tasks.js +10 -10
  83. package/scripts/gds/seed-module-upstreaming.js +1 -1
  84. package/scripts/gds/seed-productization-tasks.js +6 -6
  85. package/scripts/gds/seed-provisioning-tasks.js +2 -2
  86. package/scripts/gds/seed-staging.sh +19 -6
  87. package/scripts/gds/ship-deploy-target.js +1 -1
  88. package/scripts/gds/ship-flow.js +1 -1
  89. package/scripts/gds/smoke-gds.js +1 -1
  90. package/scripts/status-probe.mjs +2 -2
  91. package/src/bongos/auth-discord.js +2 -2
  92. package/src/bongos/live-channel.js +1 -1
  93. package/src/bongos/pool.js +1 -1
  94. package/src/bongos/routes/auth.js +11 -11
  95. package/src/bongos/routes/security.js +1 -1
  96. package/src/bongos/routes.js +1 -1
  97. package/src/branding.js +1 -1
  98. package/src/devbox-downloads.js +1 -1
  99. package/src/instance-config.js +2 -2
  100. package/src/module-api.js +1 -1
  101. package/src/module-loader/provenance.js +2 -2
  102. package/tests/art_stage.mjs +2 -2
  103. package/tests/auth_anthropic_identity.mjs +1 -1
  104. package/tests/auth_duplicate_cookie.mjs +1 -1
  105. package/tests/auth_error_brand.mjs +1 -1
  106. package/tests/auth_inactive_builder.mjs +1 -1
  107. package/tests/backup_cli.mjs +4 -4
  108. package/tests/bongos_box_connect.mjs +2 -2
  109. package/tests/bongos_downloads.mjs +2 -2
  110. package/tests/bongos_login.mjs +5 -5
  111. package/tests/box_connect_e2e.mjs +2 -2
  112. package/tests/box_dns_repoint.mjs +10 -10
  113. package/tests/box_host_keys.mjs +1 -1
  114. package/tests/box_onboard.mjs +9 -9
  115. package/tests/box_scope_session.mjs +1 -1
  116. package/tests/box_terminal_ssrf.mjs +7 -7
  117. package/tests/boxes.mjs +9 -9
  118. package/tests/branding.mjs +2 -2
  119. package/tests/bump_version.mjs +2 -2
  120. package/tests/cf_tunnel.mjs +40 -40
  121. package/tests/cli_token_reissue.mjs +7 -7
  122. package/tests/cloud_bongos_pack.mjs +1 -1
  123. package/tests/currency_label.mjs +8 -8
  124. package/tests/dev_lib.mjs +4 -4
  125. package/tests/devbox_dmg_backdrop.mjs +1 -1
  126. package/tests/devbox_downloads.mjs +2 -2
  127. package/tests/devbox_icons.mjs +1 -1
  128. package/tests/discord_approvals.mjs +1 -1
  129. package/tests/discord_oauth.mjs +2 -2
  130. package/tests/executed_closure.mjs +6 -1
  131. package/tests/first_admin_bootstrap.mjs +1 -1
  132. package/tests/gate_approvals.mjs +5 -5
  133. package/tests/grade_aggregates_unavailable.mjs +1 -1
  134. package/tests/hook_user_agents.mjs +2 -2
  135. package/tests/init.mjs +6 -6
  136. package/tests/instance_config.mjs +1 -1
  137. package/tests/instance_manifest.mjs +5 -5
  138. package/tests/instance_mismatch_guard.mjs +13 -13
  139. package/tests/leak_scan_allowlist.mjs +94 -0
  140. package/tests/migrate_root_resolution.mjs +4 -4
  141. package/tests/mirror_redact.mjs +28 -4
  142. package/tests/module_catalog.mjs +5 -5
  143. package/tests/module_submissions.mjs +3 -3
  144. package/tests/package_core.mjs +1 -1
  145. package/tests/parallel-load.mjs +6 -6
  146. package/tests/projects_hub.mjs +2 -2
  147. package/tests/provision.mjs +50 -50
  148. package/tests/provisioning_github_app_routes.mjs +1 -1
  149. package/tests/provisioning_onboard_mode.mjs +2 -2
  150. package/tests/publish_reconciler.mjs +4 -4
  151. package/tests/sandbox_stage.mjs +1 -1
  152. package/tests/scrubber_corpus.mjs +3 -3
  153. package/tests/search_isolation.mjs +1 -1
  154. package/tests/session_records.mjs +1 -1
  155. package/tests/ship_card.mjs +6 -6
  156. package/tests/ship_ci_deploy.mjs +1 -1
  157. package/tests/single_host_hall.mjs +9 -9
  158. package/tests/smoke_preflight.mjs +1 -1
  159. package/tests/smoke_target.mjs +1 -1
  160. package/tests/status-probe.mjs +1 -1
  161. package/tests/status_mirror_sync.mjs +1 -1
  162. package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +0 -45
  163. package/docs/design/mocks/_schemes.css +0 -604
  164. package/docs/design/mocks/component-sheet.html +0 -428
  165. package/docs/design/mocks/hall/_tokens.css +0 -370
  166. package/docs/design/mocks/hall/board/v1.html +0 -846
  167. package/docs/design/mocks/hall/board/v2.html +0 -858
  168. package/docs/design/mocks/hall/board/v3.html +0 -884
  169. package/docs/design/mocks/hall/goals/v1.html +0 -1212
  170. package/docs/design/mocks/hall/goals/v2.html +0 -1192
  171. package/docs/design/mocks/hall/goals/v3.html +0 -1205
  172. package/docs/design/mocks/hall/hall-sheet.html +0 -244
  173. package/docs/design/mocks/hall/reading/v1.html +0 -1125
  174. package/docs/design/mocks/hall/reading/v2.html +0 -1177
  175. package/docs/design/mocks/hall/reading/v3.html +0 -1150
  176. package/docs/design/mocks/hall/settings/v1.html +0 -1238
  177. package/docs/design/mocks/hall/settings/v2.html +0 -1235
  178. package/docs/design/mocks/hall/settings/v3.html +0 -1299
  179. package/docs/design/mocks/hall/task/v1.html +0 -633
  180. package/docs/design/mocks/hall/task/v2.html +0 -646
  181. package/docs/design/mocks/hall/task/v3.html +0 -647
  182. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg +0 -0
  183. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg.json +0 -13
  184. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg +0 -0
  185. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg.json +0 -13
  186. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg +0 -0
  187. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg.json +0 -13
  188. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg +0 -0
  189. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg.json +0 -13
  190. package/docs/design/mocks/hub/hub-sheet.html +0 -192
  191. package/docs/design/mocks/hub/mine.html +0 -465
  192. package/docs/design/mocks/hub/picker.html +0 -421
  193. package/docs/design/mocks/hub/planets.html +0 -356
  194. package/docs/design/mocks/hub/v1.html +0 -1209
  195. package/docs/design/mocks/hub/v2.html +0 -1257
  196. package/docs/design/mocks/hub/v3.html +0 -1496
  197. package/docs/design/mocks/hub/wizard.html +0 -421
  198. package/docs/design/mocks/landing/landing-sheet.html +0 -131
  199. package/docs/design/mocks/landing/v1.html +0 -956
  200. package/docs/design/mocks/landing/v2.html +0 -708
  201. package/docs/design/mocks/landing/v3.html +0 -911
  202. package/docs/design/mocks/landing-page-mock.html +0 -687
  203. package/docs/design/mocks/landing-palettes.html +0 -103
  204. package/docs/design/mocks/projects-hub-mock.html +0 -991
  205. package/docs/design/mocks/projects-hub-variants.html +0 -146
  206. package/docs/design/mocks/projects-page-mock.html +0 -167
  207. package/docs/design/mocks/world/blue-hud/_tokens.css +0 -246
  208. package/docs/design/mocks/world/blue-hud/hall.html +0 -595
  209. package/docs/design/mocks/world/blue-hud/landing.html +0 -424
  210. package/docs/design/mocks/world/blue-hud/status.html +0 -410
  211. package/docs/design/mocks/world/chrome-blobs/_tokens.css +0 -479
  212. package/docs/design/mocks/world/chrome-blobs/hall.html +0 -553
  213. package/docs/design/mocks/world/chrome-blobs/landing-b.html +0 -581
  214. package/docs/design/mocks/world/chrome-blobs/landing.html +0 -328
  215. package/docs/design/mocks/world/chrome-blobs/status.html +0 -416
  216. package/docs/design/mocks/world/natgeo-editorial/_tokens.css +0 -377
  217. package/docs/design/mocks/world/natgeo-editorial/hall.html +0 -649
  218. package/docs/design/mocks/world/natgeo-editorial/landing-b.html +0 -743
  219. package/docs/design/mocks/world/natgeo-editorial/landing.html +0 -475
  220. package/docs/design/mocks/world/natgeo-editorial/status.html +0 -437
  221. package/docs/design/mocks/world/organic-cards/_tokens.css +0 -462
  222. package/docs/design/mocks/world/organic-cards/hall.html +0 -625
  223. package/docs/design/mocks/world/organic-cards/landing-b.html +0 -736
  224. package/docs/design/mocks/world/organic-cards/landing.html +0 -420
  225. package/docs/design/mocks/world/organic-cards/status.html +0 -458
  226. package/docs/design/mocks/world/world-sheet.html +0 -156
@@ -1,146 +0,0 @@
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>The hub's ground — three candidates (task 1002758)</title>
7
- <link rel="stylesheet" href="../../../modules/public-landing/public/assets/cosmos.css">
8
- <link href="https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700&family=Quicksand:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap" rel="stylesheet">
9
- <style>
10
- /* Contact sheet — the same pattern landing-palettes.html used for the palette
11
- choice. Each tile is the REAL mock at ?rail=0, scaled, so nothing is drawn
12
- twice and the comparison cannot drift from the thing being approved. */
13
- body{background:var(--page-bg);padding:clamp(18px,3vw,36px);}
14
- .head{max-width:1180px;margin:0 auto 26px;}
15
- .head h1{font-family:var(--font-display);font-size:var(--fs-h2);letter-spacing:-.5px;margin-bottom:8px;}
16
- .head p{font-size:var(--fs-lede);color:var(--ink-soft);font-weight:500;line-height:1.6;max-width:74ch;}
17
- .head p + p{margin-top:10px;}
18
- .head b{color:var(--ink);}
19
- .sheet{max-width:1180px;margin:0 auto;display:grid;gap:var(--pad-md);grid-template-columns:repeat(2,1fr);}
20
- @media (max-width:920px){.sheet{grid-template-columns:1fr;}}
21
- .tile{background:var(--bg-card);border:2px solid var(--line);border-radius:20px;overflow:hidden;
22
- box-shadow:var(--shadow-card);}
23
- .tile h2{font-family:var(--font-display);font-size:16px;padding:14px 18px 4px;display:flex;
24
- align-items:center;gap:10px;flex-wrap:wrap;}
25
- .tile h2 .tag{font-family:var(--font-mono);font-size:11px;font-weight:500;padding:2px 9px;
26
- border-radius:999px;background:var(--accent-soft);color:var(--accent-deep);}
27
- .tile h2 .rec{background:var(--ok-soft);color:var(--ok);}
28
- .tile p{font-size:13.5px;color:var(--ink-soft);font-weight:500;line-height:1.55;padding:0 18px 12px;}
29
- .tile p .risk{color:var(--err);font-weight:700;}
30
- .frame{position:relative;height:430px;border-top:2px solid var(--line);background:var(--bg-deep);overflow:hidden;}
31
- .frame iframe{position:absolute;top:0;left:0;width:1440px;height:900px;border:0;
32
- transform:scale(.4097);transform-origin:0 0;}
33
- .pair{display:grid;grid-template-columns:1fr 1fr;}
34
- .pair .frame{height:300px;}
35
- .pair .frame iframe{transform:scale(.2861);}
36
- .pair .lbl{position:absolute;left:9px;top:9px;z-index:2;font-family:var(--font-mono);font-size:10.5px;
37
- background:rgba(0,0,0,.62);color:#fff;padding:2px 8px;border-radius:999px;}
38
- .pair .frame + .frame{border-left:2px solid var(--line);}
39
- .foot{max-width:1180px;margin:26px auto 0;font-size:13.5px;color:var(--ink-soft);font-weight:500;line-height:1.6;}
40
- .foot a{color:var(--accent-deep);font-weight:700;}
41
- </style>
42
- </head>
43
- <body>
44
-
45
- <div class="head">
46
- <h1>The hub’s ground — three candidates</h1>
47
- <p>Task 1002758 · goal 1000061. <b>Structure is already settled</b> — <code>/projects</code> is the one hub
48
- holding the map, your projects, and create. What is open is the <b>ground</b>: today the sky is a dark
49
- full-bleed canvas while <code>/projects</code> and <code>/create</code> are light marigold document pages, and
50
- one hub has to reconcile them.</p>
51
- <p>Each tile below is the <b>real mock</b> (<code>projects-hub-mock.html</code>) running at that ground, in
52
- light and dark. Open any of them full size to walk it. The status quo is included as a labelled option —
53
- <b>C</b> is what the gate ships today.</p>
54
- </div>
55
-
56
- <div class="sheet">
57
-
58
- <div class="tile">
59
- <h2>B · dual-mode full-bleed <span class="tag rec">recommended</span> <span class="tag">default</span></h2>
60
- <p>The sky is the page, and it follows light/dark like everything else: marigold daylight in light, warm-umber
61
- space in dark. <b>cosmos.css already encodes this</b> — <code>--sky-bg</code> is <code>#f9d9a8</code>/<code>#150c06</code>
62
- and <code>--star-display</code> flips <code>none</code>/<code>block</code> (:61-62, :99-100), so no new decision
63
- is needed and the mode toggle keeps meaning something in every view.
64
- <span class="risk">Its risk:</span> light mode loses the starfield drama entirely — the map becomes a calm
65
- diagram rather than a place.</p>
66
- <div class="pair">
67
- <div class="frame"><span class="lbl">light</span>
68
- <iframe src="projects-hub-mock.html?view=map&rail=0#b-light" data-g="b" data-m="light" loading="lazy"></iframe></div>
69
- <div class="frame"><span class="lbl">dark</span>
70
- <iframe src="projects-hub-mock.html?view=map&rail=0#b-dark" data-g="b" data-m="dark" loading="lazy"></iframe></div>
71
- </div>
72
- </div>
73
-
74
- <div class="tile">
75
- <h2>A · framed window <span class="tag">document-first</span></h2>
76
- <p>The hub is a marigold document page in both modes and the sky lives inside a bounded, rounded panel —
77
- a component rather than the environment. The chrome never changes character between views, and the map
78
- stops competing with the page it sits on.
79
- <span class="risk">Its risk:</span> a 540px window onto a gravity field reads as a widget; the sky’s whole
80
- appeal is that it feels like somewhere you are, and a panel makes it somewhere you are looking at.</p>
81
- <div class="pair">
82
- <div class="frame"><span class="lbl">light</span>
83
- <iframe src="projects-hub-mock.html?view=map&rail=0#a-light" data-g="a" data-m="light" loading="lazy"></iframe></div>
84
- <div class="frame"><span class="lbl">dark</span>
85
- <iframe src="projects-hub-mock.html?view=map&rail=0#a-dark" data-g="a" data-m="dark" loading="lazy"></iframe></div>
86
- </div>
87
- </div>
88
-
89
- <div class="tile">
90
- <h2>C · locked deep space <span class="tag">the status quo</span></h2>
91
- <p>What the gate ships today: the blue-violet starfield, full-bleed, in <b>both</b> modes — the locked
92
- <code>--space-deep/mid/high</code> palette (cosmos.css:47-49) that no branding pack can re-theme. Keeps the
93
- sky exactly as designed.
94
- <span class="risk">Its risk:</span> the light/dark toggle silently does nothing on the hub’s main view, and
95
- the hub reads as a different product from the marigold landing page a visitor just came through.</p>
96
- <div class="pair">
97
- <div class="frame"><span class="lbl">light</span>
98
- <iframe src="projects-hub-mock.html?view=map&rail=0#c-light" data-g="c" data-m="light" loading="lazy"></iframe></div>
99
- <div class="frame"><span class="lbl">dark</span>
100
- <iframe src="projects-hub-mock.html?view=map&rail=0#c-dark" data-g="c" data-m="dark" loading="lazy"></iframe></div>
101
- </div>
102
- </div>
103
-
104
- <div class="tile">
105
- <h2>The other two views <span class="tag">ground-independent</span></h2>
106
- <p>Your projects and New project are document views in every candidate — they carry controls a canvas cannot.
107
- Shown here in light and dark so the card vocabulary, the verification chips, and the dropped-buddha create
108
- step can be judged alongside the map.</p>
109
- <div class="pair">
110
- <div class="frame"><span class="lbl">your projects</span>
111
- <iframe src="projects-hub-mock.html?view=mine&rail=0" loading="lazy"></iframe></div>
112
- <div class="frame"><span class="lbl">new project</span>
113
- <iframe src="projects-hub-mock.html?view=new&rail=0" loading="lazy"></iframe></div>
114
- </div>
115
- </div>
116
-
117
- </div>
118
-
119
- <p class="foot">
120
- Walk the real thing: <a href="projects-hub-mock.html">projects-hub-mock.html</a> — the rail at the bottom
121
- switches ground, view, mode and signed-in state; <code>S</code> outlines apex-only blocks and <code>C</code>
122
- previews the child-instance shape. Serve over HTTP (<code>python -m http.server 8899</code>), not
123
- <code>file://</code>.
124
- </p>
125
-
126
- <script>
127
- /* Each tile drives its own iframe to a ground/mode after load. The iframes share
128
- a localStorage key, so the attribute is written directly into the frame's
129
- document instead of relying on the mock's own persistence. */
130
- document.querySelectorAll('iframe[data-g]').forEach(function (f) {
131
- f.addEventListener('load', function () {
132
- try {
133
- var d = f.contentDocument.documentElement;
134
- d.setAttribute('data-ground', f.dataset.g);
135
- d.setAttribute('data-mode', f.dataset.m);
136
- } catch (e) {}
137
- });
138
- });
139
- document.querySelectorAll('iframe:not([data-g])').forEach(function (f, i) {
140
- f.addEventListener('load', function () {
141
- try { f.contentDocument.documentElement.setAttribute('data-mode', i === 0 ? 'light' : 'dark'); } catch (e) {}
142
- });
143
- });
144
- </script>
145
- </body>
146
- </html>
@@ -1,167 +0,0 @@
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>/projects redesigned — all-in space, light/dark (task 1002696)</title>
7
- <link rel="preconnect" href="https://fonts.googleapis.com">
8
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
- <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700&family=Quicksand:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap">
10
- <!-- This mock links the REAL token/component layer the live pages use, so what
11
- you review here is what ships. Toggle ☾/☀ in the header to see both modes. -->
12
- <link rel="stylesheet" href="../../../modules/public-landing/public/assets/cosmos.css">
13
- <script>
14
- try{var _m=localStorage.getItem('cb-color-mode');if(_m==='light'||_m==='dark')document.documentElement.setAttribute('data-mode',_m);}catch(e){}
15
- </script>
16
- <style>
17
- .wrap{position:relative;z-index:1;max-width:880px;margin:0 auto;padding:0 clamp(16px,4vw,40px) 80px;}
18
- .card{margin-bottom:26px;}
19
- .mockNote{background:rgba(13,15,40,0.55);border:1.5px solid rgba(255,217,138,0.35);border-radius:16px;padding:12px 18px;font-size:13px;font-weight:600;color:var(--gold);line-height:1.5;margin-bottom:20px;backdrop-filter:blur(6px);}
20
- h2.sub{font-family:var(--font-display);font-weight:700;font-size:19px;margin:0 0 6px;}
21
- .subnote{font-size:13.5px;font-weight:500;color:var(--ink-soft);line-height:1.55;margin-bottom:18px;max-width:70ch;}
22
- </style>
23
- </head>
24
- <body>
25
- <div class="sky" aria-hidden="true">
26
- <span class="star" style="top:2%;left:12%;width:2px;height:2px;"></span>
27
- <span class="star" style="top:5%;left:28%;width:1.5px;height:1.5px;animation-delay:.7s;"></span>
28
- <span class="star" style="top:3%;left:47%;width:2px;height:2px;animation-delay:1.4s;"></span>
29
- <span class="star" style="top:8%;left:63%;width:1.5px;height:1.5px;animation-delay:.3s;"></span>
30
- <span class="star" style="top:4%;left:78%;width:2.5px;height:2.5px;animation-delay:2s;"></span>
31
- <span class="star" style="top:10%;left:88%;width:1.5px;height:1.5px;animation-delay:1s;"></span>
32
- <span class="star" style="top:14%;left:20%;width:1.5px;height:1.5px;animation-delay:1.8s;"></span>
33
- <span class="star" style="top:22%;left:55%;width:2px;height:2px;animation-delay:.5s;"></span>
34
- <span class="star" style="top:34%;left:36%;width:1.5px;height:1.5px;animation-delay:2.4s;"></span>
35
- <span class="star" style="top:30%;left:78%;width:1.5px;height:1.5px;animation-delay:1.2s;"></span>
36
- <span class="star" style="top:48%;left:8%;width:2px;height:2px;animation-delay:.9s;"></span>
37
- <span class="star" style="top:55%;left:90%;width:1.5px;height:1.5px;animation-delay:1.6s;"></span>
38
- <span class="star" style="top:68%;left:24%;width:1.5px;height:1.5px;animation-delay:2.1s;"></span>
39
- <span class="star" style="top:76%;left:64%;width:2px;height:2px;animation-delay:.4s;"></span>
40
- <span class="star" style="top:88%;left:42%;width:1.5px;height:1.5px;animation-delay:1.9s;"></span>
41
- </div>
42
-
43
- <header class="top">
44
- <a class="mark" href="#">cloud <span>bongos</span></a>
45
- <div class="top-right">
46
- <a class="btn-space" href="#">+ New project</a>
47
- <button type="button" class="mode-toggle" id="modeToggle" title="Switch light / dark">☾</button>
48
- <div class="who"><span>jaxri</span></div>
49
- </div>
50
- </header>
51
-
52
- <div class="hero">
53
- <h1>Your projects</h1>
54
- <p class="lede">The same sky as the front door — every project you own is an <b>orb</b> here. Each card says what the platform last verified, and when.</p>
55
- </div>
56
-
57
- <div class="wrap">
58
-
59
- <div class="mockNote">Mock of the REAL page (linked to the live cosmos.css layer) — all-in space backdrop, light/dark via the ☾/☀ toggle or your OS setting. Fleet data faithful to Aug 12; raw notes paraphrased.</div>
60
-
61
- <main class="card">
62
- <ul class="projects">
63
-
64
- <li class="proj">
65
- <span class="orb" style="--acc:#fb923c" title="Open Spike Harbor"></span>
66
- <div class="projBody">
67
- <div class="projHead"><span class="projName">spike-harbor</span><span class="chip live"><span class="cdot"></span>live <span class="rec">· checked 2m ago</span></span></div>
68
- <div class="projMeta"><span>repo <code>spike-harbor</code></span><span>its own server</span><span>back live since Aug 12</span></div>
69
- <div class="addr">Answering at <a href="#">spike-harbor.cloudbongos.com</a></div>
70
- <div class="actions"><button class="btn small ghost">Change address</button><button class="btn small danger">Tear it down</button></div>
71
- </div>
72
- </li>
73
-
74
- <li class="proj">
75
- <span class="orb ashen" style="--acc:#fb7185" title="swag"></span>
76
- <div class="projBody">
77
- <div class="projHead"><span class="projName">swag</span><span class="chip bad"><span class="cdot"></span>snagged <span class="rec">· since Aug 7</span></span></div>
78
- <div class="projMeta"><span>repo <code>swag</code></span><span>its own server</span></div>
79
- <div class="projMsg err">We couldn’t push the starter code to the repository — it wasn’t found on GitHub. We stopped trying on Aug 7 — nothing more will happen until you try again.
80
- <details><summary>Technical details</summary><pre>Command failed: git -C /srv/cloudbongos/swag push -u origin main
81
- ERROR: Repository not found.</pre></details>
82
- </div>
83
- <div class="actions"><button class="btn small">Try again</button><button class="btn small danger">Tear it down</button></div>
84
- </div>
85
- </li>
86
-
87
- <li class="proj gone">
88
- <span class="orb ghost" style="--acc:#38bdf8" title="jaxri-spike"></span>
89
- <div class="projBody">
90
- <div class="projHead"><span class="projName">jaxri-spike</span><span class="chip calm"><span class="cdot"></span>torn down <span class="rec">· Aug 11</span></span></div>
91
- <div class="projMeta"><span>repo <code>jaxri-spike</code></span><span>shared server</span></div>
92
- <div class="projMsg">Torn down Aug 11. The repository is still yours, and its database is kept — bringing it back takes one click. Or <a href="#">start another</a>.</div>
93
- <div class="actions"><button class="btn small">Bring it back</button></div>
94
- </div>
95
- </li>
96
-
97
- </ul>
98
-
99
- <p class="finePrint">Buttons here ask the platform to act — a runner does the real work, and each card reports only what was verified, with a timestamp. Standups keep running even with this tab closed.</p>
100
- </main>
101
-
102
- <main class="card">
103
- <h2 class="sub">Also in today's fleet — states the design must absorb</h2>
104
- <p class="subnote">These exist in the live system right now under other accounts.</p>
105
-
106
- <ul class="projects">
107
-
108
- <li class="proj">
109
- <span class="orb dim" style="--acc:#f6c976" title="charter"></span>
110
- <div class="projBody">
111
- <div class="projHead"><span class="projName">charter</span><span class="chip maybe"><span class="cdot"></span>live? <span class="rec">· last seen Jul 25</span></span></div>
112
- <div class="projMeta"><span>repo <code>charter</code></span><span>its own server</span></div>
113
- <div class="addr"><span class="none">No address yet</span> — sign-in on this project can’t be set up until it has one.</div>
114
- <div class="attach"><input type="text" placeholder="myproject.example.com"><button class="btn small">Give it an address</button></div>
115
- <div class="actions"><button class="btn small danger">Tear it down</button></div>
116
- </div>
117
- </li>
118
-
119
- <li class="proj">
120
- <span class="orb" style="--acc:#38bdf8;--glow:rgba(56,189,248,.5)" title="Open hermeslines-marketing"></span>
121
- <div class="projBody">
122
- <div class="projHead"><span class="projName">hermeslines-marketing</span><span class="chip live"><span class="cdot"></span>live <span class="rec">· checked 4m ago</span></span></div>
123
- <div class="projMeta"><span>repo <code>hermeslines-marketing</code></span><span>its own server</span><span>adopted repo</span></div>
124
- <div class="addr">Answering at <a href="#">hermeslines-marketing.cloudbongos.com</a></div>
125
- <div class="actions"><button class="btn small ghost">Change address</button><button class="btn small danger">Tear it down</button></div>
126
- </div>
127
- </li>
128
-
129
- <li class="proj">
130
- <span class="orb ashen" style="--acc:#8b7ec8" title="trial"></span>
131
- <div class="projBody">
132
- <div class="projHead"><span class="projName">trial</span><span class="chip bad"><span class="cdot"></span>snagged <span class="rec">· since Jul 17</span></span></div>
133
- <div class="projMeta"><span>repo <code>trial</code></span><span>its own server</span></div>
134
- <div class="projMsg err">We couldn’t push the starter code — the account that set it up doesn’t have permission. We stopped trying on Jul 17 — nothing more will happen until you try again.
135
- <details><summary>Technical details</summary><pre>Command failed: git -C /srv/cloudbongos/trial push -u origin main
136
- ERROR: Permission denied to the provisioning account.</pre></details>
137
- </div>
138
- <div class="actions"><button class="btn small">Try again</button><button class="btn small danger">Tear it down</button></div>
139
- </div>
140
- </li>
141
-
142
- </ul>
143
- </main>
144
-
145
- <main class="card">
146
- <h2 class="sub">Empty state — a first-timer's landing</h2>
147
- <div class="empty">
148
- <p>You don't own any projects yet. Creating one takes about five minutes — name it, pick a home for its code, and it gets an address of its own in this sky.</p>
149
- <a class="btn" href="#">Create your first project</a>
150
- </div>
151
- </main>
152
-
153
- </div>
154
-
155
- <div class="foot">cloud bongos · your projects live at addresses like <code>name.cloudbongos.com</code></div>
156
-
157
- <script>
158
- (function(){
159
- function resolved(){var m=document.documentElement.getAttribute('data-mode');if(m==='light'||m==='dark')return m;return (window.matchMedia&&window.matchMedia('(prefers-color-scheme: dark)').matches)?'dark':'light';}
160
- var t=document.getElementById('modeToggle');
161
- function paint(){t.textContent=resolved()==='dark'?'☀':'☾';}
162
- t.addEventListener('click',function(){var next=resolved()==='dark'?'light':'dark';document.documentElement.setAttribute('data-mode',next);try{localStorage.setItem('cb-color-mode',next);}catch(e){}paint();});
163
- paint();
164
- })();
165
- </script>
166
- </body>
167
- </html>
@@ -1,246 +0,0 @@
1
- /* THE HUD - Cloud Bongos world candidate "blue-hud".
2
- World: an instrument panel read in the dark. Black ground, white condensed caps, one electric blue
3
- that lights only what is live or pressable, and HUD registration marks (crosshairs, hairline rules
4
- with a node, tracked caps, dot rows, hatch strips) that frame every region.
5
- Palette strategy: RESTRAINED - one accent hue over a neutral black / neutral off-white scale,
6
- sampled from the owner's template (ground #000103, headline blue #65a9fb, light ground #eeecee).
7
- Faces: Antonio (condensed caps display, the readout voice), Barlow (body, UI, tracked caps labels),
8
- Azeret Mono (task numbers, credits, figures, tabular), JetBrains Mono (light-hall group labels).
9
- Materials: a white-hot ring with a blue bloom behind the mark, the misty-forest plate under the dark
10
- hall glass, the iridescent hud-sphere plate inside the status world card, hatch for a blocked cell.
11
- Corners (template system): PILL for anything pressable, 10px for containers, marks stay sharp.
12
- Derived from the contract: every blue is color-mix()'d off --accent / --accent-deep and every surface
13
- off --bg / --bg-card / --bg-frame, so a host pack overriding the 14 contract tokens still wins. */
14
-
15
- :root {
16
- /* ---- contract tokens (a host instance overrides exactly these) ---- */
17
- --bg: #eeecee;
18
- --bg-card: #ffffff;
19
- --bg-deep: #e5e3e5;
20
- --bg-frame: #f8f7f8;
21
- --ink: #12161b;
22
- --ink-soft: #4c555f;
23
- --ink-faint: #626b75;
24
- --rule: #dcdadc;
25
- --rule-soft: #e8e6e8;
26
- --accent: #65a9fb;
27
- --accent-deep: #0a55b0;
28
- --sea: #1c5f8e;
29
- --terracotta: #c2673a;
30
- --font-display: 'Antonio', 'Oswald', 'Arial Narrow', sans-serif;
31
- --font-body: 'Barlow', system-ui, -apple-system, 'Segoe UI', sans-serif;
32
-
33
- /* ---- derived: faces ---- */
34
- --font-mono: 'Azeret Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;
35
- --font-mono-alt: 'JetBrains Mono', 'Azeret Mono', ui-monospace, Consolas, monospace;
36
- --label-font: 'JetBrains Mono', 'Barlow', system-ui, sans-serif;
37
- --label-track: .12em;
38
- /* the mode toggle's glyph is chosen by token, so page CSS never branches on mode */
39
- --icon-moon: none;
40
- --icon-sun: block;
41
-
42
- /* ---- derived: accent roles (all mixed off the contract blues) ---- */
43
- --accent-text: color-mix(in srgb, var(--accent-deep) 92%, #000);
44
- --accent-ui: var(--accent-deep);
45
- --accent-fill: var(--accent-deep);
46
- --on-accent: #ffffff;
47
- --accent-tint: color-mix(in srgb, var(--accent) 34%, #fff);
48
- --accent-faint: color-mix(in srgb, var(--accent) 15%, #fff);
49
- --halo: color-mix(in srgb, var(--accent-deep) 45%, #fff);
50
- --halo-bloom: var(--accent);
51
-
52
- /* ---- derived: structure (template corner system) ---- */
53
- --line: 1px;
54
- --radius: 10px;
55
- --radius-sm: 7px;
56
- --radius-pill: 999px;
57
- --bracket: #8f96a0;
58
- --bracket-page: color-mix(in srgb, var(--accent-deep) 68%, #737b85);
59
- --edge-ui: #767f88;
60
- --glass: #ffffff;
61
- --glass-edge: var(--rule);
62
- --glass-blur: 0px;
63
- --side-bg: var(--bg-frame);
64
- --panel-bg: var(--bg-card);
65
- --topbar-bg: var(--bg-card);
66
- --row-hover: color-mix(in srgb, var(--accent) 13%, transparent);
67
- --hatch: #c9c7c9;
68
- /* a closed (not-live) bar or step: neutral, so the accent stays on what is live */
69
- --bar-quiet: color-mix(in srgb, var(--ink) 24%, var(--bg-card));
70
- --shadow-card: 0 10px 26px -18px rgba(16, 20, 26, .30);
71
- --world-ground: #000103;
72
-
73
- /* ---- derived: plate (the ground photograph; dark hall only) ---- */
74
- --plate: none;
75
- --plate-tint: transparent;
76
- --plate-blur: 0px;
77
-
78
- /* ---- derived: the inherited bongo mark, painted as a silhouette ---- */
79
- --skin-hi: #cfd4da;
80
- --skin-mid: #a8b0b9;
81
- --skin-lo: #7c858f;
82
- --drum-shadow: #2b3138;
83
- --drum-shell: #2a3138;
84
- --drum-shell-deep: #12171c;
85
- --drum-shell-2: #232a31;
86
- --drum-ink: #000000;
87
- --drum-rim: color-mix(in srgb, var(--accent-deep) 55%, transparent);
88
-
89
- /* ---- derived: state ---- */
90
- --ok: #0f7a58;
91
- --warn: #8a5a06;
92
- --err: #b4292b;
93
- --focus: var(--accent-deep);
94
- --sel-bg: color-mix(in srgb, var(--accent) 45%, #fff);
95
- --sel-ink: var(--ink);
96
- --scroll-track: var(--bg-deep);
97
- --scroll-thumb: #bbb9bb;
98
- }
99
-
100
- :root[data-mode="dark"] {
101
- --bg: #000103;
102
- --bg-card: #06090f;
103
- --bg-deep: #000000;
104
- --bg-frame: #05080d;
105
- --ink: #f4f7fa;
106
- --ink-soft: #b2bdc8;
107
- --ink-faint: #838f9b;
108
- --rule: #19222c;
109
- --rule-soft: #0f151c;
110
-
111
- --label-font: 'Barlow', system-ui, sans-serif;
112
- --icon-moon: block;
113
- --icon-sun: none;
114
-
115
- --accent-text: var(--accent);
116
- --accent-ui: var(--accent);
117
- --accent-fill: var(--accent);
118
- --on-accent: #02060c;
119
- --accent-tint: color-mix(in srgb, var(--accent) 15%, transparent);
120
- --accent-faint: color-mix(in srgb, var(--accent) 8%, transparent);
121
- --halo: color-mix(in srgb, var(--accent) 26%, #fff);
122
- --halo-bloom: var(--accent);
123
-
124
- --bracket: color-mix(in srgb, var(--accent) 55%, #6a747f);
125
- --bracket-page: var(--accent);
126
- --edge-ui: #6d7f91;
127
- --glass: rgba(14, 19, 26, .70);
128
- --glass-edge: rgba(214, 228, 240, .17);
129
- --glass-blur: 18px;
130
- --side-bg: rgba(6, 10, 15, .68);
131
- --panel-bg: var(--glass);
132
- --topbar-bg: rgba(9, 13, 18, .58);
133
- --hatch: rgba(158, 180, 200, .34);
134
- --shadow-card: 0 22px 52px -26px rgba(0, 0, 0, .92);
135
- --world-ground: #000103;
136
-
137
- --plate: url('../../../../../.impeccable/mocks/world-assets/forest-mist.jpg');
138
- --plate-tint: linear-gradient(180deg, rgba(4, 11, 20, .42), rgba(2, 6, 13, .72));
139
- --plate-blur: 11px;
140
-
141
- --skin-hi: #3b424a;
142
- --skin-mid: #262c34;
143
- --skin-lo: #14181d;
144
- --drum-shadow: #000000;
145
- --drum-shell: #131820;
146
- --drum-shell-deep: #05080c;
147
- --drum-shell-2: #11151b;
148
- --drum-ink: #000000;
149
- --drum-rim: color-mix(in srgb, var(--accent) 34%, transparent);
150
-
151
- --ok: #4fd1a5;
152
- --warn: #ffb454;
153
- --err: #ff7b72;
154
- --focus: color-mix(in srgb, var(--accent) 55%, #fff);
155
- --sel-bg: color-mix(in srgb, var(--accent) 40%, transparent);
156
- --sel-ink: #ffffff;
157
- --scroll-track: rgba(255, 255, 255, .05);
158
- --scroll-thumb: #35465a;
159
- }
160
-
161
- @media (prefers-color-scheme: dark) {
162
- :root:not([data-mode="light"]) {
163
- --bg: #000103;
164
- --bg-card: #06090f;
165
- --bg-deep: #000000;
166
- --bg-frame: #05080d;
167
- --ink: #f4f7fa;
168
- --ink-soft: #b2bdc8;
169
- --ink-faint: #838f9b;
170
- --rule: #19222c;
171
- --rule-soft: #0f151c;
172
-
173
- --label-font: 'Barlow', system-ui, sans-serif;
174
- --icon-moon: block;
175
- --icon-sun: none;
176
-
177
- --accent-text: var(--accent);
178
- --accent-ui: var(--accent);
179
- --accent-fill: var(--accent);
180
- --on-accent: #02060c;
181
- --accent-tint: color-mix(in srgb, var(--accent) 15%, transparent);
182
- --accent-faint: color-mix(in srgb, var(--accent) 8%, transparent);
183
- --halo: color-mix(in srgb, var(--accent) 26%, #fff);
184
- --halo-bloom: var(--accent);
185
-
186
- --bracket: color-mix(in srgb, var(--accent) 55%, #6a747f);
187
- --bracket-page: var(--accent);
188
- --edge-ui: #6d7f91;
189
- --glass: rgba(14, 19, 26, .70);
190
- --glass-edge: rgba(214, 228, 240, .17);
191
- --glass-blur: 18px;
192
- --side-bg: rgba(6, 10, 15, .68);
193
- --panel-bg: var(--glass);
194
- --topbar-bg: rgba(9, 13, 18, .58);
195
- --hatch: rgba(158, 180, 200, .34);
196
- --shadow-card: 0 22px 52px -26px rgba(0, 0, 0, .92);
197
- --world-ground: #000103;
198
-
199
- --plate: url('../../../../../.impeccable/mocks/world-assets/forest-mist.jpg');
200
- --plate-tint: linear-gradient(180deg, rgba(4, 11, 20, .42), rgba(2, 6, 13, .72));
201
- --plate-blur: 11px;
202
-
203
- --skin-hi: #3b424a;
204
- --skin-mid: #262c34;
205
- --skin-lo: #14181d;
206
- --drum-shadow: #000000;
207
- --drum-shell: #131820;
208
- --drum-shell-deep: #05080c;
209
- --drum-shell-2: #11151b;
210
- --drum-ink: #000000;
211
- --drum-rim: color-mix(in srgb, var(--accent) 34%, transparent);
212
-
213
- --ok: #4fd1a5;
214
- --warn: #ffb454;
215
- --err: #ff7b72;
216
- --focus: color-mix(in srgb, var(--accent) 55%, #fff);
217
- --sel-bg: color-mix(in srgb, var(--accent) 40%, transparent);
218
- --sel-ink: #ffffff;
219
- --scroll-track: rgba(255, 255, 255, .05);
220
- --scroll-thumb: #35465a;
221
- }
222
- }
223
-
224
- /* ---- house floor shared by all three pages ---- */
225
- *, *::before, *::after { box-sizing: border-box; }
226
- html { -webkit-text-size-adjust: 100%; }
227
- body {
228
- margin: 0;
229
- background: var(--bg);
230
- color: var(--ink);
231
- font-family: var(--font-body);
232
- font-weight: 400;
233
- -webkit-font-smoothing: antialiased;
234
- }
235
- ::selection { background: var(--sel-bg); color: var(--sel-ink); }
236
- :focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
237
- a { color: inherit; }
238
- .sr-only {
239
- position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
240
- overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
241
- }
242
- .num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-feature-settings: 'tnum' 1; }
243
-
244
- @media (prefers-reduced-motion: reduce) {
245
- *, *::before, *::after { animation: none !important; transition: none !important; }
246
- }