***Desktop application engineering***
@@ -150,9 +150,9 @@ Timon believes open source tools are essential to grant digital artists freedom
-
+
-## Adam Gerhant
(@pendapia)
+## Adam Gerhant
(@pendapia)
***Editor node graph tooling***
diff --git a/website/content/blog/2022-02-12-announcing-graphite-alpha.md b/website/content/blog/2022-02-12-announcing-graphite-alpha.md
index 8395644ed..c675da48e 100644
--- a/website/content/blog/2022-02-12-announcing-graphite-alpha.md
+++ b/website/content/blog/2022-02-12-announcing-graphite-alpha.md
@@ -3,8 +3,8 @@ title = "Announcing Graphite alpha"
date = 2022-02-12
[extra]
-banner = "https://static.graphite.rs/content/blog/2022-02-12-announcing-graphite-alpha.avif"
-banner_png = "https://static.graphite.rs/content/blog/2022-02-12-announcing-graphite-alpha.png"
+banner = "https://static.graphite.art/content/blog/2022-02-12-announcing-graphite-alpha.avif"
+banner_png = "https://static.graphite.art/content/blog/2022-02-12-announcing-graphite-alpha.png"
author = "Keavon Chambers"
summary = "The Graphite open source team announces the alpha release of their next-generation graphics editor, a web-based SVG editor with vector-based tools. Future plans include a node-based procedural workflow, a raster graphics compositing engine, and a native desktop client."
reddit = "https://www.reddit.com/r/graphite/comments/unw3hi/blog_post_announcing_graphite_alpha/"
@@ -17,6 +17,6 @@ The Graphite open source team is proud to announce the release of the alpha vers
We hope that Graphite can serve the initial use case of a lightweight web-based SVG editor. SVG export and source document saving is supported but editable SVG import will need further work. All the vector and general tools (blue and gray tool icons, respectively) are now available in some form, while raster tools (orange icons, grayed out) are forthcoming.
-While in alpha, file format stability cannot be guaranteed so you may need to finish your saved documents in an older version from near the date it was started. To access an older version, ask a team member [on Discord](https://discord.graphite.rs) to locate an editor build link matching your document's creation date.
+While in alpha, file format stability cannot be guaranteed so you may need to finish your saved documents in an older version from near the date it was started. To access an older version, ask a team member [on Discord](https://discord.graphite.art) to locate an editor build link matching your document's creation date.
-Your feedback and bug reports will be valuable in helping the team prioritize improvements to ensure Graphite can be as useful as possible for artists during the alpha phase. Please go [make some art](https://editor.graphite.rs) to help inform the development process. Thank you for joining us on this exciting journey.
+Your feedback and bug reports will be valuable in helping the team prioritize improvements to ensure Graphite can be as useful as possible for artists during the alpha phase. Please go [make some art](https://editor.graphite.art) to help inform the development process. Thank you for joining us on this exciting journey.
diff --git a/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md b/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md
index c3d7d7726..67ac1e472 100644
--- a/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md
+++ b/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md
@@ -3,8 +3,8 @@ title = "Graphite: a vision for the future of 2D content creation"
date = 2022-03-12
[extra]
-banner = "https://static.graphite.rs/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.avif"
-banner_png = "https://static.graphite.rs/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.png"
+banner = "https://static.graphite.art/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.avif"
+banner_png = "https://static.graphite.art/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.png"
author = "Keavon Chambers"
summary = "Graphite is an open-source application for 2D graphics editing and digital content creation, offering a nondestructive, node-based workflow. It combines intuitive UI with powerful procedural image generators to revolutionize 2D content creation."
reddit = "https://www.reddit.com/r/graphite/comments/unw3va/blog_post_graphite_a_vision_for_the_future_of_2d/"
diff --git a/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md b/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md
index 5a96b2b7b..9cb873c3a 100644
--- a/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md
+++ b/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md
@@ -3,8 +3,8 @@ title = "Distributed computing in the Graphene runtime"
date = 2022-05-12
[extra]
-banner = "https://static.graphite.rs/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime__2.avif"
-banner_png = "https://static.graphite.rs/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime__2.png"
+banner = "https://static.graphite.art/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime__2.avif"
+banner_png = "https://static.graphite.art/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime__2.png"
author = "Keavon Chambers"
summary = "Graphite's 2D editor is built upon Graphene, a node-based editing system for nondestructive design across various data types designed to render artwork faster using multiple machines. The system optimizes execution paths, minimizes latency, and uses a distributed runtime for quick data processing."
reddit = "https://www.reddit.com/r/graphite/comments/unw45k/blog_post_distributed_computing_in_the_graphene/"
@@ -45,7 +45,7 @@ For security and portability, user-authored nodes are compiled into WebAssembly
In the product architecture, Graphene is a distributed runtime environment for quickly processing data in the node graph by utilizing a pool of CPU and GPU compute resources available on local and networked machines. Jobs are run where latency, speed, and bandwidth availability will be most likely to provide a responsive user experience.
-
+
### Scheduler
@@ -81,4 +81,4 @@ Graphene should recognize when a certain intermediate result already lives in RA
Presently, we are experimenting with CPU and GPU node composition for the beginnings of the Graphene visual programming language. Most of what was described in this post will likely evolve as we get further into the implementation stage and when we learn more from experts in the fields of computer science that Graphene overlaps with.
-If you have a background or interest in programming language design, functional programming, ECS and data-oriented design, scheduling, distributed computing, general-purpose GPU compute (GPGPU), or high-performance computing (HPC), we'd love to have your ideas steer our work. Or better yet, join the team to make this dream a reality. We discuss most of our architecture and designs on our [Discord server](https://discord.graphite.rs) through text and sometimes voice. Please come say hi!
+If you have a background or interest in programming language design, functional programming, ECS and data-oriented design, scheduling, distributed computing, general-purpose GPU compute (GPGPU), or high-performance computing (HPC), we'd love to have your ideas steer our work. Or better yet, join the team to make this dream a reality. We discuss most of our architecture and designs on our [Discord server](https://discord.graphite.art) through text and sometimes voice. Please come say hi!
diff --git a/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md b/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md
index c430a2fc7..d1c4e6347 100644
--- a/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md
+++ b/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md
@@ -3,8 +3,8 @@ title = "Looking back on 2023 and what's next"
date = 2024-01-01
[extra]
-banner = "https://static.graphite.rs/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.avif"
-banner_png = "https://static.graphite.rs/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.png"
+banner = "https://static.graphite.art/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.avif"
+banner_png = "https://static.graphite.art/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.png"
author = "Keavon Chambers"
summary = "Looking back on 2023, we reflect on our significant achievements and milestones. As we move forward, we're excited to share what's next, promising a year filled with innovation and progress."
reddit = "https://www.reddit.com/r/graphite/comments/18xmoti/blog_post_looking_back_on_2023_and_whats_next/"
@@ -22,12 +22,12 @@ I am grateful to everyone who has placed their faith in my vision for Graphite s
-
-
+
+
-
Happy Holidays from the Graphite team! These procedural light strands are powered by the newly completed node graph features.Click here to explore this demo — drag the wire layer's points with the Path tool.
+
Happy Holidays from the Graphite team! These procedural light strands are powered by the newly completed node graph features.Click here to explore this demo — drag the wire layer's points with the Path tool.
## The Alpha 2 release series
@@ -39,7 +39,7 @@ In March, I attended the Game Developers Conference (GDC) in nearby San Francisc
Later, in May, I went to another Rust developers meetup here in the Bay Area together with [Leonard Pauli](https://twitter.com/leonardpauli), a Graphite community member and code contributor who was in town on a visit all the way from Sweden. The event was headlined with a [presentation](https://www.youtube.com/watch?v=XjbVnwBtVEk) by [Raph Levien](https://raphlinus.github.io/) about [Xilem](https://github.com/linebender/xilem), an under-development GUI toolkit that Graphite may adopt someday for its promise of powering native, speedy desktop user interfaces. Raph Levien is a researcher and expert in the fields of 2D vector graphics, GPU-accelerated rendering, and the mathematics of splines and curves— topics considerably overlapping with Graphite's own technical disciplines. The meetup was a nice face-to-face introduction before I'd end up seeing Raph and Leonard each again very soon.
-
+
Raph gives his talk about Xilem and GUIs in Rust
@@ -47,7 +47,7 @@ The next week I accepted Raph's invitation to visit him at his employer, Google,
## Embark Studios visit in Stockholm, Sweden
-
+
Leonard (left) and Keavon (right) at Embark Studios
@@ -55,7 +55,7 @@ In June, as part of a vacation with my family to Europe, I caught up again with
## Blender visit in Amsterdam, The Netherlands
-
+
Left to right: Dalai, Dennis, Keavon, Ton, Francesco
@@ -63,7 +63,7 @@ The next month in July, together with Graphite's lead engineer [Dennis Kobert](/
At the invitation of Francesco Siddi, COO of the Blender Foundation whom I'd met earlier at GDC, Dennis and I presented a lunchtime talk for the staff to introduce the Graphite project. Ton Roosendaal, Blender's founder, kindly cooked up some scrumptious, lovingly-made meals of fried eggs for us and his team. We spent a couple hours mingling— answering and asking questions and chatting about design and technical topics ranging from our Rust node graph language infrastructure to Blender's experience with color science standards.
-
+
Keavon presents to the Blender staff
@@ -71,7 +71,7 @@ Ton also very generously gave us his time and full attention with an office hour
## Graphite developer retreat in Karlsruhe, Germany
-
+
Keavon (left) and Dennis (right) at Karlsruhe Palace
@@ -79,7 +79,7 @@ The week before the Blender visit, I arrived in Karlsruhe, Germany for a two-wee
## SIGGRAPH in Los Angeles, California
-
+
Keavon (left) and Oliver (right) at SIGGRAPH
@@ -94,14 +94,14 @@ The next big news of August was my formation of [Graphite Labs, LLC](https://www
I allocated my time at several points throughout the year into growing and evolving this website with a refreshed and more visually-appealing home page, dedicated pages for information [about](/about) the project and its [features](/features), an area providing resources and help for [volunteers](/volunteer) and [code contributors](/volunteer/guide), and just this month— a [user manual](/learn) complete with an introductory tutorial series. The first video went up yesterday:
-
+
The user manual and tutorial series will continue expanding throughout the coming weeks. Additional website features including user accounts, forums, and other community features are being planned.
## 2023 development progress report
-
+
Weekly code commit rate in 2023
@@ -116,7 +116,7 @@ But 2023 wasn't only put towards refactoring code. New features were added all t
- The (still rudimentary) Brush tool was added for drawing simple raster-based sketches.
- Drawing custom vector shapes with the Pen and Path tools saw usability improvements with point selection, nudging/transformation, and entering exact numerical positions.
- Number input boxes in the UI can now be dragged to update their values and have math expressions evaluated automatically for convenience. Double a value just by typing `*2` at the end, or take the square root by wrapping it within `sqrt(` and `)`.
-- A button to quickly open [pre-made sample art](https://editor.graphite.rs/#demo/valley-of-spires) documents was included at the suggestion of the fine folks at Blender. This helps new users see Graphite in action instead of just opening up an overwhelmingly barren blank canvas.
+- A button to quickly open [pre-made sample art](https://editor.graphite.art/#demo/valley-of-spires) documents was included at the suggestion of the fine folks at Blender. This helps new users see Graphite in action instead of just opening up an overwhelmingly barren blank canvas.
## Integrating the node graph
@@ -124,25 +124,25 @@ With so much to change in the goal of rewriting nearly every system with its Gra
The previous, intentionally-temporary layer system supported folders, vector shapes, text, bitmap images, and dynamic AI art (part of the Imaginate image generation feature).
-
+
Block diagram before the node graph
To begin the incremental integration of nodes, we first added another type of layer, housing an instance of a Graphene node graph, which would supersede the other types. Then began the long process of porting all the other "legacy" layer types—and the viewport tools that operated on them—to become nodes. So the text layer type became a Text node managed by the Text tool, for example. This first phase was completed by April.
-
+
Block diagram after the first phase
Just folders and graph-driven legacy layers remained, but for the second phase, these (as well as artboards which were a separate temporary system) had to be combined into a single graph. Even with graph-based legacy layers, nodes couldn't yet interact between layer graphs to create interesting procedural designs. The Graphite vision calls for a single unified graph per document where all content lives, organized by layers, folders, and artboards collectively living within that graph. So phase two began with adding another node graph instance attached to the document itself instead of any particular layer. Then the old artboard system was replaced by artboard nodes in that graph, providing white backgrounds for the pages of artwork drawn atop by layers. Next, we built a new form of layer that would live in the node graph itself to provide organizational structure, acting as both a container for artwork nodes and a folder for other layers. By August, users could edit the document graph by hand but the viewport tools, folder hierarchy, rendering pipeline, and numerous other systems all still used the legacy layers.
-
+
Block diagram after the second phase
For the third phase, we had to yet again port each of the viewport tools so they would operate on the unified document graph instead of the legacy layer graphs. But the incremental approach ended here— this last phase had to happen all at once, which posed a challenge for developing the editor while numerous features were fully broken pending rework. We began with a separate development branch, always kept up-to-date with the latest editor code changes, for a couple months until breakages were reduced to an acceptable level, then integrated with the main codebase in October. By tracking and burning down the list of [62 outstanding issues and regressions](https://github.com/GraphiteEditor/Graphite/issues/1394) one-by-one, in mid-December we finally reached our long-sought goal: deploying a new stable release of Graphite featuring the unified node graph! I'd like to extend an extra big thank-you to core team member ["Hypercube"](/about#hypercube) for the dedication and persistence in grinding through most of these.
-
+
Block diagram of the completed integration
@@ -182,7 +182,7 @@ Achieving everything listed above is ambitious, but it's ambition that has broug
- Graphic designers and artists who put the time into using Graphite on a regular basis and helping us learn its practical strengths and weaknesses would also be valuable contributors. Helping with the creative parts of maintaining the app and assisting new users who have questions in the growing community would relieve the burden from the core team.
- And spread the word! Create tutorial videos. Show off your creations on social media. Use it in your classroom. 2024 is the year Graphite is ready to come out of the shadows and get discovered.
-If your New Year's resolution is joining an open source project, consider Graphite! We work hard to help new community contributors get up to speed with resources and guidance. We frequently hear praise that Graphite is a very inviting and supportive project from volunteers who have not had great prior experiences trying to get involved in open source. Join the Graphite [Discord server](https://discord.graphite.rs) and reach out to me (@Keavon) about how you'd like to get involved.
+If your New Year's resolution is joining an open source project, consider Graphite! We work hard to help new community contributors get up to speed with resources and guidance. We frequently hear praise that Graphite is a very inviting and supportive project from volunteers who have not had great prior experiences trying to get involved in open source. Join the Graphite [Discord server](https://discord.graphite.art) and reach out to me (@Keavon) about how you'd like to get involved.
## Launching our supporter fund
@@ -198,4 +198,4 @@ Please help launch Graphite towards the 2024 goal of attaining self-sufficiency
Thank you to our community for an incredible year. Passing [5000 stars](https://github.com/GraphiteEditor/Graphite/stargazers) on the project GitHub repository was a wonderful gift this holiday season. Everyone who has given advice, written code, and expressed enthusiasm has inspired me every day to stay focused and motivated. It was especially a pleasure and honor to visit the many people and organizations mentioned in this post throughout the past year. The reception by all has been heartwarming and I look forward to staying connected with them and a growing Graphite community in the promising year that now lies ahead. I am most of all excited for the awesome state Graphite will be in when it comes time to write this post again next year.
-Now go [make some awesome art](https://editor.graphite.rs)!
+Now go [make some awesome art](https://editor.graphite.art)!
diff --git a/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md b/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md
index f9fe300a5..647080e08 100644
--- a/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md
+++ b/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md
@@ -2,8 +2,8 @@
title = "Graphite internships: announcing participation in GSoC 2024"
date = 2024-02-22
[extra]
-banner = "https://static.graphite.rs/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.avif"
-banner_png = "https://static.graphite.rs/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.png"
+banner = "https://static.graphite.art/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.avif"
+banner_png = "https://static.graphite.art/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.png"
author = "Keavon Chambers"
summary = "Join Graphite in Google Summer of Code 2024 for a unique opportunity to contribute to open-source software development in Rust and computer graphics. Get paid while learning, working on self-contained projects under experienced mentors, and help Graphite grow."
reddit = "https://www.reddit.com/r/graphite/comments/1ax3l8z/blog_post_graphite_internships_announcing/"
diff --git a/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md b/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md
index bac4e4495..589e2a436 100644
--- a/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md
+++ b/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md
@@ -2,8 +2,8 @@
title = "Graphite progress report (Q1 2024)"
date = 2024-05-09
[extra]
-banner = "https://static.graphite.rs/content/blog/2024-05-09-graphite-progress-report-q1-2024__2.avif"
-banner_png = "https://static.graphite.rs/content/blog/2024-05-09-graphite-progress-report-q1-2024__2.png"
+banner = "https://static.graphite.art/content/blog/2024-05-09-graphite-progress-report-q1-2024__2.avif"
+banner_png = "https://static.graphite.art/content/blog/2024-05-09-graphite-progress-report-q1-2024__2.png"
author = "Keavon Chambers & Hypercube"
summary = "Graphite's Q1 2024 update introduces a precise snapping system and a customizable grid for enhanced design control. The update also includes improved procedural scattering with the 'Copy to Points' node, demonstrated in new demo artwork."
reddit = "https://www.reddit.com/r/graphite/comments/1coa0if/blog_post_graphite_progress_report_q1_2024/"
@@ -17,13 +17,13 @@ css = ["/component/demo-artwork.css"]
Starting in 2024, we are now publishing quarterly reports to summarize the new features and improvements made to Graphite. If you missed the [2023 year in review](../looking-back-on-2023-and-what-s-next), be sure to check it out after this. We anticipate sending our first email newsletter (with more to follow roughly quarterly) in the near future as well, so be sure to [subscribe](/#newsletter) if you haven't already.
-Over the first three months of the year, we are delighted to have seen many contributions both from new and recurrent contributors, including substantial interest by students through [Google Summer of Code](/blog/graphite-internships-announcing-participation-in-gsoc-2024/). We would like to send a big thanks to all of the contributors who made this progress happen. If you are interested in getting involved or just following development, see the [contributor guide](/volunteer/guide) and join [our Discord](https://discord.graphite.rs).
+Over the first three months of the year, we are delighted to have seen many contributions both from new and recurrent contributors, including substantial interest by students through [Google Summer of Code](/blog/graphite-internships-announcing-participation-in-gsoc-2024/). We would like to send a big thanks to all of the contributors who made this progress happen. If you are interested in getting involved or just following development, see the [contributor guide](/volunteer/guide) and join [our Discord](https://discord.graphite.art).
All Q1 2024 commits may be [viewed in this list](https://github.com/GraphiteEditor/Graphite/commits/master/?since=2024-01-01&until=2024-03-31) and all noteworthy changes are detailed below. As two of the major new features are the grid and snapping systems, the *Isometric Fountain* artwork shown on this blog post demonstrates what those features can achieve.
-
-
+
+
@@ -31,7 +31,7 @@ All Q1 2024 commits may be [viewed in this list](https://github.com/GraphiteEdit
- Open this artwork to explore it yourself.
+ Open this artwork to explore it yourself.
@@ -45,8 +45,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- *Copy to Points* node improvements, including randomization of scale and rotation with biasing
([#1540](https://github.com/GraphiteEditor/Graphite/pull/1540), [#1541](https://github.com/GraphiteEditor/Graphite/pull/1541), [commit ed82c5](https://github.com/GraphiteEditor/Graphite/commit/ed82c5f20fccd66a959334dee33351657968cdb6), [#1592](https://github.com/GraphiteEditor/Graphite/pull/1592), [commit 7e5069](https://github.com/GraphiteEditor/Graphite/commit/7e5069f638cfcc3e7af21f32eded67a005490402))
-
-
+
+
@@ -55,45 +55,45 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- Grid overlay for the canvas with customizable rectangular and isometric grid lines
([#1521](https://github.com/GraphiteEditor/Graphite/pull/1521), [commit 5c9d3c](https://github.com/GraphiteEditor/Graphite/commit/5c9d3c5d755e67411c110c0d5fd38d991cb6696c))
-
-
+
+
-
-
+
+
- New and improved snapping system for aligning shapes with one another and the grid
([#1521](https://github.com/GraphiteEditor/Graphite/pull/1521), [#1567](https://github.com/GraphiteEditor/Graphite/pull/1567), [#1547](https://github.com/GraphiteEditor/Graphite/pull/1547), [#1570](https://github.com/GraphiteEditor/Graphite/pull/1570), [#1574](https://github.com/GraphiteEditor/Graphite/pull/1574))
-
-
+
+
- *Morph* node for tweening vector shapes
([#1576](https://github.com/GraphiteEditor/Graphite/pull/1576))
-
-
+
+
- Visualize which nodes are the source of a graph type error
([#1577](https://github.com/GraphiteEditor/Graphite/pull/1577))
-
+
- Improvements to document tilting and resetting tilt
([commit 8eef96](https://github.com/GraphiteEditor/Graphite/commit/8eef96511e575d58a36289f3d0e30eb68098b4e7))
- SVG import
([#1579](https://github.com/GraphiteEditor/Graphite/pull/1579), [#1656](https://github.com/GraphiteEditor/Graphite/pull/1656))
-
-
+
+
@@ -102,48 +102,48 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- *Poisson-Disk Points* node for sampling randomly distributed points in a shape, with Red Dress demo artwork
([#1586](https://github.com/GraphiteEditor/Graphite/pull/1586), [commit 12e16b](https://github.com/GraphiteEditor/Graphite/commit/12e16b9a4efe40fcf779c34f83d3df8b3e3542f3), [#1590](https://github.com/GraphiteEditor/Graphite/pull/1590), [#1596](https://github.com/GraphiteEditor/Graphite/pull/1596))
-
-
+
+
- Pen tool point-by-point undo while drawing without wiping out the full in-progress shape
([#1587](https://github.com/GraphiteEditor/Graphite/pull/1587), [#1597](https://github.com/GraphiteEditor/Graphite/pull/1597))
-
-
+
+
- Freehand tool support for extending the endpoints of open paths
([#1594](https://github.com/GraphiteEditor/Graphite/pull/1594), [#1623](https://github.com/GraphiteEditor/Graphite/pull/1623))
-
-
+
+
- Path tool support for breaking a closed shape into an open path by deleting (not dissolving) a point
([#1593](https://github.com/GraphiteEditor/Graphite/pull/1593))
-
-
+
+
- Path tool insertion of a point on a path segment by sliding to the desired spot
([#1581](https://github.com/GraphiteEditor/Graphite/pull/1581))
-
-
+
+
- Box-based drag selection in the node graph
([#1616](https://github.com/GraphiteEditor/Graphite/pull/1616))
-
-
+
+
@@ -152,20 +152,20 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- Auto-panning when drawing with each interactive tool when the user's pointer extends past the edge of the viewport
([#1625](https://github.com/GraphiteEditor/Graphite/pull/1625), [#1652](https://github.com/GraphiteEditor/Graphite/pull/1652), [#1682](https://github.com/GraphiteEditor/Graphite/pull/1682), [#1690](https://github.com/GraphiteEditor/Graphite/pull/1690))
-
-
+
+
- Launch of the Alpha 3 release series in February
([commit f02dd5](https://github.com/GraphiteEditor/Graphite/commit/f02dd5c0f625b25bf3510ba0e9839ca182d930e4))
-
+
- Search functionality by typing in menu lists
([#1499](https://github.com/GraphiteEditor/Graphite/pull/1499))
-
-
+
+
@@ -176,8 +176,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- Path tool point selection checkbox for locking an anchor point's handles as colinear
([commit 5bca93](https://github.com/GraphiteEditor/Graphite/commit/5bca931813e456e2f6035844c21e77ee590b7728))
-
-
+
+
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 72b73f0db..8cdc88980 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
@@ -2,8 +2,8 @@
title = "Graphite progress report (Q2 2024)"
date = 2024-07-31
[extra]
-banner = "https://static.graphite.rs/content/blog/2024-07-31-graphite-progress-report-q2-2024.avif"
-banner_png = "https://static.graphite.rs/content/blog/2024-07-31-graphite-progress-report-q2-2024.png"
+banner = "https://static.graphite.art/content/blog/2024-07-31-graphite-progress-report-q2-2024.avif"
+banner_png = "https://static.graphite.art/content/blog/2024-07-31-graphite-progress-report-q2-2024.png"
author = "Keavon Chambers & Hypercube"
summary = "Graphite's Q2 2024 update introduces boolean path operations, a new gradient picker, layer locking, and more improvements."
reddit = "https://www.reddit.com/r/graphite/comments/1ei9ps2/blog_post_graphite_progress_report_q2_2024/"
@@ -17,13 +17,13 @@ Overall, editor functionality has been shaping up and becoming an all around use
-This is the second of our quarterly progress report blog posts. If you missed the [first one](../graphite-progress-report-q1-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 on GitHub](https://github.com/GraphiteEditor/Graphite). Follow along and partake in our [Discord community](https://discord.graphite.rs), too.
+This is the second of our quarterly progress report blog posts. If you missed the [first one](../graphite-progress-report-q1-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 on GitHub](https://github.com/GraphiteEditor/Graphite). Follow along and partake in our [Discord community](https://discord.graphite.art), too.
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.
-
-
+
+
@@ -31,7 +31,7 @@ All Q2 2024 commits may be [viewed in this list](https://github.com/GraphiteEdit
- Open this artwork to explore it yourself.
+ Open this artwork to explore it yourself.
@@ -45,52 +45,52 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- Feature for locking layers from being selected in the viewport
([#1702](https://github.com/GraphiteEditor/Graphite/pull/1702))
-
-
+
+
- Fine-grained choices in the Snapping options popover
([#1730](https://github.com/GraphiteEditor/Graphite/pull/1730))
-
+
- Corner rounding added to the *Rectangle* node
([#1648](https://github.com/GraphiteEditor/Graphite/pull/1648))
-
-
+
+
- Rotation added to the *Repeat* node
([commit 72ba4dd](https://github.com/GraphiteEditor/Graphite/commit/72ba4ddfe421c0e17930ad1c2be85be2c69e04ea))
-
-
+
+
- Visibility and deletion buttons added to node sections in the Properties panel
([commit 07fd2c2](https://github.com/GraphiteEditor/Graphite/commit/07fd2c27827e4a91ad238d790d41396a33ef2389))
-
-
+
+
- Grid color customization and dotted appearance choices
([#1743](https://github.com/GraphiteEditor/Graphite/pull/1743))
-
-
+
+
- Demo artwork, *Isometric Fountain*, featured in the [last blog post](../graphite-progress-report-q1-2024)
([commit 6b0822d](https://github.com/GraphiteEditor/Graphite/commit/6b0822d31890b6699c4533c3e828da0e9e8c9490))
-
-
+
+
@@ -98,7 +98,7 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- Open this artwork to explore it yourself.
+ Open this artwork to explore it yourself.
@@ -106,38 +106,38 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- *Area* and *Centroid* nodes which calculate a shape's interior size and center of mass, respectively
([#1729](https://github.com/GraphiteEditor/Graphite/pull/1729), [#1749](https://github.com/GraphiteEditor/Graphite/pull/1749))
-
-
+
+
- *Boolean Operation* node for combining two shape paths with a *Union*, *Subtract Front*, *Subtract Back*, *Intersect*, or *Difference* mode of cutting and combining
([#1759](https://github.com/GraphiteEditor/Graphite/pull/1759))
-
-
+
+
-
-
+
+
- Gradient picker
([#1778](https://github.com/GraphiteEditor/Graphite/pull/1778))
-
-
+
+
- Labels for artboard names displayed in the viewport
([#1795](https://github.com/GraphiteEditor/Graphite/pull/1795))
-
-
+
+
@@ -146,8 +146,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- *Rasterize* node for converting graphical content (like vector art) into an image within a chosen area and resolution scale
([#1755](https://github.com/GraphiteEditor/Graphite/pull/1755))
-
-
+
+
@@ -166,24 +166,24 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- Generalization of layers to support the concept of vertically stackable adjustment layers
([#1712](https://github.com/GraphiteEditor/Graphite/pull/1712), [#1738](https://github.com/GraphiteEditor/Graphite/pull/1738), [commit 244c8ad](https://github.com/GraphiteEditor/Graphite/commit/244c8ad10ad79c9ca4fcdb21260c5d5dc60b3a21), [#1763](https://github.com/GraphiteEditor/Graphite/pull/1763), [#1739](https://github.com/GraphiteEditor/Graphite/pull/1739), [#1748](https://github.com/GraphiteEditor/Graphite/pull/1748))
-
-
+
+
- Support for viewing and editing subgraphs by double-clicking nodes with internal node networks
([#1750](https://github.com/GraphiteEditor/Graphite/pull/1750))
-
-
+
+
- Extended support for navigating the graph just like the viewport (with autopanning on dragging near edges, working scrollbars, and zooming shortcuts) by migrating interaction code to the backend
([#1768](https://github.com/GraphiteEditor/Graphite/pull/1768), [#1790](https://github.com/GraphiteEditor/Graphite/pull/1790))
-
-
+
+
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
index 149e0c3c6..b5d0d75b8 100644
--- 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
@@ -2,8 +2,8 @@
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"
+banner = "https://static.graphite.art/content/blog/2024-10-15-graphite-progress-report-q3-2024.avif"
+banner_png = "https://static.graphite.art/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/"
@@ -17,13 +17,13 @@ This has been the most productive quarter yet in the project's three-year histor
-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 on GitHub](https://github.com/GraphiteEditor/Graphite). Follow along and partake in our [Discord community](https://discord.graphite.rs), too.
+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 on GitHub](https://github.com/GraphiteEditor/Graphite). Follow along and partake in our [Discord community](https://discord.graphite.art), 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.
-
-
+
+
@@ -31,7 +31,7 @@ The new *Changing Seasons* artwork shown here showcases some of the recently int
- Open this artwork to explore it yourself.
+ Open this artwork to explore it yourself.
@@ -45,44 +45,44 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- 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 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))
-
-
+
+
@@ -90,7 +90,7 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- Open this artwork to explore it yourself.
+ Open this artwork to explore it yourself.
@@ -98,72 +98,72 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- 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))
-
+
- Seed parameters now included in all nodes with random generation
([commit c39032a](https://github.com/GraphiteEditor/Graphite/commit/c39032ab548d4f33d18a399c64b77d3d6f4ecd45))
-
+
- *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))
-
-
+
+
@@ -171,7 +171,7 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- 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))
-
+
- The [final report and weekly updates](https://github.com/GraphiteEditor/Graphite/discussions/1773) are available for more details
@@ -180,40 +180,40 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- 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))
-
-
+
+
@@ -359,7 +359,7 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- 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))
+- Simplifications to the [Bezier-rs web demos](https://keavon.github.io/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))
@@ -373,13 +373,13 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
### Graphite @ 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
-
+
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`.
@@ -387,4 +387,4 @@ We're excited to be participating in [Nodevember](https://nodevember.io/) next m
Congratulations to [VDawg](https://www.instagram.com/vdawg.jpg/), the winner of the community art contest, whose work is featured below.
-
+
diff --git a/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md b/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md
index 283b59085..8324c6b99 100644
--- a/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md
+++ b/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md
@@ -3,8 +3,8 @@ title = "Year in review: 2024 highlights and a peek at 2025"
date = 2025-01-16
[extra]
-banner = "https://static.graphite.rs/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.avif"
-banner_png = "https://static.graphite.rs/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.png"
+banner = "https://static.graphite.art/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.avif"
+banner_png = "https://static.graphite.art/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.png"
author = "Keavon Chambers"
summary = "Graphite has come a long way in 2024. Read about the progress made and the plans for the upcoming year."
reddit = "https://www.reddit.com/r/graphite/comments/1i3umnl/blog_post_year_in_review_2024_highlights_and_a/"
@@ -21,7 +21,7 @@ Another year has come and gone which has propelled Graphite—further than any y
In a world where the notion of software ownership seems headed towards extinction, the need has never been greater for an independent, community-built alternative to the vector graphics, animation, image manipulation, photo processing, and publishing tools used daily by millions of creators worldwide.
-Graphite is and will always remain yours to keep, whether that's by running the lightweight, client-side [web app](https://editor.graphite.rs) (no signup, no cloud),
installing the PWA on your desktop, self-hosting the
builds , or downloading the soon-to-be-ready native app for your OS of choice (more news on that later in the post).
+Graphite is and will always remain yours to keep, whether that's by running the lightweight, client-side [web app](https://editor.graphite.art) (no signup, no cloud),
installing the PWA on your desktop, self-hosting the
builds , or downloading the soon-to-be-ready native app for your OS of choice (more news on that later in the post).
-
+
Join me, founder and designer of Graphite, to see where the past year has brought us on this quest. And let me take this moment to thank our growing community for sharing my vision and showing support, both financially and by boosting the GitHub project page over the 10,000 star milestone just in time to celebrate the end of a productive 2024.
## 2024 development progress report
-
+
Weekly code commit rate in 2024
-In 2024, Graphite grew from a promising tech demo into a by-and-large useful application for vector artistry and graphic design, equipped with its totally unique secret ingredient: nondestructive, procedural editing via a node graph. This was a year focused on iterating until a prototype became a polished product— at least by the standards of alpha-stage software. If you haven't [tried Graphite](https://editor.graphite.rs) recently, please take another look!
+In 2024, Graphite grew from a promising tech demo into a by-and-large useful application for vector artistry and graphic design, equipped with its totally unique secret ingredient: nondestructive, procedural editing via a node graph. This was a year focused on iterating until a prototype became a polished product— at least by the standards of alpha-stage software. If you haven't [tried Graphite](https://editor.graphite.art) recently, please take another look!
Improvements made throughout Alpha 3 (2024's release series) brought the formerly abysmal performance up to now-adequate levels and solved the vast bulk of instability with the once-numerous crashes and bugs. Advancements to [Graphene](/volunteer/guide/graphene), our bespoke node graph engine technology, has let us begin to support new rendering possibilities, introduce more helpful nodes, and remove restrictive limitations with common node combinations that previously were points of frustration. We also made big strides improving the tools used by artists for vector drawing with features like boolean path operations, snapping, layer selection history, quick measurement, gradient picking, and extensive usability-focused tweaks—both big and small—all throughout the editor.
@@ -62,7 +62,7 @@ Alpha 3 began back in February 2024 and we plan to declare the start of the Alph
## Google Summer of Code results
-
+
Read our short blog post about participating in Google Summer of Code
@@ -78,11 +78,11 @@ I would like to express my gratitude to Google for funding the program and its s
Another part of the GSoC program was the Mentor Summit in October where I got to meet and share knowledge with open source maintainers from the other participating organizations. Hosted at Google's Mountain View offices, it was a weekend of talking tech and learning the lessons of open source project management from the seasoned veterans.
-
+
Group photo of the GSoC Mentor Summit attendees
-
+
Schedule board highlighting my session on day 2
@@ -98,7 +98,7 @@ In March, accompanied by Oliver Davies, a personal friend/tech artist/contributo
We introduced Graphite to open source organizations like
Godot and
O3DE , caught up with Francesco and Dalai from the Blender Foundation, joined a roundtable panel on open source adoption in the games industry, and came together with the
Rust Gamedev community for a physical meetup of game and graphics centric Rust developers. It was a treat seeing several people in-person for the first time whom, before, I'd known only online.
-
+
Upper-left: Forest Anderson, host of the Rust Gamedev Meetup live streams where Graphite demoed many monthly development milestones, with me at the Rust devs hangout;
@@ -111,7 +111,7 @@ With March now just around the corner, I am definitely looking forward to the ne
### Blender Conference LA
-
+
Left-to-right, top-then-bottom: Ton Roosendaal (founder of Blender) and me (founder of Graphite); the venue on Hollywood Boulevard; talks on the main stage; Colin Levy (director of Skywatch and the Blender Studio's Sintel ) and Andrew Price (Blender Guru and creator of Poliigon ); my talk on the main stage; Alan Melikdjanian (Captain Disillusion ) and Ian Hubert (YouTube filmmaker and director of the Blender Studio's Tears of Steel ); attendees chatting
@@ -120,20 +120,20 @@ The next month in April, Oliver and I went to our second conference of the year:
I also took to the main stage to present a lightning talk introducing Graphite to the community:
-
+
### Graphite booth at Open Sauce
The month of June was particularly special because of Open Sauce , a convention and expo in San Francisco for makers and creators, and of course, open source projects!
-
+
Adam and Oliver driving a Graphite live demo at our booth
This presented the perfect opportunity to host our own exhibitor booth and talk to hundreds of excited attendees with creative tech backgrounds over the two day show. The event was excellent for networking with fellow makers and a chance to meet an array of the guest YouTube creators including several from the digital content creation realm.
-
+
Sides: doodles by attendees on our public art wall; Inner-left: Ian Hubert , Blender filmmaker, visiting again after we met at BCON LA; Inner-right: Daniel Shiffman (The Coding Train ), creator of tutorials and explorations into creative coding/generative procedural art
@@ -145,7 +145,7 @@ Joining me again was Oliver to assist with the booth, as well as our new GSoC co
And then when October rolled around, we did it again! Now located at a post-industrial waterfront venue across the Bay from San Francisco, the Maker Faire started with a Friday field trip day for local schools followed by a full weekend of general attendance.
-
+
Visitors making art and learning about Graphite at our booth
@@ -153,13 +153,13 @@ The Maker Faire is ground zero for the Maker Movement. I grew up going each year
Attracting a more family-oriented audience than Open Sauce, it presented the chance to learn how approachable Graphite is even for kids. Doodling on the LED-backlit whiteboards flanking our booth was especially popular with that age range and brought in many passers-by. Of those who tried Graphite, I was blown away to see how some of our youngest visitors—down to the age of 6—were also the most capable and engaged using the product, diving in deep with barely any instruction. As the UI and product designer, this assured me that I have been on the right track so far. I believe now more than ever that my ambitious goal is achievable: creating the most intuitive and user-friendly professional graphics editor on the market.
-
+
All four demo computers occupied with Graphite's newest users
Another exciting part of the Maker Faire experience was bringing together nearly the full Graphite core team in-person. Oliver and Adam came to help again while we were also joined by Dennis visiting all the way from Germany, conveniently coinciding with a vacation he had planned. We put our commute time towards deeply technical code architecture discussions and knowledge transfer.
-
+
Left: me (1), Adam (2), and Oliver (3) at the venue; Right: Adam (1), Dennis (2), and me (3) (Oliver and Dennis couldn't make it on the same day)
@@ -179,7 +179,7 @@ Now to get technical, the lazy option exists: chucking the whole web app in an u
Next, the feature I am personally most itching to dive into developing is animation. I've been recently iterating on the UI design mockup for the Timeline panel which will support keyframing any desired node parameters. This new panel will seamlessly integrate into the existing graph-based, data-driven workflow and make it easy to create motion graphics paired with procedural generation.
-
+
User interface mockup for the latest animation panel plans prior to being implemented
@@ -196,7 +196,7 @@ It is now becoming time to delve into the next phase of making the node graph mo
Graphite has included a primitive kind of raster support for a while, mostly used for including reference images when creating vector content. Some raster nodes can adjust the colors of images, but there are no tools yet for selecting and drawing over parts of an image to make localized edits. Furthermore, CPU-centric bottlenecks slow down the editor when big images are in use. The GPU is not used by any nodes operating on pixel-based data.
-Consequently, raster editing just isn't viable yet until tool and GPU node support arrives. The innumerable complexities would not fit in this section, but if you have a background in compilers or graphics programming, please hop on our Discord and ask about it if you're curious or potentially interested in helping. After the infrastructure parts are in place, we can begin building nodes that make localized edits (such as a masking node) and start developing tools including a fully rewritten brush engine and a mode for drawing marquee selections. I can't yet predict how far we will get by year's end with these interactive localized editing tools because it will all depend on how quickly the prerequisite technical infrastructure components come together. Part of that will depend on how soon the browser vendors ship universal WebGPU API support so it can be deployed beyond an experimental state in Graphite.
+Consequently, raster editing just isn't viable yet until tool and GPU node support arrives. The innumerable complexities would not fit in this section, but if you have a background in compilers or graphics programming, please hop on our Discord and ask about it if you're curious or potentially interested in helping. After the infrastructure parts are in place, we can begin building nodes that make localized edits (such as a masking node) and start developing tools including a fully rewritten brush engine and a mode for drawing marquee selections. I can't yet predict how far we will get by year's end with these interactive localized editing tools because it will all depend on how quickly the prerequisite technical infrastructure components come together. Part of that will depend on how soon the browser vendors ship universal WebGPU API support so it can be deployed beyond an experimental state in Graphite.
### Graphite in education
@@ -204,7 +204,7 @@ A valuable discovery came out of exhibiting Graphite at the Maker Faire. I had c
I was told that other web-based graphics editors are commonly blocked by the IT admins of school networks due to policies against visiting sites with ads. (Crazy!) Since Graphite is entirely ad-free and runs on Chromebooks, this presents an opportunity to focus on better supporting the education market. In fact, I have recently been watching Chromebooks account for a small but rapidly growing portion of our site's visitors which means some educators are teaching Graphite in their classrooms:
-
+
Graphite visitors on Chromebooks have trended up this school year but dropped down to background levels during summer and winter breaks, hinting at usage in classrooms
@@ -232,7 +232,7 @@ If you choose to [become a member](/donate), you are directly helping fund our e
If you choose to [volunteer](/volunteer), you lift our greatest bottleneck—time—and bring your unique skills to the table. There are opportunities from coding to technical writing to art, design, and marketing. It's a team effort, but only if there's a team to delegate the efforts to.
-And there are other ways to help out. Sign up as a QA tester in our Discord . Make it your mission to share Graphite by word-of-mouth on the forums and online communities you frequent. Put it on the radar of the creators you follow. Create and post your own tutorials on the web. Use it regularly and share your creations in our Discord community and by tagging #Made With Graphite on social media.
+And there are other ways to help out. Sign up as a QA tester in our Discord . Make it your mission to share Graphite by word-of-mouth on the forums and online communities you frequent. Put it on the radar of the creators you follow. Create and post your own tutorials on the web. Use it regularly and share your creations in our Discord community and by tagging #Made With Graphite on social media.
## Upcoming: FOSDEM '25
diff --git a/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md b/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md
index 732ff42e6..443c742a2 100644
--- a/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md
+++ b/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md
@@ -2,8 +2,8 @@
title = "Graphite progress report (Q4 2024)"
date = 2025-03-31
[extra]
-banner = "https://static.graphite.rs/content/blog/2025-03-31-graphite-progress-report-q4-2024.avif"
-banner_png = "https://static.graphite.rs/content/blog/2025-03-31-graphite-progress-report-q4-2024.png"
+banner = "https://static.graphite.art/content/blog/2025-03-31-graphite-progress-report-q4-2024.avif"
+banner_png = "https://static.graphite.art/content/blog/2025-03-31-graphite-progress-report-q4-2024.png"
author = "Keavon Chambers & Hypercube"
summary = "Graphite's Q4 2024 update introduces quality of life features across drawing tools and procedural editing."
css = ["/component/demo-artwork.css"]
@@ -18,15 +18,15 @@ bluesky = "https://bsky.app/profile/graphiteeditor.bsky.social/post/3llsxykppjs2
All Q4 2024 commits may be [viewed in this list](https://github.com/GraphiteEditor/Graphite/commits/master/?since=2024-10-01&until=2024-12-31) and all noteworthy changes are detailed below.
-This is the fourth in our 2024 series of quarterly progress reports. If you missed [the previous post](../graphite-progress-report-q3-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 on GitHub](https://github.com/GraphiteEditor/Graphite). Follow along and partake in our [Discord community](https://discord.graphite.rs), too.
+This is the fourth in our 2024 series of quarterly progress reports. If you missed [the previous post](../graphite-progress-report-q3-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 on GitHub](https://github.com/GraphiteEditor/Graphite). Follow along and partake in our [Discord community](https://discord.graphite.art), too.
At the time of publication, there is **one week left to apply for a summer 2025 internship with us through Google Summer of Code.** [Learn more here](../internships-for-a-rust-graphics-engine-gsoc-2025) and apply before [April 8 at 18:00 UTC](https://www.wolframalpha.com/input?i=April+8%2C+18%3A00+UTC).
To showcase the newly introduced feature of converting selected nodes into conveniently reusable subgraphs, the new *Parametric Dunescape* artwork is presented below. Every dune layer is generated just by its custom parameters for color, height, and random seed.
-
-
+
+
@@ -34,7 +34,7 @@ To showcase the newly introduced feature of converting selected nodes into conve
- Open this artwork to explore it yourself.
+ Open this artwork to explore it yourself.
@@ -48,8 +48,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -57,24 +57,24 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
- Pinnable node sections in the Properties panel ([commit e6d8c47](https://github.com/GraphiteEditor/Graphite/commit/e6d8c4743d2aff15985c929df2cc7381a61908a0))
-
-
+
+
-- New demo artwork, [*Changing Seasons*](https://editor.graphite.rs/#demo/changing-seasons), featured in the [previous progress report](../graphite-progress-report-q3-2024) ([commit fa6b5f2](https://github.com/GraphiteEditor/Graphite/commit/fa6b5f298adf395362e1aaa2c07be89fa89eaee2))
+- New demo artwork, [*Changing Seasons*](https://editor.graphite.art/#demo/changing-seasons), featured in the [previous progress report](../graphite-progress-report-q3-2024) ([commit fa6b5f2](https://github.com/GraphiteEditor/Graphite/commit/fa6b5f298adf395362e1aaa2c07be89fa89eaee2))
-
-
+
+
@@ -82,21 +82,21 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
- *Flatten Vector Elements* node that turns multiple layers of vector paths into a single combined path; and changes to the *Copy to Points*, *Repeat*, and *Circular Repeat* nodes so they output group data instead of a single vector path, allowing each separate layer to be modified by nodes which operate on groups (like *Assign Colors*), or flattened with *Flatten Vector Elements* to have the prior behavior ([#2011](https://github.com/GraphiteEditor/Graphite/pull/2011), [#2045](https://github.com/GraphiteEditor/Graphite/pull/2045))
-
+
- Support for *Fill* and *Stroke* nodes with groups, applying to each vector layer within ([#2046](https://github.com/GraphiteEditor/Graphite/pull/2046))
-
-
+
+
@@ -104,8 +104,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -113,8 +113,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -122,8 +122,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -131,8 +131,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -140,8 +140,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -149,8 +149,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -158,8 +158,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -167,8 +167,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -176,27 +176,27 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
- *Dot Product* node that calculates the mathematical dot product between two numerical vectors ([#2126](https://github.com/GraphiteEditor/Graphite/pull/2126))
- *Math* node that calculates a custom math expression with variables "A" and "B" ([#2121](https://github.com/GraphiteEditor/Graphite/pull/2121))
-
+
- Degrees/radians option in the trig-related math nodes and "Always Positive" option in the *Modulo* node for more convenient usage of the math nodes ([commit d649052](https://github.com/GraphiteEditor/Graphite/commit/d649052255c10c15754c3a3707f2edf996d2468d))
-
-
+
+
- Node graph control bar revamp ([#2093](https://github.com/GraphiteEditor/Graphite/pull/2093))
-
+
- Freehand tool feature for drawing new subpaths on an existing vector layer by holding Shift ([commit ed119ad](https://github.com/GraphiteEditor/Graphite/commit/ed119ad3d799030dbc488ccfc8ca9ad057eeff2c))
-
-
+
+
@@ -204,8 +204,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -213,8 +213,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -222,8 +222,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -231,8 +231,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -240,8 +240,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -249,8 +249,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
@@ -258,8 +258,8 @@ EDITOR'S NOTE: The grammatical structure of each bullet point should follow the
-
-
+
+
diff --git a/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md b/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md
index 1c8a54a58..f7ca6427d 100644
--- a/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md
+++ b/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md
@@ -2,8 +2,8 @@
title = "Internships for a Rust graphics engine: GSoC 2025"
date = 2025-04-02
[extra]
-banner = "https://static.graphite.rs/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.avif"
-banner_png = "https://static.graphite.rs/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.png"
+banner = "https://static.graphite.art/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.avif"
+banner_png = "https://static.graphite.art/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.png"
author = "Keavon Chambers"
summary = "Join Graphite in Google Summer of Code 2025 for a unique opportunity to contribute to open-source software development in Rust and computer graphics. Get paid while learning, working on self-contained projects under experienced mentors, and help Graphite grow."
reddit = "https://www.reddit.com/r/graphite/comments/1jplm6t/internships_for_a_rust_graphics_engine_gsoc_2025/"
@@ -25,12 +25,12 @@ Do you love Rust and focus on computer graphics, compiler development, or algori
Hear from our mentoring team about Graphite's tech stack and engineering vision by listening to last month's episode of the Developer Voices podcast:
-
+
For GSoC 2025, our priority focus is mentoring projects revolving around advanced graphics techniques and compiler development, meeting our goal of extending Graphite into the domain of raster image manipulation. Demonstrated experience in these areas is highly advantageous.
-Outstanding applicants tend to be competent, self-directed, productive, and confidence-inspiring. If you're driven to learn and explore cutting-edge engineering challenges, please [get in touch](https://discord.graphite.rs) and we will help you get up to speed and assist in submitting a timely application.
+Outstanding applicants tend to be competent, self-directed, productive, and confidence-inspiring. If you're driven to learn and explore cutting-edge engineering challenges, please [get in touch](https://discord.graphite.art) and we will help you get up to speed and assist in submitting a timely application.
Out of the [full list of project opportunities](/volunteer/guide/student-projects/#project-idea-list), some interesting high-priority projects include:
@@ -43,6 +43,6 @@ Out of the [full list of project opportunities](/volunteer/guide/student-project
- Researching an assortment of algorithms for image processing operations
- Engineering solutions for combining our web-based editor GUI and native WGPU renderer in the same window across Windows, Mac, and Linux desktop applications
-These recently added projects are pending an extended description, but we'll be happy to discuss the details if you pop into our [Discord server](https://discord.graphite.rs) and introduce yourself with links to related experience and projects.
+These recently added projects are pending an extended description, but we'll be happy to discuss the details if you pop into our [Discord server](https://discord.graphite.art) and introduce yourself with links to related experience and projects.
Outside GSoC, additional year-round opportunities are available for student capstone or independent research projects. These are run similarly, but are also available to multi-person groups. They provide academic credit instead of a stipend. Reach out anytime if interested.
diff --git a/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md b/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md
index e672d60f4..6b58c2f5e 100644
--- a/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md
+++ b/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md
@@ -2,8 +2,8 @@
title = "Graphite community meetup in Germany"
date = 2025-09-19
[extra]
-banner = "https://static.graphite.rs/content/blog/2025-09-19-graphite-community-meetup-in-germany.avif"
-banner_png = "https://static.graphite.rs/content/blog/2025-09-19-graphite-community-meetup-in-germany.png"
+banner = "https://static.graphite.art/content/blog/2025-09-19-graphite-community-meetup-in-germany.avif"
+banner_png = "https://static.graphite.art/content/blog/2025-09-19-graphite-community-meetup-in-germany.png"
author = "Keavon Chambers"
summary = "Join us for a Graphite community meetup on October 10th, 2025 in Karlsruhe, Germany. Meet the core team and connect with fellow enthusiasts."
reddit = "https://www.reddit.com/r/graphite/comments/1nlt64g/graphite_community_meetup_in_germany_october_10/"
diff --git a/website/content/blog/_index.md b/website/content/blog/_index.md
index e37bd1928..392b8096b 100644
--- a/website/content/blog/_index.md
+++ b/website/content/blog/_index.md
@@ -17,7 +17,7 @@ Latest news and articles from the Graphite team.
-
+
RSS Feed
diff --git a/website/content/contact.md b/website/content/contact.md
index ddbe16fa1..3521a2d9d 100644
--- a/website/content/contact.md
+++ b/website/content/contact.md
@@ -13,9 +13,9 @@ css = ["/layout/reading-material.css"]
- Members of the press, please see the [press resources](/press) page.
-- For general discussions, reach out on [Discord](https://discord.graphite.rs) or [Reddit](https://www.reddit.com/r/graphite/).
+- For general discussions, reach out on [Discord](https://discord.graphite.art) or [Reddit](https://www.reddit.com/r/graphite/).
- To report a bug or request a feature, please [file an issue](https://github.com/GraphiteEditor/Graphite/issues/new) on GitHub.
-- For other inquiries, get in touch by email at [contact@graphite.rs](mailto:contact@graphite.rs).
+- For other inquiries, get in touch by email at [contact@graphite.art](mailto:contact@graphite.art).
diff --git a/website/content/donate.md b/website/content/donate.md
index c1eef60be..2cd93d639 100644
--- a/website/content/donate.md
+++ b/website/content/donate.md
@@ -28,15 +28,15 @@ css = ["/page/donate.css", "/component/feature-box.css", "/component/feature-ico
@@ -49,7 +49,7 @@ css = ["/page/donate.css", "/component/feature-box.css", "/component/feature-ico
const donorsElement = document.querySelector("[data-statistics-donors]");
if (!dollarsElement || !membersElement || !donorsElement) return;
try {
- const response = await fetch("https://graphite.rs/sponsorship-stats");
+ const response = await fetch("https://graphite.art/sponsorship-stats");
const json = await response.json();
if (!json || !json.recurring || !json.one_time_prior_3_month_sum) throw new Error();
const recurringDollars = parseInt(json.recurring.cents) / 100;
diff --git a/website/content/features.md b/website/content/features.md
index 927cbaa20..449f801cd 100644
--- a/website/content/features.md
+++ b/website/content/features.md
@@ -24,7 +24,7 @@ In 2025, stay tuned for performance improvements, a native multiplatform desktop
-
+
@@ -77,7 +77,7 @@ Marrying vector and raster under one roof enables both art forms to complement e
— Pre-Alpha —
@@ -85,7 +85,7 @@ Marrying vector and raster under one roof enables both art forms to complement e