diff --git a/.branding b/.branding index 7cb3718b8b..7f1c9ecbe7 100644 --- a/.branding +++ b/.branding @@ -1,2 +1,2 @@ -https://github.com/Keavon/graphite-branded-assets/archive/8cd7cf811d36228a2eb7ce741adc3c745632a6e7.tar.gz -17a7cd32dda4afd893c65e1fb6757f1ecf760702217f647d1c680db8d92643ef +https://github.com/Keavon/graphite-branded-assets/archive/f44aa2f362ae4fed8d634878b817a1d3948a7dcb.tar.gz +dffe2b483e491979ef57c320d61446ada5400ef73ff26582976631d9c36efefc diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ae7513f203..a059b6e5f0 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -32,12 +32,12 @@ "process": "^0.11.10", "rollup-plugin-license": "^3.6.0", "sass": "^1.97.2", - "svelte": "5.46.4", + "svelte": "5.47.1", "svelte-preprocess": "^6.0.3", - "tar": "^7.5.3", + "tar": "^7.5.4", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "typescript-eslint": "^8.53.0", + "typescript-eslint": "^8.53.1", "vite": "^7.3.1", "vite-multiple-assets": "2.2.6" } @@ -1722,17 +1722,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz", - "integrity": "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz", + "integrity": "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/type-utils": "8.53.0", - "@typescript-eslint/utils": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/type-utils": "8.53.1", + "@typescript-eslint/utils": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -1745,7 +1745,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.53.0", + "@typescript-eslint/parser": "^8.53.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -1761,16 +1761,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.0.tgz", - "integrity": "sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz", + "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "debug": "^4.4.3" }, "engines": { @@ -1786,14 +1786,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.0.tgz", - "integrity": "sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz", + "integrity": "sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.53.0", - "@typescript-eslint/types": "^8.53.0", + "@typescript-eslint/tsconfig-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", "debug": "^4.4.3" }, "engines": { @@ -1808,14 +1808,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", - "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz", + "integrity": "sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0" + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1826,9 +1826,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz", - "integrity": "sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz", + "integrity": "sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==", "dev": true, "license": "MIT", "engines": { @@ -1843,15 +1843,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz", - "integrity": "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz", + "integrity": "sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/utils": "8.53.0", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -1868,9 +1868,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", - "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz", + "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", "dev": true, "license": "MIT", "engines": { @@ -1882,16 +1882,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", - "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz", + "integrity": "sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.53.0", - "@typescript-eslint/tsconfig-utils": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/project-service": "8.53.1", + "@typescript-eslint/tsconfig-utils": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -1949,16 +1949,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", - "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz", + "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0" + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1973,13 +1973,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", - "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz", + "integrity": "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/types": "8.53.1", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -6260,9 +6260,9 @@ } }, "node_modules/svelte": { - "version": "5.46.4", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.4.tgz", - "integrity": "sha512-VJwdXrmv9L8L7ZasJeWcCjoIuMRVbhuxbss0fpVnR8yorMmjNDwcjIH08vS6wmSzzzgAG5CADQ1JuXPS2nwt9w==", + "version": "5.47.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.47.1.tgz", + "integrity": "sha512-MhSWfWEpG5T57z0Oyfk9D1GhAz/KTZKZZlWtGEsy9zNk2fafpuU7sJQlXNSA8HtvwKxVC9XlDyl5YovXUXjjHA==", "dev": true, "license": "MIT", "dependencies": { @@ -6389,9 +6389,9 @@ } }, "node_modules/tar": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.3.tgz", - "integrity": "sha512-ENg5JUHUm2rDD7IvKNFGzyElLXNjachNLp6RaGf4+JOgxXHkqA+gq81ZAMCUmtMtqBsoU62lcp6S27g1LCYGGQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.4.tgz", + "integrity": "sha512-AN04xbWGrSTDmVwlI4/GTlIIwMFk/XEv7uL8aa57zuvRy6s4hdBed+lVq2fAZ89XDa7Us3ANXcE3Tvqvja1kTA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6629,16 +6629,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.0.tgz", - "integrity": "sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.1.tgz", + "integrity": "sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/utils": "8.53.0" + "@typescript-eslint/eslint-plugin": "8.53.1", + "@typescript-eslint/parser": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/frontend/package.json b/frontend/package.json index a43eeedb0c..e90047f897 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -57,12 +57,12 @@ "process": "^0.11.10", "rollup-plugin-license": "^3.6.0", "sass": "^1.97.2", - "svelte": "5.46.4", + "svelte": "5.47.1", "svelte-preprocess": "^6.0.3", - "tar": "^7.5.3", + "tar": "^7.5.4", "ts-node": "^10.9.2", "typescript": "^5.9.3", - "typescript-eslint": "^8.53.0", + "typescript-eslint": "^8.53.1", "vite": "^7.3.1", "vite-multiple-assets": "2.2.6" }, diff --git a/frontend/src/icons.ts b/frontend/src/icons.ts index a21e6d8fb4..dad43d174f 100644 --- a/frontend/src/icons.ts +++ b/frontend/src/icons.ts @@ -11,6 +11,7 @@ import Checkmark from "@branding/assets/icon-12px-solid/checkmark.svg"; import Clipped from "@branding/assets/icon-12px-solid/clipped.svg"; import CloseX from "@branding/assets/icon-12px-solid/close-x.svg"; import Delay from "@branding/assets/icon-12px-solid/delay.svg"; +import DotThick from "@branding/assets/icon-12px-solid/dot-thick.svg"; import Dot from "@branding/assets/icon-12px-solid/dot.svg"; import DropdownArrow from "@branding/assets/icon-12px-solid/dropdown-arrow.svg"; import Edit12px from "@branding/assets/icon-12px-solid/edit-12px.svg"; @@ -59,6 +60,7 @@ const SOLID_12PX = { CloseX: { svg: CloseX, size: 12 }, Delay: { svg: Delay, size: 12 }, Dot: { svg: Dot, size: 12 }, + DotThick: { svg: DotThick, size: 12 }, DropdownArrow: { svg: DropdownArrow, size: 12 }, Edit12px: { svg: Edit12px, size: 12 }, Empty12px: { svg: Empty12px, size: 12 }, @@ -159,7 +161,6 @@ import NodeBlur from "@branding/assets/icon-16px-solid/node-blur.svg"; import NodeBrushwork from "@branding/assets/icon-16px-solid/node-brushwork.svg"; import NodeColorCorrection from "@branding/assets/icon-16px-solid/node-color-correction.svg"; import NodeGradient from "@branding/assets/icon-16px-solid/node-gradient.svg"; -import NodeImaginate from "@branding/assets/icon-16px-solid/node-imaginate.svg"; import NodeMagicWand from "@branding/assets/icon-16px-solid/node-magic-wand.svg"; import NodeMask from "@branding/assets/icon-16px-solid/node-mask.svg"; import NodeMotionBlur from "@branding/assets/icon-16px-solid/node-motion-blur.svg"; @@ -278,7 +279,6 @@ const SOLID_16PX = { NodeBrushwork: { svg: NodeBrushwork, size: 16 }, NodeColorCorrection: { svg: NodeColorCorrection, size: 16 }, NodeGradient: { svg: NodeGradient, size: 16 }, - NodeImaginate: { svg: NodeImaginate, size: 16 }, NodeMagicWand: { svg: NodeMagicWand, size: 16 }, NodeMask: { svg: NodeMask, size: 16 }, NodeMotionBlur: { svg: NodeMotionBlur, size: 16 }, @@ -377,7 +377,6 @@ import RasterBrushTool from "@branding/assets/icon-24px-two-tone/raster-brush-to import RasterCloneTool from "@branding/assets/icon-24px-two-tone/raster-clone-tool.svg"; import RasterDetailTool from "@branding/assets/icon-24px-two-tone/raster-detail-tool.svg"; import RasterHealTool from "@branding/assets/icon-24px-two-tone/raster-heal-tool.svg"; -import RasterImaginateTool from "@branding/assets/icon-24px-two-tone/raster-imaginate-tool.svg"; import RasterPatchTool from "@branding/assets/icon-24px-two-tone/raster-patch-tool.svg"; import RasterRelightTool from "@branding/assets/icon-24px-two-tone/raster-relight-tool.svg"; import VectorEllipseTool from "@branding/assets/icon-24px-two-tone/vector-ellipse-tool.svg"; @@ -401,7 +400,6 @@ const TWO_TONE_24PX = { RasterCloneTool: { svg: RasterCloneTool, size: 24 }, RasterDetailTool: { svg: RasterDetailTool, size: 24 }, RasterHealTool: { svg: RasterHealTool, size: 24 }, - RasterImaginateTool: { svg: RasterImaginateTool, size: 24 }, RasterPatchTool: { svg: RasterPatchTool, size: 24 }, RasterRelightTool: { svg: RasterRelightTool, size: 24 }, VectorEllipseTool: { svg: VectorEllipseTool, size: 24 }, diff --git a/node-graph/nodes/gstd/test-image-1-result.png b/node-graph/nodes/gstd/test-image-1-result.png deleted file mode 100644 index 0089fa3011..0000000000 Binary files a/node-graph/nodes/gstd/test-image-1-result.png and /dev/null differ diff --git a/node-graph/nodes/gstd/test-image-1.png b/node-graph/nodes/gstd/test-image-1.png deleted file mode 100644 index 81383123d9..0000000000 Binary files a/node-graph/nodes/gstd/test-image-1.png and /dev/null differ diff --git a/website/.build-scripts/install-fonts.ts b/website/.build-scripts/install.ts similarity index 74% rename from website/.build-scripts/install-fonts.ts rename to website/.build-scripts/install.ts index ba1b63b779..87b08a9b04 100644 --- a/website/.build-scripts/install-fonts.ts +++ b/website/.build-scripts/install.ts @@ -1,9 +1,12 @@ /* eslint-disable no-console */ import fs from "fs"; +import type { IncomingMessage } from "http"; import https from "https"; import path from "path"; +import * as tar from "tar"; + // Define basePath as the directory of the current script const basePath = import.meta.dirname; @@ -185,11 +188,65 @@ https } fs.writeFileSync(textBalancerDest, data, "utf8"); console.log(`Downloaded and saved: ${textBalancerDest}`); + res.destroy(); // Close the connection } catch (error) { console.error("Error saving text-balancer.js:", error); + res.destroy(); // Close the connection } }); }) .on("error", (err) => { console.error("Error downloading text-balancer.js:", err); }); + +// Fetch all favicon files from the /favicons directory of the Graphite Branded Assets repo and save them within ../static/ +// The URL of the repo is the first line of ../../.branding which is a .tar.gz file that we extract with the "tar" npm package +const brandingFilePath = path.join(basePath, "..", "..", ".branding"); +if (!fs.existsSync(brandingFilePath)) console.error("\nThe `.branding` file was not found"); +const brandingRepoUrl = fs.readFileSync(brandingFilePath, "utf8").split("\n")[0].trim(); +console.log("\nFetching favicons from branding repo:", brandingRepoUrl); +downloadWithRedirects( + brandingRepoUrl, + (res) => { + if (res.statusCode !== 200) { + console.error(`Failed to download branding repo. Status code: ${res.statusCode}`); + res.resume(); + return; + } + + // Pipe the response stream into tar to extract only the /favicons directory + const extract = tar.extract({ + cwd: path.join(basePath, "../static/"), + filter: (path) => path.includes("/favicons/"), + strip: 2, // Remove leading directory components + }); + + res.pipe(extract); + + extract.on("finish", () => { + console.log("Favicons extracted to ../static/ successfully!"); + res.destroy(); // Close the connection + }); + + extract.on("error", (err) => { + console.error("Error extracting favicons:", err); + res.destroy(); // Close the connection + }); + }, + (err) => console.error("Error downloading branding repo:", err), +); +function downloadWithRedirects(url: string, callback: (res: IncomingMessage) => void, errorCallback: (err: Error) => void) { + https + .get(url, (res) => { + if (res.statusCode === 302 || res.statusCode === 301) { + console.log("Redirected to:", res.headers.location); + res.destroy(); // Close the connection + + // Follow the redirect + return downloadWithRedirects(res.headers.location || "", callback, errorCallback); + } + console.log("Final URL reached:", url); + callback(res); + }) + .on("error", errorCallback); +} diff --git a/website/.gitignore b/website/.gitignore index 0fae7a6dd2..ec007841ba 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -1,4 +1,4 @@ node_modules/ public/ -static/fonts/ -static/text-balancer.js +static/ +!static/js/ diff --git a/website/LICENSE.txt b/website/LICENSE.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/website/content/_index.md b/website/content/_index.md index 9762866ad6..e90cbb23f6 100644 --- a/website/content/_index.md +++ b/website/content/_index.md @@ -393,16 +393,16 @@ Blend across color schemes. Morph shapes before they're scattered around the can ## Geared for generative pipelines -Graphite's representation of artwork as a node graph lets you customize, compose, reuse, share, and automate your content workflows: +Graphite's representation of artwork as a node graph lets you customize, compose, automate, reuse, and share your content workflows.
-