From 47a5cc5535bff938205f0cd6a4566035f0c46a0d Mon Sep 17 00:00:00 2001 From: James Lindsay <78500760+0HyperCube@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:09:36 +0100 Subject: [PATCH] Blog post: Graphite progress report (Q3 2024) (#2013) * Q3 blog * WIP --------- Co-authored-by: Keavon Chambers --- website/content/_index.md | 2 + ...-07-31-graphite-progress-report-q2-2024.md | 6 +- ...-10-15-graphite-progress-report-q3-2024.md | 389 ++++++++++++++++++ website/content/features.md | 36 +- .../guide/projects/student-projects.md | 9 +- website/sass/base.scss | 5 + website/sass/blog.scss | 4 + website/sass/index.scss | 4 + 8 files changed, 430 insertions(+), 25 deletions(-) create mode 100644 website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md diff --git a/website/content/_index.md b/website/content/_index.md index 061008dc82..4bee34e090 100644 --- a/website/content/_index.md +++ b/website/content/_index.md @@ -329,6 +329,8 @@ Nondestructive editing means every decision is tied to a parameter you can adjus Blend across color schemes. Morph shapes before they're scattered around the canvas. The possibilities are endless. +Open this artwork and give it a try yourself. +
diff --git a/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md b/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md index c10fcaa6be..406d5997a4 100644 --- a/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md +++ b/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md @@ -21,7 +21,7 @@ This is the second of our quarterly progress report blog posts. If you missed th All Q2 2024 commits may be [viewed in this list](https://github.com/GraphiteEditor/Graphite/commits/master/?since=2024-04-01&until=2024-06-30) and all noteworthy changes are detailed below. To showcase the much anticipated introduction of boolean path operations, the new *Painted Dreams* artwork shown here extensively utilizes nondestructive booleans.
- + Vector art of Painted Dreams

@@ -152,7 +152,7 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the - [Weekly updates](https://github.com/GraphiteEditor/Graphite/discussions/1773) are being posted while the project is ongoing -- [Elbert Ronnie](https://github.com/elbertronnie)'s Google Summer of Code project has begun building the Raw-rs library for decoding raw image formats, with the goal of supporting photo processing in Graphite once the project is completed — to date this has included: +- [Elbert Ronnie](https://github.com/elbertronnie)'s Google Summer of Code project has begun building a library for decoding raw image formats, with the goal of supporting photo processing in Graphite once the project is completed — to date this has included: - Initial code foundations including a basic custom TIFF decoder ([#1757](https://github.com/GraphiteEditor/Graphite/pull/1757)) @@ -216,7 +216,7 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the - Fixed bugs where the *Poisson-Disk Points*, *Repeat*, *Circular Repeat*, and *Bounding Box* node input shapes weren't using their transform ([#1784](https://github.com/GraphiteEditor/Graphite/pull/1784), [#1792](https://github.com/GraphiteEditor/Graphite/pull/1792)) -- Improved the Path tool's point selection behavior so clicking a selected anchor deselects all other selected points ([#1782](https://github.com/GraphiteEditor/Graphite/pull/1782)) +- Improvements to the Path tool's point selection behavior so clicking a selected anchor deselects all other selected points ([#1782](https://github.com/GraphiteEditor/Graphite/pull/1782)) - Regression fix for being unable to arrange layers with no artboard present ([#1786](https://github.com/GraphiteEditor/Graphite/pull/1786)) diff --git a/website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md b/website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md new file mode 100644 index 0000000000..c4df320225 --- /dev/null +++ b/website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md @@ -0,0 +1,389 @@ ++++ +title = "Graphite progress report (Q3 2024)" +date = 2024-10-15 +[extra] +banner = "https://static.graphite.rs/content/blog/2024-10-15-graphite-progress-report-q3-2024.avif" +banner_png = "https://static.graphite.rs/content/blog/2024-10-15-graphite-progress-report-q3-2024.png" +author = "Keavon Chambers & Hypercube" +summary = "Graphite's Q3 2024 update introduces improvements to performance, node graph organization, nondestructive path editing, a new render engine, and more helpful nodes." +reddit = "https://www.reddit.com/r/graphite/comments/1g4h6ya/blog_post_graphite_progress_report_q3_2024/" +twitter = "https://x.com/GraphiteEditor/status/1846283664562573344" ++++ + +[Graphite](/), a new open source 2D procedural graphics editor, has spent July–September building major improvements to **performance, node graph organization, nondestructive path editing, a new render engine, and more helpful nodes**, amongst over 100 other features and fixes. + +This has been the most productive quarter yet in the project's three-year history. Most of our [Google Summer of Code](/blog/graphite-internships-announcing-participation-in-gsoc-2024/) student intern projects have already reached their goals, adding to the goodies included in this progress report. 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. + + + +This is the third in our series of quarterly progress reports. If you missed the [first](../graphite-progress-report-q1-2024) or [second](../graphite-progress-report-q2-2024) ones, be sure to check them 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. + +The new *Changing Seasons* artwork shown here showcases some of the recently introduced nodes in this update. And it animates! Give it a try yourself by opening the artwork and dragging the percentage slider to morph from oak to maple leaves as the colors change. + +

+ + Vector art of Changing Seasons + +

+ + Changing Seasons + +
+ + Open this artwork to
explore it yourself. +
+

+
+ +## Additions + + + +- Simplified *Boolean Operation* node that combines the best parts of the two previous boolean node versions, letting users now convert from a stack of shape layers (of any size!) into a single resulting vector shape that's more versatile to use in both the node graph and Layers panel ([#1813](https://github.com/GraphiteEditor/Graphite/pull/1813), [#1933](https://github.com/GraphiteEditor/Graphite/pull/1933)) +
+ +
+ +- *Path* node which enables nondestructive vector editing at stages along the geometry calculation pipeline, even after a procedural shape (like a star) defines the parameters that can be tweaked anytime ([#1676](https://github.com/GraphiteEditor/Graphite/pull/1676)) +
+ +
+ +- Additional snapping criteria for alignment and distribution between layers ([#1793](https://github.com/GraphiteEditor/Graphite/pull/1793)) + + Snapping choices popover menu + +- Snapping now included with the Artboard tool for precise alignment with other artboards ([#1734](https://github.com/GraphiteEditor/Graphite/pull/1734)) +
+ +
+ +- Persistence of the last-chosen settings each time the Export dialog is opened (so it's not always reset to defaults), plus artboard names are now correctly written in the Bounds dropdown ([commit 4d3e459](https://github.com/GraphiteEditor/Graphite/commit/4d3e459f1f52f04be81727fe5946010bcabeb1eb)) +
+ +
+ +- Demo artwork, *Painted Dreams*, featured in the [last blog post](../graphite-progress-report-q2-2024) ([commit 80cf486](https://github.com/GraphiteEditor/Graphite/commit/80cf486790d9300510904622924162a9b4017b1e)) + +
+ + Vector art of Painted Dreams + +

+ + Painted Dreams + +
+ + Open this artwork to
explore it yourself. +
+

+
+ +- Quick measurement feature that is shown by holding Alt to momentarily see the distance between the selected and hovered shapes ([#1894](https://github.com/GraphiteEditor/Graphite/pull/1894)) +
+ +
+ +- Support for drag-and-drop and copy-paste of files more widely throughout the editor ([#2012](https://github.com/GraphiteEditor/Graphite/pull/2012)) +
+ +
+ +- Crash mitigation preventing node faults from taking down the whole editor, working to isolate crashes within the graph so the user can undo the change and save the file (however, reloading the editor is required to stabilize it after this occurs) ([#1846](https://github.com/GraphiteEditor/Graphite/pull/1846)) + + Graph execution crash recovery message + +- Seed parameters now included in all nodes with random generation ([commit c39032a](https://github.com/GraphiteEditor/Graphite/commit/c39032ab548d4f33d18a399c64b77d3d6f4ecd45)) + + Three nodes and their new seed parameters + +- *Percentage Value* node for easy sliding between the numbers 0 and 100 ([commit d7546fb](https://github.com/GraphiteEditor/Graphite/commit/d7546fb18310490d5ce10d406e7a3faaf1ae98fe)) +
+ +
+ +- *Gradient Map* node for recoloring grayscale color values to corresponding colors along a chosen gradient ([commit 501b562](https://github.com/GraphiteEditor/Graphite/commit/501b562d0f17b91a54a14c83a4a0f90a1e03e369)) +
+ +
+ +- *Assign Colors* node for replacing the fill or stroke colors of individual paths in a group of vector elements using choices uniquely sampled along a gradient ([#1938](https://github.com/GraphiteEditor/Graphite/pull/1938)) +
+ +
+ +- *Dehaze* node for reducing the appearance of the atmospheric haze or fog in photographs ([#1882](https://github.com/GraphiteEditor/Graphite/pull/1882)) +
+ +
+ +- Node catalog reorganized with the naming and categorization of nodes given improved consistency ([commit e647ca9](https://github.com/GraphiteEditor/Graphite/commit/e647ca9f91a5e823137122126fe9e980f65d62ea)) +
+ +
+ +- *Noise Pattern* node updated to generate resolution-aware coherent noise, meaning it extends forever in all directions and zoom depths ([#1909](https://github.com/GraphiteEditor/Graphite/pull/1909)) +
+ +
+ +- [Dennis Kobert](https://github.com/truedoctor)'s Google Summer of Code project has concluded, adding many improvements to performance and internal improvements listed in the following sections, but also: + + - Alternate render engine using [Vello](https://github.com/linebender/vello) that brings increased code simplicity and performance (especially with raster layers), but currently only works in browsers with [WebGPU support](https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API#browser_compatibility) and must be enabled via *File* > *Preferences* ([#1802](https://github.com/GraphiteEditor/Graphite/pull/1802), [#1865](https://github.com/GraphiteEditor/Graphite/pull/1865), [#1844](https://github.com/GraphiteEditor/Graphite/pull/1844), [#1871](https://github.com/GraphiteEditor/Graphite/pull/1871), [#1874](https://github.com/GraphiteEditor/Graphite/pull/1874), [#1875](https://github.com/GraphiteEditor/Graphite/pull/1875), [#1899](https://github.com/GraphiteEditor/Graphite/pull/1899), [#1905](https://github.com/GraphiteEditor/Graphite/pull/1905), [#1900](https://github.com/GraphiteEditor/Graphite/pull/1900), [#1907](https://github.com/GraphiteEditor/Graphite/pull/1907), [#1902](https://github.com/GraphiteEditor/Graphite/pull/1902), [#1897](https://github.com/GraphiteEditor/Graphite/pull/1897), [#1915](https://github.com/GraphiteEditor/Graphite/pull/1915), [#1996](https://github.com/GraphiteEditor/Graphite/pull/1996)) + + Editor preferences menu with Vello setting + + - The [final report and weekly updates](https://github.com/GraphiteEditor/Graphite/discussions/1773) are available for more details + +- [Adam Gerhant](https://github.com/adamgerhant)'s Google Summer of Code project has concluded, adding several high-impact features and improvements to the node graph editing experience, including: + + - Layer node chains that help keep a linear sequence of nodes organized by encapsulating them within their destination layer ([#1794](https://github.com/GraphiteEditor/Graphite/pull/1794), [#1812](https://github.com/GraphiteEditor/Graphite/pull/1812), [commit e28e841](https://github.com/GraphiteEditor/Graphite/commit/e28e841e3bef401c19f5ddcf01c68fedd6b5c9c3)) +
+ +
+ + - Subgraph data import/export connectors drawn along the top left/right sides of the graph, instead of the previous representation as node-looking boxes ([#1794](https://github.com/GraphiteEditor/Graphite/pull/1794), [commit 8e774ef](https://github.com/GraphiteEditor/Graphite/commit/8e774efe9dae51c0c1db2928e22c6de5b93d0584), [#1911](https://github.com/GraphiteEditor/Graphite/pull/1911)) +
+ +
+ + - Layer selection history feature, letting users go back and forth between prior states of which layers were selected using the back/forward navigation buttons on some mice (Chromium-based browsers only) or the Alt[ and Alt] hotkeys ([#1945](https://github.com/GraphiteEditor/Graphite/pull/1945)) +
+ +
+ + - Improved layer positioning for upstream nodes when being reordered so they don't chaotically overlap or leave behind large gaps anymore ([#1928](https://github.com/GraphiteEditor/Graphite/pull/1928), [#1945](https://github.com/GraphiteEditor/Graphite/pull/1945)) +
+ +
+ + - Improved shifting of layers in stacks so they act as blocks that collide and bump other layers/nodes instead of getting stuck inside each other ([#1940](https://github.com/GraphiteEditor/Graphite/pull/1940)) +
+ +
+ +- [Elbert Ronnie](https://github.com/elbertronnie)'s Google Summer of Code project, building a library for decoding raw image formats, has continued and will wrap up in early November: + + - Implementation of the pre-processing and demosaicing steps in the decoding pipeline ([#1796](https://github.com/GraphiteEditor/Graphite/pull/1796)) + + - Implementation of the post-processing steps in the decoding pipeline ([#1923](https://github.com/GraphiteEditor/Graphite/pull/1923)) + + - Factoring in of camera white balance metadata when available ([#1941](https://github.com/GraphiteEditor/Graphite/pull/1941)) + + - Flipping and rotating of images based on camera orientation metadata ([#1954](https://github.com/GraphiteEditor/Graphite/pull/1954)) + + - Automated tests now made to run in parallel ([#1968](https://github.com/GraphiteEditor/Graphite/pull/1968)) + + - [Weekly updates](https://github.com/GraphiteEditor/Graphite/discussions/1771) are being posted while the project is ongoing, following a mid-summer hiatus + +## Performance + +- Caching of boolean operations enabled by fixing the Select tool's layer click targets robustly despite the boolean node altering the shape data ([commit 6ecb173](https://github.com/GraphiteEditor/Graphite/commit/6ecb173c1c06807f13a859ef90b7d7f43af042be), [#1946](https://github.com/GraphiteEditor/Graphite/pull/1946), [#1986](https://github.com/GraphiteEditor/Graphite/pull/1986)) + +- Rewritten boolean operations algorithm (our new `path-bool` library) that runs purely in Rust instead of making high-overhead calls into a JavaScript library ([#1952](https://github.com/GraphiteEditor/Graphite/pull/1952), [#2000](https://github.com/GraphiteEditor/Graphite/pull/2000)) + +- Internal hash-based data tracking now benefits from caching of hash calculations ([#1876](https://github.com/GraphiteEditor/Graphite/pull/1876)) + +- Refactored document node type lookup process that fixes performance degradation over time ([#1878](https://github.com/GraphiteEditor/Graphite/pull/1878)) + +- Speed-ups to the node graph compilation that must occur after every change before it's rendered ([#1924](https://github.com/GraphiteEditor/Graphite/pull/1924)) + +- Usage of a coarse bounding box when clicking on layers to avoid a detailed check for intersection ([#1887](https://github.com/GraphiteEditor/Graphite/pull/1887)) + +## Fixes + +- Fix for rulers showing in the wrong spot when initially opening a document ([#1801](https://github.com/GraphiteEditor/Graphite/pull/1801)) + +- Fix for backwards compatibility broken in a prior change ([commit 621f469](https://github.com/GraphiteEditor/Graphite/commit/621f469a150d4a14c86ba9be87df82aae5dded74)) + +- Fix for boolean operations containing multiple subpaths ([#1804](https://github.com/GraphiteEditor/Graphite/pull/1804)) + +- Fix for a bug causing some node outputs to fail connecting wires to other inputs ([commit 84d7262](https://github.com/GraphiteEditor/Graphite/commit/84d72621e545ba7743e38d46ce1607133bb13461)) + +- Fix for the 'Zoom with Scroll' preference not working after a page refresh ([#1807](https://github.com/GraphiteEditor/Graphite/pull/1807)) + +- Fix for broken extending of paths in the Pen and Freehand tools ([#1809](https://github.com/GraphiteEditor/Graphite/pull/1809)) + +- Fix for a snapping bug where snapped-together shapes couldn't be moved ([#1818](https://github.com/GraphiteEditor/Graphite/pull/1818)) + +- Fix for transforms in groups not being pre-applied in the boolean node ([#1825](https://github.com/GraphiteEditor/Graphite/pull/1825)) + +- Fix for dragging groups so the transform node is inserted as intended ([#1829](https://github.com/GraphiteEditor/Graphite/pull/1829)) + +- Fix for restoring older prototype GPU infrastructure functionality to work again ([#1797](https://github.com/GraphiteEditor/Graphite/pull/1797)) + +- Fix for a breakage to shallow select mode in the Select tool ([#1843](https://github.com/GraphiteEditor/Graphite/pull/1843)) + +- Fix for the graph not being updated in the UI after using CtrlD to duplicate a node ([#1852](https://github.com/GraphiteEditor/Graphite/pull/1852)) + +- Fix for the Layers panel UI not updating when the selection changes or a layer is expanded/collapsed ([#1847](https://github.com/GraphiteEditor/Graphite/pull/1847)) + +- Fix for the rendering of non-closed paths and additional improvements to layer bounding box calculation ([#1859](https://github.com/GraphiteEditor/Graphite/pull/1859)) + +- Fix for how documents are saved with images now correctly serialized in linear space instead of sRGB ([#1856](https://github.com/GraphiteEditor/Graphite/pull/1856)) + +- Fix for the grid overlay color choice that was incorrectly appearing as no color ([commit a4a5139](https://github.com/GraphiteEditor/Graphite/commit/a4a513911dac29ee5c6546842be194b1513f2cec)) + +- Fix for viewport bounds getting out of sync at times, like when toggling rulers ([commit 0617759](https://github.com/GraphiteEditor/Graphite/commit/06177597ae8ef52f7a273875d6afb63fb09ec3c8)) + +- Fix for compatibility issues with rendered SVG output syntax ([#1880](https://github.com/GraphiteEditor/Graphite/pull/1880)) + +- Fix for node graph type errors that were not being shown ([#1917](https://github.com/GraphiteEditor/Graphite/pull/1917)) + +- Fix to 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)) + +- Fix to respect the "Clip" parameter on Artboards when exporting "All Artworks" ([#1916](https://github.com/GraphiteEditor/Graphite/pull/1916)) + +- Fix to improve the undo/redo history system's robustness ([#1945](https://github.com/GraphiteEditor/Graphite/pull/1945)) + +- Fix for a crash caused by gradients with bounds of zero ([#1950](https://github.com/GraphiteEditor/Graphite/pull/1950)) + +- Fix for SVG importing and exporting which had both broken ([#1953](https://github.com/GraphiteEditor/Graphite/pull/1953)) + +- Fix for a crash in our Bezier-rs library when outlining a small path ([#1958](https://github.com/GraphiteEditor/Graphite/pull/1958)) + +- Fix for a crash due to an invalid segment when dissolving a vector path point loop ([#1959](https://github.com/GraphiteEditor/Graphite/pull/1959)) + +- Fix to improve how integer ruler intervals are set when zoomed in ([#1966](https://github.com/GraphiteEditor/Graphite/pull/1966)) + +- Fix for layer stacks inadvertently producing a 0x0 image because of an incorrect default type for the disconnected bottom layer node input ([#1965](https://github.com/GraphiteEditor/Graphite/pull/1965)) + +- Fix to make the primitive shape tools avoid setting a negative transform scale ([#1973](https://github.com/GraphiteEditor/Graphite/pull/1973)) + +- Fix to nudge only the shallowest selected layers to avoid amplified translation ([#1975](https://github.com/GraphiteEditor/Graphite/pull/1975)) + +- Fix to the Select tool's click targets which had extended too far on narrow layers ([#1976](https://github.com/GraphiteEditor/Graphite/pull/1976)) + +- Fix to correctly apply transforms to vector data and strokes ([#1977](https://github.com/GraphiteEditor/Graphite/pull/1977)) + +- Fix for the types imported into subgraphs ([#1978](https://github.com/GraphiteEditor/Graphite/pull/1978)) + +- Fix to now properly use overlays for drawing artboard names in the viewport ([#1981](https://github.com/GraphiteEditor/Graphite/pull/1981)) + +- Fix for broken Opacity slider in Layers panel ([#2004](https://github.com/GraphiteEditor/Graphite/pull/2004)) + +## Internal + +- Refactor for graph editing to go through a new abstraction layer, the node network interface ([#1794](https://github.com/GraphiteEditor/Graphite/pull/1794), [#1906](https://github.com/GraphiteEditor/Graphite/pull/1906)) + +- Addition of a new Scope API for exposing data within graphs and subgraphs ([#1814](https://github.com/GraphiteEditor/Graphite/pull/1814)) + +- Reorganization and upgrading of most Cargo dependencies ([#1815](https://github.com/GraphiteEditor/Graphite/pull/1815)) + +- Removal of artboards as a type of graphical element, which is no longer in use as such ([#1824](https://github.com/GraphiteEditor/Graphite/pull/1824), [#1830](https://github.com/GraphiteEditor/Graphite/pull/1830)) + +- Cleanup of many Clippy warnings ([#1808](https://github.com/GraphiteEditor/Graphite/pull/1808), [#1936](https://github.com/GraphiteEditor/Graphite/pull/1936), [#1995](https://github.com/GraphiteEditor/Graphite/pull/1995)) + +- Build process simplifications by auto-installing npm packages and reducing the contributor guide's project setup complexity ([#1799](https://github.com/GraphiteEditor/Graphite/pull/1799)) + +- Fixes for Rust-Analyzer conflicts with build targets and other compile speed issues ([commit 857bc77](https://github.com/GraphiteEditor/Graphite/commit/857bc772de8c5731a2eaf7f442beb573ccf8ca4c)) + +- Fixes, documentation, and updates for npm dependencies and tooling, as well as fixes for Bezier-rs demos not building ([#1857](https://github.com/GraphiteEditor/Graphite/pull/1857)) + +- Partial restoration of the Imaginate node within the modern node graph architecture, but more work remains ([#1908](https://github.com/GraphiteEditor/Graphite/pull/1908)) + +- Profiling metrics development infrastructure for Graphene graph compilation ([#1924](https://github.com/GraphiteEditor/Graphite/pull/1924), [#1974](https://github.com/GraphiteEditor/Graphite/pull/1974)) + +- CI infrastructure to post Clippy warnings as PR comments ([#1926](https://github.com/GraphiteEditor/Graphite/pull/1926), [commit a93dcb2](https://github.com/GraphiteEditor/Graphite/commit/a93dcb2776027bfcb385ae9dfddff249bdfd896b)) + +- CI infrastructure which profiles the demo artwork test documents and comments on PRs that induce sizable changes in performance ([#1925](https://github.com/GraphiteEditor/Graphite/pull/1925), [#1939](https://github.com/GraphiteEditor/Graphite/pull/1939)) + +- CI infrastructure to post a ZIP of self-hosted build assets for the [latest editor release tag on GitHub](https://github.com/GraphiteEditor/Graphite/releases/tag/latest-stable) ([commit f2493d5](https://github.com/GraphiteEditor/Graphite/commit/f2493d5308ace728c3525d51609c3a2efcbdc139)) + +- Refactor to support node ID path insertion at compile time ([#1947](https://github.com/GraphiteEditor/Graphite/pull/1947)) + +- Switch of attribute-based vector data from referencing point IDs to indexes in the points table ([#1949](https://github.com/GraphiteEditor/Graphite/pull/1949)) + +- Refactor for the navigation metadata that stores the node graph UI view's current pan and zoom ([#1956](https://github.com/GraphiteEditor/Graphite/pull/1956)) + +- Refactor for the node definition syntax to make it easier, shorter, and more consistent to define nodes across the board ([#1942](https://github.com/GraphiteEditor/Graphite/pull/1942), [#1999](https://github.com/GraphiteEditor/Graphite/pull/1999), [#2002](https://github.com/GraphiteEditor/Graphite/pull/2002)) + +- Fix for a crash when using the experimental Graphene CLI tool ([#1993](https://github.com/GraphiteEditor/Graphite/pull/1993)) + +- Upgrades to quality of third-party library license notice generation ([commit 14de67c](https://github.com/GraphiteEditor/Graphite/commit/14de67c5a78a1e8369a8b023da441237a44e48cb)) + +- Cleanup for various TypeScript code errors and additions to CI infrastructure to enforce TS error checking ([commit 1ee5ffb](https://github.com/GraphiteEditor/Graphite/commit/1ee5ffbbe8a64da5a83da889dd16d41c3463c332)) + +- Simplifications to the [Bezier-rs web demos](https://graphite.rs/libraries/bezier-rs/) to reduce the bundle size and streamline its code ([commit 0b0169a](https://github.com/GraphiteEditor/Graphite/commit/0b0169a415453b9d9910d765f0538ecd67b618c0)) + +- Manually-runnable benchmarks for document runtime speed profiling ([#2005](https://github.com/GraphiteEditor/Graphite/pull/2005)) + +## Website + +- Revamps to the website ([commit 5d74178](https://github.com/GraphiteEditor/Graphite/commit/5d74178f5f417afdd70abec596d38f22d490240a), [commit 40fd447](https://github.com/GraphiteEditor/Graphite/commit/40fd4473a784ba24fc3105f8da56baacccf2dcf5), [commit 98ab069](https://github.com/GraphiteEditor/Graphite/commit/98ab069a1703e89cea031fedffc55c3bf4191b5d)) + +- Updates to various content on the website ([commit fb7d597](https://github.com/GraphiteEditor/Graphite/commit/fb7d5970b38c61fc1a35aeefd7028858c96f5ff2)) + +## Announcements + +### Graphite @ Maker Faire + +Poster for the Bay Area Maker Faire + +Graphite will have a booth at the [Bay Area Maker Faire](https://makerfaire.com/bay-area/) **this weekend, October 18–20**. If you're in northern California, come visit and meet our team. We'll be located in Coal Shed 2 and plan to showcase the latest features, answer questions, teach how to use the app, get to know the maker community, and give away stickers and art postcards. We hope to see you there! + +### Nodevember + +Poster for the Bay Area Maker Faire + +We're excited to be participating in [Nodevember](https://nodevember.io/) next month! The event celebrates procedural art and design with themed prompts throughout the month. We're looking forward to seeing what the community creates with Graphite's nodes. We'll be sharing some of our favorite submissions on our social media channels. Be sure to tag `@GraphiteEditor` and use the `#MadeWithGraphite` hashtag together with `#Nodevember2024`. + +### Community art contest + +Congratulations to [VDawg](https://www.instagram.com/vdawg.jpg/), the winner of the community art contest, whose work is featured below. The next contest is open now! Submit before the end of the year to be featured in the Q4 progress report by posting your creations in the `#🎨art-showcase` channel in [our Discord](https://discord.graphite.rs). + +Winning artwork depicts a dark landscape with an ethereal diamond forming a constellation with the stars above diff --git a/website/content/features.md b/website/content/features.md index 54f4d8f1fc..12d3ada4de 100644 --- a/website/content/features.md +++ b/website/content/features.md @@ -141,10 +141,6 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Imaginate (Stable Diffusion node/tool)
-
- - GPU-accelerated raster rendering -
Infinitely zoomable/panable content @@ -153,7 +149,11 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Raw photo processing
-
+
+ + GPU-accelerated raster rendering +
+
Graph data attribute spreadsheets
@@ -161,14 +161,14 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Timeline with animation channels
-
- - Signed distance fields -
Lightweight desktop app (with Tauri)
+ +
+

— Alpha 4 —

+
Local file browser for saving/loading @@ -178,12 +178,12 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Local fonts access
- - Rewrite of the basic brush tool + + Signed distance fields
- -
-

— Alpha 4 —

+
+ + Brush tool rewrite
@@ -213,10 +213,6 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Shape builder tool
-
- - Mesh vector format -
Guide mode (construction geometry) @@ -253,6 +249,10 @@ Always on the bleeding edge and built to last— Graphite is written on a robust Automation and batch processing
+
+ + NURBS and mesh vector formats +
Liquify and non-affine transforms diff --git a/website/content/volunteer/guide/projects/student-projects.md b/website/content/volunteer/guide/projects/student-projects.md index cfcacb43a5..34bc7255cf 100644 --- a/website/content/volunteer/guide/projects/student-projects.md +++ b/website/content/volunteer/guide/projects/student-projects.md @@ -35,10 +35,14 @@ When it comes to writing the proposal, which you will submit to the GSoC applica In addition to the detailed projects below, here are some loose ideas that may be developed into full project options before the next GSoC application period: - Color management for HDR/WCG -- Sophisticated text layout system +- Sophisticated text layout and advanced typography features - Traditional brush engine - [Procedural brush engine](https://github.com/Keavon/Brush-Nodes) - Image processing algorithms for photography +- Snapping system overhaul +- [Node equivalence rewriting](https://github.com/GraphiteEditor/Graphite/issues/2021) + + - - ## Successful past projects ### 2024: Node graph auto layout diff --git a/website/sass/base.scss b/website/sass/base.scss index 116f575795..b4031bd5c6 100644 --- a/website/sass/base.scss +++ b/website/sass/base.scss @@ -375,6 +375,7 @@ body > .page { // ===================== :is(h1, h2, h3, h4, article > :first-child) ~ :is(p, ul, ol, ol li p, img, a:has(> img:only-child)), +:is(h1, h2, h3, h4, article > :first-child) ~ :is(ul, ol) li p + img, :is(h1, h2, h3, h4, p) ~ .feature-icons, p ~ :is(h1, h2, h3, h4, details summary, blockquote, .image-comparison, .video-background, .video-embed), .video-embed + :is(p, .link, .button), @@ -446,6 +447,10 @@ p { text-justify: inter-character; // Only supported in Firefox -webkit-hyphens: auto; hyphens: auto; + + code { + text-justify: auto; + } } h1, diff --git a/website/sass/blog.scss b/website/sass/blog.scss index 9e1d05773f..d45f1f0353 100644 --- a/website/sass/blog.scss +++ b/website/sass/blog.scss @@ -108,6 +108,10 @@ -webkit-box-orient: vertical; -webkit-line-clamp: 3; + code { + text-justify: auto; + } + // Safari workaround: https://stackoverflow.com/a/72170897/775283 // But there remains an issue where the ellipsis is rendered inside the text. There doesn't appear to be a fix, or even a way to disable the ellipsis in Safari. p { diff --git a/website/sass/index.scss b/website/sass/index.scss index cd36b043c3..65880720b9 100644 --- a/website/sass/index.scss +++ b/website/sass/index.scss @@ -445,6 +445,10 @@ -webkit-box-orient: vertical; -webkit-line-clamp: 6; + code { + text-justify: auto; + } + // Safari workaround: https://stackoverflow.com/a/72170897/775283 // But there remains an issue where the ellipsis is rendered inside the text. There doesn't appear to be a fix, or even a way to disable the ellipsis in Safari. p {