From fb0fab0622c317ef095ddde7cbcc29c0a25e0164 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Sat, 6 Dec 2025 02:08:32 -0800 Subject: [PATCH] Update links from graphite.rs to graphite.art --- .github/workflows/build-dev-and-ci.yml | 2 +- .github/workflows/build-production.yml | 2 +- .github/workflows/website.yml | 2 +- Cargo.toml | 4 +- README.md | 14 +- desktop/Cargo.toml | 2 +- desktop/assets/rs.graphite.Graphite.desktop | 2 +- desktop/bundle/Cargo.toml | 2 +- desktop/bundle/src/mac.rs | 2 +- desktop/embedded-resources/Cargo.toml | 2 +- desktop/platform/linux/Cargo.toml | 2 +- desktop/platform/mac/Cargo.toml | 2 +- desktop/platform/win/Cargo.toml | 2 +- desktop/src/consts.rs | 2 +- desktop/wrapper/Cargo.toml | 2 +- editor/Cargo.toml | 7 +- .../simple_dialogs/about_graphite_dialog.rs | 6 +- .../dialog/simple_dialogs/licenses_dialog.rs | 4 +- .../menu_bar/menu_bar_message_handler.rs | 6 +- .../portfolio/portfolio_message_handler.rs | 2 +- frontend/package.json | 4 +- frontend/src/io-managers/panic.ts | 2 +- frontend/src/state-providers/dialog.ts | 2 +- frontend/src/state-providers/fonts.ts | 2 +- frontend/vite.config.ts | 2 +- frontend/wasm/Cargo.toml | 4 +- libraries/dyn-any/Cargo.toml | 4 +- libraries/dyn-any/derive/Cargo.toml | 2 +- libraries/math-parser/Cargo.toml | 2 +- libraries/path-bool/Cargo.toml | 2 +- libraries/rawkit/Cargo.toml | 2 +- libraries/rawkit/README.md | 2 +- .../rawkit/rawkit-proc-macros/Cargo.toml | 2 +- libraries/rawkit/tests/tests.rs | 2 +- node-graph/graphene-cli/Cargo.toml | 2 +- .../libraries/application-io/Cargo.toml | 2 +- node-graph/libraries/core-types/Cargo.toml | 2 +- node-graph/libraries/graphic-types/Cargo.toml | 2 +- node-graph/libraries/no-std-types/Cargo.toml | 2 +- node-graph/libraries/raster-types/Cargo.toml | 2 +- node-graph/libraries/rendering/Cargo.toml | 2 +- node-graph/libraries/vector-types/Cargo.toml | 2 +- node-graph/node-macro/Cargo.toml | 4 +- node-graph/nodes/blending/Cargo.toml | 2 +- node-graph/nodes/brush/Cargo.toml | 2 +- node-graph/nodes/gcore/Cargo.toml | 2 +- node-graph/nodes/gstd/Cargo.toml | 2 +- node-graph/nodes/math/Cargo.toml | 2 +- node-graph/nodes/path-bool/Cargo.toml | 2 +- node-graph/nodes/raster/Cargo.toml | 2 +- node-graph/nodes/raster/shaders/Cargo.toml | 2 +- .../raster/shaders/entrypoint/Cargo.toml | 2 +- node-graph/nodes/text/Cargo.toml | 2 +- node-graph/nodes/transform/Cargo.toml | 2 +- node-graph/nodes/vector/Cargo.toml | 2 +- proc-macros/Cargo.toml | 4 +- website/.build-scripts/install-fonts.ts | 2 +- website/config.toml | 2 +- website/content/_index.md | 122 +++++++------- website/content/about.md | 20 +-- .../2022-02-12-announcing-graphite-alpha.md | 8 +- ...n-for-the-future-of-2d-content-creation.md | 4 +- ...buted-computing-in-the-graphene-runtime.md | 8 +- ...01-looking-back-on-2023-and-what's-next.md | 40 ++--- ...s-announcing-participation-in-gsoc-2024.md | 4 +- ...-05-09-graphite-progress-report-q1-2024.md | 76 ++++----- ...-07-31-graphite-progress-report-q2-2024.md | 76 ++++----- ...-10-15-graphite-progress-report-q3-2024.md | 102 ++++++------ ...view-2024-highlights-and-a-peek-at-2025.md | 42 ++--- ...-03-31-graphite-progress-report-q4-2024.md | 112 ++++++------- ...ps-for-a-rust-graphics-engine-gsoc-2025.md | 10 +- ...19-graphite-community-meetup-in-germany.md | 4 +- website/content/blog/_index.md | 2 +- website/content/contact.md | 4 +- website/content/donate.md | 8 +- website/content/features.md | 156 +++++++++--------- website/content/learn/_index.md | 4 +- .../learn/_unpublished/graph/_index.md | 2 +- website/content/learn/interface/_index.md | 28 ++-- .../content/learn/interface/document-panel.md | 16 +- website/content/learn/interface/menu-bar.md | 8 +- website/content/learn/introduction/_index.md | 2 +- .../introduction/features-and-limitations.md | 22 +-- website/content/logo.md | 52 +++--- website/content/press.md | 2 +- website/content/volunteer/_index.md | 10 +- website/content/volunteer/guide/_index.md | 4 +- .../guide/codebase-overview/_index.md | 2 +- .../guide/codebase-overview/debugging-tips.md | 2 +- .../guide/graphene/networks-and-nodes.md | 2 +- .../volunteer/guide/starting-a-task/_index.md | 2 +- .../submitting-a-contribution.md | 4 +- .../guide/student-projects/_index.md | 2 +- website/package.json | 4 +- website/sass/component/carousel.scss | 8 +- website/sass/component/feature-box.scss | 2 +- website/sass/page/index.scss | 2 +- website/static/js/fundraising.js | 2 +- website/templates/article.html | 6 +- website/templates/base.html | 10 +- 100 files changed, 575 insertions(+), 576 deletions(-) diff --git a/.github/workflows/build-dev-and-ci.yml b/.github/workflows/build-dev-and-ci.yml index e0aa84373..365eb76fe 100644 --- a/.github/workflows/build-dev-and-ci.yml +++ b/.github/workflows/build-dev-and-ci.yml @@ -7,7 +7,7 @@ on: pull_request: {} env: CARGO_TERM_COLOR: always - INDEX_HTML_HEAD_REPLACEMENT: + INDEX_HTML_HEAD_REPLACEMENT: jobs: build: diff --git a/.github/workflows/build-production.yml b/.github/workflows/build-production.yml index 6f37a42f7..1be2e3e94 100644 --- a/.github/workflows/build-production.yml +++ b/.github/workflows/build-production.yml @@ -18,7 +18,7 @@ jobs: RUSTC_WRAPPER: /usr/bin/sccache CARGO_INCREMENTAL: 0 SCCACHE_DIR: /var/lib/github-actions/.cache - INDEX_HTML_HEAD_REPLACEMENT: + INDEX_HTML_HEAD_REPLACEMENT: steps: - name: 📥 Clone and checkout repository diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 876dcd008..9cd800857 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -12,7 +12,7 @@ on: workflow_dispatch: {} env: CARGO_TERM_COLOR: always - INDEX_HTML_HEAD_INCLUSION: + INDEX_HTML_HEAD_INCLUSION: jobs: build: diff --git a/Cargo.toml b/Cargo.toml index e224c289a..1a7fbd44b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,8 +80,8 @@ resolver = "2" [workspace.package] rust-version = "1.88" edition = "2024" -authors = ["Graphite Authors "] -homepage = "https://graphite.rs" +authors = ["Graphite Authors "] +homepage = "https://graphite.art" repository = "https://github.com/GraphiteEditor/Graphite" license = "Apache-2.0" version = "0.0.0" diff --git a/README.md b/README.md index e5ceda081..d7f07ebf7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ - + @@ -10,14 +10,14 @@ # Your procedural toolbox for 2D content creation -**Graphite is a free, open source vector and raster graphics engine, [available now](https://editor.graphite.rs) in alpha. Get creative with a fully nondestructive editing workflow that combines layer-based compositing with node-based generative design.** +**Graphite is a free, open source vector and raster graphics engine, [available now](https://editor.graphite.art) in alpha. Get creative with a fully nondestructive editing workflow that combines layer-based compositing with node-based generative design.** -Having begun life as a vector editor, Graphite continues evolving into a generalized, all-in-one graphics toolbox that's built more like a game engine than a conventional creative app. The editor's tools wrap its node graph core, providing user-friendly workflows for vector, raster, and beyond. Photo editing, motion graphics, digital painting, desktop publishing, and VFX compositing are additional competencies on the planned [roadmap](https://graphite.rs/features/#roadmap) making Graphite into a highly versatile content creation tool. +Having begun life as a vector editor, Graphite continues evolving into a generalized, all-in-one graphics toolbox that's built more like a game engine than a conventional creative app. The editor's tools wrap its node graph core, providing user-friendly workflows for vector, raster, and beyond. Photo editing, motion graphics, digital painting, desktop publishing, and VFX compositing are additional competencies on the planned [roadmap](https://graphite.art/features/#roadmap) making Graphite into a highly versatile content creation tool. -Learn more from the [website](https://graphite.rs/), subscribe to the [newsletter](https://graphite.rs/#newsletter), consider [volunteering](https://graphite.rs/volunteer/) or [donating](https://graphite.rs/donate/), and remember to give this repository a ⭐! +Learn more from the [website](https://graphite.art/), subscribe to the [newsletter](https://graphite.art/#newsletter), consider [volunteering](https://graphite.art/volunteer/) or [donating](https://graphite.art/donate/), and remember to give this repository a ⭐!
-
+ @@ -62,7 +62,7 @@ https://github.com/user-attachments/assets/f4604aea-e8f1-45ce-9218-46ddc666f11d ## Support our mission ❤️ -Graphite is 100% community built and funded. Please become a part of keeping the project alive and thriving with a [donation](https://graphite.rs/donate/) if you share a belief in our **mission**: +Graphite is 100% community built and funded. Please become a part of keeping the project alive and thriving with a [donation](https://graphite.art/donate/) if you share a belief in our **mission**: > Graphite strives to unshackle the creativity of every budding artist and seasoned professional by building the best comprehensive art and design tool that's accessible to all. > @@ -78,6 +78,6 @@ Graphite is 100% community built and funded. Please become a part of keeping the ## Contributing/building the code -Are you a graphics programmer or Rust developer? Graphite aims to be one of the most approachable projects for putting your engineering skills to use in the world of open source. See [instructions here](https://graphite.rs/volunteer/guide/) for setting up the project and getting started. +Are you a graphics programmer or Rust developer? Graphite aims to be one of the most approachable projects for putting your engineering skills to use in the world of open source. See [instructions here](https://graphite.art/volunteer/guide/) for setting up the project and getting started. *By submitting code for inclusion in the project, you are agreeing to license your changes under the Apache 2.0 license, and that you have the authority to do so. Some directories may have other licenses, like dual-licensed MIT/Apache 2.0, and code submissions to those directories mean you agree to the applicable license(s).* diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 339df2599..36bd0d4a0 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -2,7 +2,7 @@ name = "graphite-desktop" version = "0.1.0" description = "Graphite Desktop" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" diff --git a/desktop/assets/rs.graphite.Graphite.desktop b/desktop/assets/rs.graphite.Graphite.desktop index c0cf4ef08..8e69d2c4d 100644 --- a/desktop/assets/rs.graphite.Graphite.desktop +++ b/desktop/assets/rs.graphite.Graphite.desktop @@ -8,4 +8,4 @@ Type=Application Icon=graphite Categories=Graphics;VectorGraphics;RasterGraphics; Keywords=graphite;editor;vector;raster;procedural;design; -StartupWMClass=rs.graphite.Graphite +StartupWMClass=art.graphite.Graphite diff --git a/desktop/bundle/Cargo.toml b/desktop/bundle/Cargo.toml index 5cef562ad..acaaa2ec4 100644 --- a/desktop/bundle/Cargo.toml +++ b/desktop/bundle/Cargo.toml @@ -2,7 +2,7 @@ name = "graphite-desktop-bundle" version = "0.0.0" description = "Graphite Desktop Bundle" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" diff --git a/desktop/bundle/src/mac.rs b/desktop/bundle/src/mac.rs index 030e8f060..d19368b59 100644 --- a/desktop/bundle/src/mac.rs +++ b/desktop/bundle/src/mac.rs @@ -5,7 +5,7 @@ use std::path::{Path, PathBuf}; use crate::common::*; -const APP_ID: &str = "rs.graphite.Graphite"; +const APP_ID: &str = "art.graphite.Graphite"; const PACKAGE: &str = "graphite-desktop-platform-mac"; const HELPER_BIN: &str = "graphite-desktop-platform-mac-helper"; diff --git a/desktop/embedded-resources/Cargo.toml b/desktop/embedded-resources/Cargo.toml index 9b061b9cf..b14c08b1d 100644 --- a/desktop/embedded-resources/Cargo.toml +++ b/desktop/embedded-resources/Cargo.toml @@ -2,7 +2,7 @@ name = "graphite-desktop-embedded-resources" version = "0.1.0" description = "Graphite Desktop Embedded Resources" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" diff --git a/desktop/platform/linux/Cargo.toml b/desktop/platform/linux/Cargo.toml index f1f6799e9..beba3026c 100644 --- a/desktop/platform/linux/Cargo.toml +++ b/desktop/platform/linux/Cargo.toml @@ -2,7 +2,7 @@ name = "graphite-desktop-platform-linux" version = "0.0.0" description = "Graphite Desktop Platform Linux" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" diff --git a/desktop/platform/mac/Cargo.toml b/desktop/platform/mac/Cargo.toml index a9e3bcbba..ccb021ae1 100644 --- a/desktop/platform/mac/Cargo.toml +++ b/desktop/platform/mac/Cargo.toml @@ -2,7 +2,7 @@ name = "graphite-desktop-platform-mac" version = "0.0.0" description = "Graphite Desktop Platform Mac" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" diff --git a/desktop/platform/win/Cargo.toml b/desktop/platform/win/Cargo.toml index 565caec75..459ac8907 100644 --- a/desktop/platform/win/Cargo.toml +++ b/desktop/platform/win/Cargo.toml @@ -2,7 +2,7 @@ name = "graphite-desktop-platform-win" version = "0.0.0" description = "Graphite Desktop Platform Windows" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" diff --git a/desktop/src/consts.rs b/desktop/src/consts.rs index 03154e420..0ce2e21e7 100644 --- a/desktop/src/consts.rs +++ b/desktop/src/consts.rs @@ -1,6 +1,6 @@ pub(crate) const APP_NAME: &str = "Graphite"; #[cfg(target_os = "linux")] -pub(crate) const APP_ID: &str = "rs.graphite.Graphite"; +pub(crate) const APP_ID: &str = "art.graphite.Graphite"; pub(crate) const APP_DIRECTORY_NAME: &str = "graphite"; pub(crate) const APP_LOCK_FILE_NAME: &str = "instance.lock"; diff --git a/desktop/wrapper/Cargo.toml b/desktop/wrapper/Cargo.toml index 2380bc7a5..de8b0e239 100644 --- a/desktop/wrapper/Cargo.toml +++ b/desktop/wrapper/Cargo.toml @@ -2,7 +2,7 @@ name = "graphite-desktop-wrapper" version = "0.1.0" description = "Graphite Desktop Wrapper" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "Apache-2.0" repository = "" edition = "2024" diff --git a/editor/Cargo.toml b/editor/Cargo.toml index 845ac8824..447250714 100644 --- a/editor/Cargo.toml +++ b/editor/Cargo.toml @@ -3,15 +3,15 @@ name = "graphite-editor" publish = false version = "0.0.0" rust-version = "1.88" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] edition = "2024" readme = "../README.md" -homepage = "https://graphite.rs" +homepage = "https://graphite.art" repository = "https://github.com/GraphiteEditor/Graphite" license = "Apache-2.0" [features] -default = ["wasm", "gpu" ] +default = ["wasm", "gpu"] wasm = ["wasm-bindgen", "graphene-std/wasm"] gpu = ["interpreted-executor/gpu", "wgpu-executor"] @@ -56,4 +56,3 @@ wasm-bindgen = { workspace = true, optional = true } env_logger = { workspace = true } futures = { workspace = true } tokio = { workspace = true } - diff --git a/editor/src/messages/dialog/simple_dialogs/about_graphite_dialog.rs b/editor/src/messages/dialog/simple_dialogs/about_graphite_dialog.rs index 0b770c61f..caba39ca1 100644 --- a/editor/src/messages/dialog/simple_dialogs/about_graphite_dialog.rs +++ b/editor/src/messages/dialog/simple_dialogs/about_graphite_dialog.rs @@ -20,9 +20,9 @@ impl DialogLayoutHolder for AboutGraphiteDialog { fn layout_column_2(&self) -> Layout { let links = [ - ("Heart", "Donate", "https://graphite.rs/donate/"), - ("GraphiteLogo", "Website", "https://graphite.rs"), - ("Volunteer", "Volunteer", "https://graphite.rs/volunteer/"), + ("Heart", "Donate", "https://graphite.art/donate/"), + ("GraphiteLogo", "Website", "https://graphite.art"), + ("Volunteer", "Volunteer", "https://graphite.art/volunteer/"), ("Credits", "Credits", "https://github.com/GraphiteEditor/Graphite/graphs/contributors"), ]; let mut widgets = links diff --git a/editor/src/messages/dialog/simple_dialogs/licenses_dialog.rs b/editor/src/messages/dialog/simple_dialogs/licenses_dialog.rs index 6a8683050..e531858d3 100644 --- a/editor/src/messages/dialog/simple_dialogs/licenses_dialog.rs +++ b/editor/src/messages/dialog/simple_dialogs/licenses_dialog.rs @@ -20,7 +20,7 @@ impl DialogLayoutHolder for LicensesDialog { let button_definitions: &[(&str, &str, fn() -> Message)] = &[ ("GraphiteLogo", "Graphite Logo", || { FrontendMessage::TriggerVisitLink { - url: "https://graphite.rs/logo/".into(), + url: "https://graphite.art/logo/".into(), } .into() }), @@ -32,7 +32,7 @@ impl DialogLayoutHolder for LicensesDialog { }), ("License", "Graphite License", || { FrontendMessage::TriggerVisitLink { - url: "https://graphite.rs/license/".into(), + url: "https://graphite.art/license/".into(), } .into() }), diff --git a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs index d537042f6..f4337e966 100644 --- a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs +++ b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs @@ -77,7 +77,7 @@ impl LayoutHolder for MenuBarMessageHandler { .label("") .flush(true) .icon(Some("GraphiteLogo".into())) - .on_commit(|_| FrontendMessage::TriggerVisitLink { url: "https://graphite.rs".into() }.into()) + .on_commit(|_| FrontendMessage::TriggerVisitLink { url: "https://graphite.art".into() }.into()) .widget_instance(), #[cfg(target_os = "macos")] TextButton::new("Graphite") @@ -652,13 +652,13 @@ impl LayoutHolder for MenuBarMessageHandler { vec![ MenuListEntry::new("Donate to Graphite").label("Donate to Graphite").icon("Heart").on_commit(|_| { FrontendMessage::TriggerVisitLink { - url: "https://graphite.rs/donate/".into(), + url: "https://graphite.art/donate/".into(), } .into() }), MenuListEntry::new("User Manual").label("User Manual").icon("UserManual").on_commit(|_| { FrontendMessage::TriggerVisitLink { - url: "https://graphite.rs/learn/".into(), + url: "https://graphite.art/learn/".into(), } .into() }), diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index 982646233..81168e2a2 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -894,7 +894,7 @@ impl MessageHandler> for Portfolio } } PortfolioMessage::RequestWelcomeScreenButtonsLayout => { - let donate = "https://graphite.rs/donate/"; + let donate = "https://graphite.art/donate/"; let table = LayoutGroup::Table { unstyled: true, diff --git a/frontend/package.json b/frontend/package.json index 468538301..1d9958752 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -2,7 +2,7 @@ "name": "graphite-web-frontend", "private": true, "description": "Graphite's web app frontend.", - "author": "Graphite Authors ", + "author": "Graphite Authors ", "browserslist": "> 1.5%, last 2 versions, not dead, not ie 11, not op_mini all, not ios_saf < 13", "type": "module", "scripts": { @@ -65,7 +65,7 @@ "vite": "^5.4.19", "vite-multiple-assets": "2.2.5" }, - "homepage": "https://graphite.rs", + "homepage": "https://graphite.art", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/frontend/src/io-managers/panic.ts b/frontend/src/io-managers/panic.ts index 1a00f42cd..80bf4ba7c 100644 --- a/frontend/src/io-managers/panic.ts +++ b/frontend/src/io-managers/panic.ts @@ -30,7 +30,7 @@ export function githubUrl(panicDetails: string): string { **Steps To Reproduce** Describe precisely how the crash occurred, step by step, starting with a new editor window. - 1. Open the Graphite editor at https://editor.graphite.rs + 1. Open the Graphite editor at https://editor.graphite.art 2. 3. 4. diff --git a/frontend/src/state-providers/dialog.ts b/frontend/src/state-providers/dialog.ts index acd28ac0c..4f677266a 100644 --- a/frontend/src/state-providers/dialog.ts +++ b/frontend/src/state-providers/dialog.ts @@ -79,7 +79,7 @@ export function createDialogState(editor: Editor) { editor.subscriptions.subscribeJsMessage(DisplayDialogDismiss, dismissDialog); editor.subscriptions.subscribeJsMessage(TriggerDisplayThirdPartyLicensesDialog, async () => { - const BACKUP_URL = "https://editor.graphite.rs/third-party-licenses.txt"; + const BACKUP_URL = "https://editor.graphite.art/third-party-licenses.txt"; let licenseText = `Content was not able to load. Please check your network connection and try again.\n\nOr visit ${BACKUP_URL} for the license notices.`; if (editor.handle.inDevelopmentMode()) licenseText = `Third-party licenses are not available in development builds.\n\nVisit ${BACKUP_URL} for the license notices.`; diff --git a/frontend/src/state-providers/fonts.ts b/frontend/src/state-providers/fonts.ts index 96d9ef7e0..f364c3607 100644 --- a/frontend/src/state-providers/fonts.ts +++ b/frontend/src/state-providers/fonts.ts @@ -98,7 +98,7 @@ export function createFontsState(editor: Editor) { } export type FontsState = ReturnType; -const fontListAPI = "https://api.graphite.rs/font-list"; +const fontListAPI = "https://api.graphite.art/font-list"; // From https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#common_weight_name_mapping const weightNameMapping = new Map([ diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index b68adf071..9a00274c5 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -197,7 +197,7 @@ function formatThirdPartyLicenses(jsLicenses: Dependency[]): string { !(packageInfo.repository && packageInfo.repository.toLowerCase().includes("github.com/GraphiteEditor/Graphite".toLowerCase())) && !( packageInfo.author && - packageInfo.author.toLowerCase().includes("contact@graphite.rs") && + packageInfo.author.toLowerCase().includes("contact@graphite.art") && // Exclude a comma which indicates multiple authors, which we need to not filter out !packageInfo.author.toLowerCase().includes(",") ), diff --git a/frontend/wasm/Cargo.toml b/frontend/wasm/Cargo.toml index 2634c118d..a18b3facd 100644 --- a/frontend/wasm/Cargo.toml +++ b/frontend/wasm/Cargo.toml @@ -3,10 +3,10 @@ name = "graphite-wasm" publish = false version = "0.0.0" rust-version = "1.88" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] edition = "2024" readme = "../../README.md" -homepage = "https://graphite.rs" +homepage = "https://graphite.art" repository = "https://github.com/GraphiteEditor/Graphite" license = "Apache-2.0" diff --git a/libraries/dyn-any/Cargo.toml b/libraries/dyn-any/Cargo.toml index bf9d2e096..f3439feeb 100644 --- a/libraries/dyn-any/Cargo.toml +++ b/libraries/dyn-any/Cargo.toml @@ -3,11 +3,11 @@ name = "dyn-any" version = "0.3.1" rust-version = "1.85" edition = "2024" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] description = "An Any trait that works for arbitrary lifetimes" license = "MIT OR Apache-2.0" readme = "./README.md" -homepage = "https://graphite.rs/libraries/dyn-any" +homepage = "https://crates.io/crates/dyn-any" repository = "https://github.com/GraphiteEditor/Graphite/tree/master/libraries/dyn-any" documentation = "https://docs.rs/dyn-any" diff --git a/libraries/dyn-any/derive/Cargo.toml b/libraries/dyn-any/derive/Cargo.toml index 12cbdd225..753cd78ef 100644 --- a/libraries/dyn-any/derive/Cargo.toml +++ b/libraries/dyn-any/derive/Cargo.toml @@ -2,7 +2,7 @@ name = "dyn-any-derive" version = "0.3.0" edition = "2024" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] description = "#[derive(DynAny)]" documentation = "https://docs.rs/dyn-any-derive" diff --git a/libraries/math-parser/Cargo.toml b/libraries/math-parser/Cargo.toml index 419d0acb8..3a0424b9a 100644 --- a/libraries/math-parser/Cargo.toml +++ b/libraries/math-parser/Cargo.toml @@ -3,7 +3,7 @@ name = "math-parser" version = "0.0.0" rust-version = "1.85" edition = "2024" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] description = "Parser for Graphite style mathematics expressions" license = "MIT OR Apache-2.0" diff --git a/libraries/path-bool/Cargo.toml b/libraries/path-bool/Cargo.toml index dc4937bf5..b864aa4d5 100644 --- a/libraries/path-bool/Cargo.toml +++ b/libraries/path-bool/Cargo.toml @@ -2,7 +2,7 @@ name = "path-bool" version = "0.1.0" rust-version = "1.85" -authors = ["Graphite Authors ", "Adam Platkevič"] +authors = ["Graphite Authors ", "Adam Platkevič"] edition = "2024" keywords = [ "bezier", diff --git a/libraries/rawkit/Cargo.toml b/libraries/rawkit/Cargo.toml index 30a0d2d0a..eb5e475f6 100644 --- a/libraries/rawkit/Cargo.toml +++ b/libraries/rawkit/Cargo.toml @@ -10,7 +10,7 @@ syn = "2.0.87" name = "rawkit" version = "0.1.0" edition = "2024" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] description = "A library to extract images from camera raw files" license = "MIT OR Apache-2.0" readme = "README.md" diff --git a/libraries/rawkit/README.md b/libraries/rawkit/README.md index 574ab01b8..714fd5e21 100644 --- a/libraries/rawkit/README.md +++ b/libraries/rawkit/README.md @@ -6,7 +6,7 @@ A library to extract images from camera raw files. It currently only works with the `.arw` files from Sony's cameras. In the future, the library will add support for all other major camera manufacturers. -Rawkit is built for the needs of [Graphite](https://graphite.rs), an open source 2D graphics editor. We hope it may be useful to others, but presently Graphite is its primary user. Pull requests are welcomed for new cameras, features, code cleanup, ergonomic enhancements, performance improvements, and documentation clarifications. +Rawkit is built for the needs of [Graphite](https://graphite.art), an open source 2D graphics editor. We hope it may be useful to others, but presently Graphite is its primary user. Pull requests are welcomed for new cameras, features, code cleanup, ergonomic enhancements, performance improvements, and documentation clarifications. ### Using Rawkit diff --git a/libraries/rawkit/rawkit-proc-macros/Cargo.toml b/libraries/rawkit/rawkit-proc-macros/Cargo.toml index 6fd8a540c..0995f1904 100644 --- a/libraries/rawkit/rawkit-proc-macros/Cargo.toml +++ b/libraries/rawkit/rawkit-proc-macros/Cargo.toml @@ -2,7 +2,7 @@ name = "rawkit-proc-macros" version = "0.1.0" edition = "2024" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] description = "Procedural macros for Rawkit" license = "MIT OR Apache-2.0" readme = "README.md" diff --git a/libraries/rawkit/tests/tests.rs b/libraries/rawkit/tests/tests.rs index 7cdc5d32c..8d905998d 100644 --- a/libraries/rawkit/tests/tests.rs +++ b/libraries/rawkit/tests/tests.rs @@ -15,7 +15,7 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::time::Duration; const TEST_FILES: [&str; 3] = ["ILCE-7M3-ARW2.3.5-blossoms.arw", "ILCE-7RM4-ARW2.3.5-kestrel.arw", "ILCE-6000-ARW2.3.1-windsock.arw"]; -const BASE_URL: &str = "https://static.graphite.rs/test-data/libraries/rawkit/"; +const BASE_URL: &str = "https://static.graphite.art/test-data/libraries/rawkit/"; const BASE_PATH: &str = "./tests/images/"; #[test] diff --git a/node-graph/graphene-cli/Cargo.toml b/node-graph/graphene-cli/Cargo.toml index 5210adee0..b5dcfd71f 100644 --- a/node-graph/graphene-cli/Cargo.toml +++ b/node-graph/graphene-cli/Cargo.toml @@ -3,7 +3,7 @@ name = "graphene-cli" version = "0.1.0" edition = "2024" description = "CLI interface for the graphene language" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/libraries/application-io/Cargo.toml b/node-graph/libraries/application-io/Cargo.toml index f5b659760..2546f65de 100644 --- a/node-graph/libraries/application-io/Cargo.toml +++ b/node-graph/libraries/application-io/Cargo.toml @@ -3,7 +3,7 @@ name = "graphene-application-io" version = "0.1.0" edition = "2024" description = "graphene application io interface" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/libraries/core-types/Cargo.toml b/node-graph/libraries/core-types/Cargo.toml index 1ec96501f..a2bbaae8a 100644 --- a/node-graph/libraries/core-types/Cargo.toml +++ b/node-graph/libraries/core-types/Cargo.toml @@ -3,7 +3,7 @@ name = "core-types" version = "0.1.0" edition = "2024" description = "Core types and traits for Graphene node system" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/libraries/graphic-types/Cargo.toml b/node-graph/libraries/graphic-types/Cargo.toml index 577569ee9..6d3cdeb41 100644 --- a/node-graph/libraries/graphic-types/Cargo.toml +++ b/node-graph/libraries/graphic-types/Cargo.toml @@ -3,7 +3,7 @@ name = "graphic-types" version = "0.1.0" edition = "2024" description = "Graphic types for Graphene - combines vector types with core infrastructure" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/libraries/no-std-types/Cargo.toml b/node-graph/libraries/no-std-types/Cargo.toml index ed5830f41..6a9a10930 100644 --- a/node-graph/libraries/no-std-types/Cargo.toml +++ b/node-graph/libraries/no-std-types/Cargo.toml @@ -3,7 +3,7 @@ name = "no-std-types" version = "0.1.0" edition = "2024" description = "no_std types for Graphene (shader-compatible)" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/libraries/raster-types/Cargo.toml b/node-graph/libraries/raster-types/Cargo.toml index 0ad5fa613..8d8e8583b 100644 --- a/node-graph/libraries/raster-types/Cargo.toml +++ b/node-graph/libraries/raster-types/Cargo.toml @@ -3,7 +3,7 @@ name = "raster-types" version = "0.1.0" edition = "2024" description = "Raster data types for Graphene node system" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/libraries/rendering/Cargo.toml b/node-graph/libraries/rendering/Cargo.toml index 77a1e227d..e33ce052f 100644 --- a/node-graph/libraries/rendering/Cargo.toml +++ b/node-graph/libraries/rendering/Cargo.toml @@ -3,7 +3,7 @@ name = "rendering" version = "0.1.0" edition = "2024" description = "SVG rendering for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [dependencies] diff --git a/node-graph/libraries/vector-types/Cargo.toml b/node-graph/libraries/vector-types/Cargo.toml index 274fef2c6..8eead4783 100644 --- a/node-graph/libraries/vector-types/Cargo.toml +++ b/node-graph/libraries/vector-types/Cargo.toml @@ -3,7 +3,7 @@ name = "vector-types" version = "0.1.0" edition = "2024" description = "Vector graphics types and algorithms for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/node-macro/Cargo.toml b/node-graph/node-macro/Cargo.toml index 617d4658a..a162ed787 100644 --- a/node-graph/node-macro/Cargo.toml +++ b/node-graph/node-macro/Cargo.toml @@ -3,10 +3,10 @@ name = "node-macro" publish = false version = "0.0.0" rust-version = "1.88" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] edition = "2024" readme = "../../README.md" -homepage = "https://graphite.rs" +homepage = "https://graphite.art" repository = "https://github.com/GraphiteEditor/Graphite" license = "Apache-2.0" diff --git a/node-graph/nodes/blending/Cargo.toml b/node-graph/nodes/blending/Cargo.toml index 66ba89dc8..ed9229adc 100644 --- a/node-graph/nodes/blending/Cargo.toml +++ b/node-graph/nodes/blending/Cargo.toml @@ -3,7 +3,7 @@ name = "blending-nodes" version = "0.1.0" edition = "2024" description = "Blending operation nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/nodes/brush/Cargo.toml b/node-graph/nodes/brush/Cargo.toml index f0041ab60..59e085256 100644 --- a/node-graph/nodes/brush/Cargo.toml +++ b/node-graph/nodes/brush/Cargo.toml @@ -3,7 +3,7 @@ name = "brush-nodes" version = "0.1.0" edition = "2024" description = "Brush rendering nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/nodes/gcore/Cargo.toml b/node-graph/nodes/gcore/Cargo.toml index 120e2a212..fa59deed1 100644 --- a/node-graph/nodes/gcore/Cargo.toml +++ b/node-graph/nodes/gcore/Cargo.toml @@ -3,7 +3,7 @@ name = "graphene-core" version = "0.1.0" edition = "2024" description = "Core utility nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/nodes/gstd/Cargo.toml b/node-graph/nodes/gstd/Cargo.toml index d56cc25d3..39e8eebb9 100644 --- a/node-graph/nodes/gstd/Cargo.toml +++ b/node-graph/nodes/gstd/Cargo.toml @@ -3,7 +3,7 @@ name = "graphene-std" version = "0.1.0" edition = "2024" description = "Graphene standard library" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/nodes/math/Cargo.toml b/node-graph/nodes/math/Cargo.toml index 565e1f1cd..3aeb8f37f 100644 --- a/node-graph/nodes/math/Cargo.toml +++ b/node-graph/nodes/math/Cargo.toml @@ -3,7 +3,7 @@ name = "math-nodes" version = "0.1.0" edition = "2024" description = "Math operation nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [dependencies] diff --git a/node-graph/nodes/path-bool/Cargo.toml b/node-graph/nodes/path-bool/Cargo.toml index fc751d010..bb4537a6c 100644 --- a/node-graph/nodes/path-bool/Cargo.toml +++ b/node-graph/nodes/path-bool/Cargo.toml @@ -3,7 +3,7 @@ name = "path-bool-nodes" version = "0.1.0" edition = "2024" description = "Path boolean operation nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [dependencies] diff --git a/node-graph/nodes/raster/Cargo.toml b/node-graph/nodes/raster/Cargo.toml index 6e247b326..f5084eb55 100644 --- a/node-graph/nodes/raster/Cargo.toml +++ b/node-graph/nodes/raster/Cargo.toml @@ -3,7 +3,7 @@ name = "raster-nodes" version = "0.1.0" edition = "2024" description = "Raster operation nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [lints] diff --git a/node-graph/nodes/raster/shaders/Cargo.toml b/node-graph/nodes/raster/shaders/Cargo.toml index d184029cf..d9f22ddc9 100644 --- a/node-graph/nodes/raster/shaders/Cargo.toml +++ b/node-graph/nodes/raster/shaders/Cargo.toml @@ -3,7 +3,7 @@ name = "raster-nodes-shaders" version = "0.1.0" edition = "2024" description = "graphene raster data format" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [lib] diff --git a/node-graph/nodes/raster/shaders/entrypoint/Cargo.toml b/node-graph/nodes/raster/shaders/entrypoint/Cargo.toml index 3e26fd2c0..ecc012129 100644 --- a/node-graph/nodes/raster/shaders/entrypoint/Cargo.toml +++ b/node-graph/nodes/raster/shaders/entrypoint/Cargo.toml @@ -3,7 +3,7 @@ name = "raster-nodes-shaders-entrypoint" version = "0.1.0" edition = "2024" description = "graphene raster nodes shaders entrypoint" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [lib] diff --git a/node-graph/nodes/text/Cargo.toml b/node-graph/nodes/text/Cargo.toml index 985385851..fb22be08c 100644 --- a/node-graph/nodes/text/Cargo.toml +++ b/node-graph/nodes/text/Cargo.toml @@ -3,7 +3,7 @@ name = "text-nodes" version = "0.1.0" edition = "2024" description = "Text operation nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/nodes/transform/Cargo.toml b/node-graph/nodes/transform/Cargo.toml index 4c0803267..c9d88723a 100644 --- a/node-graph/nodes/transform/Cargo.toml +++ b/node-graph/nodes/transform/Cargo.toml @@ -3,7 +3,7 @@ name = "transform-nodes" version = "0.1.0" edition = "2024" description = "Transform operation nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/node-graph/nodes/vector/Cargo.toml b/node-graph/nodes/vector/Cargo.toml index a3838b100..c11a14f38 100644 --- a/node-graph/nodes/vector/Cargo.toml +++ b/node-graph/nodes/vector/Cargo.toml @@ -3,7 +3,7 @@ name = "vector-nodes" version = "0.1.0" edition = "2024" description = "Vector operation nodes for Graphene" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] license = "MIT OR Apache-2.0" [features] diff --git a/proc-macros/Cargo.toml b/proc-macros/Cargo.toml index a19e5b598..b6d47d416 100644 --- a/proc-macros/Cargo.toml +++ b/proc-macros/Cargo.toml @@ -3,10 +3,10 @@ name = "graphite-proc-macros" publish = false version = "0.0.0" rust-version = "1.88" -authors = ["Graphite Authors "] +authors = ["Graphite Authors "] edition = "2024" readme = "../README.md" -homepage = "https://graphite.rs" +homepage = "https://graphite.art" repository = "https://github.com/GraphiteEditor/Graphite" license = "Apache-2.0" diff --git a/website/.build-scripts/install-fonts.ts b/website/.build-scripts/install-fonts.ts index cd67a32b6..ba1b63b77 100644 --- a/website/.build-scripts/install-fonts.ts +++ b/website/.build-scripts/install-fonts.ts @@ -159,7 +159,7 @@ if (unusedFiles.length > 0) { console.log("\nFont installation complete!"); // Fetch and save text-balancer.js, which we don't commit to the repo so we're not version controlling dependency code -const textBalancerUrl = "https://static.graphite.rs/text-balancer/text-balancer.js"; +const textBalancerUrl = "https://static.graphite.art/text-balancer/text-balancer.js"; const textBalancerDest = path.join(basePath, "../static", "text-balancer.js"); console.log("\nDownloading text-balancer.js..."); https diff --git a/website/config.toml b/website/config.toml index 3234f68f9..9a171fd40 100644 --- a/website/config.toml +++ b/website/config.toml @@ -1,6 +1,6 @@ title = "Graphite" description = "2D raster & vector editor that melds traditional layers & tools with a modern node-based procedural workflow." -base_url = "https://graphite.rs" +base_url = "https://graphite.art" feed_filenames = ["rss.xml"] compile_sass = true diff --git a/website/content/_index.md b/website/content/_index.md index cff512bbf..fbf06f2d7 100644 --- a/website/content/_index.md +++ b/website/content/_index.md @@ -14,7 +14,7 @@ meta_description = "Open source free software. A vector graphics creativity suit @@ -36,27 +36,27 @@ meta_description = "Open source free software. A vector graphics creativity suit @@ -85,15 +85,15 @@ meta_description = "Open source free software. A vector graphics creativity suit --> @@ -112,9 +112,9 @@ It's easy to learn and teach, yet Graphite's accessible design does not sacrific
-Photo of Keavon Chambers +Photo of Keavon Chambers -## Keavon Chambers (@Keavon) +## Keavon Chambers (@Keavon) ***Founder, UI & product design, frontend, editor systems*** @@ -123,9 +123,9 @@ Keavon is a creative generalist with a love for the fusion of arts and technolog
-Photo of Dennis Kobert +Photo of Dennis Kobert -## Dennis Kobert (@TrueDoctor) +## Dennis Kobert (@TrueDoctor) ***Graphene node engine, research, architecture*** @@ -138,9 +138,9 @@ Dennis is a mix between a mathematician and a mad scientist. While still enjoyin
-Photo of Timon Schelling +Photo of Timon Schelling -## Timon Schelling (@timon-schelling) +## Timon Schelling (@timon-schelling) ***Desktop application engineering*** @@ -150,9 +150,9 @@ Timon believes open source tools are essential to grant digital artists freedom
-Photo of Adam Gerhant +Photo of Adam Gerhant -## 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. -Graphene in a local and cloud environment +Graphene in a local and cloud environment ### 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 Levien speaking about Xilem

+

Raph Levien speaking about Xilem

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 and Keavon in front of the Embark office sign

+

Leonard and Keavon in front of the Embark office sign

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 -

Graphite and Blender team members in front of the Blender building

+

Graphite and Blender team members in front of the Blender building

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 in front of a projector screen at Blender's offices

+

Keavon presents in front of a projector screen at Blender's offices

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 and Dennis in front of Karlsruhe Palace

+

Keavon and Dennis in front of Karlsruhe Palace

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 and Oliver standing in front of the SIGGRAPH conference sign

+

Keavon and Oliver standing in front of the SIGGRAPH conference sign

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:
- Vector Art Quickstart - Graphite, the Open Source 2D Graphics Suite + Vector Art Quickstart - Graphite, the Open Source 2D Graphics Suite
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 -

Graph visualizing the number of code commits each week of 2023

+

Graph visualizing the number of code commits each week of 2023

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 of a Graphite document before the node graph

+

Block diagram of a Graphite document before the node graph

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 of a Graphite document after the first phase of migration

+

Block diagram of a Graphite document after the first phase of migration

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 of a Graphite document after the second phase of migration

+

Block diagram of a Graphite document after the second phase of migration

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 a Graphite document now that the migration is complete

+

Block diagram of a Graphite document now that the migration is complete

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.
- - Vector art of Isometric Fountain + + Vector art of Isometric Fountain

@@ -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)) - Graph error visualization screenshot + Graph error visualization screenshot - 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)) - Alpha 3 release series in the 'About Graphite' menu screenshot + Alpha 3 release series in the 'About Graphite' menu screenshot - 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.
- - Vector art of Painted Dreams + + Vector art of Painted Dreams

@@ -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)) - Snapping choices popover menu + Snapping choices popover menu - 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))
- - Vector art of Isometric Fountain + + Vector art of Isometric Fountain

@@ -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.
- - Vector art of Changing Seasons + + Vector art of Changing Seasons

@@ -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 choices popover menu + 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 + + Vector art of Painted Dreams

@@ -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)) - Graph execution crash recovery message + 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 + 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))
@@ -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)) - Editor preferences menu with Vello setting + Editor preferences menu with Vello setting - 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 -Poster for the Bay Area 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 +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`. @@ -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. -Winning artwork depicts a dark landscape with an ethereal diamond forming a constellation with the stars above +Winning artwork depicts a dark landscape with an ethereal diamond forming a constellation with the stars above 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).

-Screenshot of 10,000 stars +Screenshot of 10,000 stars 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 -

Google Summer of Code program logo

+

Google Summer of Code program logo

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:
- BCON LA 2024 - Lightning Talks + BCON LA 2024 - Lightning Talks
### 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 #MadeWithGraphite 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 #MadeWithGraphite 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.
- - Vector art of Parametric Dunescape + + Vector art of Parametric Dunescape

@@ -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)) - Visual description of the change introduced by the Flatten Vector Elements node and its usage with instancing nodes + Visual description of the change introduced by the Flatten Vector Elements node and its usage with instancing nodes - 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)) - Visualization of the Math node properties showing the example expression: 0.33 * A + (1 - 0.33) * B + Visualization of the Math node properties showing the example expression: 0.33 * A + (1 - 0.33) * B - 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)) - View of the control bar area of the UI in the node graph featuring new buttons + View of the control bar area of the UI in the node graph featuring new buttons - 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:
- Graphite: Image Editing as a Syntax Tree (with Keavon Chambers & Dennis Kobert) + Graphite: Image Editing as a Syntax Tree (with Keavon Chambers & Dennis Kobert)
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 + RSS 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
- Rust-Powered Graphics Editor: How Graphite's Syntax Trees Revolutionize Image Editing + Rust-Powered Graphics Editor: How Graphite's Syntax Trees Revolutionize Image Editing
@@ -77,7 +77,7 @@ Marrying vector and raster under one roof enables both art forms to complement e

— Pre-Alpha —

- + Editor systems; basic vector art tools
@@ -85,7 +85,7 @@ Marrying vector and raster under one roof enables both art forms to complement e

— Alpha 1 —

- + Better tools; node graph prototyping
@@ -93,7 +93,7 @@ Marrying vector and raster under one roof enables both art forms to complement e

— Alpha 2 —

- + Node graph integration in documents
@@ -101,7 +101,7 @@ Marrying vector and raster under one roof enables both art forms to complement e

— Alpha 3 —

- + Procedural vector editing and usability
@@ -109,63 +109,63 @@ Marrying vector and raster under one roof enables both art forms to complement e

— Alpha 4 —

- + Parametric animation
- + Instancer nodes for looped generation
- + Enhanced Pen, Path, and Shape tools
- + Table-based graphical data format
- + Data panel for graphical introspection
- + Layer clipping masks
- + All-around performance optimizations
- + Blend tool to morph between shapes
- + Desktop app (Windows, Mac, Linux)
- + GPU-accelerated raster rendering
- + Expanded imaging model data format
- + Context menus throughout the editor
- + Simplified main properties panel
- + Node version management
- + Stable document format
@@ -173,71 +173,71 @@ Marrying vector and raster under one roof enables both art forms to complement e

— Beta 1 —

- + Local fonts access
- + Saving over local files (web version)
- + Timeline panel for animation curves
- + Nested documents as custom nodes
- + Variables and color swatches
- + Custom attributes for table data
- + Physical measurement units
- + Text-on-path tool support
- + Per-glyph text style controls
- + Robust vector mesh editing/rendering
- + Nondestructive shape builder tool
- + Automatic image trace vectorization
- + Broader SVG support including filters
- + Parametric art standalone export
- + New and improved brush tool
- + Stylus and touch interaction
- + MIDI and audio-reactive visualization
@@ -245,59 +245,59 @@ Marrying vector and raster under one roof enables both art forms to complement e

— Beta 2 —

- + Dockable and multi-window panels
- + Command palette
- + Onion skinning mode for animation
- + Animatable deformation meshes/rigs
- + Simulation domains
- + Signed distance field rendering
- + Procedural PBR material generation
- + Code editor for custom nodes
- + Asset libraries and node marketplace
- + Automation/batch processing tools
- + Select mode (marquee masking)
- + Raster adjustments, filters, and effects
- + Liquify and warp transforms
- + Raw photo processing
@@ -305,99 +305,99 @@ Marrying vector and raster under one roof enables both art forms to complement e

— LTS Releases —

- + Advanced typesetting features
- + PDF, EPS, AI, DXF, PSD, and TIFF
- + CMYK, spot color, and ICC profiles
- + HDR and WCG color handling
- + Outliner panel (node graph tree view)
- + Document history management
- + Offline edit resolution with CRDTs
- + History brush and clone stamp tools
- + Internationalization and accessibility
- + AI nodes and tools (e.g. magic wand)
- + Procedural styling of paint brushes
- + Infinite generative vector patterns
- + Geometric constraint system solver
- + Responsive design layout solver
- + Authoring animated SVGs, Lottie, etc.
- + Live video stream compositing
- + Tablet app and keyboard-free controls
- + Media collection manager/browser
- + Cloud document storage/device sync
- + Multiplayer collaborative editing
- + Predictive graph rendering/caching
- + Multi-device distributed rendering
- + Hosted rendering accelerator service
- + …and that's all just the beginning…
@@ -420,7 +420,7 @@ The panel will enable users to scrub through time with the playhead and choose b Work-in-progress design mockup: - + @@ -440,9 +440,9 @@ Brushes, selection tools, masks, filters, effects, adjustment layers, and other Work-in-progress design mockup: - + - + diff --git a/website/content/learn/_index.md b/website/content/learn/_index.md index 52771ba73..9a3b983a2 100644 --- a/website/content/learn/_index.md +++ b/website/content/learn/_index.md @@ -17,7 +17,7 @@ Additional manual chapters are being added over time. Check back every so often. ## Need help? -If you're ever stuck or confused, ask your questions in the `#🧭user-help` channel of the [Graphite Discord server](https://discord.graphite.rs) or post a thread in the [discussion board](https://github.com/GraphiteEditor/Graphite/discussions) on GitHub. +If you're ever stuck or confused, ask your questions in the `#🧭user-help` channel of the [Graphite Discord server](https://discord.graphite.art) or post a thread in the [discussion board](https://github.com/GraphiteEditor/Graphite/discussions) on GitHub. ## Jump right in @@ -26,5 +26,5 @@ If you're ever stuck or confused, ask your questions in the `#🧭user-help` cha The fastest way to get started is to watch and follow along steps-by-step in the hands-on quickstart tutorial:
- Vector Art Quickstart - Graphite, the Open Source 2D Graphics Suite + Vector Art Quickstart - Graphite, the Open Source 2D Graphics Suite
diff --git a/website/content/learn/_unpublished/graph/_index.md b/website/content/learn/_unpublished/graph/_index.md index 75a367fe5..db0ac3056 100644 --- a/website/content/learn/_unpublished/graph/_index.md +++ b/website/content/learn/_unpublished/graph/_index.md @@ -26,7 +26,7 @@ Layers and nodes are wired together using **links** which send data between the When a layer or node is selected, these buttons will show up on the left side of the control bar: -

The node/layer controls

+

The node/layer controls

| | | |-|-| diff --git a/website/content/learn/interface/_index.md b/website/content/learn/interface/_index.md index 82ef04503..58afa4082 100644 --- a/website/content/learn/interface/_index.md +++ b/website/content/learn/interface/_index.md @@ -13,13 +13,13 @@ This chapter formally introduces the concepts and terminology for the user inter The bar running across the top of the editor is called the **title bar**. In the (forthcoming) desktop release of Graphite, this acts as the draggable window frame. - + ### Menu bar On the left, the [**menu bar**](./menu-bar) provides quick access to many editor, document, and artwork related controls. Its functions are covered in detail on the next page. - + @@ -31,16 +31,16 @@ On the right (and on Mac, the left), the **window buttons** provide platform-spe | | | |-|-| -| **Web** |

Fullscreen:

Fullscreen button

| -| **Windows** |

Minimize, maximize/restore down, close:

Minimize/maximize/close window buttons

| -| **Linux** |

Minimize, maximize/unmaximize, close:

Minimize/maximize/close window buttons

| -| **macOS** |

Close, minimize, fullscreen:

Close/minimize/fullscreen window buttons

| +| **Web** |

Fullscreen:

Fullscreen button

| +| **Windows** |

Minimize, maximize/restore down, close:

Minimize/maximize/close window buttons

| +| **Linux** |

Minimize, maximize/unmaximize, close:

Minimize/maximize/close window buttons

| +| **macOS** |

Close, minimize, fullscreen:

Close/minimize/fullscreen window buttons

| ## Workspace The **workspace** is the editor's main content area, filled with **panels** arranged next to one another. The **gutter** lines, located between neighboring panels, may be dragged to resize them. -

The workspace

+

The workspace

### Panels @@ -56,7 +56,7 @@ Beneath the panel header, the **panel content** displays the content for its pan The bar running across the bottom of the editor is called the **status bar**. -

Status bar

+

Status bar

### Input hints @@ -64,17 +64,17 @@ The **input hints** are presently the only occupant of the status bar. They indi Hints with a **`+`** mean that adding the indicated modifier key will change the base action. For example: in the following action, dragging with left-click held down will zoom the canvas; then additionally holding the Ctrl key will make the zoom action snap to whole increments. -

Example hint

+

Example hint

Hints with a **`/`** mean that either indicated input combination can be used to trigger the same action. For example: in the following action, either holding the space bar while dragging with the left mouse button held down, or just dragging with the middle mouse button held down, will both pan around the document in the viewport. -

Example hint

+

Example hint

The following chart describes each icon representing the mouse inputs you can perform so a hint's prescribed action occurs. | | Clicks | Drags | Others | |-|:-:|:-:|:-:| -| **Left
mouse
button** | Left click icon

Left click | Left click drag icon

Left click drag | Left double-click icon

Left double-click | -| **Right
mouse
button** | Right click icon

Right click | Right click drag icon

Right click drag | Right double-click icon

Right double-click | -| **Middle
mouse
button** | Middle click icon

Middle click | Middle click drag icon

Middle click drag | Scroll up/down icons

Scroll up/down | -| **No
mouse
button** | | Drag icon

Drag | | +| **Left
mouse
button** | Left click icon

Left click | Left click drag icon

Left click drag | Left double-click icon

Left double-click | +| **Right
mouse
button** | Right click icon

Right click | Right click drag icon

Right click drag | Right double-click icon

Right double-click | +| **Middle
mouse
button** | Middle click icon

Middle click | Middle click drag icon

Middle click drag | Scroll up/down icons

Scroll up/down | +| **No
mouse
button** | | Drag icon

Drag | | diff --git a/website/content/learn/interface/document-panel.md b/website/content/learn/interface/document-panel.md index 905667cae..428735847 100644 --- a/website/content/learn/interface/document-panel.md +++ b/website/content/learn/interface/document-panel.md @@ -28,14 +28,14 @@ Only the default mode is currently implemented. Others will be added in the futu | | | |-|-| -| The editing modes dropdown menu | The default, **Design Mode**, is for directly editing the artwork.

Once implemented, **Select Mode** will be where marquee selections are made to constrain the active tool's edits to a masked area of choice.

Once implemented, **Guide Mode** will be for creating guides and constraint systems used for alignment and constraint-based layout. | +| The editing modes dropdown menu | The default, **Design Mode**, is for directly editing the artwork.

Once implemented, **Select Mode** will be where marquee selections are made to constrain the active tool's edits to a masked area of choice.

Once implemented, **Guide Mode** will be for creating guides and constraint systems used for alignment and constraint-based layout. | --> ### Tool controls The left side of the control bar has controls pertaining to the active tool. It's empty for some tools. -

Example of the tool controls for the Select tool

+

Example of the tool controls for the Select tool

The example above shows the Select tool controls. Because the Select tool deals with selecting and transforming layers, its controls include: - The selection mode to determine if the deepest or shallowest layer in a nested hierarchy is selected when clicked. @@ -50,13 +50,13 @@ Depending on which tool is active, these will change to reflect the pertinent op The right side of the control bar has controls related to the active document and viewport. -

The viewport controls

+

The viewport controls

| | | |-|-| | Overlays |

When checked (default), overlays are shown. When unchecked, they are hidden. Overlays are the temporary contextual visualizations (like bounding boxes and vector manipulators) that are usually blue and appear atop the viewport when using tools.

| -| Snapping |

When checked (default), drawing and dragging shapes and vector points means they will snap to other areas of geometric interest like corners or anchor points. When unchecked, the selection moves freely.

Fine-grained options are available by clicking the overflow button to access its options popover menu. Each option has a tooltip explaining what it does by hovering the cursor over it.

Snapping options popover menu

Snapping options relating to **Bounding Boxes**:

  • **Align with Edges**: Snaps to horizontal/vertical alignment with the edges of any layer's bounding box.
  • **Corner Points**: Snaps to the four corners of any layer's bounding box.
  • **Center Points**: Snaps to the center point of any layer's bounding box.
  • **Edge Midpoints**: Snaps to any of the four points at the middle of the edges of any layer's bounding box.
  • **Distribute Evenly**: Snaps to a consistent distance offset established by the bounding boxes of nearby layers (due to a bug, **Corner Points** and **Center Points** must be enabled).

Snapping options relating to **Paths**:

  • **Align with Anchor Points**: Snaps to horizontal/vertical alignment with the anchor points of any vector path.
  • **Anchor Points**: Snaps to the anchor point of any vector path.
  • **Line Midpoints**: Snaps to the point at the middle of any straight line segment of a vector path.
  • **Path Intersection Points**: Snaps to any points where vector paths intersect.
  • **Along Paths**: Snaps along the length of any vector path.
  • **Normal to Paths**: Snaps a line to a point perpendicular to a vector path (due to a bug, **Intersections of Paths** must be enabled).
  • **Tangent to Paths**: Snaps a line to a point tangent to a vector path (due to a bug, **Intersections of Paths** must be enabled).

| -| Grid |

When checked (off by default), grid lines are shown and snapping to them becomes active. The initial grid scale is 1 document unit, helping you draw pixel-perfect artwork.

  • **Type** sets whether the grid pattern is made of squares or triangles.

    **Rectangular** is a pattern of horizontal and vertical lines:

    Snapping options popover menu

    It has one option unique to this mode:

    • **Spacing** is the width and height of the rectangle grid cells.

    **Isometric** is a pattern of triangles:

    Snapping options popover menu

    It has two options unique to this mode:

    • **Y Spacing** is the height between vertical repetitions of the grid.
    • **Angles** is the slant of the upward and downward sloped grid lines.
  • **Display** gives control over the appearance of the grid. The **Display as dotted grid** checkbox (off by default) replaces the solid lines with dots at their intersection points.
  • **Origin** is the position in the canvas where the repeating grid pattern begins from. If you need an offset for the grid where an intersection occurs at a specific location, set those coordinates.
| +| Snapping |

When checked (default), drawing and dragging shapes and vector points means they will snap to other areas of geometric interest like corners or anchor points. When unchecked, the selection moves freely.

Fine-grained options are available by clicking the overflow button to access its options popover menu. Each option has a tooltip explaining what it does by hovering the cursor over it.

Snapping options popover menu

Snapping options relating to **Bounding Boxes**:

  • **Align with Edges**: Snaps to horizontal/vertical alignment with the edges of any layer's bounding box.
  • **Corner Points**: Snaps to the four corners of any layer's bounding box.
  • **Center Points**: Snaps to the center point of any layer's bounding box.
  • **Edge Midpoints**: Snaps to any of the four points at the middle of the edges of any layer's bounding box.
  • **Distribute Evenly**: Snaps to a consistent distance offset established by the bounding boxes of nearby layers (due to a bug, **Corner Points** and **Center Points** must be enabled).

Snapping options relating to **Paths**:

  • **Align with Anchor Points**: Snaps to horizontal/vertical alignment with the anchor points of any vector path.
  • **Anchor Points**: Snaps to the anchor point of any vector path.
  • **Line Midpoints**: Snaps to the point at the middle of any straight line segment of a vector path.
  • **Path Intersection Points**: Snaps to any points where vector paths intersect.
  • **Along Paths**: Snaps along the length of any vector path.
  • **Normal to Paths**: Snaps a line to a point perpendicular to a vector path (due to a bug, **Intersections of Paths** must be enabled).
  • **Tangent to Paths**: Snaps a line to a point tangent to a vector path (due to a bug, **Intersections of Paths** must be enabled).

| +| Grid |

When checked (off by default), grid lines are shown and snapping to them becomes active. The initial grid scale is 1 document unit, helping you draw pixel-perfect artwork.

  • **Type** sets whether the grid pattern is made of squares or triangles.

    **Rectangular** is a pattern of horizontal and vertical lines:

    Snapping options popover menu

    It has one option unique to this mode:

    • **Spacing** is the width and height of the rectangle grid cells.

    **Isometric** is a pattern of triangles:

    Snapping options popover menu

    It has two options unique to this mode:

    • **Y Spacing** is the height between vertical repetitions of the grid.
    • **Angles** is the slant of the upward and downward sloped grid lines.
  • **Display** gives control over the appearance of the grid. The **Display as dotted grid** checkbox (off by default) replaces the solid lines with dots at their intersection points.
  • **Origin** is the position in the canvas where the repeating grid pattern begins from. If you need an offset for the grid where an intersection occurs at a specific location, set those coordinates.
| | Render Mode |

**Normal** (default): The artwork is rendered normally.

**Outline**: The artwork is rendered as a wireframe.

**Pixel Preview**: **Not implemented yet.** The artwork is rendered as it would appear when exported as a bitmap image at 100% scale regardless of the viewport zoom level.

**SVG Preview**: **Not implemented yet.** The artwork is rendered as it would appear when exported as an SVG image.

| | Zoom In |

Zooms the viewport in to the next whole increment.

| | Zoom Out |

Zooms the viewport out to the next whole increment.

| @@ -71,7 +71,7 @@ This narrow bar runs vertically down the left side of the Document panel beside ### Tools -The tool shelf +The tool shelf Located at the top of the tool shelf area, the **tool shelf** provides a selection of **tools** for interactively editing the artwork. It is composed of three sections: @@ -89,7 +89,7 @@ Located at the top of the tool shelf area, the **tool shelf** provides a selecti ### Working colors -The working colors +The working colors The **working colors** are the two colors used by the active tool. The upper circle is the **primary color**. The lower circle is the **secondary color**. @@ -97,7 +97,7 @@ There are two buttons located underneath: **Swap** which reverses the current co The tool controls (above the viewport) for some of the tools offer choices for using the primary and secondary colors. For example, the vector drawing tools have **Fill** and **Stroke** options that use the current secondary and primary colors, respectively, as defaults: -

The Fill and Stroke controls for a vector tool's controls

+

The Fill and Stroke controls for a vector tool's controls

These options each allow choices of being driven by the primary working color, secondary working color, or a custom color set just for that tool. diff --git a/website/content/learn/interface/menu-bar.md b/website/content/learn/interface/menu-bar.md index fe5d02865..0d2c5368f 100644 --- a/website/content/learn/interface/menu-bar.md +++ b/website/content/learn/interface/menu-bar.md @@ -23,15 +23,15 @@ The **File menu** lists actions related to file handling: | | | |-|-| -| **New…** |

Opens the **New Document** dialog for creating a blank canvas in a new editor tab.

The 'New Document' dialog

  • Name determines the initial filename of the new document.
  • Infinite Canvas, if set, skips adding an artboard and thereby starts with a boundless white canvas extending in all directions.
  • Dimensions sets the width and height, in pixels, of the initial artboard. Ignored if *Infinite Canvas* is ticked.

| +| **New…** |

Opens the **New Document** dialog for creating a blank canvas in a new editor tab.

The 'New Document' dialog

  • Name determines the initial filename of the new document.
  • Infinite Canvas, if set, skips adding an artboard and thereby starts with a boundless white canvas extending in all directions.
  • Dimensions sets the width and height, in pixels, of the initial artboard. Ignored if *Infinite Canvas* is ticked.

| | **Open…** |

Opens the operating system file picker dialog for selecting a `.graphite` file from disk to be opened in a new editor tab.

| -| **Open Demo Artwork…** |

Opens the **Demo Artwork** dialog for loading a choice of premade sample artwork files provided for you to explore. Click the button below each image to open it.

The 'Demo Artwork' dialog

| +| **Open Demo Artwork…** |

Opens the **Demo Artwork** dialog for loading a choice of premade sample artwork files provided for you to explore. Click the button below each image to open it.

The 'Demo Artwork' dialog

| | **Close** |

Closes the active document. If it has unsaved changes (denoted by the `*` after the file name), you will be asked to save or discard the changes.

| | **Close All** |

Closes all open documents. To avoid accidentally losing unsaved work, you will be asked to confirm that you want to proceed which will discard the unsaved changes in all open documents.

| | **Save** |

Saves the active document by writing the `.graphite` file to disk. An operating system file download dialog may appear asking where to place it. That dialog will provide an opportunity to save over a previous version of the file, if you wish, by picking the identical name instead of saving another instance with a number after it.

| | **Import…** |

Opens the operating system file picker dialog for selecting an image file from disk to be placed as a new bitmap image layer or SVG content into the active document.

| -| **Export…** |

Opens the **Export** dialog for saving the artwork as a *File Type* of *PNG*, *JPG*, or *SVG*. *Scale Factor* multiplies the content's document scale, so a value of 2 would export 300x400 content as 600x800 pixels. *Bounds* picks what area to render: *All Artwork* uses the bounding box of all layers, *Selection* uses the bounding box of the currently selected layers, and an *Artboard: \[Name\]* uses the bounds of that artboard. *Transparency* exports PNG or SVG files with transparency instead of the artboard background color.

The 'Export' dialog

| -| **Preferences…** |

Opens the **Editor Preferences** dialog for configuring Graphite's settings.

The 'Editor Preferences' dialog

| +| **Export…** |

Opens the **Export** dialog for saving the artwork as a *File Type* of *PNG*, *JPG*, or *SVG*. *Scale Factor* multiplies the content's document scale, so a value of 2 would export 300x400 content as 600x800 pixels. *Bounds* picks what area to render: *All Artwork* uses the bounding box of all layers, *Selection* uses the bounding box of the currently selected layers, and an *Artboard: \[Name\]* uses the bounds of that artboard. *Transparency* exports PNG or SVG files with transparency instead of the artboard background color.

The 'Export' dialog

| +| **Preferences…** |

Opens the **Editor Preferences** dialog for configuring Graphite's settings.

The 'Editor Preferences' dialog

| ### Edit diff --git a/website/content/learn/introduction/_index.md b/website/content/learn/introduction/_index.md index 25dc49691..451ad2ec5 100644 --- a/website/content/learn/introduction/_index.md +++ b/website/content/learn/introduction/_index.md @@ -22,7 +22,7 @@ One is available now, and more will be released on a regular basis throughout ea
- Vector Art Quickstart - Graphite, the Open Source 2D Graphics Suite + Vector Art Quickstart - Graphite, the Open Source 2D Graphics Suite
### Video 2 diff --git a/website/content/learn/introduction/features-and-limitations.md b/website/content/learn/introduction/features-and-limitations.md index aa85c7001..b76da68c7 100644 --- a/website/content/learn/introduction/features-and-limitations.md +++ b/website/content/learn/introduction/features-and-limitations.md @@ -13,7 +13,7 @@ A lot is planned on the future [roadmap](/features#roadmap), but here's an overv ### Vector illustration and graphic design -Example vector artwork of a potted cactus +Example vector artwork of a potted cactus Vector editing is the core competency of the Graphite editor at this stage in its development. That means you can create shape-based vector artwork and designs with the available tools.

Primitive geometry like rectangles and ellipses can be drawn and, as desired, modified into more complex shapes using the Path tool. Fully organic shapes may also be created from scratch with the Pen tool. They can then be given colors and gradients to add visual style. This cactus is an example of the style of artwork you can create with vector graphics. @@ -21,15 +21,15 @@ Vector editing is the core competency of the Graphite editor at this stage in it A procedural content generation workflow lets you describe *how* a creative decision becomes a visual outcome rather than doing it all yourself. For example, copying a shape 25 times around the inside of a circle would be tedious work if done by hand but it's easy for the computer to do it. And if you decide 10 instances may look better than 25, or you want to change the copied shape, or you opt for a different radial separation, it's easy to just update a numerical parameter. That saves you from laboriously placing every shape all over again. You're able to build a *procedure* that the computer carries out on your behalf. -The aforementioned example takes the form of the Circular Repeat node which is represented as this box-shaped entity with colored *connectors* on either end. *Nodes* encode certain operations (or functions) in the procedure that generates your artwork. Once you've drawn some content, you can see the nodes which generate it by opening the *node graph* with the 'Node Graph' button button located to the top right of the viewport. This example may have a node setup which looks like this: +The aforementioned example takes the form of the Circular Repeat node which is represented as this box-shaped entity with colored *connectors* on either end. *Nodes* encode certain operations (or functions) in the procedure that generates your artwork. Once you've drawn some content, you can see the nodes which generate it by opening the *node graph* with the 'Node Graph' button button located to the top right of the viewport. This example may have a node setup which looks like this: -

Path node, Fill node, Circular Repeat node in a sequence feeding into the Untitled Layer

+

Path node, Fill node, Circular Repeat node in a sequence feeding into the Untitled Layer

-Starting from the left, the Path node generates some geometry (in this case, drawn using the *Pen* tool). Next, the vector path data feeds through the Fill node to apply a blue color. At this point, the path data looks like so: +Starting from the left, the Path node generates some geometry (in this case, drawn using the *Pen* tool). Next, the vector path data feeds through the Fill node to apply a blue color. At this point, the path data looks like so: -

+

-Next, that is fed into the Circular Repeat node which has several parameters you can modify and get different output data based on your choices, like in these examples: +Next, that is fed into the Circular Repeat node which has several parameters you can modify and get different output data based on your choices, like in these examples: