Commit Graph

3049 Commits

Author SHA1 Message Date
James Lindsay
eaadea6593 Fix cargo-about install command (#4512)
Fix cargo about install
2026-09-14 17:34:08 +00:00
Keavon Chambers
ecd2007e63 Remove the 'Threshold' node's "Luminance Calculation" parameter (#4528)
Remove the 'Threshold' node's luminance calculation dropdown so it always compares the Rec. 601 luma
2026-09-13 03:02:27 -07:00
Keavon Chambers
fea741cdef New node: Color Balance (#4527) 2026-09-12 22:11:51 -07:00
Keavon Chambers
98550f6f25 Fix defaulted Item parameters dropping their type alias and rejecting hex string color defaults (#4525) 2026-09-12 19:32:51 -07:00
Keavon Chambers
89b797f4c1 Make 'Gradient Map' use gamma-space luma and move it into adjustments.rs (#4524)
Move Gradient Map into adjustments.rs and position it by the classic 0.3/0.59/0.11 luma
2026-09-12 18:24:38 -07:00
Keavon Chambers
21cceeb7ba Rename the 'Hex to Color' node to 'String to Color' (#4523) 2026-09-12 16:52:32 -07:00
Keavon Chambers
96024d6c2c New node: String to Vec2 (#4522)
Add the String to Vec2 node
2026-09-12 16:40:48 -07:00
Keavon Chambers
645d346565 Ease the Smooth gradient interpolation into the ends of an open ramp (#4521) 2026-09-12 16:26:03 -07:00
Keavon Chambers
3e51b757db Add the Curves adjustment node with a Transfer Curve type and editor widget (#4520)
* Add the Curves adjustment node with a Transfer Curve type and editor widget

* Address review feedback on the Transfer Curve widget's edge cases
2026-09-12 13:03:12 -07:00
Dennis Kobert
944d00cac5 Switch the Color struct back to storing unassociated alpha (#4518)
* Switch Color struct back to storing unassociated alpha

* Address review feedback

* Update the Invert node and legacy image migration for straight alpha and add round-trip tests

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-09-12 08:22:54 +00:00
Keavon Chambers
e725f55043 Relicense Graphite under the dual MIT/Apache-2.0 license (#4208)
Relicense under dual MIT/Apache-2.0
2026-09-06 23:57:37 -07:00
Keavon Chambers
fb35dadf1b Remove a couple of old frontend comments 2026-09-06 23:19:06 -07:00
Keavon Chambers
5612b63633 Extend open paths from endpoints with the Freehand tool and skip hidden layers in path edits (#4508)
* Let the Freehand tool continue a selected open path from its endpoint and show endpoint overlays in the Freehand and Spline tools

* Share the closest-point search with the open path endpoint lookup, tally endpoint connections in a single pass, and rename the endpoint overlay function

* Skip hidden layers and use the feeds-aware transform in path point searches, path overlays, and Freehand point placement

* Map the Spline tool's merge goal with the feeds-aware transform so it matches the endpoint candidates

* Highlight the hovered open path endpoint in the Freehand and Spline tools
2026-09-06 20:37:49 -07:00
Keavon Chambers
97430120f4 Revert #1594 and #1623 so the Freehand tool no longer extends existing paths 2026-09-06 15:47:49 -07:00
Keavon Chambers
b0567122f5 Give each Pen tool segment its own history step and keep drawing across undo/redo (#4507)
* Give each Pen tool segment its own history step and keep drawing across undo/redo

* Test that undo during a Pen tool handle transform cancels it and rewinds
2026-09-06 15:47:23 -07:00
Keavon Chambers
ae87be30b0 Revert #1587 and #1597 so the Pen tool no longer handles per-segment history 2026-09-06 14:03:19 -07:00
Timon
f11e6f3bc6 Desktop: Port the pointer shake event detection for direct input routing (#4506)
Desktop: Port shake detection for direct input routing
2026-09-06 10:42:20 +00:00
Timon
d2bf8f99d2 Desktop: Mirror direct viewport input to the UI (#4502)
Desktop: Mirror direct-routed input to the UI
2026-09-06 01:29:19 +00:00
Timon
63725ea623 Desktop: Make input routing aware of floating menus (#4498)
* Desktop: Make input routing aware of floating menus

* Desktop: Route mouse input like pen input

* Desktop: Model pointer input routing as a state machine
2026-09-06 01:29:18 +00:00
Timon
80746a7f55 Desktop: Restructure UI input handling (#4500) 2026-09-06 01:29:18 +00:00
Keavon Chambers
23c7a96a94 Pin cargo-binstall and cargo-about and cross-reference all tool version pins (#4505)
* Pin cargo-binstall and cargo-about and cross-reference all tool version pins

* Pin the cargo-binstall GitHub Action to its release tag

* Use a version floor for cargo-about and drop the Nix sync notices
2026-09-05 17:09:47 -07:00
Daniel Z.
4d9a626df2 Fix dev environment configurations with devcontainer, vscode, and cargo-about (#4372)
Some minor fixes to issues I ran into using devcontainer on this project
with vscode.
 
- Add `esbenp.prettier-vscode` to the recommended extensions list as
it's already used in `.vscode/settings.json`
- Install `wasm32-unknown-unknown` Rust target in devcontainer
- Add cargo-binstall and pin cargo-about version in devcontainer
- Remove `no-clearly-defined = true` from `about.toml`:
  - cargo-about 0.9.1 fails to run if `no-clearly-defined` is present
- cargo-about 0.8.0 already [removed
support](https://github.com/EmbarkStudios/cargo-about/blob/main/CHANGELOG.md#080---2025-09-05)
for clearlydefined.io, so the argument is a no-op
2026-09-05 22:55:20 +00:00
Timon
54c5aa32f0 Desktop: Fix node graph grid dot transparency (#4504) 2026-09-04 13:37:19 +00:00
Timon
dd84cd7417 Add 'Scale with Viewport' option to the Brush tool (#4485)
* Add an Autoscale option to the Brush tool

* Put Autoscale option in a Diameter popover

* Rename option to "Scale with Viewport"
2026-09-02 17:44:37 +00:00
Timon
2a1d7d0721 Fix Brush tool drawing into nested layers (#4487)
* Fix Brush tool drawing into nested layers

* Remove hardcoded input indices
2026-09-02 17:44:37 +00:00
Timon
34b2312113 Desktop: Update CEF to 151 (#4490) 2026-09-02 17:44:37 +00:00
Timon
de8713b686 Desktop: Improve Mac signing and notarization 2026-09-02 17:44:37 +00:00
Timon
7986cabadb Update Nix flake (#4489) 2026-08-31 11:36:39 +00:00
Timon
150cfaa550 Add the CODEOWNERS file (#4477)
Introduce `CODEOWNERS` file
2026-08-31 09:32:47 +00:00
Timon
5457b4faec Remove now obsolete disable-registration special case from node macro (#4484) 2026-08-29 15:58:14 +02:00
Keavon Chambers
1c055bfaab Add a thanks banner to the donation page's flow 2026-08-29 02:36:24 -07:00
Keavon Chambers
c64a9e5cee Revamp the website's donation page 2026-08-28 23:16:22 -07:00
Keavon Chambers
ff2afbccda Update the roadmap on the website 2026-08-28 23:01:48 -07:00
Keavon Chambers
3bb6aa97b9 Bump the Graphite release series to alpha 5, intended as retroactively backdated to the start of 2026 2026-08-28 22:59:49 -07:00
Timon
d5bb887b79 Improve fix for corrupted font resource loading in older documents (#4482)
* Revert "Fix corrupted font resource loading in older documents"

This reverts commit 404d9f3047.

* Fix migrations for the Read Vector, Dot Product, Query JSON, and Sample Polyline nodes

* Fix text node migrations

* Provide resource storage to the resource message handler

* Refetch resources whose stored bytes are missing

* Add test for refetching resources with missing bytes
2026-08-29 00:01:37 +00:00
Timon
c2afc07a04 Move file filter creation from frontend to editor (#4351) 2026-08-28 09:19:44 +00:00
James Lindsay
c8f38059f8 Frontend type constraints (#4334) 2026-08-27 18:13:12 +00:00
Timon
c7a64fff0c Add the 'Basic Brush' node and replace the legacy Brush tool implementation with it (#4469)
* Draw raster images with pad extension instead of repeat

* Add the GPU basic brush renderer

* Rework the brush tool around the GPU basic brush

* Remove the CPU brush implementation
2026-08-27 15:19:02 +00:00
Timon
fd31f2d89b Add caching infrastructure for the GPU brush nodes (#4468)
Add the per-brush texture cache value type
2026-08-27 15:19:01 +00:00
Timon
10256dd22c Introduce the new brush stroke data types (#4467)
* Add the brush stroke format types

* Route brush strokes through the node graph

* Store brush style as per-item attributes instead of a struct
2026-08-27 15:19:01 +00:00
Timon
96cc520c4b Improve texture caching by allowing weak refs and more formats (#4447)
* Destroy GPU textures when the last reference drops

* Request pooled textures synchronously

* Pool cached textures by format

* Add the owned GPU buffer type

* Route the remaining GPU allocations through the executor

* Add weak texture parking to the texture cache

* Raise the texture cache budget to 1GB for native and 512MB for wasm
2026-08-27 15:19:00 +00:00
Timon
8c48d5acce Fix Vello-related GPU out-of-memory issues (#4446)
* Update vello

* Reuse vello image atlas slots across frames
2026-08-27 15:19:00 +00:00
Timon
681b38d3d6 Support input from drawing tablets on web (#4445)
* Rename the editor mouse state types to Pointer* and the input_ modules

* Add optional pen attributes to the editor pointer state types

* Desktop: Send tablet pointer clicks to CEF as mouse clicks

* Desktop: End pointer lock and pending window drags on any left-equivalent release

* Desktop: Route pointer input carrying pen attributes directly to the editor

* Desktop: Route wheel and pinch input inside the viewport directly to the editor

* Desktop: Track double clicks on the direct editor route

* Desktop: Move the pointer lock position into InputState

* Restore the input state pointer position when pointer lock ends (review)

* Fix pen input being swallowed by Windows resize helper

* Update winit to 0.31.0-beta.2 from crates.io

* Add event time to the editor pointer states

The brush trace's hot core is position plus per-sample time, and the
frame clock is too coarse for high-rate tablets: several samples share
one timestamp and speed dynamics see dt = 0. The desktop stamps
editor-routed pointer input with a monotonic arrival time since winit
does not surface hardware timestamps; the web path can thread the
PointerEvent timeStamp through later.

* Capture pen input via browser api

* Replay coalesced pointer samples for smoother pen strokes

* Handle missing or empty coalesced pen events
2026-08-27 15:18:59 +00:00
Timon
5a16e18b2a Add time since pointerdown to input event handling (#4443)
Add event time to the editor pointer states

The brush trace's hot core is position plus per-sample time, and the
frame clock is too coarse for high-rate tablets: several samples share
one timestamp and speed dynamics see dt = 0. The desktop stamps
editor-routed pointer input with a monotonic arrival time since winit
does not surface hardware timestamps; the web path can thread the
PointerEvent timeStamp through later.
2026-08-27 13:09:55 +00:00
Timon
3c5e1b8a38 Desktop: Support input from drawing tablets (#4354)
* Rename the editor mouse state types to Pointer* and the input_ modules

* Add optional pen attributes to the editor pointer state types

* Desktop: Send tablet pointer clicks to CEF as mouse clicks

* Desktop: End pointer lock and pending window drags on any left-equivalent release

* Desktop: Route pointer input carrying pen attributes directly to the editor

* Desktop: Route wheel and pinch input inside the viewport directly to the editor

* Desktop: Track double clicks on the direct editor route

* Desktop: Move the pointer lock position into InputState

* Restore the input state pointer position when pointer lock ends (review)

* Fix pen input being swallowed by Windows resize helper

* Update winit to 0.31.0-beta.2 from crates.io
2026-08-27 13:09:55 +00:00
Keavon Chambers
404d9f3047 Fix corrupted font resource loading in older documents 2026-08-25 14:10:22 -07:00
Keavon Chambers
c8667edacc Make Data panel scalars selectable inline, denoise float display, and standardize breadcrumb string truncation (#4470)
* Make Data panel scalars selectable inline, denoise float display, and move breadcrumb truncation to Rust

* Code review fixes

* Remove denoising from f32
2026-08-22 01:28:23 -07:00
Keavon Chambers
2fa6b743fe Reintroduce improved logic for mesh interior region fill determination (#4464)
* Decide branching mesh fill insideness by winding, normalizing drawn direction at the Path node

* Fix dead connector click targets by explicitly closing the kurbo ellipse port paths

* Fix hole subtraction when a hole vertex is snapped exactly onto its covering contour

* Classify embedded negative space by its single surrounding face so fully enclosed mesh cells still fill
2026-08-19 00:59:40 -07:00
Keavon Chambers
daa8b6a5a4 Delete the vestigial region domain, reverting to naive logic for mesh region fill determination (#4463)
Delete the vestigial region domain, reverting the face fill decision to the bare branching test
2026-08-18 23:50:16 -07:00
Keavon Chambers
39425ca7ea Delete the dead StrokeId and FillId attributes from the Vector segment and region domains (#4461) 2026-08-18 17:51:29 -07:00