X Tutup
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
5b86ccd
Add Electron app with ESM build, fix E2E tests, add store infrastructure
fdb Feb 15, 2026
25a80e1
Add network interactions, parameter editing, evaluator, and data viewer
fdb Feb 16, 2026
05df8ca
Add viewer improvements, port tooltips, node icons, animation loop, a…
fdb Feb 16, 2026
c11abcd
Add round 2 polish: parameter panel, viewer controls, node dialog, an…
fdb Feb 16, 2026
2c1b15c
Fix label alignment, DragValue padding, and drag speed snap-back
fdb Feb 16, 2026
c3f33dd
Add round 3 polish: white icons, procedural network icons, viewer imp…
fdb Feb 16, 2026
7cc52c1
Fix parameter panel padding and label casing
fdb Feb 16, 2026
dee299c
Add Playwright directories to gitignore
fdb Feb 16, 2026
a912ca6
Use actual SVG icons for network nodes instead of procedural shapes
fdb Feb 16, 2026
b2c7b29
Add label click to edit for point parameters
fdb Feb 16, 2026
299484c
Fix viewer zoom around cursor, remove node category backgrounds, expa…
fdb Feb 16, 2026
c4d468b
Add Electron native CSS defaults, color connection lines, refactor, f…
fdb Feb 16, 2026
179c02d
Add textpath node rendering via WASM with bundled Inter font
fdb Feb 16, 2026
81017f5
Add string and color parameter widgets, connected port indicator, fix…
fdb Feb 16, 2026
6fa9a70
Document Electron app stack, architecture, and conventions in AGENTS.md
fdb Feb 16, 2026
99f84c5
Reduce viewer point number size to 1x scale
fdb Feb 16, 2026
7aa8bfd
Replace bezier control point visualization with interactive FourPoint…
fdb Feb 16, 2026
d2d6e2c
Update AGENTS.md to reflect Rust + Electron as the active codebase
fdb Feb 16, 2026
14ba62f
Replace TypeScript generators with Rust WASM evaluation, use snake_ca…
fdb Feb 16, 2026
40d41c6
Use Rust WASM as single source of truth for node templates
fdb Feb 16, 2026
5eb100a
Fix filtered node list when drag-connecting to empty space
fdb Feb 16, 2026
054d635
Add Toggle and Menu widget types to ParameterPanel
fdb Feb 16, 2026
bc9a824
Show handle on selected node instead of rendered node
fdb Feb 16, 2026
7bcc35a
Hide Electron window during E2E tests to prevent focus stealing
fdb Feb 16, 2026
dc3e951
Always show points in viewer when output type is Point
fdb Feb 16, 2026
00ea3b3
Unify pan/zoom behavior across viewer and network canvases
fdb Feb 16, 2026
a6a7b5f
Use NDBX XML format for file save/open via WASM bridge
fdb Feb 16, 2026
45f0052
Click parameter label to focus the input field
fdb Feb 16, 2026
e7f2ea5
Select all text when focusing string parameter input
fdb Feb 16, 2026
d7dbeeb
Do not deselect nodes when pressing Escape
fdb Feb 16, 2026
2577f1d
Blur string input on Escape key
fdb Feb 16, 2026
f682116
Consistent padding and height across all parameter widgets.
fdb Feb 16, 2026
ddb3aa0
Resolve prototype ports when loading .ndbx files.
fdb Feb 16, 2026
9bc09c3
Fix wasm-pack --out-dir path in dev script.
fdb Feb 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ lib/cachedir

# Secrets
.env

# Playwright
.playwright-mcp/
399 changes: 343 additions & 56 deletions AGENTS.md

Large diffs are not rendered by default.

54 changes: 54 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,19 @@ resolver = "2"
members = [
".",
"crates/nodebox-core",
"crates/nodebox-eval",
"crates/nodebox-desktop",
"crates/nodebox-electron",
"crates/nodebox-python",
]

# Default members exclude nodebox-python (requires Python development libraries).
# To build it: cargo build -p nodebox-python
# Default members exclude nodebox-python (requires Python development libraries)
# and nodebox-electron (requires wasm32 target).
# To build them: cargo build -p nodebox-python / wasm-pack build crates/nodebox-electron
default-members = [
".",
"crates/nodebox-core",
"crates/nodebox-eval",
"crates/nodebox-desktop",
]

Expand Down
18 changes: 15 additions & 3 deletions crates/nodebox-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,25 @@ license.workspace = true
repository.workspace = true
authors.workspace = true

[features]
default = ["system-fonts", "parallel"]
system-fonts = ["dep:font-kit", "dep:pathfinder_geometry"]
parallel = ["dep:rayon"]
serde = ["dep:serde"]

[dependencies]
uuid = { workspace = true }
font-kit = { workspace = true }
pathfinder_geometry = { workspace = true }
font-kit = { workspace = true, optional = true }
pathfinder_geometry = { workspace = true, optional = true }

# From nodebox-ops
rayon = "1.10"
rayon = { version = "1.10", optional = true }
usvg = "0.42"
csv = "1"

# For WASM-compatible text-to-path
ttf-parser = "0.24"

# From nodebox-ndbx
quick-xml = { workspace = true }

Expand All @@ -26,6 +35,9 @@ thiserror = { workspace = true }
# From nodebox-port
log = "0.4"

# Optional serde support
serde = { version = "1", features = ["derive"], optional = true }

[[bench]]
name = "clone_library"
harness = false
Expand Down
Binary file added crates/nodebox-core/resources/Inter.ttf
Binary file not shown.
1 change: 1 addition & 0 deletions crates/nodebox-core/src/geometry/canvas.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use super::{Grob, Geometry, Color, Rect, Point};
///
/// Canvases can be nested, and are the top-level container for visual output.
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Canvas {
/// Canvas width.
pub width: f64,
Expand Down
1 change: 1 addition & 0 deletions crates/nodebox-core/src/geometry/color.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ use std::str::FromStr;
/// let gray = Color::gray(0.5);
/// ```
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Color {
/// Red component (0.0 to 1.0)
pub r: f64,
Expand Down
1 change: 1 addition & 0 deletions crates/nodebox-core/src/geometry/contour.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ use super::{PathPoint, Point, PointType, Transform, Rect};
/// contour.close();
/// ```
#[derive(Clone, Debug, Default, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Contour {
/// The points in this contour.
pub points: Vec<PathPoint>,
Expand Down
Loading
X Tutup