diff --git a/docs/assets/brand/checksums.txt b/docs/assets/brand/checksums.txt index 80fb0a7..a3e6b95 100644 --- a/docs/assets/brand/checksums.txt +++ b/docs/assets/brand/checksums.txt @@ -1,21 +1,22 @@ -298658c5507dd8acacfa0b2c26b0cd00b612f0932698e4223f0a8a97957fafed apple-touch-icon.png -4205e96a25955ce59c730fd380e45db18b153e152424661df1822ed296ccaf1c favicon.ico -4ec733f9542323f6d2840ba743c4a11df4d416a7efa1d214567d62b58653619b favicon.svg -4ec733f9542323f6d2840ba743c4a11df4d416a7efa1d214567d62b58653619b glyph-color.svg -03f6342931d1660554b44bb5704aeb4639fa5fb6d12dbf6286418ecfaeddc654 glyph-monochrome.svg -dc08a6ba51a2a8e9cb82d56f900ef2de9330ac72fbb3c727e0436a4ab2f3944f glyph-reversed.svg -f5cba92cab71ae542c297205daca2f50bf7a64279da964a0239f85b062b7e36d icons/icon-16.png -298658c5507dd8acacfa0b2c26b0cd00b612f0932698e4223f0a8a97957fafed icons/icon-180.png -8e9148efe85095d304c182fe0fe3fa2a2b44bcfe2a4e26077c21947baf92be96 icons/icon-192.png -3c696ba85751c9a9e805141adf07242f495d8ffc115b2477074862a3843a19fa icons/icon-32.png -bfa28751bd6e26e47dfb8458a23d309082bb7db6e293957438ac02fdd4af0fa8 icons/icon-48.png -3004387fcbc066076f70f383e74e11e9a94f6cd771e032ca8ff993daede614dc icons/icon-512.png -905cf0a05ab5d3787bc02ff7d4591bfa020d72aefdd0e0d0c53271da6d3f383c lockup-endorsed.svg -ee4822f0054f88b5a386dc53d5034af1577309b0425e78ed2af85167e8467aa2 lockup.svg -90062f969fca1da22b05ec5d3f92bbc0f46e736b473351078e54317df19c41be maskable-192.png -18b8c7957b532b78ef631fca894a245bc4bd1eb7a36255e6ec1a7da857b698c0 maskable-512.png -affd93edb1d511780bad26de47cc673a5e93014967916029dd8db68ef9ec394e og.png -8e9148efe85095d304c182fe0fe3fa2a2b44bcfe2a4e26077c21947baf92be96 pwa-192.png -3004387fcbc066076f70f383e74e11e9a94f6cd771e032ca8ff993daede614dc pwa-512.png -481391d02b1f50ed6dba1790c0899bcc7d16948421bba66778756a89921b5dbb readme-header.png +262bdf7d2028fd50c95876ff1ffebe83c44ac75b8476f7ab399e106adf56e6e4 apple-touch-icon.png +22bbfcdf8fd518251f5d8ecc8aa8b4398a4e795d2eb3b087af5221f90c0f6b7b favicon.ico +db727c53441d059a57d3de4b1201a3681b71b57b9e1854d32881617caa57d236 favicon.svg +db727c53441d059a57d3de4b1201a3681b71b57b9e1854d32881617caa57d236 glyph-color.svg +c75fd1518d1ffc58577638d29f94552d3609872cc64a2e0e22256dcf7c24fcdc glyph-dark.svg +25e0af113d565f4980e523dbcb0086c1b0a79193d730aee99c8ac954d0720ee3 glyph-monochrome.svg +0d68b20d404b13618b97170d700f07d60e78a072db6e9553df964b7b0a85593f glyph-reversed.svg +d6f2107b861a03997bf3f4b23d87d282b972a58a78660843db75869c41da064f icons/icon-16.png +262bdf7d2028fd50c95876ff1ffebe83c44ac75b8476f7ab399e106adf56e6e4 icons/icon-180.png +d081aea386a44ee0e40aad3ea335e82440879e64b5346a1e7344cc9011336ccd icons/icon-192.png +97d8ab1c024a3df324a05b603a8891de5e7101238958c92fe24242b5e80ae26c icons/icon-32.png +d41d334a9e0f942326e6f8a81195fca4c0da71f318c3a8ae885c46ec3bae9b48 icons/icon-48.png +1e88a9916f0563942bdba0856fff5f5b64b0d61482f19c0723f7c39e949d2eff icons/icon-512.png +513474611e05d422c63b15d0de3561435fc6b23b135ba1f7831c75bd7e634b5a lockup-endorsed.svg +ae09943668238698560691c3d0eca99d15a495452bfb08e8cd57df0d9bb1fada lockup.svg +acbec711dc70cca6dacffa56778be2ba89b7b198ebcba188f3b9cc8da1082b66 maskable-192.png +9b82ead82da584464a6563c41b85a4a3b36da8f47e382ab15d3885f3223cdc68 maskable-512.png +96fb0eebc5da137e1a99bc3f58ef6f568f13eede79778f0e0a1b56ab143a304b og.png +d081aea386a44ee0e40aad3ea335e82440879e64b5346a1e7344cc9011336ccd pwa-192.png +1e88a9916f0563942bdba0856fff5f5b64b0d61482f19c0723f7c39e949d2eff pwa-512.png +7abcef4d8a4a2d58cba15cec977d86a46ff96970700b9cce2ca47f67814ee76f readme-header.png 27a520d8daf6752076ac90d52b611034af0d2e29a8167e3e1ef7d4f0246b52e9 wordmark.svg diff --git a/docs/assets/brand/project-lockup.svg b/docs/assets/brand/project-lockup.svg index 906db47..9d70a1e 100644 --- a/docs/assets/brand/project-lockup.svg +++ b/docs/assets/brand/project-lockup.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/assets/brand/project-mark.svg b/docs/assets/brand/project-mark.svg index e7b2f73..5017d12 100644 --- a/docs/assets/brand/project-mark.svg +++ b/docs/assets/brand/project-mark.svg @@ -1 +1 @@ -numkey \ No newline at end of file +numkey \ No newline at end of file diff --git a/docs/assets/brand/readme-header.png b/docs/assets/brand/readme-header.png index bf795f9..2cd74e4 100644 Binary files a/docs/assets/brand/readme-header.png and b/docs/assets/brand/readme-header.png differ diff --git a/scripts/check-brand-assets.mjs b/scripts/check-brand-assets.mjs index 07712ab..5ce1f31 100644 --- a/scripts/check-brand-assets.mjs +++ b/scripts/check-brand-assets.mjs @@ -6,17 +6,20 @@ import assert from 'node:assert/strict' const root = resolve(import.meta.dirname, '..') const read = (file) => readFile(resolve(root, file), 'utf8') const hash = async (file) => createHash('sha256').update(await readFile(resolve(root, file))).digest('hex') +const normalizedTextHash = async (file) => createHash('sha256') + .update((await read(file)).replace(/\r\n/g, '\n')) + .digest('hex') const assets = { - 'docs/assets/brand/project-mark.svg': '4ec733f9542323f6d2840ba743c4a11df4d416a7efa1d214567d62b58653619b', - 'docs/assets/brand/project-lockup.svg': '905cf0a05ab5d3787bc02ff7d4591bfa020d72aefdd0e0d0c53271da6d3f383c', - 'docs/assets/brand/readme-header.png': '481391d02b1f50ed6dba1790c0899bcc7d16948421bba66778756a89921b5dbb', - 'site/favicon.svg': '4ec733f9542323f6d2840ba743c4a11df4d416a7efa1d214567d62b58653619b', - 'site/favicon.ico': '4205e96a25955ce59c730fd380e45db18b153e152424661df1822ed296ccaf1c', - 'site/apple-touch-icon.png': '298658c5507dd8acacfa0b2c26b0cd00b612f0932698e4223f0a8a97957fafed', - 'site/og.png': 'affd93edb1d511780bad26de47cc673a5e93014967916029dd8db68ef9ec394e', - 'site/project-mark-color.svg': '4ec733f9542323f6d2840ba743c4a11df4d416a7efa1d214567d62b58653619b', - 'site/project-mark-reversed.svg': 'dc08a6ba51a2a8e9cb82d56f900ef2de9330ac72fbb3c727e0436a4ab2f3944f', + 'docs/assets/brand/project-mark.svg': 'db727c53441d059a57d3de4b1201a3681b71b57b9e1854d32881617caa57d236', + 'docs/assets/brand/project-lockup.svg': '513474611e05d422c63b15d0de3561435fc6b23b135ba1f7831c75bd7e634b5a', + 'docs/assets/brand/readme-header.png': '7abcef4d8a4a2d58cba15cec977d86a46ff96970700b9cce2ca47f67814ee76f', + 'site/favicon.svg': 'db727c53441d059a57d3de4b1201a3681b71b57b9e1854d32881617caa57d236', + 'site/favicon.ico': '22bbfcdf8fd518251f5d8ecc8aa8b4398a4e795d2eb3b087af5221f90c0f6b7b', + 'site/apple-touch-icon.png': '262bdf7d2028fd50c95876ff1ffebe83c44ac75b8476f7ab399e106adf56e6e4', + 'site/og.png': '96fb0eebc5da137e1a99bc3f58ef6f568f13eede79778f0e0a1b56ab143a304b', + 'site/project-mark-color.svg': 'db727c53441d059a57d3de4b1201a3681b71b57b9e1854d32881617caa57d236', + 'site/project-mark-reversed.svg': '0d68b20d404b13618b97170d700f07d60e78a072db6e9553df964b7b0a85593f', } for (const [file, expected] of Object.entries(assets)) { @@ -24,12 +27,12 @@ for (const [file, expected] of Object.entries(assets)) { } const checksumFile = 'docs/assets/brand/checksums.txt' -assert.equal(await hash(checksumFile), 'f1c266d086750eed1fc053e10e858ad9d33c3227d468b823cc7c7d8ca2f4a1ed', 'vendored O04 checksums.txt must remain exact') +assert.equal(await normalizedTextHash(checksumFile), '82b477d3da36c335e5c189ea0af1626d164eeaa43e061997fb846d09e7ed685d', 'vendored O04 checksums.txt must remain exact across line-ending policies') const checksums = await read(checksumFile) for (const [asset, expected] of Object.entries({ - 'glyph-color.svg': '4ec733f9542323f6d2840ba743c4a11df4d416a7efa1d214567d62b58653619b', - 'lockup-endorsed.svg': '905cf0a05ab5d3787bc02ff7d4591bfa020d72aefdd0e0d0c53271da6d3f383c', - 'readme-header.png': '481391d02b1f50ed6dba1790c0899bcc7d16948421bba66778756a89921b5dbb', + 'glyph-color.svg': 'db727c53441d059a57d3de4b1201a3681b71b57b9e1854d32881617caa57d236', + 'lockup-endorsed.svg': '513474611e05d422c63b15d0de3561435fc6b23b135ba1f7831c75bd7e634b5a', + 'readme-header.png': '7abcef4d8a4a2d58cba15cec977d86a46ff96970700b9cce2ca47f67814ee76f', })) { assert.match(checksums, new RegExp(`${expected} ${asset}`), `checksums.txt must declare ${asset}`) } diff --git a/site/apple-touch-icon.png b/site/apple-touch-icon.png index 46d81b0..b62ff37 100644 Binary files a/site/apple-touch-icon.png and b/site/apple-touch-icon.png differ diff --git a/site/favicon.ico b/site/favicon.ico index 6ca6a49..320f463 100644 Binary files a/site/favicon.ico and b/site/favicon.ico differ diff --git a/site/favicon.svg b/site/favicon.svg index e7b2f73..5017d12 100644 --- a/site/favicon.svg +++ b/site/favicon.svg @@ -1 +1 @@ -numkey \ No newline at end of file +numkey \ No newline at end of file diff --git a/site/og.png b/site/og.png index 68df74f..c8ad61d 100644 Binary files a/site/og.png and b/site/og.png differ diff --git a/site/project-lockup.svg b/site/project-lockup.svg index 906db47..9d70a1e 100644 --- a/site/project-lockup.svg +++ b/site/project-lockup.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/site/project-mark-color.svg b/site/project-mark-color.svg index e7b2f73..5017d12 100644 --- a/site/project-mark-color.svg +++ b/site/project-mark-color.svg @@ -1 +1 @@ -numkey \ No newline at end of file +numkey \ No newline at end of file diff --git a/site/project-mark-reversed.svg b/site/project-mark-reversed.svg index 5ecf391..100793d 100644 --- a/site/project-mark-reversed.svg +++ b/site/project-mark-reversed.svg @@ -1 +1 @@ -numkey \ No newline at end of file +numkey \ No newline at end of file