diff --git a/website/content/blog/2024-9-30-graphite-progress-report-q3-2024.md b/website/content/blog/2024-9-30-graphite-progress-report-q3-2024.md
new file mode 100644
index 0000000000..60650c0f7a
--- /dev/null
+++ b/website/content/blog/2024-9-30-graphite-progress-report-q3-2024.md
@@ -0,0 +1,297 @@
++++
+title = "Graphite progress report (Q3 2024)"
+date = 2024-09-30
+[extra]
+banner = "ToDo"
+banner_png = "ToDo"
+author = "Keavon Chambers"
+summary = "Graphite's Q3 2024 update introduces node graph organisation, non destructive vector editing, and faster boolean operations."
+reddit = "ToDo"
+twitter = "ToDo"
++++
+
+[Graphite](/), an open source 2D procedural graphics editor, has spent the months of July, August, and September introducing node graph organisation, non destructive vector editing, faster boolean operations, and many more improvements.
+
+In this quater we have continued iterating on the usability of our unqiue node powered vector workflow. As we reach the conclusion of the [Google Summer of Code](/blog/graphite-internships-announcing-participation-in-gsoc-2024/) projects, we now have a polished node graph organisation system, a working RAW image pipeline (not yet in the editor), and a WebGPU based renderer (File -> Preferences -> Vello). Thanks to the students for their hard work on this and to Google's open source team for sponsoring.
+
+
+
+This is the third of our quarterly progress report blog posts. If you missed the [last one](../graphite-progress-report-q2-2024), be sure to check it out as well. If you'd like to help speed up future progress, please consider [getting involved](/volunteer) with code, QA/bug testing, or art/marketing projects. [Donations](/donate) are also valued, as are [stars of GitHub](https://github.com/GraphiteEditor/Graphite). Follow along and partake in our [Discord community](https://discord.graphite.rs), too.
+
+All Q3 2024 commits may be [viewed in this list](https://github.com/GraphiteEditor/Graphite/commits/master/?since=2024-07-01&until=2024-09-30) and all noteworthy changes are detailed below.
+
+## Additions
+
+
+
+- Nondestructive vector editing ([#1676](https://github.com/GraphiteEditor/Graphite/pull/1676))
+
+- Basic artboard snapping ([#1734](https://github.com/GraphiteEditor/Graphite/pull/1734))
+
+
+- Draggable upstream nodes feature ([#1812](https://github.com/GraphiteEditor/Graphite/pull/1812))
+
+- Stack-based Boolean Operation layer node ([#1813](https://github.com/GraphiteEditor/Graphite/pull/1813))
+
+- Scope API ([#1814](https://github.com/GraphiteEditor/Graphite/pull/1814))
+
+- Graph breadcrumb trail button ([commit 8e774ef](https://github.com/GraphiteEditor/Graphite/commit/8e774efe9dae51c0c1db2928e22c6de5b93d0584))
+
+- Integrate Vello for vector rendering ([#1802](https://github.com/GraphiteEditor/Graphite/pull/1802))
+
+- Add caching to boolean operations ([commit 6ecb173](https://github.com/GraphiteEditor/Graphite/commit/6ecb173c1c06807f13a859ef90b7d7f43af042be))
+
+- Gradient rendering with Vello ([#1865](https://github.com/GraphiteEditor/Graphite/pull/1865))
+
+- Memoize hashing ([#1876](https://github.com/GraphiteEditor/Graphite/pull/1876))
+
+- Artboard names in the export dialog with persistant settings ([commit 4d3e459](https://github.com/GraphiteEditor/Graphite/commit/4d3e459f1f52f04be81727fe5946010bcabeb1eb))
+
+- "Painted Dreams" demo artwork (and retire Just a Potted Cactus) ([commit 80cf486](https://github.com/GraphiteEditor/Graphite/commit/80cf486790d9300510904622924162a9b4017b1e))
+
+- Layer node chains, import/export edge connectors, and refactor graph editing to go through a NodeNetworkInterface ([#1794](https://github.com/GraphiteEditor/Graphite/pull/1794))
+
+- Distribute and algin snapping ([#1793](https://github.com/GraphiteEditor/Graphite/pull/1793))
+
+- Quick measure overlays with Alt pressed ([#1894](https://github.com/GraphiteEditor/Graphite/pull/1894))
+
+- Seed parameters to all nodes with RNG ([commit c39032a](https://github.com/GraphiteEditor/Graphite/commit/c39032ab548d4f33d18a399c64b77d3d6f4ecd45))
+
+- New nodes: Blend Colors, Percentage Value ([commit d7546fb](https://github.com/GraphiteEditor/Graphite/commit/d7546fb18310490d5ce10d406e7a3faaf1ae98fe))
+
+- Raw-rs: add post-processing steps ([#1923](https://github.com/GraphiteEditor/Graphite/pull/1923))
+
+- Raw-rs: use camera white balance when available ([#1941](https://github.com/GraphiteEditor/Graphite/pull/1941))
+
+- Add path-bool library ([#1952](https://github.com/GraphiteEditor/Graphite/pull/1952))
+
+- Add drag-and-drop and copy-paste file importing/opening throughout the UI ([#2012](https://github.com/GraphiteEditor/Graphite/pull/2012))
+
+# Fixes
+
+- Fix rulers showing in the wrong spot when initially opening a document ([#1801](https://github.com/GraphiteEditor/Graphite/pull/1801))
+
+- Restore backwards compatibility broken with #1750 to prepare next release ([commit 621f469](https://github.com/GraphiteEditor/Graphite/commit/621f469a150d4a14c86ba9be87df82aae5dded74))
+
+- Fix multi-subpath boolean operations ([#1804](https://github.com/GraphiteEditor/Graphite/pull/1804))
+
+- Fix bug causing some node outputs to fail connecting wires to other inputs ([commit 84d7262](https://github.com/GraphiteEditor/Graphite/commit/84d72621e545ba7743e38d46ce1607133bb13461))
+
+- Fix 'Zoom with Scroll' not working after a page refresh ([#1807](https://github.com/GraphiteEditor/Graphite/pull/1807))
+
+- Fix Pen and Freehand tool path extension ([#1809](https://github.com/GraphiteEditor/Graphite/pull/1809))
+
+- Reorganize cargo dependencies and upgrade most of them ([#1815](https://github.com/GraphiteEditor/Graphite/pull/1815))
+
+- Fix a lot of Clippy warnings ([#1808](https://github.com/GraphiteEditor/Graphite/pull/1808))
+
+- Disable snapping by default as a bug mitigation, and assorted cleanup ([commit a17ed68](https://github.com/GraphiteEditor/Graphite/commit/a17ed68008ab9d16f929fac2d23fc98367d7e151))
+
+
+- Fix snapping bug where snapped-together shapes couldn't be moved ([#1818](https://github.com/GraphiteEditor/Graphite/pull/1818))
+
+- Apply the graphic group transform in the boolean node ([#1825](https://github.com/GraphiteEditor/Graphite/pull/1825))
+
+- Remove artboard from graphic element ([#1824](https://github.com/GraphiteEditor/Graphite/pull/1824))
+
+- Insert transform node on groups ([#1829](https://github.com/GraphiteEditor/Graphite/pull/1829))
+
+- Finish removing GraphicElement::Artboard started in #1824 ([#1830](https://github.com/GraphiteEditor/Graphite/pull/1830))
+
+- Simplify build process by auto-installing npm packages and simplify the contributor guide ([#1799](https://github.com/GraphiteEditor/Graphite/pull/1799))
+
+- Restore functionality of GPU infrastructure ([#1797](https://github.com/GraphiteEditor/Graphite/pull/1797))
+
+- Fix Rust-Analyzer conflicts with build targets and other compile speed issues ([commit 857bc77](https://github.com/GraphiteEditor/Graphite/commit/857bc772de8c5731a2eaf7f442beb573ccf8ca4c))
+
+- Update dependencies and lock files ([#1841](https://github.com/GraphiteEditor/Graphite/pull/1841))
+
+- Fix breakage of shallow select mode in the Select tool ([#1843](https://github.com/GraphiteEditor/Graphite/pull/1843))
+
+- Fix graph not being resent after Ctrl+D node duplication ([#1852](https://github.com/GraphiteEditor/Graphite/pull/1852))
+
+- Disable Vello renderer checkbox in preferences if browser doesn't support WebGPU ([#1844](https://github.com/GraphiteEditor/Graphite/pull/1844))
+
+- Fix Layers panel UI not updating on selection change and expand/collapsing ([#1847](https://github.com/GraphiteEditor/Graphite/pull/1847))
+
+- Fix, document, and update npm dependencies and tooling; fix Bezier-rs demos not building ([#1857](https://github.com/GraphiteEditor/Graphite/pull/1857))
+
+- Fix spelling in several code comments ([#1860](https://github.com/GraphiteEditor/Graphite/pull/1860))
+
+- Fix rendering of non closed paths and improve bbox calculation ([#1859](https://github.com/GraphiteEditor/Graphite/pull/1859))
+
+- Serialize documents with images in linear space instead of sRGB ([#1856](https://github.com/GraphiteEditor/Graphite/pull/1856))
+
+- Fix grid overlay color showing as none ([commit a4a5139](https://github.com/GraphiteEditor/Graphite/commit/a4a513911dac29ee5c6546842be194b1513f2cec))
+
+- Fix viewport bounds getting out of sync at times, like when toggling rulers ([commit 0617759](https://github.com/GraphiteEditor/Graphite/commit/06177597ae8ef52f7a273875d6afb63fb09ec3c8))
+
+- Sandbox node graph execution on native targets and attempt recovery from panics on Wasm ([#1846](https://github.com/GraphiteEditor/Graphite/pull/1846))
+
+- Fix Vello rendering of transforms for nested graphic groups ([#1871](https://github.com/GraphiteEditor/Graphite/pull/1871))
+
+- Apply opacity and blend modes to individual layers in Vello ([#1874](https://github.com/GraphiteEditor/Graphite/pull/1874))
+
+- Improve rendered SVG output syntax for better compatibility and terseness ([#1880](https://github.com/GraphiteEditor/Graphite/pull/1880))
+
+- Apply correct stroke styling with Vello ([#1875](https://github.com/GraphiteEditor/Graphite/pull/1875))
+
+- Blog post: Graphite progress report (Q2 2024) ([#1805](https://github.com/GraphiteEditor/Graphite/pull/1805))
+
+- Use a coarse bounding box to avoid a detailed check for intersection when clicking artwork ([#1887](https://github.com/GraphiteEditor/Graphite/pull/1887))
+
+- Switch to MSAA for Vello rendering for better anti-aliasing ([#1899](https://github.com/GraphiteEditor/Graphite/pull/1899))
+
+- Make Vello render groups with a blending stack only when necessary ([#1905](https://github.com/GraphiteEditor/Graphite/pull/1905))
+
+- Restructure window state management and fix Vello canvas not resizing with viewport ([#1900](https://github.com/GraphiteEditor/Graphite/pull/1900))
+
+- Correctly set the dimensions of the SVG foreignObject container for the Vello canvas ([#1907](https://github.com/GraphiteEditor/Graphite/pull/1907))
+
+- Set Vello to render an explicit background color behind artboards ([#1902](https://github.com/GraphiteEditor/Graphite/pull/1902))
+
+- Integrate raw WGPU textures into Vello rendering pipeline ([#1897](https://github.com/GraphiteEditor/Graphite/pull/1897))
+
+- Fix regressions from network interface PR ([#1906](https://github.com/GraphiteEditor/Graphite/pull/1906))
+
+- Restore the Imaginate node with the full node graph architecture (but a flaky deadlock remains) ([#1908](https://github.com/GraphiteEditor/Graphite/pull/1908))
+
+- Refactor document node type lookup function to fix performance degradation over time ([#1878](https://github.com/GraphiteEditor/Graphite/pull/1878))
+
+- Make noise generation resolution aware ([#1909](https://github.com/GraphiteEditor/Graphite/pull/1909))
+
+- Fix render disappearing while panning when using Vello ([#1915](https://github.com/GraphiteEditor/Graphite/pull/1915))
+
+- Fix node graph type errors not being shown ([#1917](https://github.com/GraphiteEditor/Graphite/pull/1917))
+
+- Add 'Gradient Map' adjustment node ([commit 501b562](https://github.com/GraphiteEditor/Graphite/commit/501b562d0f17b91a54a14c83a4a0f90a1e03e369))
+
+- Add colors to all nodes in a graph, even if disconnected, and properly display hidden network imports ([#1921](https://github.com/GraphiteEditor/Graphite/pull/1921))
+
+- Add grid snapping to graph imports/exports; improve layer panel drag into/between insertion; better preserve graph space on reordering ([#1911](https://github.com/GraphiteEditor/Graphite/pull/1911))
+
+- Respect 'Clip' on Artboards when exporting "All Artworks". ([#1916](https://github.com/GraphiteEditor/Graphite/pull/1916))
+
+- Raw-rs: Add preprocessing and demosaicing steps ([#1796](https://github.com/GraphiteEditor/Graphite/pull/1796))
+
+- Format demo artwork's nodes in layer chains ([commit e28e841](https://github.com/GraphiteEditor/Graphite/commit/e28e841e3bef401c19f5ddcf01c68fedd6b5c9c3))
+
+- Add profiling metrics for, and speed up, Graphene graph compilation ([#1924](https://github.com/GraphiteEditor/Graphite/pull/1924))
+
+- Improve layer panel positioning for upstream nodes ([#1928](https://github.com/GraphiteEditor/Graphite/pull/1928))
+
+- Post Clippy warnings as PR comments ([#1926](https://github.com/GraphiteEditor/Graphite/pull/1926))
+
+- Fix all Clippy warnings ([#1936](https://github.com/GraphiteEditor/Graphite/pull/1936))
+
+- Add a profiling action to CI which comments on PRs with notable demo art performance variances ([#1925](https://github.com/GraphiteEditor/Graphite/pull/1925))
+
+- Add a profiling action to CI which comments on PRs with notable demo art performance variances (#1925) ([commit 12ebc6f](https://github.com/GraphiteEditor/Graphite/commit/12ebc6f97269791cb935d17d1f6de59b271a240a))
+
+- New node: Assign Colors ([#1938](https://github.com/GraphiteEditor/Graphite/pull/1938))
+
+- Separate the Merge node from the Boolean Operation node ([#1933](https://github.com/GraphiteEditor/Graphite/pull/1933))
+
+- Rename document_node_types.rs to document_node_definitions.rs ([commit 6a2b0d7](https://github.com/GraphiteEditor/Graphite/commit/6a2b0d74dc51b786f1d8765508043e3272b82faa))
+
+- Improve profiling CI action's comment output text ([#1939](https://github.com/GraphiteEditor/Graphite/pull/1939))
+
+- Recategorize the node catalog ([commit e647ca9](https://github.com/GraphiteEditor/Graphite/commit/e647ca9f91a5e823137122126fe9e980f65d62ea))
+
+- Revamp the website ([commit 5d74178](https://github.com/GraphiteEditor/Graphite/commit/5d74178f5f417afdd70abec596d38f22d490240a))
+
+- Fix website base template escaping ([commit 98ab069](https://github.com/GraphiteEditor/Graphite/commit/98ab069a1703e89cea031fedffc55c3bf4191b5d))
+
+- Revamp the website more ([commit 40fd447](https://github.com/GraphiteEditor/Graphite/commit/40fd4473a784ba24fc3105f8da56baacccf2dcf5))
+
+- Add shifting of layers in stacks as blocks that collide and bump other layers/nodes ([#1940](https://github.com/GraphiteEditor/Graphite/pull/1940))
+
+- Add self-hosted build asset deployment to GitHub releases in the CI action ([commit f2493d5](https://github.com/GraphiteEditor/Graphite/commit/f2493d5308ace728c3525d51609c3a2efcbdc139))
+
+- Implement node path insertion at compile time ([#1947](https://github.com/GraphiteEditor/Graphite/pull/1947))
+
+- Improve layer positioning in graph upon reordering; improve history system; add selection history ([#1945](https://github.com/GraphiteEditor/Graphite/pull/1945))
+
+- Fix crash from gradients with bounds of zero ([#1950](https://github.com/GraphiteEditor/Graphite/pull/1950))
+
+- Update various content on the website ([commit fb7d597](https://github.com/GraphiteEditor/Graphite/commit/fb7d5970b38c61fc1a35aeefd7028858c96f5ff2))
+
+- Fix broken SVG importing and crash when exporting ([#1953](https://github.com/GraphiteEditor/Graphite/pull/1953))
+
+- Switch attribute-based vector data from referencing PointIds to indexes in the points table ([#1949](https://github.com/GraphiteEditor/Graphite/pull/1949))
+
+- Bezier-rs: Fix crash when outlining a small bézier ([#1958](https://github.com/GraphiteEditor/Graphite/pull/1958))
+
+- Bezier-rs: Fix crash when outlining a small bézier (#1958) ([commit bf5019d](https://github.com/GraphiteEditor/Graphite/commit/bf5019db7b52120bbb255adae78ee416c96a39b4))
+
+- Fix invalid segment crash when disolving point loop ([#1959](https://github.com/GraphiteEditor/Graphite/pull/1959))
+
+- Refactor navigation metadata ([#1956](https://github.com/GraphiteEditor/Graphite/pull/1956))
+
+- Raw-rs: Flip and rotate image based on camera orientation ([#1954](https://github.com/GraphiteEditor/Graphite/pull/1954))
+
+- Make the Clippy Check CI action not comment on draft PRs ([commit a93dcb2](https://github.com/GraphiteEditor/Graphite/commit/a93dcb2776027bfcb385ae9dfddff249bdfd896b))
+
+- Set integer ruler intervals when zoomed in ([#1966](https://github.com/GraphiteEditor/Graphite/pull/1966))
+
+- Fix some typos in the node graph code ([#1970](https://github.com/GraphiteEditor/Graphite/pull/1970))
+
+- Fix some typos in the node graph code (#1970) ([commit 507210b](https://github.com/GraphiteEditor/Graphite/commit/507210b961ba620f8908da3ce3bf26518fda4a4b))
+
+- Make the node graph use a document node's default type ([#1965](https://github.com/GraphiteEditor/Graphite/pull/1965))
+
+- Make CI collapse previous PR comments with profiling benchmark deltas ([#1974](https://github.com/GraphiteEditor/Graphite/pull/1974))
+
+- Make the primitive shape tools avoid setting a negative transform scale ([#1973](https://github.com/GraphiteEditor/Graphite/pull/1973))
+
+- Nudge only the shallowest selected layers to avoid amplified translation ([#1975](https://github.com/GraphiteEditor/Graphite/pull/1975))
+
+- Improve select tool click targets ([#1976](https://github.com/GraphiteEditor/Graphite/pull/1976))
+
+- Correctly apply transforms to vector data and strokes ([#1977](https://github.com/GraphiteEditor/Graphite/pull/1977))
+
+- Fix types of inputs to nodes with a nested network implementation ([#1978](https://github.com/GraphiteEditor/Graphite/pull/1978))
+
+- Fix click targets (in, e.g., the boolean node) by resolving footprints from render output ([#1946](https://github.com/GraphiteEditor/Graphite/pull/1946))
+
+- Refactor the node macro and simply most of the node implementations ([#1942](https://github.com/GraphiteEditor/Graphite/pull/1942))
+
+- Raw-rs: run tests in parallel ([#1968](https://github.com/GraphiteEditor/Graphite/pull/1968))
+
+- Update Cargo.lock to fix CI ([#1994](https://github.com/GraphiteEditor/Graphite/pull/1994))
+
+- Box TaggedValue::VectorModification ([#1995](https://github.com/GraphiteEditor/Graphite/pull/1995))
+
+- Fix blend modes and opacity on raster data ([#1996](https://github.com/GraphiteEditor/Graphite/pull/1996))
+
+- Use overlays to draw artboard names ([#1981](https://github.com/GraphiteEditor/Graphite/pull/1981))
+
+- Fix Graphene CLI crash ([#1993](https://github.com/GraphiteEditor/Graphite/pull/1993))
+
+- Improve node macro and add more diagnostics ([#1999](https://github.com/GraphiteEditor/Graphite/pull/1999))
+
+- Fix compilation on nightly ([#2001](https://github.com/GraphiteEditor/Graphite/pull/2001))
+
+- Improve type compatibility and clean up new node macro usages ([#2002](https://github.com/GraphiteEditor/Graphite/pull/2002))
+
+- Path Bool library code cleanup ([#2000](https://github.com/GraphiteEditor/Graphite/pull/2000))
+
+- Fix broken Opacity slider in Layers panel ([#2004](https://github.com/GraphiteEditor/Graphite/pull/2004))
+
+- Upgrade the third-party library license generation ([commit 14de67c](https://github.com/GraphiteEditor/Graphite/commit/14de67c5a78a1e8369a8b023da441237a44e48cb))
+
+- Clean up web code errors and make CI enforce them ([commit 1ee5ffb](https://github.com/GraphiteEditor/Graphite/commit/1ee5ffbbe8a64da5a83da889dd16d41c3463c332))
+
+- Upgrade web dependencies ([commit aa03dc8](https://github.com/GraphiteEditor/Graphite/commit/aa03dc8278859c5be9159603f771913568f02567))
+
+- Remove serde from Bezier-rs web demos to reduce Wasm size ([commit 0b0169a](https://github.com/GraphiteEditor/Graphite/commit/0b0169a415453b9d9910d765f0538ecd67b618c0))
+
+- New node: Dehaze ([#1882](https://github.com/GraphiteEditor/Graphite/pull/1882))
+
+- Add manually-runnable benchmarks for runtime profiling ([#2005](https://github.com/GraphiteEditor/Graphite/pull/2005))
+
+- Replace terminology "primary" with "call argument" and "parameter" with "secondary input" ([commit c738b4a](https://github.com/GraphiteEditor/Graphite/commit/c738b4a1f9a309f3ab12d2259ba8631402d73da6))
+
+- Fix many regressions introduced mostly in #1946 ([#1986](https://github.com/GraphiteEditor/Graphite/pull/1986))