@bongos/core 1.19.725 → 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.
- package/.bongos-core.json +179 -494
- package/.devcontainer/Dockerfile +1 -1
- package/.devcontainer/devcontainer.json +2 -2
- package/.devcontainer/healthcheck.sh +1 -1
- package/.devcontainer/init-firewall.sh +1 -1
- package/.devcontainer/post-create.sh +2 -2
- package/.env.local.example +1 -1
- package/Dockerfile +1 -1
- package/docs/copy-inventory.md +1 -1
- package/docs/copy-registry.json +9 -9
- package/docs/module-api-changelog.md +4 -0
- package/docs/recipes/devbox-app-release.md +4 -4
- package/modules/dev-box/app/scripts/dmgbuild-settings.py +5 -5
- package/modules/dev-box/app/scripts/gen-brand.js +1 -1
- package/modules/dev-box/app/src/brand.js +1 -1
- package/modules/dev-box/app/test/unit.mjs +16 -16
- package/modules/dev-box/box-access.js +1 -1
- package/modules/dev-box/routes/box.js +1 -1
- package/modules/discord/discord-approvals.js +1 -1
- package/modules/grading/grader-model.js +1 -1
- package/modules/grading/grader-prompt.js +1 -1
- package/modules/grading/grader-workers/quality.js +1 -1
- package/modules/hall-ui/module.json +1 -1
- package/modules/hall-ui/public/brand-apply.js +1 -1
- package/modules/hall-ui/public/shell.js +1 -1
- package/modules/hall-ui/public/work.js +1 -1
- package/modules/lifecycle/conflict-resolve.js +1 -1
- package/modules/lifecycle/db-analytics.js +1 -1
- package/modules/lifecycle/routes/analytics.js +1 -1
- package/modules/onboarding/approval-broadcast.js +1 -1
- package/modules/onboarding/onboarding.js +1 -1
- package/modules/provisioning/tests/liveness.mjs +1 -1
- package/modules/public-landing/public/index.html +1 -1
- package/modules/public-landing/public/projects-floor.states.json +2 -2
- package/modules/public-landing/public/projects.probes.json +4 -4
- package/modules/public-landing/public/projects.states.json +2 -2
- package/modules/status-ui/module.json +1 -1
- package/modules/status-ui/public/status.js +4 -4
- package/modules/status-ui/public/style.css +1 -1
- package/modules/ui-design/kit/fixtures/cost-summary.json +1 -1
- package/modules/ui-design/kit/fixtures/featured-hub.json +1 -1
- package/modules/ui-design/kit/fixtures/featured.json +1 -1
- package/modules/ui-design/kit/fixtures/leaderboard.json +1 -1
- package/modules/ui-design/kit/fixtures/my-projects.json +1 -1
- package/modules/ui-design/kit/fixtures/progress.json +1 -1
- package/modules/ui-design/kit/fixtures/recent-shipped.json +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/cron/style_guide_audit.sh +1 -1
- package/scripts/discord/lib.js +1 -1
- package/scripts/discord/post.js +1 -1
- package/scripts/gds/audit-authorship.sh +1 -1
- package/scripts/gds/audit-replay.sh +29 -2
- package/scripts/gds/audit-ships.js +1 -1
- package/scripts/gds/backfill-sessions.js +2 -2
- package/scripts/gds/cf-tunnel.js +4 -4
- package/scripts/gds/claude-materialize.js +2 -2
- package/scripts/gds/cli-lib.js +6 -6
- package/scripts/gds/cutover-codemod.js +1 -1
- package/scripts/gds/dev-lib.js +2 -2
- package/scripts/gds/diagnose-achievements.js +2 -2
- package/scripts/gds/fitness-checks-identity.js +6 -4
- package/scripts/gds/gate-review.js +14 -6
- package/scripts/gds/gen-diagrams.js +1 -1
- package/scripts/gds/leak-scan-allowlist.js +293 -0
- package/scripts/gds/learning-capture.js +1 -1
- package/scripts/gds/linkify-refs.js +2 -2
- package/scripts/gds/local-preview-lib.js +1 -1
- package/scripts/gds/mirror-lineage-check.js +1 -1
- package/scripts/gds/mirror-redact.js +17 -2
- package/scripts/gds/newcomer-floor.templates.json +1 -1
- package/scripts/gds/package-core.js +18 -1
- package/scripts/gds/paste-token.js +1 -1
- package/scripts/gds/provision-units.js +2 -2
- package/scripts/gds/publish-manifest.js +15 -0
- package/scripts/gds/repo-metrics.js +1 -1
- package/scripts/gds/sandbox-stage.js +1 -1
- package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +1 -1
- package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +1 -1
- package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +1 -1
- package/scripts/gds/seed-bongos-tasks.js +2 -2
- package/scripts/gds/seed-gds-v4-tasks.js +1 -1
- package/scripts/gds/seed-medusa-tasks.js +10 -10
- package/scripts/gds/seed-module-upstreaming.js +1 -1
- package/scripts/gds/seed-productization-tasks.js +6 -6
- package/scripts/gds/seed-provisioning-tasks.js +2 -2
- package/scripts/gds/seed-staging.sh +19 -6
- package/scripts/gds/ship-deploy-target.js +1 -1
- package/scripts/gds/ship-flow.js +1 -1
- package/scripts/gds/smoke-gds.js +1 -1
- package/scripts/status-probe.mjs +2 -2
- package/src/bongos/auth-discord.js +2 -2
- package/src/bongos/live-channel.js +1 -1
- package/src/bongos/permission-path-check.js +80 -3
- package/src/bongos/pool.js +1 -1
- package/src/bongos/routes/auth.js +11 -11
- package/src/bongos/routes/security.js +1 -1
- package/src/bongos/routes.js +1 -1
- package/src/branding.js +1 -1
- package/src/devbox-downloads.js +1 -1
- package/src/instance-config.js +2 -2
- package/src/module-api.js +1 -1
- package/src/module-loader/provenance.js +2 -2
- package/tests/art_stage.mjs +2 -2
- package/tests/auth_anthropic_identity.mjs +1 -1
- package/tests/auth_duplicate_cookie.mjs +1 -1
- package/tests/auth_error_brand.mjs +1 -1
- package/tests/auth_inactive_builder.mjs +1 -1
- package/tests/backup_cli.mjs +4 -4
- package/tests/bongos_box_connect.mjs +2 -2
- package/tests/bongos_downloads.mjs +2 -2
- package/tests/bongos_login.mjs +5 -5
- package/tests/box_connect_e2e.mjs +2 -2
- package/tests/box_dns_repoint.mjs +10 -10
- package/tests/box_host_keys.mjs +1 -1
- package/tests/box_onboard.mjs +9 -9
- package/tests/box_scope_session.mjs +1 -1
- package/tests/box_terminal_ssrf.mjs +7 -7
- package/tests/boxes.mjs +9 -9
- package/tests/branding.mjs +2 -2
- package/tests/bump_version.mjs +2 -2
- package/tests/cf_tunnel.mjs +40 -40
- package/tests/cli_token_reissue.mjs +7 -7
- package/tests/cloud_bongos_pack.mjs +1 -1
- package/tests/currency_label.mjs +8 -8
- package/tests/dev_lib.mjs +4 -4
- package/tests/devbox_dmg_backdrop.mjs +1 -1
- package/tests/devbox_downloads.mjs +2 -2
- package/tests/devbox_icons.mjs +1 -1
- package/tests/discord_approvals.mjs +1 -1
- package/tests/discord_oauth.mjs +2 -2
- package/tests/executed_closure.mjs +6 -1
- package/tests/first_admin_bootstrap.mjs +1 -1
- package/tests/gate_approvals.mjs +5 -5
- package/tests/government_protected_surfaces.mjs +137 -0
- package/tests/grade_aggregates_unavailable.mjs +1 -1
- package/tests/hook_user_agents.mjs +2 -2
- package/tests/init.mjs +6 -6
- package/tests/instance_config.mjs +1 -1
- package/tests/instance_manifest.mjs +5 -5
- package/tests/instance_mismatch_guard.mjs +13 -13
- package/tests/leak_scan_allowlist.mjs +94 -0
- package/tests/migrate_root_resolution.mjs +4 -4
- package/tests/mirror_redact.mjs +28 -4
- package/tests/module_catalog.mjs +5 -5
- package/tests/module_submissions.mjs +3 -3
- package/tests/package_core.mjs +1 -1
- package/tests/parallel-load.mjs +6 -6
- package/tests/projects_hub.mjs +2 -2
- package/tests/provision.mjs +50 -50
- package/tests/provisioning_github_app_routes.mjs +1 -1
- package/tests/provisioning_onboard_mode.mjs +2 -2
- package/tests/publish_reconciler.mjs +4 -4
- package/tests/sandbox_stage.mjs +1 -1
- package/tests/scrubber_corpus.mjs +3 -3
- package/tests/search_isolation.mjs +1 -1
- package/tests/session_records.mjs +1 -1
- package/tests/ship_card.mjs +6 -6
- package/tests/ship_ci_deploy.mjs +1 -1
- package/tests/single_host_hall.mjs +9 -9
- package/tests/smoke_preflight.mjs +1 -1
- package/tests/smoke_target.mjs +1 -1
- package/tests/status-probe.mjs +1 -1
- package/tests/status_mirror_sync.mjs +1 -1
- package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +0 -45
- package/docs/design/mocks/_schemes.css +0 -604
- package/docs/design/mocks/component-sheet.html +0 -428
- package/docs/design/mocks/hall/_tokens.css +0 -370
- package/docs/design/mocks/hall/board/v1.html +0 -846
- package/docs/design/mocks/hall/board/v2.html +0 -858
- package/docs/design/mocks/hall/board/v3.html +0 -884
- package/docs/design/mocks/hall/goals/v1.html +0 -1212
- package/docs/design/mocks/hall/goals/v2.html +0 -1192
- package/docs/design/mocks/hall/goals/v3.html +0 -1205
- package/docs/design/mocks/hall/hall-sheet.html +0 -244
- package/docs/design/mocks/hall/reading/v1.html +0 -1125
- package/docs/design/mocks/hall/reading/v2.html +0 -1177
- package/docs/design/mocks/hall/reading/v3.html +0 -1150
- package/docs/design/mocks/hall/settings/v1.html +0 -1238
- package/docs/design/mocks/hall/settings/v2.html +0 -1235
- package/docs/design/mocks/hall/settings/v3.html +0 -1299
- package/docs/design/mocks/hall/task/v1.html +0 -633
- package/docs/design/mocks/hall/task/v2.html +0 -646
- package/docs/design/mocks/hall/task/v3.html +0 -647
- package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg.json +0 -13
- package/docs/design/mocks/hub/hub-sheet.html +0 -192
- package/docs/design/mocks/hub/mine.html +0 -465
- package/docs/design/mocks/hub/picker.html +0 -421
- package/docs/design/mocks/hub/planets.html +0 -356
- package/docs/design/mocks/hub/v1.html +0 -1209
- package/docs/design/mocks/hub/v2.html +0 -1257
- package/docs/design/mocks/hub/v3.html +0 -1496
- package/docs/design/mocks/hub/wizard.html +0 -421
- package/docs/design/mocks/landing/landing-sheet.html +0 -131
- package/docs/design/mocks/landing/v1.html +0 -956
- package/docs/design/mocks/landing/v2.html +0 -708
- package/docs/design/mocks/landing/v3.html +0 -911
- package/docs/design/mocks/landing-page-mock.html +0 -687
- package/docs/design/mocks/landing-palettes.html +0 -103
- package/docs/design/mocks/projects-hub-mock.html +0 -991
- package/docs/design/mocks/projects-hub-variants.html +0 -146
- package/docs/design/mocks/projects-page-mock.html +0 -167
- package/docs/design/mocks/world/blue-hud/_tokens.css +0 -246
- package/docs/design/mocks/world/blue-hud/hall.html +0 -595
- package/docs/design/mocks/world/blue-hud/landing.html +0 -424
- package/docs/design/mocks/world/blue-hud/status.html +0 -410
- package/docs/design/mocks/world/chrome-blobs/_tokens.css +0 -479
- package/docs/design/mocks/world/chrome-blobs/hall.html +0 -553
- package/docs/design/mocks/world/chrome-blobs/landing-b.html +0 -581
- package/docs/design/mocks/world/chrome-blobs/landing.html +0 -328
- package/docs/design/mocks/world/chrome-blobs/status.html +0 -416
- package/docs/design/mocks/world/natgeo-editorial/_tokens.css +0 -377
- package/docs/design/mocks/world/natgeo-editorial/hall.html +0 -649
- package/docs/design/mocks/world/natgeo-editorial/landing-b.html +0 -743
- package/docs/design/mocks/world/natgeo-editorial/landing.html +0 -475
- package/docs/design/mocks/world/natgeo-editorial/status.html +0 -437
- package/docs/design/mocks/world/organic-cards/_tokens.css +0 -462
- package/docs/design/mocks/world/organic-cards/hall.html +0 -625
- package/docs/design/mocks/world/organic-cards/landing-b.html +0 -736
- package/docs/design/mocks/world/organic-cards/landing.html +0 -420
- package/docs/design/mocks/world/organic-cards/status.html +0 -458
- package/docs/design/mocks/world/world-sheet.html +0 -156
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<script>
|
|
6
|
-
(function(){try{var q=new URLSearchParams(location.search).get('mode');var m=(q==='light'||q==='dark')?q:localStorage.getItem('cb-color-mode');if(m==='light'||m==='dark')document.documentElement.setAttribute('data-mode',m);}catch(e){}})();
|
|
7
|
-
</script>
|
|
8
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
9
|
-
<title>Cloud Bongos</title>
|
|
10
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
11
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
12
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400&family=Manrope:wght@300;400;500;600&display=swap">
|
|
13
|
-
<link rel="stylesheet" href="_tokens.css">
|
|
14
|
-
<style>
|
|
15
|
-
*{box-sizing:border-box}
|
|
16
|
-
html,body{margin:0;padding:0}
|
|
17
|
-
body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-weight:400;
|
|
18
|
-
-webkit-font-smoothing:antialiased;overflow-x:hidden}
|
|
19
|
-
a{color:inherit;text-decoration:none}
|
|
20
|
-
::selection{background:var(--accent);color:var(--accent-on)}
|
|
21
|
-
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:4px}
|
|
22
|
-
|
|
23
|
-
/* ---------- the chrome field: rendered plates composited on black ---------- */
|
|
24
|
-
/* Each layer shows one crop of one plate. size/position are derived from the crop rectangle
|
|
25
|
-
[u0,u1] x [v0,v1] and the plate's aspect R, so the layer scales with its own width token. */
|
|
26
|
-
.field{position:absolute;top:var(--field-top);right:var(--field-right);bottom:var(--field-bottom);
|
|
27
|
-
left:var(--field-left);height:var(--field-h);background:var(--field-bg);
|
|
28
|
-
border-radius:var(--field-radius);overflow:hidden;pointer-events:none;
|
|
29
|
-
-webkit-mask-image:var(--field-mask);mask-image:var(--field-mask)}
|
|
30
|
-
.plate{position:absolute;background-repeat:no-repeat;mix-blend-mode:var(--blob-blend);
|
|
31
|
-
pointer-events:none;animation:settle .52s cubic-bezier(.16,1,.3,1) both}
|
|
32
|
-
|
|
33
|
-
/* r2-chrome-blobs-set.jpg, u[.22,.96] v[0,.83] : the sweeping form.
|
|
34
|
-
The crop's lower left also catches the round blob's shoulder, so the two masks below union to
|
|
35
|
-
"keep the right side OR the top", dissolving that corner instead of cutting it square. */
|
|
36
|
-
.form{display:var(--form-d);left:var(--form-x);top:var(--form-y);width:var(--form-w);
|
|
37
|
-
aspect-ratio:1.5974;background-image:var(--plate-set);
|
|
38
|
-
background-size:calc(var(--form-w) * 1.35135) auto;
|
|
39
|
-
background-position:calc(var(--form-w) * -.2973) 0;
|
|
40
|
-
-webkit-mask-image:linear-gradient(to right, transparent 0 36%, #000 52%),
|
|
41
|
-
linear-gradient(to bottom, #000 0 50%, transparent 63%);
|
|
42
|
-
mask-image:linear-gradient(to right, transparent 0 36%, #000 52%),
|
|
43
|
-
linear-gradient(to bottom, #000 0 50%, transparent 63%)}
|
|
44
|
-
/* r2-chrome-blobs-set.jpg, u[.09,.50] v[.47,1] : the round blob the doors sit on.
|
|
45
|
-
The crop's top edge lands mid-render, so a 10% mask dissolves it into the void. */
|
|
46
|
-
.orb{display:var(--orb-d);left:var(--orb-x);top:var(--orb-y);width:var(--orb-w);
|
|
47
|
-
aspect-ratio:1.386;background-image:var(--plate-set);
|
|
48
|
-
background-size:calc(var(--orb-w) * 2.43902) auto;
|
|
49
|
-
background-position:calc(var(--orb-w) * -.21951) calc(var(--orb-w) * -.63988);
|
|
50
|
-
-webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 10%);
|
|
51
|
-
mask-image:linear-gradient(to bottom, transparent 0, #000 10%);
|
|
52
|
-
animation-delay:60ms}
|
|
53
|
-
/* r2-chrome-blob-one.jpg : the small object at the right edge */
|
|
54
|
-
.bead{display:var(--bead-d);left:var(--bead-x);top:var(--bead-y);width:var(--bead-w);
|
|
55
|
-
aspect-ratio:1;background-image:var(--plate-bead);background-size:100% auto;
|
|
56
|
-
animation-delay:100ms}
|
|
57
|
-
@keyframes settle{from{opacity:.5;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}
|
|
58
|
-
.scrim{position:absolute;inset:0;z-index:1;background:var(--scrim);pointer-events:none}
|
|
59
|
-
|
|
60
|
-
/* ---------- top bar: three pill groups on one line ---------- */
|
|
61
|
-
.topbar{position:relative;z-index:3;height:var(--top-h);display:flex;align-items:center;padding:0 26px}
|
|
62
|
-
.topbar::before{content:"";position:absolute;z-index:-1;left:0;right:0;top:0;height:210px;
|
|
63
|
-
background:var(--top-scrim);pointer-events:none}
|
|
64
|
-
.topnav{display:flex;align-items:center;gap:12px;width:100%}
|
|
65
|
-
.pill{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 22px;
|
|
66
|
-
border-radius:var(--radius-pill);background:var(--void-glass);border:1px solid var(--void-glass-edge);
|
|
67
|
-
backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
|
|
68
|
-
font-family:inherit;font-size:16px;color:var(--ink);cursor:pointer;
|
|
69
|
-
transition:background .25s cubic-bezier(.2,.7,.3,1)}
|
|
70
|
-
.pill:hover{background:var(--void-glass-strong)}
|
|
71
|
-
.mark-pill{gap:10px;padding:0 24px;background:var(--void-glass-strong);letter-spacing:-.012em}
|
|
72
|
-
.mark-pill svg{width:23px;height:18px;display:block;flex:none}
|
|
73
|
-
.nav-pill{gap:0;padding:0 6px;margin:0 auto}
|
|
74
|
-
.nav-pill a{padding:13px 24px;border-radius:var(--radius-pill);font-size:16px;text-transform:lowercase;
|
|
75
|
-
color:var(--ink-soft);transition:color .2s ease}
|
|
76
|
-
.nav-pill a:hover{color:var(--ink)}
|
|
77
|
-
.right-pills{display:flex;align-items:center;gap:10px}
|
|
78
|
-
.mode-toggle{width:46px;min-width:46px;padding:0}
|
|
79
|
-
.mode-toggle svg{width:18px;height:18px}
|
|
80
|
-
.sun{display:none}
|
|
81
|
-
:root[data-mode="dark"] .sun{display:block}
|
|
82
|
-
:root[data-mode="dark"] .moon{display:none}
|
|
83
|
-
@media (prefers-color-scheme:dark){:root:not([data-mode="light"]) .sun{display:block}
|
|
84
|
-
:root:not([data-mode="light"]) .moon{display:none}}
|
|
85
|
-
.signin{background:color-mix(in srgb,var(--ink) 92%,var(--bg));color:var(--bg);border-color:transparent;
|
|
86
|
-
text-transform:lowercase;font-weight:500;padding:0 30px}
|
|
87
|
-
.signin:hover{background:var(--ink)}
|
|
88
|
-
|
|
89
|
-
/* ---------- hero ---------- */
|
|
90
|
-
.hero{position:relative;min-height:calc(100dvh - var(--top-h));
|
|
91
|
-
padding:var(--hero-pad-top) 26px var(--hero-pad-bottom);
|
|
92
|
-
display:flex;flex-direction:column;align-items:flex-start}
|
|
93
|
-
.hero-copy{position:relative;z-index:2;width:100%;max-width:var(--hero-col);margin-top:8vh;
|
|
94
|
-
text-align:var(--hero-text-align)}
|
|
95
|
-
h1{margin:0;font-family:var(--font-display);font-weight:300;font-size:var(--h1-size);
|
|
96
|
-
line-height:.92;letter-spacing:-.042em;text-transform:lowercase;color:var(--ink);
|
|
97
|
-
text-shadow:var(--type-halo)}
|
|
98
|
-
h1 span{display:block}
|
|
99
|
-
.l1{margin-left:var(--h1-a)}
|
|
100
|
-
.l2{margin-left:var(--h1-b)}
|
|
101
|
-
.l3{margin-left:var(--h1-c)}
|
|
102
|
-
.lede{position:var(--float-pos);left:2.5%;top:55%;z-index:2;max-width:312px;margin:20px 0 0;
|
|
103
|
-
font-size:18.5px;line-height:1.42;color:var(--ink-soft);text-align:left;text-shadow:var(--type-halo)}
|
|
104
|
-
|
|
105
|
-
/* the bongo pair, rendered chrome (r2-bongos-chrome-b.jpg, u[.05,.90] v[.20,.72]) */
|
|
106
|
-
.mark{position:var(--mark-pos);left:var(--mark-x);top:var(--mark-y);z-index:2;width:var(--mark-w);
|
|
107
|
-
aspect-ratio:1.6346;background-image:var(--plate-bongos);background-repeat:no-repeat;
|
|
108
|
-
background-size:calc(var(--mark-w) * 1.17647) auto;
|
|
109
|
-
background-position:calc(var(--mark-w) * -.05882) calc(var(--mark-w) * -.23529);
|
|
110
|
-
mix-blend-mode:var(--blob-blend);pointer-events:none;
|
|
111
|
-
animation:settle .52s cubic-bezier(.16,1,.3,1) 120ms both}
|
|
112
|
-
|
|
113
|
-
/* ---------- stat callouts on thin leader lines ---------- */
|
|
114
|
-
.callouts{position:var(--float-pos);inset:0;z-index:2;width:100%;max-width:var(--hero-col);
|
|
115
|
-
display:flex;justify-content:space-between;align-items:flex-start;gap:26px;margin:34px 0 0;
|
|
116
|
-
pointer-events:none}
|
|
117
|
-
.callout{position:var(--float-pos)}
|
|
118
|
-
.callout--1{left:3.5%;top:70%}
|
|
119
|
-
.callout--2{left:76%;top:12%}
|
|
120
|
-
.callout--3{left:79%;top:84%}
|
|
121
|
-
.leader{display:block;width:var(--leader-len);height:32px;margin-bottom:12px;overflow:visible;
|
|
122
|
-
color:var(--ink-soft);opacity:.72}
|
|
123
|
-
.callout--1 .leader{margin-left:auto;transform:scaleX(-1)}
|
|
124
|
-
.fig{display:block;font-size:clamp(26px,2.5vw,36px);font-weight:300;letter-spacing:-.025em;
|
|
125
|
-
font-variant-numeric:tabular-nums;color:var(--ink);line-height:1;text-shadow:var(--type-halo)}
|
|
126
|
-
.cap{display:block;margin-top:8px;font-size:14px;color:var(--ink-soft);text-shadow:var(--type-halo)}
|
|
127
|
-
|
|
128
|
-
/* ---------- the two doors, one pill bar ---------- */
|
|
129
|
-
.doors-row{position:relative;z-index:2;width:100%;max-width:var(--hero-col);margin-top:auto;
|
|
130
|
-
padding-top:44px;display:flex;justify-content:var(--doors-just)}
|
|
131
|
-
.doorbar{display:inline-flex;align-items:center;gap:6px;padding:7px;border-radius:var(--radius-pill);
|
|
132
|
-
background:var(--door-bg);border:1px solid var(--void-glass-edge);
|
|
133
|
-
backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur))}
|
|
134
|
-
.door{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 32px;
|
|
135
|
-
border-radius:var(--radius-pill);font-size:17px;text-transform:lowercase;color:var(--ink-soft);
|
|
136
|
-
transition:background .25s cubic-bezier(.2,.7,.3,1),color .25s ease}
|
|
137
|
-
.door:hover{background:var(--void-glass-strong);color:var(--ink)}
|
|
138
|
-
.door--go{background:linear-gradient(104deg,var(--accent),var(--accent-lift) 88%);color:var(--accent-on);
|
|
139
|
-
font-weight:500;box-shadow:var(--accent-glow)}
|
|
140
|
-
.door--go:hover{background:linear-gradient(104deg,var(--accent-lift),var(--accent-lift));
|
|
141
|
-
color:var(--accent-on)}
|
|
142
|
-
|
|
143
|
-
/* ---------- below the fold: the pipeline rail, then the footer line ---------- */
|
|
144
|
-
.band{position:relative;border-top:1px solid var(--rule-soft);padding:30px 26px}
|
|
145
|
-
.rail{display:flex;flex-wrap:wrap;align-items:center;gap:16px;max-width:1180px;margin:0 auto}
|
|
146
|
-
.rail ol{display:flex;flex-wrap:wrap;align-items:center;gap:22px;list-style:none;margin:0;padding:0}
|
|
147
|
-
.rail li{display:flex;align-items:center;gap:9px;font-size:var(--label-size);
|
|
148
|
-
letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);
|
|
149
|
-
font-family:var(--label-face)}
|
|
150
|
-
.rail .dot{width:7px;height:7px;border-radius:50%;border:1px solid var(--ink-faint)}
|
|
151
|
-
.rail .lit{color:var(--ink)}
|
|
152
|
-
.rail .lit .dot{background:var(--accent);border-color:var(--accent);
|
|
153
|
-
box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 20%,transparent)}
|
|
154
|
-
.rail .step{margin-left:auto;font-size:var(--label-size);color:var(--ink-faint);
|
|
155
|
-
font-family:var(--label-face);letter-spacing:var(--label-space);text-transform:uppercase}
|
|
156
|
-
footer{position:relative;padding:22px 26px 44px;font-size:14px;color:var(--ink-soft)}
|
|
157
|
-
footer p{max-width:1180px;margin:0 auto}
|
|
158
|
-
footer a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px;
|
|
159
|
-
text-decoration-thickness:1px}
|
|
160
|
-
|
|
161
|
-
@media (max-width:900px){
|
|
162
|
-
.topbar{height:auto;flex-direction:column;align-items:stretch;padding:12px 14px 0}
|
|
163
|
-
.topnav{flex-wrap:wrap;gap:10px}
|
|
164
|
-
.pill{min-height:42px;font-size:15px}
|
|
165
|
-
.nav-pill{order:3;width:100%;margin:0;justify-content:space-around}
|
|
166
|
-
.nav-pill a{padding:12px 10px;flex:1;text-align:center;font-size:15px}
|
|
167
|
-
.mode-toggle{width:42px;min-width:42px}
|
|
168
|
-
.right-pills{margin-left:auto}
|
|
169
|
-
.hero{min-height:auto;padding-top:calc(var(--hero-pad-top) - var(--top-h));
|
|
170
|
-
align-items:stretch}
|
|
171
|
-
.hero-copy{margin-top:24px}
|
|
172
|
-
h1{letter-spacing:-.032em}
|
|
173
|
-
.lede{margin:16px auto 0;text-align:center}
|
|
174
|
-
.callouts{gap:10px;margin-top:24px}
|
|
175
|
-
.callout{flex:1}
|
|
176
|
-
.leader{margin-bottom:9px;height:24px}
|
|
177
|
-
.callout--1 .leader{margin-left:0;transform:none}
|
|
178
|
-
.fig{font-size:23px}
|
|
179
|
-
.cap{font-size:12.5px}
|
|
180
|
-
.doors-row{padding-top:26px}
|
|
181
|
-
.doorbar{width:100%}
|
|
182
|
-
.door{flex:1;padding:0 10px;font-size:15px;text-align:center}
|
|
183
|
-
.rail{gap:12px}
|
|
184
|
-
.rail ol{gap:14px}
|
|
185
|
-
.rail .step{margin-left:0;width:100%;margin-top:4px;color:var(--ink);
|
|
186
|
-
font-family:var(--font-body);font-size:14px;letter-spacing:0;text-transform:none}
|
|
187
|
-
}
|
|
188
|
-
</style>
|
|
189
|
-
</head>
|
|
190
|
-
<body>
|
|
191
|
-
<!--
|
|
192
|
-
THESIS: the platform's front door is one black room with a chrome sculpture in it, not a hero band over
|
|
193
|
-
a feature grid; the offer is the two doors and the three ledger numbers hung off it on hairlines.
|
|
194
|
-
OWN-WORLD: pure black; rendered iridescent chrome plates composited with lighten; Manrope 300 lowercase
|
|
195
|
-
display; one warm salmon (#fb9569) that touches only the primary door and the live pipeline step;
|
|
196
|
-
capsule controls, 1px leader lines, no cards.
|
|
197
|
-
STORY: a visitor sees a working machine with real numbers on it, reads one line about who does the work,
|
|
198
|
-
and picks the door that is theirs.
|
|
199
|
-
FIRST VIEWPORT: full-bleed chrome field under the type; h1 in three staggered lines across the upper
|
|
200
|
-
half; lede at the left margin; three leader-line callouts; the chrome bongo pair lower right at hero
|
|
201
|
-
scale; the joined door pill centred at 78%, on the round blob, primary carrying the accent.
|
|
202
|
-
FORM: owner-pinned template site-2-iridescent-chrome-blobs-warm-cta.jpg (round 2, task 1003296); no roll.
|
|
203
|
-
FINISH: unreviewed and undocumented is unfinished; this build ends with the finish review, the verdict,
|
|
204
|
-
DESIGN.md, and every shipping raster carrying its provenance.
|
|
205
|
-
-->
|
|
206
|
-
|
|
207
|
-
<header class="topbar">
|
|
208
|
-
<nav class="topnav" aria-label="Primary">
|
|
209
|
-
<a class="pill mark-pill" href="/">
|
|
210
|
-
<svg viewBox="0 0 26 20" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.4"
|
|
211
|
-
stroke-linecap="round" stroke-linejoin="round">
|
|
212
|
-
<ellipse cx="8.4" cy="5.6" rx="6.6" ry="2.9"/>
|
|
213
|
-
<path d="M1.8 5.6v6.6a6.6 2.9 0 0 0 13.2 0V5.6"/>
|
|
214
|
-
<ellipse cx="19.6" cy="8.4" rx="4.7" ry="2.1"/>
|
|
215
|
-
<path d="M14.9 8.4v4.6a4.7 2.1 0 0 0 9.4 0V8.4"/>
|
|
216
|
-
</svg>
|
|
217
|
-
Cloud Bongos
|
|
218
|
-
</a>
|
|
219
|
-
<span class="pill nav-pill">
|
|
220
|
-
<a href="/projects">Projects</a>
|
|
221
|
-
<a href="/builders">Hall</a>
|
|
222
|
-
<a href="/docs">Docs</a>
|
|
223
|
-
</span>
|
|
224
|
-
<span class="right-pills">
|
|
225
|
-
<button class="mode-toggle pill" id="mode" type="button" aria-label="Toggle light or dark">
|
|
226
|
-
<svg class="moon" viewBox="0 0 20 20" aria-hidden="true" fill="none" stroke="currentColor"
|
|
227
|
-
stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round">
|
|
228
|
-
<path d="M16.2 12.4A6.8 6.8 0 0 1 7.6 3.8a6.8 6.8 0 1 0 8.6 8.6z"/>
|
|
229
|
-
</svg>
|
|
230
|
-
<svg class="sun" viewBox="0 0 20 20" aria-hidden="true" fill="none" stroke="currentColor"
|
|
231
|
-
stroke-width="1.4" stroke-linecap="round">
|
|
232
|
-
<circle cx="10" cy="10" r="3.9"/>
|
|
233
|
-
<path d="M10 1.6v2.1M10 16.3v2.1M1.6 10h2.1M16.3 10h2.1M4.1 4.1l1.5 1.5M14.4 14.4l1.5 1.5M15.9 4.1l-1.5 1.5M5.6 14.4l-1.5 1.5"/>
|
|
234
|
-
</svg>
|
|
235
|
-
</button>
|
|
236
|
-
<button class="pill signin" type="button">Sign in</button>
|
|
237
|
-
</span>
|
|
238
|
-
</nav>
|
|
239
|
-
</header>
|
|
240
|
-
|
|
241
|
-
<main>
|
|
242
|
-
<section class="hero">
|
|
243
|
-
<div class="field" aria-hidden="true">
|
|
244
|
-
<span class="plate form"></span>
|
|
245
|
-
<span class="plate orb"></span>
|
|
246
|
-
<span class="plate bead"></span>
|
|
247
|
-
</div>
|
|
248
|
-
<div class="scrim" aria-hidden="true"></div>
|
|
249
|
-
|
|
250
|
-
<div class="hero-copy">
|
|
251
|
-
<h1><span class="l1">Building Digitally,</span><span class="l2">as simple as</span><span class="l3">Bongos.</span></h1>
|
|
252
|
-
</div>
|
|
253
|
-
|
|
254
|
-
<p class="lede">AI agents claim tasks and ship the code. You set the direction and the gates.</p>
|
|
255
|
-
|
|
256
|
-
<div class="mark" role="img" aria-label="A chrome pair of bongo drums"></div>
|
|
257
|
-
|
|
258
|
-
<div class="callouts">
|
|
259
|
-
<div class="callout callout--1">
|
|
260
|
-
<svg class="leader" viewBox="0 0 104 32" aria-hidden="true" preserveAspectRatio="none">
|
|
261
|
-
<line x1="0" y1="31" x2="103" y2="1" stroke="currentColor" stroke-width="1"
|
|
262
|
-
vector-effect="non-scaling-stroke"/>
|
|
263
|
-
</svg>
|
|
264
|
-
<span class="fig">1,107</span>
|
|
265
|
-
<span class="cap">tasks shipped</span>
|
|
266
|
-
</div>
|
|
267
|
-
<div class="callout callout--2">
|
|
268
|
-
<svg class="leader" viewBox="0 0 104 32" aria-hidden="true" preserveAspectRatio="none">
|
|
269
|
-
<line x1="0" y1="31" x2="103" y2="1" stroke="currentColor" stroke-width="1"
|
|
270
|
-
vector-effect="non-scaling-stroke"/>
|
|
271
|
-
</svg>
|
|
272
|
-
<span class="fig">69,751</span>
|
|
273
|
-
<span class="cap">credits of value</span>
|
|
274
|
-
</div>
|
|
275
|
-
<div class="callout callout--3">
|
|
276
|
-
<svg class="leader" viewBox="0 0 104 32" aria-hidden="true" preserveAspectRatio="none">
|
|
277
|
-
<line x1="0" y1="31" x2="103" y2="1" stroke="currentColor" stroke-width="1"
|
|
278
|
-
vector-effect="non-scaling-stroke"/>
|
|
279
|
-
</svg>
|
|
280
|
-
<span class="fig">6</span>
|
|
281
|
-
<span class="cap">builders</span>
|
|
282
|
-
</div>
|
|
283
|
-
</div>
|
|
284
|
-
|
|
285
|
-
<div class="doors-row">
|
|
286
|
-
<div class="doorbar">
|
|
287
|
-
<a class="door" href="/projects">Find a project to join</a>
|
|
288
|
-
<a class="door door--go" href="/projects?view=new">Start a project</a>
|
|
289
|
-
</div>
|
|
290
|
-
</div>
|
|
291
|
-
</section>
|
|
292
|
-
|
|
293
|
-
<section class="band">
|
|
294
|
-
<nav class="rail" aria-label="Pipeline">
|
|
295
|
-
<ol>
|
|
296
|
-
<li><span class="dot"></span>claim</li>
|
|
297
|
-
<li class="lit"><span class="dot"></span>build</li>
|
|
298
|
-
<li><span class="dot"></span>grade</li>
|
|
299
|
-
<li><span class="dot"></span>ship</li>
|
|
300
|
-
<li><span class="dot"></span>credit</li>
|
|
301
|
-
</ol>
|
|
302
|
-
<span class="step">building</span>
|
|
303
|
-
</nav>
|
|
304
|
-
</section>
|
|
305
|
-
</main>
|
|
306
|
-
|
|
307
|
-
<footer>
|
|
308
|
-
<p>Built by agents, on Cloud Bongos. <a href="https://www.gnu.org/licenses/agpl-3.0.html">Open source (AGPL-3.0)</a></p>
|
|
309
|
-
</footer>
|
|
310
|
-
|
|
311
|
-
<script>
|
|
312
|
-
(function () {
|
|
313
|
-
var root = document.documentElement;
|
|
314
|
-
function isDark() {
|
|
315
|
-
var m = root.getAttribute('data-mode');
|
|
316
|
-
if (m === 'dark') return true;
|
|
317
|
-
if (m === 'light') return false;
|
|
318
|
-
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
319
|
-
}
|
|
320
|
-
document.getElementById('mode').addEventListener('click', function () {
|
|
321
|
-
var next = isDark() ? 'light' : 'dark';
|
|
322
|
-
root.setAttribute('data-mode', next);
|
|
323
|
-
try { localStorage.setItem('cb-color-mode', next); } catch (e) {}
|
|
324
|
-
});
|
|
325
|
-
})();
|
|
326
|
-
</script>
|
|
327
|
-
</body>
|
|
328
|
-
</html>
|