@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.
- package/.bongos-core.json +176 -491
- 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 +2 -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/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/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/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,420 +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 href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Nunito:wght@400;600;800&display=swap" rel="stylesheet">
|
|
13
|
-
<link rel="stylesheet" href="_tokens.css">
|
|
14
|
-
<style>
|
|
15
|
-
*,*::before,*::after{box-sizing:border-box}
|
|
16
|
-
html,body{margin:0;padding:0}
|
|
17
|
-
body{
|
|
18
|
-
background:var(--bg);color:var(--ink);
|
|
19
|
-
font-family:var(--font-body);font-size:1rem;line-height:1.55;
|
|
20
|
-
-webkit-font-smoothing:antialiased;
|
|
21
|
-
}
|
|
22
|
-
::selection{background:var(--accent);color:var(--on-accent)}
|
|
23
|
-
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:8px}
|
|
24
|
-
a{color:inherit}
|
|
25
|
-
.vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
|
|
26
|
-
.wrap{width:min(1200px,100% - clamp(36px,8vw,120px));margin-inline:auto}
|
|
27
|
-
|
|
28
|
-
/* ---------------- top bar: a real surface, a deeper fold of the same paper ---------------- */
|
|
29
|
-
.bar{
|
|
30
|
-
position:relative;z-index:6;height:68px;
|
|
31
|
-
background:var(--bg-deep);
|
|
32
|
-
border-bottom:var(--line) solid var(--rule-soft);
|
|
33
|
-
display:flex;align-items:center;gap:20px;
|
|
34
|
-
padding:0 clamp(18px,4vw,60px);
|
|
35
|
-
}
|
|
36
|
-
.brand{display:inline-flex;align-items:center;gap:11px;white-space:nowrap;text-decoration:none;color:var(--ink);font-weight:800;font-size:1.16rem;letter-spacing:-.012em}
|
|
37
|
-
.brand svg{display:block;flex:none}
|
|
38
|
-
.bar-right{margin-left:auto;display:flex;align-items:center;gap:clamp(14px,2.4vw,34px)}
|
|
39
|
-
.bar-nav{display:flex;align-items:center;gap:clamp(14px,2.4vw,34px)}
|
|
40
|
-
.bar-nav a{
|
|
41
|
-
text-decoration:none;color:var(--ink-soft);font-weight:600;font-size:1rem;
|
|
42
|
-
padding:8px 2px;border-radius:6px;transition:color .18s ease;
|
|
43
|
-
}
|
|
44
|
-
.bar-nav a:hover{color:var(--ink)}
|
|
45
|
-
.mode-toggle{
|
|
46
|
-
width:54px;height:30px;flex:none;padding:0;cursor:pointer;
|
|
47
|
-
border-radius:var(--radius-pill);border:var(--line) solid var(--toggle-bd);
|
|
48
|
-
background:var(--toggle-bg);color:var(--ink);
|
|
49
|
-
display:inline-flex;align-items:center;justify-content:center;
|
|
50
|
-
transition:background .2s ease,border-color .2s ease;
|
|
51
|
-
}
|
|
52
|
-
.mode-toggle:hover{border-color:var(--accent)}
|
|
53
|
-
.mt-ico{position:relative;width:18px;height:18px;display:block}
|
|
54
|
-
.mt-ico svg{position:absolute;inset:0;width:18px;height:18px;display:block}
|
|
55
|
-
.i-moon{opacity:var(--moon-o)}
|
|
56
|
-
.i-sun{opacity:var(--sun-o)}
|
|
57
|
-
.chip-in{
|
|
58
|
-
cursor:pointer;font:inherit;font-weight:700;font-size:.98rem;
|
|
59
|
-
padding:9px 20px;border-radius:var(--radius-pill);
|
|
60
|
-
border:var(--line) solid transparent;background:transparent;color:var(--ink);
|
|
61
|
-
white-space:nowrap;transition:background .2s ease,border-color .2s ease;
|
|
62
|
-
}
|
|
63
|
-
.chip-in:hover{background:var(--nav-hover);border-color:var(--rule-soft)}
|
|
64
|
-
|
|
65
|
-
/* ---------------- hero: the plate is the ground, not a picture pasted on one ---------------- */
|
|
66
|
-
.hero{
|
|
67
|
-
position:relative;overflow:hidden;
|
|
68
|
-
min-height:calc(100dvh - 68px);
|
|
69
|
-
display:grid;grid-template-rows:1fr auto;
|
|
70
|
-
background:var(--hero-band);
|
|
71
|
-
}
|
|
72
|
-
.hero-media{position:absolute;inset:0;z-index:0}
|
|
73
|
-
.hero-plate{
|
|
74
|
-
position:absolute;inset:0;
|
|
75
|
-
background-image:var(--plate-hero);
|
|
76
|
-
background-size:var(--plate-size);background-position:var(--plate-pos);background-repeat:no-repeat;
|
|
77
|
-
}
|
|
78
|
-
.hero-scrim{
|
|
79
|
-
position:absolute;inset:0;
|
|
80
|
-
background:linear-gradient(94deg,
|
|
81
|
-
var(--scrim-a) 0 calc(var(--scrim-reach) * .44),
|
|
82
|
-
var(--scrim-mid) calc(var(--scrim-reach) * .70),
|
|
83
|
-
var(--scrim-b) var(--scrim-reach));
|
|
84
|
-
}
|
|
85
|
-
.hero-grain{position:absolute;inset:0;background-image:var(--grain);opacity:var(--grain-op);mix-blend-mode:overlay}
|
|
86
|
-
|
|
87
|
-
/* the rendered wood pair, hero scale, sitting in the leaves */
|
|
88
|
-
.object{
|
|
89
|
-
position:absolute;z-index:1;
|
|
90
|
-
right:3%;top:4%;width:min(42vw,580px);aspect-ratio:1/1;
|
|
91
|
-
background-image:var(--plate-object);
|
|
92
|
-
background-size:contain;background-position:center;background-repeat:no-repeat;
|
|
93
|
-
filter:drop-shadow(var(--mark-shadow));
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/* ---------------- leader-line notes: the ledger, annotated onto the photograph ---------------- */
|
|
97
|
-
.notes{list-style:none;margin:0;padding:0;position:absolute;inset:0;z-index:3;pointer-events:none}
|
|
98
|
-
/* the notes ride the SAME entrance as the slab, one delay ladder, one authored moment */
|
|
99
|
-
.note{
|
|
100
|
-
position:absolute;display:flex;align-items:center;
|
|
101
|
-
animation:rise .62s cubic-bezier(.16,1,.3,1) both;
|
|
102
|
-
}
|
|
103
|
-
.n1{left:44%;width:22%;top:12%;animation-delay:.41s}
|
|
104
|
-
.n2{left:41%;width:27%;top:45%;animation-delay:.48s}
|
|
105
|
-
.n3{left:46%;width:18%;top:66%;animation-delay:.55s}
|
|
106
|
-
.note .card{
|
|
107
|
-
flex:none;display:flex;align-items:baseline;gap:7px;
|
|
108
|
-
padding:8px 14px;border-radius:var(--radius-sm);
|
|
109
|
-
background:var(--field-brown);color:var(--on-brown-soft);
|
|
110
|
-
border:var(--line) solid color-mix(in srgb,var(--cream) 18%,transparent);
|
|
111
|
-
box-shadow:var(--shadow-card);
|
|
112
|
-
font-size:.8rem;line-height:1.2;white-space:nowrap;
|
|
113
|
-
}
|
|
114
|
-
.note .card b{
|
|
115
|
-
color:var(--on-brown);font-weight:800;font-size:1.06rem;letter-spacing:-.012em;
|
|
116
|
-
font-variant-numeric:tabular-nums;
|
|
117
|
-
}
|
|
118
|
-
/* the leader is CASED, like a line on a map: a 1px core with a 1px halo of the opposite value, so the
|
|
119
|
-
pair reads whether the run crosses flat paper or dark foliage. A bare hairline only holds over paper. */
|
|
120
|
-
.note .line{flex:1 1 auto;height:1px;background:var(--lead);box-shadow:0 0 0 1px var(--lead-case)}
|
|
121
|
-
.note .dot{
|
|
122
|
-
flex:none;width:9px;height:9px;border-radius:50%;background:var(--lead-dot);
|
|
123
|
-
box-shadow:0 0 0 1.5px var(--lead-case),0 0 0 5px color-mix(in srgb,var(--lead-dot) 26%,transparent);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/* ---------------- copy ---------------- */
|
|
127
|
-
.copy{position:relative;z-index:4;align-self:center;padding:clamp(28px,6vh,72px) 0 clamp(20px,4vh,40px)}
|
|
128
|
-
h1{
|
|
129
|
-
margin:0;font-family:var(--font-display);font-weight:800;
|
|
130
|
-
font-size:clamp(2.15rem,4.05vw,3.6rem);line-height:1.08;letter-spacing:-.026em;
|
|
131
|
-
max-width:min(560px,100%);color:var(--ink);text-wrap:balance;
|
|
132
|
-
}
|
|
133
|
-
h1 .l{white-space:nowrap}
|
|
134
|
-
.lede{
|
|
135
|
-
margin:1.15rem 0 0;max-width:min(348px,100%);
|
|
136
|
-
font-size:clamp(1.02rem,1.28vw,1.16rem);line-height:1.52;color:var(--ink-soft);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/* the two doors ride in one pill: equal columns, the primary lit */
|
|
140
|
-
.doors{
|
|
141
|
-
display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;
|
|
142
|
-
width:min(552px,100%);margin-top:2.2rem;padding:5px;
|
|
143
|
-
border-radius:var(--radius-pill);
|
|
144
|
-
background:color-mix(in srgb,var(--bg-deep) 62%,transparent);
|
|
145
|
-
-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
|
|
146
|
-
border:var(--line) solid var(--door-2-bd);
|
|
147
|
-
box-shadow:var(--shadow-card);
|
|
148
|
-
}
|
|
149
|
-
.door{
|
|
150
|
-
display:inline-flex;align-items:center;justify-content:center;
|
|
151
|
-
padding:13px 22px;border-radius:var(--radius-pill);
|
|
152
|
-
font-weight:700;font-size:1.02rem;text-decoration:none;white-space:nowrap;
|
|
153
|
-
transition:background .2s ease,color .2s ease,transform .22s cubic-bezier(.16,1,.3,1);
|
|
154
|
-
}
|
|
155
|
-
.door-1{background:var(--accent);color:var(--on-accent);box-shadow:0 6px 14px -8px var(--shade),inset 0 1px 0 rgba(255,255,255,.34)}
|
|
156
|
-
.door-1:hover{transform:translateY(-1px)}
|
|
157
|
-
.door-2{color:var(--ink)}
|
|
158
|
-
.door-2:hover{background:var(--nav-hover)}
|
|
159
|
-
|
|
160
|
-
/* ---------------- the pipeline rail: the template's four-column slab, five columns ---------------- */
|
|
161
|
-
.rail{position:relative;z-index:4;padding-bottom:clamp(28px,5vh,54px)}
|
|
162
|
-
.slab{
|
|
163
|
-
list-style:none;margin:0;padding:0;
|
|
164
|
-
display:grid;grid-template-columns:repeat(5,1fr);
|
|
165
|
-
border-radius:var(--radius);overflow:hidden;
|
|
166
|
-
background:var(--slab);
|
|
167
|
-
border:var(--line) solid var(--slab-edge);
|
|
168
|
-
box-shadow:var(--shadow-lift);
|
|
169
|
-
}
|
|
170
|
-
.step{
|
|
171
|
-
padding:26px 14px 24px;text-align:center;color:var(--on-sea-soft);
|
|
172
|
-
animation:rise .62s cubic-bezier(.16,1,.3,1) both;
|
|
173
|
-
}
|
|
174
|
-
.step + .step{box-shadow:inset 1px 0 0 var(--slab-div)}
|
|
175
|
-
.step:nth-child(1){animation-delay:.06s}
|
|
176
|
-
.step:nth-child(2){animation-delay:.13s}
|
|
177
|
-
.step:nth-child(3){animation-delay:.20s}
|
|
178
|
-
.step:nth-child(4){animation-delay:.27s}
|
|
179
|
-
.step:nth-child(5){animation-delay:.34s}
|
|
180
|
-
@keyframes rise{from{opacity:0;transform:translateY(26px)}}
|
|
181
|
-
.badge{
|
|
182
|
-
width:54px;height:54px;margin:0 auto 14px;border-radius:50%;
|
|
183
|
-
display:grid;place-items:center;
|
|
184
|
-
border:1.6px solid color-mix(in srgb,var(--cream) 52%,transparent);color:var(--on-sea);
|
|
185
|
-
}
|
|
186
|
-
.badge svg{width:24px;height:24px;display:block}
|
|
187
|
-
.step-label{font-weight:700;font-size:1.02rem;letter-spacing:-.006em}
|
|
188
|
-
.is-live{color:var(--on-sea)}
|
|
189
|
-
.is-live .step-label{font-weight:800}
|
|
190
|
-
.is-live .badge{
|
|
191
|
-
background:var(--accent);color:var(--on-accent);border-color:transparent;
|
|
192
|
-
box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 17%,transparent),
|
|
193
|
-
inset 0 1px 0 rgba(255,255,255,.38);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/* ---- the quiet band below the fold: the template's lower green field, raking ripple and all ---- */
|
|
197
|
-
.band{
|
|
198
|
-
position:relative;overflow:hidden;
|
|
199
|
-
background:var(--bg);border-top:var(--line) solid var(--rule-soft);
|
|
200
|
-
padding:clamp(44px,7vh,80px) 0;
|
|
201
|
-
}
|
|
202
|
-
.band::before,.band::after{content:"";position:absolute;inset:0;pointer-events:none}
|
|
203
|
-
.band::before{background-image:var(--ripple);opacity:var(--ripple-op)}
|
|
204
|
-
.band::after{background-image:var(--grain);opacity:var(--grain-op);mix-blend-mode:overlay}
|
|
205
|
-
.band p{
|
|
206
|
-
position:relative;margin:0;max-width:64ch;
|
|
207
|
-
font-size:clamp(1.02rem,1.35vw,1.2rem);line-height:1.6;color:var(--ink-soft);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/* ---------------- footer ---------------- */
|
|
211
|
-
.foot{
|
|
212
|
-
background:var(--bg-deep);border-top:var(--line) solid var(--rule-soft);
|
|
213
|
-
padding:26px 0;
|
|
214
|
-
}
|
|
215
|
-
.foot p{margin:0;color:var(--ink-soft);font-size:.96rem;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
|
|
216
|
-
.foot a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:var(--accent)}
|
|
217
|
-
.foot a:hover{text-decoration-color:var(--ink)}
|
|
218
|
-
|
|
219
|
-
@media (max-width:1100px){
|
|
220
|
-
.n1{left:42%;width:20%;top:11%}
|
|
221
|
-
.n2{left:40%;width:24%;top:46%}
|
|
222
|
-
.n3{left:44%;width:17%;top:67%}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
@media (max-width:900px){
|
|
226
|
-
.bar{height:64px;gap:12px;padding:0 18px}
|
|
227
|
-
.brand{font-size:1.05rem}
|
|
228
|
-
.bar-right{gap:12px}
|
|
229
|
-
.bar-nav{gap:14px}
|
|
230
|
-
.bar-nav a{font-size:.95rem}
|
|
231
|
-
.chip-in{padding:8px 14px;font-size:.94rem}
|
|
232
|
-
.hero{display:flex;flex-direction:column;min-height:calc(100dvh - 64px);gap:0}
|
|
233
|
-
.copy{order:1;padding:26px 0 4px;align-self:auto}
|
|
234
|
-
.hero-media{order:2}
|
|
235
|
-
.notes{order:3}
|
|
236
|
-
.rail{order:4}
|
|
237
|
-
h1{max-width:none;font-size:2.1rem}
|
|
238
|
-
h1 .l{white-space:normal}
|
|
239
|
-
.lede{max-width:none;margin-top:.85rem}
|
|
240
|
-
.doors{grid-auto-flow:row;width:100%;margin-top:1.6rem;border-radius:30px;gap:5px}
|
|
241
|
-
.door{width:100%}
|
|
242
|
-
.hero-media{
|
|
243
|
-
position:relative;inset:auto;height:200px;margin:20px auto 0;
|
|
244
|
-
width:min(1200px,100% - 36px);border-radius:var(--radius);overflow:hidden;
|
|
245
|
-
box-shadow:var(--shadow-card);border:var(--line) solid var(--tile-edge);
|
|
246
|
-
}
|
|
247
|
-
.hero-plate{background-size:auto 200%;background-position:72% center}
|
|
248
|
-
.hero-scrim{background:linear-gradient(94deg,var(--scrim-a) 0 3%,var(--scrim-mid) 14%,var(--scrim-b) 40%)}
|
|
249
|
-
.object{
|
|
250
|
-
position:absolute;right:2%;top:-4%;width:46%;
|
|
251
|
-
filter:drop-shadow(0 12px 20px var(--shade));
|
|
252
|
-
}
|
|
253
|
-
/* mobile: ONE quiet ledger line, hairline-separated. Never three equal cards in a row. */
|
|
254
|
-
.notes{
|
|
255
|
-
position:static;inset:auto;pointer-events:auto;
|
|
256
|
-
width:min(1200px,100% - 36px);margin:13px auto 0;
|
|
257
|
-
display:flex;flex-wrap:wrap;align-items:baseline;gap:0;
|
|
258
|
-
}
|
|
259
|
-
.note{position:static;width:auto;flex:0 0 auto}
|
|
260
|
-
.note .line,.note .dot{display:none}
|
|
261
|
-
.note .card{
|
|
262
|
-
background:transparent;border:0;box-shadow:none;border-radius:0;
|
|
263
|
-
padding:3px 14px;color:var(--ink-soft);font-size:.82rem;gap:6px;
|
|
264
|
-
}
|
|
265
|
-
.note .card b{color:var(--ink);font-size:.95rem}
|
|
266
|
-
.note:first-child .card{padding-left:0}
|
|
267
|
-
.note + .note .card{border-left:var(--line) solid var(--rule)}
|
|
268
|
-
.rail{padding:16px 0 26px}
|
|
269
|
-
.step{padding:16px 6px 14px}
|
|
270
|
-
.badge{width:42px;height:42px;margin-bottom:9px}
|
|
271
|
-
.badge svg{width:20px;height:20px}
|
|
272
|
-
.step-label{font-size:.9rem}
|
|
273
|
-
}
|
|
274
|
-
@media (max-width:430px){
|
|
275
|
-
.bar{padding:0 10px;gap:8px}
|
|
276
|
-
.brand{font-size:.86rem;gap:7px}
|
|
277
|
-
.brand svg{width:24px;height:18px}
|
|
278
|
-
.bar-nav{gap:9px}
|
|
279
|
-
.bar-nav a{font-size:.8rem;padding:8px 0}
|
|
280
|
-
.bar-right{gap:9px}
|
|
281
|
-
.mode-toggle{width:44px;height:26px}
|
|
282
|
-
.mt-ico,.mt-ico svg{width:16px;height:16px}
|
|
283
|
-
.chip-in{padding:6px 9px;font-size:.8rem}
|
|
284
|
-
.hero-media{height:172px}
|
|
285
|
-
.note .card{padding:3px 9px;font-size:.72rem;gap:4px}
|
|
286
|
-
.note .card b{font-size:.86rem}
|
|
287
|
-
.step{padding:13px 2px 12px}
|
|
288
|
-
.badge{width:34px;height:34px;margin-bottom:7px}
|
|
289
|
-
.badge svg{width:17px;height:17px}
|
|
290
|
-
.step-label{font-size:.72rem;letter-spacing:-.012em}
|
|
291
|
-
.is-live .badge{box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 17%,transparent),inset 0 1px 0 rgba(255,255,255,.38)}
|
|
292
|
-
}
|
|
293
|
-
</style>
|
|
294
|
-
</head>
|
|
295
|
-
<body>
|
|
296
|
-
<!--
|
|
297
|
-
THESIS: the pipeline is the product, so the first viewport shows the beat laid out as one slab, not a
|
|
298
|
-
claim stack. It refuses the SaaS hero of eyebrow, headline, two loose buttons and a logo strip.
|
|
299
|
-
OWN-WORLD: the owner's green-and-brown organic card system. A photographic leaf plate over sculpted paper is
|
|
300
|
-
the ground itself; sea green, bark brown and one lit tan; Nunito rounded sans; 22px cards, circular badges.
|
|
301
|
-
STORY: an owner or a builder sees real work moving, reads one line of what this is, and takes one of two
|
|
302
|
-
equal doors that sit in a single pill.
|
|
303
|
-
FIRST VIEWPORT: headline and lede on the plate's plain left third; the joined door pill under them; the
|
|
304
|
-
rendered wood bongo pair at hero scale upper right; three ledger figures on leader lines across the leaves;
|
|
305
|
-
the five-step slab across the foot, tan lighting only the running step.
|
|
306
|
-
FORM: no seed key. This is new-work section 3, extend an existing surface: the organic-cards world is
|
|
307
|
-
already committed and the owner pinned site-4 as the comp, so no concept tournament was run by instruction.
|
|
308
|
-
FINISH: unreviewed and undocumented is unfinished; this build ends with the finish review and the verdict.
|
|
309
|
-
-->
|
|
310
|
-
|
|
311
|
-
<header class="bar">
|
|
312
|
-
<a class="brand" href="/" aria-label="Cloud Bongos, home">
|
|
313
|
-
<svg width="34" height="26" viewBox="0 0 68 52" aria-hidden="true" focusable="false">
|
|
314
|
-
<path d="M4 15c1 12 4 21 6 26a13 5 0 0 0 26 0c2-5 5-14 6-26Z" style="fill:var(--accent-deep)"/>
|
|
315
|
-
<path d="M8 17c1 11 3 19 5 24a13 5 0 0 0 4 1c-2-5-5-14-6-25Z" fill="#fff" opacity=".18"/>
|
|
316
|
-
<ellipse cx="23" cy="15" rx="19" ry="7" style="fill:var(--accent)"/>
|
|
317
|
-
<ellipse cx="23" cy="15" rx="14" ry="4.6" style="fill:var(--skin-mid)"/>
|
|
318
|
-
<path d="M40 21c1 9 3 16 5 20a10 4 0 0 0 20 0c2-4 4-11 5-20Z" style="fill:var(--terracotta)"/>
|
|
319
|
-
<ellipse cx="55" cy="21" rx="15" ry="5.6" style="fill:var(--accent)"/>
|
|
320
|
-
<ellipse cx="55" cy="21" rx="11" ry="3.6" style="fill:var(--skin-mid)"/>
|
|
321
|
-
</svg>
|
|
322
|
-
Cloud Bongos
|
|
323
|
-
</a>
|
|
324
|
-
|
|
325
|
-
<div class="bar-right">
|
|
326
|
-
<nav class="bar-nav" aria-label="Main">
|
|
327
|
-
<a href="/projects">Projects</a>
|
|
328
|
-
<a href="/hall">Hall</a>
|
|
329
|
-
</nav>
|
|
330
|
-
<button class="mode-toggle" id="mode" type="button" aria-label="Toggle light or dark">
|
|
331
|
-
<span class="mt-ico">
|
|
332
|
-
<svg class="i-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M20 14.4A8.4 8.4 0 0 1 9.6 4 8.4 8.4 0 1 0 20 14.4Z"/></svg>
|
|
333
|
-
<svg class="i-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="4.2"/><path d="M12 2.6v2.2M12 19.2v2.2M2.6 12h2.2M19.2 12h2.2M5.4 5.4l1.6 1.6M17 17l1.6 1.6M18.6 5.4 17 7M7 17l-1.6 1.6"/></svg>
|
|
334
|
-
</span>
|
|
335
|
-
</button>
|
|
336
|
-
<button class="chip-in" type="button">Sign in</button>
|
|
337
|
-
</div>
|
|
338
|
-
</header>
|
|
339
|
-
|
|
340
|
-
<main>
|
|
341
|
-
<section class="hero">
|
|
342
|
-
<div class="hero-media" aria-hidden="true">
|
|
343
|
-
<div class="hero-plate"></div>
|
|
344
|
-
<div class="hero-scrim"></div>
|
|
345
|
-
<div class="hero-grain"></div>
|
|
346
|
-
<div class="object" role="img" aria-label="A pair of wood bongos resting among monstera leaves"></div>
|
|
347
|
-
</div>
|
|
348
|
-
|
|
349
|
-
<ul class="notes" aria-label="Cloud Bongos, in the ledger">
|
|
350
|
-
<li class="note n1"><span class="card"><b>1,107</b> tasks shipped</span><span class="line"></span><span class="dot"></span></li>
|
|
351
|
-
<li class="note n2"><span class="card"><b>69,751</b> credits of value</span><span class="line"></span><span class="dot"></span></li>
|
|
352
|
-
<li class="note n3"><span class="card"><b>6</b> builders</span><span class="line"></span><span class="dot"></span></li>
|
|
353
|
-
</ul>
|
|
354
|
-
|
|
355
|
-
<div class="copy wrap">
|
|
356
|
-
<h1><span class="l">Building Digitally,</span> <span class="l">as simple as Bongos.</span></h1>
|
|
357
|
-
<p class="lede">AI agents claim tasks and ship the code. You set the direction and the gates.</p>
|
|
358
|
-
<div class="doors">
|
|
359
|
-
<a class="door door-1" href="/projects?view=new">Start a project</a>
|
|
360
|
-
<a class="door door-2" href="/projects">Find a project to join</a>
|
|
361
|
-
</div>
|
|
362
|
-
</div>
|
|
363
|
-
|
|
364
|
-
<div class="rail wrap">
|
|
365
|
-
<ol class="slab" aria-label="How work moves through Cloud Bongos">
|
|
366
|
-
<li class="step">
|
|
367
|
-
<span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M5.5 3.6h13v16.8l-6.5-3.9-6.5 3.9z"/></svg></span>
|
|
368
|
-
<span class="step-label">Claim</span>
|
|
369
|
-
</li>
|
|
370
|
-
<li class="step is-live" aria-current="step">
|
|
371
|
-
<span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M13.6 2.9 20.9 10.2 18.1 13 10.8 5.7z"/><path d="M11.2 7.3 4 14.5a2.1 2.1 0 0 0 0 3l1.8 1.8a2.1 2.1 0 0 0 3 0l7.2-7.2"/></svg></span>
|
|
372
|
-
<span class="step-label">Build<span class="vh">, the step now running</span></span>
|
|
373
|
-
</li>
|
|
374
|
-
<li class="step">
|
|
375
|
-
<span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="8.9" r="5.3"/><path d="M9.1 13.4 7.9 21.1 12 18.7l4.1 2.4-1.2-7.7"/></svg></span>
|
|
376
|
-
<span class="step-label">Grade</span>
|
|
377
|
-
</li>
|
|
378
|
-
<li class="step">
|
|
379
|
-
<span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 15.6h16l-2 4.8H6z"/><path d="M12 3.4v12.2"/><path d="M12 5.1 18 9l-6 2.6z"/></svg></span>
|
|
380
|
-
<span class="step-label">Ship</span>
|
|
381
|
-
</li>
|
|
382
|
-
<li class="step">
|
|
383
|
-
<span class="badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="2.9" y="5.6" width="18.2" height="12.8" rx="2.6"/><path d="M2.9 10.1h18.2M6.6 14.6h3.6"/></svg></span>
|
|
384
|
-
<span class="step-label">Credit</span>
|
|
385
|
-
</li>
|
|
386
|
-
</ol>
|
|
387
|
-
</div>
|
|
388
|
-
</section>
|
|
389
|
-
|
|
390
|
-
<section class="band">
|
|
391
|
-
<div class="wrap">
|
|
392
|
-
<p>Every change is a claimed task in one ledger, locked to one agent, graded on the real diff, and paid only once it is live.</p>
|
|
393
|
-
</div>
|
|
394
|
-
</section>
|
|
395
|
-
</main>
|
|
396
|
-
|
|
397
|
-
<footer class="foot">
|
|
398
|
-
<div class="wrap">
|
|
399
|
-
<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>
|
|
400
|
-
</div>
|
|
401
|
-
</footer>
|
|
402
|
-
|
|
403
|
-
<script>
|
|
404
|
-
(function () {
|
|
405
|
-
var root = document.documentElement;
|
|
406
|
-
function isDark() {
|
|
407
|
-
var m = root.getAttribute('data-mode');
|
|
408
|
-
if (m === 'dark') return true;
|
|
409
|
-
if (m === 'light') return false;
|
|
410
|
-
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
411
|
-
}
|
|
412
|
-
document.getElementById('mode').addEventListener('click', function () {
|
|
413
|
-
var next = isDark() ? 'light' : 'dark';
|
|
414
|
-
root.setAttribute('data-mode', next);
|
|
415
|
-
try { localStorage.setItem('cb-color-mode', next); } catch (e) {}
|
|
416
|
-
});
|
|
417
|
-
})();
|
|
418
|
-
</script>
|
|
419
|
-
</body>
|
|
420
|
-
</html>
|