@bongos/core 1.24.48 → 1.24.49
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 +142 -97
- package/config/branding.neutral.json +2 -1
- package/docs/copy-inventory.md +1028 -1028
- package/docs/copy-registry.json +1448 -1448
- package/docs/module-api-changelog.md +2 -0
- package/docs/page-readings.json +625 -625
- package/modules/hall-ui/public/ai-studio.html +2 -2
- package/modules/hall-ui/public/atlas.html +2 -2
- package/modules/hall-ui/public/blockers.html +2 -2
- package/modules/hall-ui/public/board-room.html +2 -2
- package/modules/hall-ui/public/city.html +1 -1
- package/modules/hall-ui/public/collab.html +2 -2
- package/modules/hall-ui/public/commands.html +2 -2
- package/modules/hall-ui/public/copy-desk.html +2 -2
- package/modules/hall-ui/public/deploy.html +2 -2
- package/modules/hall-ui/public/goal-map.html +2 -2
- package/modules/hall-ui/public/goals.html +2 -2
- package/modules/hall-ui/public/government.html +2 -2
- package/modules/hall-ui/public/hall-render.js +1 -1
- package/modules/hall-ui/public/idea.html +2 -2
- package/modules/hall-ui/public/ideas.html +2 -2
- package/modules/hall-ui/public/index.html +5 -5
- package/modules/hall-ui/public/market-watch-item.html +2 -2
- package/modules/hall-ui/public/market-watch-rules.html +2 -2
- package/modules/hall-ui/public/market-watch.html +2 -2
- package/modules/hall-ui/public/modules.html +2 -2
- package/modules/hall-ui/public/money.html +2 -2
- package/modules/hall-ui/public/my-agents.html +2 -2
- package/modules/hall-ui/public/primer.html +2 -2
- package/modules/hall-ui/public/profile.html +2 -2
- package/modules/hall-ui/public/project-settings.html +2 -2
- package/modules/hall-ui/public/roster.html +2 -2
- package/modules/hall-ui/public/settings.html +2 -2
- package/modules/hall-ui/public/shell.js +1 -1
- package/modules/hall-ui/public/street.html +1 -1
- package/modules/hall-ui/public/studio.html +2 -2
- package/modules/hall-ui/public/style.css +7 -9
- package/modules/hall-ui/public/task.html +2 -2
- package/modules/hall-ui/public/thinking.html +2 -2
- package/modules/hall-ui/public/tweak-editor.html +2 -2
- package/modules/hall-ui/public/watch.html +2 -2
- package/modules/hall-ui/public/welcome-boot.css +3 -4
- package/modules/hall-ui/public/welcome-boot.js +5 -3
- package/modules/hall-ui/public/work.html +2 -2
- package/modules/public-landing/public/account.html +1 -5
- package/modules/public-landing/public/assets/cosmos.css +7 -6
- package/modules/public-landing/public/community.html +1 -5
- package/modules/public-landing/public/connections.html +1 -5
- package/modules/public-landing/public/contact.html +1 -5
- package/modules/public-landing/public/guild.html +1 -5
- package/modules/public-landing/public/index.html +5 -8
- package/modules/public-landing/public/invitations.html +1 -5
- package/modules/public-landing/public/privacy.html +1 -5
- package/modules/public-landing/public/projects.html +1 -5
- package/modules/public-landing/public/terms.html +1 -5
- package/modules/raise/views/gate.html +4 -3
- package/modules/raise/views/nda.html +2 -1
- package/modules/raise/views/page.html +4 -3
- package/modules/status-ui/public/index.html +1 -1
- package/modules/status-ui/public/style.css +2 -2
- package/modules/ui-design/public/brand/apple-touch-icon.png +0 -0
- package/modules/ui-design/public/brand/favicon.svg +1 -0
- package/modules/ui-design/public/brand/mark-body.svg +1 -0
- package/modules/ui-design/public/brand/mark-dark.svg +1 -0
- package/modules/ui-design/public/brand/mark-dot.svg +1 -0
- package/modules/ui-design/public/brand/mark-light.svg +1 -0
- package/modules/ui-design/public/brand/mark-mono.svg +1 -0
- package/modules/ui-design/public/brand/mark.svg +21 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +6 -0
- package/scripts/bongos/fitness.js +1 -2
- package/scripts/bongos/gen-brand.js +99 -0
- package/scripts/gds/gen-brand.js +7 -0
- package/src/bongos/platform-visibility-gate.js +6 -3
- package/src/bongos/prelaunch-gate.js +6 -3
- package/src/bongos/serve-internal.js +1 -0
- package/src/brand-mark.js +96 -0
- package/src/branding.js +2 -0
- package/src/hall-look.js +7 -7
- package/src/module-api.js +1 -1
- package/tests/brand_mark.mjs +195 -0
- package/tests/cloud_bongos_pack.mjs +5 -2
- package/tests/hall_loading.mjs +8 -10
- package/tests/loading_mark.mjs +7 -13
- package/tests/nav_permission_atoms.mjs +2 -1
- package/tests/raise.mjs +3 -1
- package/tests/welcome_boot.mjs +5 -2
- package/modules/raise/public/favicon.svg +0 -1
- package/modules/raise/public/logo-ink.svg +0 -1
- package/modules/raise/public/logo-night.svg +0 -1
package/tests/loading_mark.mjs
CHANGED
|
@@ -38,7 +38,8 @@ const SURFACES = {
|
|
|
38
38
|
status: { css: STATUS_CSS, loader: section(STATUS_CSS, '/* ---------- The loader (task 1005053') },
|
|
39
39
|
};
|
|
40
40
|
const flat = (s) => s.replace(/\/\*[\s\S]*?\*\//g, '').replace(/\s+/g, ' ');
|
|
41
|
-
|
|
41
|
+
// The masks are the brand folder's one-ink shapes (task 1005088), named by file.
|
|
42
|
+
const masksOf = (css) => [...css.matchAll(/url\("\/modules\/ui-design\/public\/brand\/(mark-[a-z]+\.svg)"\)/g)].map((m) => m[1]);
|
|
42
43
|
function keyframes(css, name) {
|
|
43
44
|
const m = css.match(new RegExp(`@keyframes ${name} ?\\{`));
|
|
44
45
|
assert.ok(m, `@keyframes ${name} exists`);
|
|
@@ -48,16 +49,11 @@ function keyframes(css, name) {
|
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
test('the apex loader is the bar\'s own Bongos mark, and the status loader is the same mark', () => {
|
|
51
|
-
// The apex bar
|
|
52
|
-
// two masks
|
|
52
|
+
// The apex bar and the loader are cut from the one mark (task 1005088): the bar references
|
|
53
|
+
// mark.svg, and the loader's two masks are its ring-and-core and its dot, so the loader IS the logo.
|
|
53
54
|
const bar = read(LANDING, 'account.html');
|
|
54
|
-
|
|
55
|
-
assert.
|
|
56
|
-
assert.match(bar, /<circle cx="156" cy="46" r="12" style="fill:var\(--accent\)"\/>/);
|
|
57
|
-
const [ring, dot] = masksOf(SURFACES.apex.loader);
|
|
58
|
-
assert.ok(ring.includes(`d='${arc}'`), 'the ring is the bar mark\'s arc');
|
|
59
|
-
assert.ok(ring.includes("<circle cx='100' cy='100' r='55'/>"), 'the core is the bar mark\'s core');
|
|
60
|
-
assert.ok(dot.includes("<circle cx='156' cy='46' r='12'/>"), 'the dot is the bar mark\'s dot');
|
|
55
|
+
assert.match(bar, /<svg class="bongosMark"[^>]*><use href="\/modules\/ui-design\/public\/brand\/mark\.svg#mark"\/><\/svg>/);
|
|
56
|
+
assert.deepEqual(masksOf(SURFACES.apex.loader), ['mark-body.svg', 'mark-dot.svg']);
|
|
61
57
|
// The status page has no Bongos mark of its own: its loader carries the apex's two
|
|
62
58
|
// masks byte for byte, so the two surfaces cannot drift into two logos.
|
|
63
59
|
assert.deepEqual(masksOf(SURFACES.status.loader), masksOf(SURFACES.apex.loader));
|
|
@@ -91,9 +87,7 @@ for (const [name, { css, loader }] of Object.entries(SURFACES)) {
|
|
|
91
87
|
for (const p of paints) assert.match(p, /^(var\(--[a-z-]+\)|color-mix\(in srgb, ?var\(--ink\) 30%, ?var\(--bg-card\)\))$/, `${p} is a token or a mix of one`);
|
|
92
88
|
// The one accent is the dot: the live thing on a waiting page (the One Warm Thing Rule).
|
|
93
89
|
assert.equal((css.match(/var\(--accent\)/g) || []).length, 1, 'the accent paints the dot alone');
|
|
94
|
-
|
|
95
|
-
assert.equal(masks.length, 2, 'two masks: the ring and core, and the dot');
|
|
96
|
-
for (const m of masks) assert.doesNotMatch(m.replace(/stroke='black'|fill='none'/g, ''), /fill='|stroke='|#/, 'a mask carries no colour of its own');
|
|
90
|
+
assert.deepEqual(masksOf(loader), ['mark-body.svg', 'mark-dot.svg'], 'two masks: the ring and core, and the dot');
|
|
97
91
|
});
|
|
98
92
|
|
|
99
93
|
test(`${name}: the dot shares the ring's grid cell, so no page padding can knock it off`, () => {
|
|
@@ -101,7 +101,8 @@ test('the hall-preview fixture carries every atom /me resolves', () => {
|
|
|
101
101
|
// task 1005050: Accomplishments left it (folded into Profile; its hashes redirect);
|
|
102
102
|
// task 1005051: Roadmap left it (folded into Goals; /roadmap redirects).
|
|
103
103
|
// task 1005070: the remembered nav (the rail paints before /me).
|
|
104
|
-
|
|
104
|
+
// task 1005088: the sidebar mark is drawn by reference to the one brand mark.
|
|
105
|
+
const SHELL_SHA = '2845bfedfaf7846f';
|
|
105
106
|
|
|
106
107
|
test('shell.js has not changed without its cache-bust being bumped', () => {
|
|
107
108
|
const actual = crypto.createHash('sha256').update(SHELL).digest('hex').slice(0, 16);
|
package/tests/raise.mjs
CHANGED
|
@@ -157,7 +157,9 @@ test('a stranger gets the gate, never the copy', async () => {
|
|
|
157
157
|
assert.doesNotMatch(html, /gamification of capitalism/);
|
|
158
158
|
assert.equal(r.headers.get('x-robots-tag'), 'noindex, nofollow, noarchive');
|
|
159
159
|
assert.equal((await get('/raise/media/x.mp4')).status, 401);
|
|
160
|
-
|
|
160
|
+
// the gate's logo is the shared one (task 1005088), served on every host, never a raise copy
|
|
161
|
+
assert.match(html, /src="\/modules\/ui-design\/public\/brand\/mark-light\.svg"/, 'the gate needs its logo');
|
|
162
|
+
assert.equal((await get('/raise/assets/logo-ink.svg')).status, 404, 'the old pasted copy is gone');
|
|
161
163
|
assert.match(await (await get('/raise/nda')).text(), /CONFIDENTIALITY|Confidential/i);
|
|
162
164
|
});
|
|
163
165
|
|
package/tests/welcome_boot.mjs
CHANGED
|
@@ -79,8 +79,11 @@ test('the banner is the logo, named from the branding pack, never a hardcoded wo
|
|
|
79
79
|
assert.equal(W.bannerText, undefined, 'the "Working on the core of" banner is gone');
|
|
80
80
|
const harbor = W.logoHtml({ identity: { worldName: 'Harbor', productName: 'Cloud Bongos' } });
|
|
81
81
|
assert.match(harbor, /<svg class="wb__mark"/, 'no project logo: the Bongos mark');
|
|
82
|
-
|
|
83
|
-
assert.match(harbor,
|
|
82
|
+
// the parts come from the one mark (task 1005088), whose ring carries pathLength="100"
|
|
83
|
+
assert.match(harbor, /<use class="wb__ring" href="\/modules\/ui-design\/public\/brand\/mark\.svg#mark-ring"\/>/, 'the ring can draw in');
|
|
84
|
+
assert.match(harbor, /<use class="wb__planet" href="[^"]*#mark-disc"\/>/, 'the planet');
|
|
85
|
+
assert.match(harbor, /<use class="wb__moonlet" href="[^"]*#mark-dot"\/>/, 'the moon');
|
|
86
|
+
assert.match(fs.readFileSync(path.join(ROOT, 'modules', 'ui-design', 'public', 'brand', 'mark.svg'), 'utf8'), /id="mark-ring"[^>]*pathLength="100"/);
|
|
84
87
|
assert.match(harbor, /<span class="wb__name">Harbor<\/span>/);
|
|
85
88
|
assert.match(W.logoHtml(undefined), /<span class="wb__name">this project<\/span>/, 'no branding: still a name');
|
|
86
89
|
const own = W.logoHtml({ identity: { worldName: 'Harbor' }, theme: { logo: '/logo.png?a="b"' } });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><style>.p{fill:#17181a}.r{stroke:#17181a}@media (prefers-color-scheme:dark){.p{fill:#e2e1e4}.r{stroke:#e2e1e4}}</style><path class="r" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke-width="24" stroke-linecap="round"/><circle class="p" cx="100" cy="100" r="50"/><circle cx="156" cy="46" r="18" fill="#fb9569"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img" aria-label="Cloud Bongos"><path d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/><circle cx="100" cy="100" r="55" fill="#17181a"/><circle cx="156" cy="46" r="12" fill="#fb9569"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img" aria-label="Cloud Bongos"><path d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#e2e1e4" stroke-width="15" stroke-linecap="round"/><circle cx="100" cy="100" r="55" fill="#e2e1e4"/><circle cx="156" cy="46" r="12" fill="#fb9569"/></svg>
|