Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b5ebe78
Update all frontend npm dependencies except Svelte and Vite (#3120)
Keavon Sep 2, 2025
083dfa5
Clean up autosave persistence (#3115)
timon-schelling Sep 2, 2025
a101033
Shaders: rust-gpu integration to compile shader nodes to WGSL (#3097)
Firestar99 Sep 2, 2025
7dc86b3
Fix profiling CI action by avoiding command line length limits (#3136)
TrueDoctor Sep 4, 2025
5d441c2
Shaders: runtime and shader node codegen (#2985)
Firestar99 Sep 5, 2025
c081d0a
Allow the release info build script to work without requiring Git to …
timon-schelling Sep 5, 2025
acd7ba3
Graphene: Fine-grained context caching (#2500)
TrueDoctor Sep 5, 2025
f12b4da
Shaders: add `BufferStruct` to support bool and enums (#3109)
Firestar99 Sep 5, 2025
ad99c14
Shaders: Provide WgpuExecutor via Scope (#3144)
Firestar99 Sep 5, 2025
89c9cf1
Fix infinite recursion introduced in #2795 that occurs in old documen…
Keavon Sep 5, 2025
a2c0693
Fix most known issues with migrations failing to open documents from …
Keavon Sep 7, 2025
57111cf
Fix undo history getting stuck when the Select tool clicks the backgr…
4adex Sep 7, 2025
7686edd
Add a cancel transaction message to the history system (#3121)
adamgerhant Sep 7, 2025
65171a5
Fix Path tool box selection not selecting enclosed segments, only int…
indierusty Sep 7, 2025
3e50d17
Add "Grid" to the Shape tool along with row/column gizmos (#2921)
0SlowPoke0 Sep 8, 2025
cf2e525
Fix the ellipses of a long document name causing the tab's unsaved as…
derfl007 Sep 8, 2025
c384175
Improve stability of the 'Sample Points' node (#3119)
indierusty Sep 8, 2025
84470b6
Fix a regression with duplicating or pasting vector geometry in the P…
indierusty Sep 8, 2025
a1e0575
Revert real time playback being enabled by default (#3150)
TrueDoctor Sep 8, 2025
ee586be
Fix exporting an image failing because it is ignored while playing an…
TrueDoctor Sep 8, 2025
485152b
Add "Spiral" to the Shape tool and as a new node (#2803)
0SlowPoke0 Sep 8, 2025
08b25f6
New Typography type
adamgerhant Sep 8, 2025
e35e988
WIP: Refactor TypeSource
adamgerhant Aug 30, 2025
a871bcf
Valid types
adamgerhant Aug 30, 2025
59d85cb
Remove valid types
adamgerhant Aug 31, 2025
76a2cbd
Move frontend node graph functions into separate file
adamgerhant Aug 31, 2025
1996dd2
Consolidate frontend node
adamgerhant Sep 1, 2025
8a6aa46
Rewrite FrontendNode
adamgerhant Aug 31, 2025
8bab555
Improve collect_nodes
adamgerhant Aug 31, 2025
a917c0c
Fix graph.svelte
adamgerhant Sep 1, 2025
e2c4519
Add opacity and open to the render data
adamgerhant Sep 1, 2025
9762f32
Add button
adamgerhant Sep 2, 2025
ac0e0be
clean up
adamgerhant Sep 3, 2025
2b6a7ed
Improve native UI network
adamgerhant Sep 3, 2025
84b608d
Function to generate overlay network
adamgerhant Sep 3, 2025
f8c3687
fix should render nodes
adamgerhant Sep 3, 2025
1791c65
Dot background
adamgerhant Sep 3, 2025
8c7a32c
Improve layer
adamgerhant Sep 3, 2025
0a6d826
Masks
adamgerhant Sep 4, 2025
71ec514
Move font cache to text folder as static var
adamgerhant Sep 5, 2025
ff4b0d0
wires and clip paths
adamgerhant Sep 5, 2025
249eff3
Add icons
adamgerhant Sep 5, 2025
a64b9b3
Complete nodes and wires
adamgerhant Sep 6, 2025
537395b
thumbnails
adamgerhant Sep 7, 2025
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
1 change: 0 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
"streetsidesoftware.code-spell-checker",
// Helpful
"mhutchie.git-graph",
"waderyan.gitblame",
"qezhu.gitlink",
"wmaurer.change-case"
]
Expand Down
86 changes: 41 additions & 45 deletions .github/workflows/comment-profiling-changes.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
name: Profiling Changes

on:
pull_request:
pull_request: {}

env:
CARGO_TERM_COLOR: always

jobs:
profile:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -33,12 +34,12 @@ jobs:
uses: actions/cache@v4
with:
path: ~/.cargo/bin/iai-callgrind-runner
key: ${{ runner.os }}-iai-callgrind-runner-0.12.3
key: ${{ runner.os }}-iai-callgrind-runner-0.16.1

- name: Install iai-callgrind
if: steps.cache-iai.outputs.cache-hit != 'true'
run: |
cargo install iai-callgrind-runner@0.12.3
cargo install iai-callgrind-runner@0.16.1

- name: Checkout master branch
run: |
Expand All @@ -63,7 +64,7 @@ jobs:
run: |
# Compile benchmarks
cargo bench --bench compile_demo_art_iai -- --save-baseline=master

# Runtime benchmarks
cargo bench --bench update_executor_iai -- --save-baseline=master
cargo bench --bench run_once_iai -- --save-baseline=master
Expand All @@ -74,32 +75,14 @@ jobs:
git checkout ${{ github.event.pull_request.head.sha }}

- name: Run PR benchmarks
id: benchmark
run: |
# Compile benchmarks
COMPILE_OUTPUT=$(cargo bench --bench compile_demo_art_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g')

# Runtime benchmarks
UPDATE_OUTPUT=$(cargo bench --bench update_executor_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g')
RUN_ONCE_OUTPUT=$(cargo bench --bench run_once_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g')
RUN_CACHED_OUTPUT=$(cargo bench --bench run_cached_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g')

# Store outputs
echo "COMPILE_OUTPUT<<EOF" >> $GITHUB_OUTPUT
echo "$COMPILE_OUTPUT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

echo "UPDATE_OUTPUT<<EOF" >> $GITHUB_OUTPUT
echo "$UPDATE_OUTPUT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

echo "RUN_ONCE_OUTPUT<<EOF" >> $GITHUB_OUTPUT
echo "$RUN_ONCE_OUTPUT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

echo "RUN_CACHED_OUTPUT<<EOF" >> $GITHUB_OUTPUT
echo "$RUN_CACHED_OUTPUT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
cargo bench --bench compile_demo_art_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/compile_output.json

# Runtime benchmarks
cargo bench --bench update_executor_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/update_output.json
cargo bench --bench run_once_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/run_once_output.json
cargo bench --bench run_cached_iai -- --baseline=master --output-format=json | jq -sc | sed 's/\\"//g' > /tmp/run_cached_output.json

- name: Make old comments collapsed by default
uses: actions/github-script@v7
Expand Down Expand Up @@ -131,11 +114,13 @@ jobs:
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const compileOutput = JSON.parse(`${{ steps.benchmark.outputs.COMPILE_OUTPUT }}`);
const updateOutput = JSON.parse(`${{ steps.benchmark.outputs.UPDATE_OUTPUT }}`);
const runOnceOutput = JSON.parse(`${{ steps.benchmark.outputs.RUN_ONCE_OUTPUT }}`);
const runCachedOutput = JSON.parse(`${{ steps.benchmark.outputs.RUN_CACHED_OUTPUT }}`);

const fs = require('fs');

const compileOutput = JSON.parse(fs.readFileSync('/tmp/compile_output.json', 'utf8'));
const updateOutput = JSON.parse(fs.readFileSync('/tmp/update_output.json', 'utf8'));
const runOnceOutput = JSON.parse(fs.readFileSync('/tmp/run_once_output.json', 'utf8'));
const runCachedOutput = JSON.parse(fs.readFileSync('/tmp/run_cached_output.json', 'utf8'));

let significantChanges = false;
let commentBody = "";

Expand All @@ -162,11 +147,18 @@ jobs:
let hasSignificantChanges = false;

for (const benchmark of benchmarkOutput) {
if (benchmark.callgrind_summary && benchmark.callgrind_summary.summaries) {
const summary = benchmark.callgrind_summary.summaries[0];
const irDiff = summary.events.Ir;

if (irDiff.diff_pct !== null) {
if (benchmark.profiles && benchmark.profiles.length > 0) {
const profile = benchmark.profiles[0];
if (profile.summaries && profile.summaries.parts && profile.summaries.parts.length > 0) {
const part = profile.summaries.parts[0];
if (part.metrics_summary && part.metrics_summary.Callgrind && part.metrics_summary.Callgrind.Ir) {
const irData = part.metrics_summary.Callgrind.Ir;
if (irData.diffs && irData.diffs.diff_pct !== null) {
const irDiff = {
diff_pct: parseFloat(irData.diffs.diff_pct),
old: irData.metrics.Both[1].Int,
new: irData.metrics.Both[0].Int
};
hasResults = true;
const changePercentage = formatPercentage(irDiff.diff_pct);
const color = irDiff.diff_pct > 0 ? "red" : "lime";
Expand All @@ -178,19 +170,23 @@ jobs:
sectionBody += "<details>\n<summary>Detailed metrics</summary>\n\n```\n";
sectionBody += `Baselines: master| HEAD\n`;

for (const [eventKind, costsDiff] of Object.entries(summary.events)) {
if (costsDiff.diff_pct !== null) {
const changePercentage = formatPercentage(costsDiff.diff_pct);
const line = `${padRight(eventKind, 20)} ${padLeft(formatNumber(costsDiff.old), 11)}|${padLeft(formatNumber(costsDiff.new), 11)} ${padLeft(changePercentage, 15)}`;
for (const [metricName, metricData] of Object.entries(part.metrics_summary.Callgrind)) {
if (metricData.diffs && metricData.diffs.diff_pct !== null) {
const changePercentage = formatPercentage(parseFloat(metricData.diffs.diff_pct));
const oldValue = metricData.metrics.Both[1].Int || metricData.metrics.Both[1].Float;
const newValue = metricData.metrics.Both[0].Int || metricData.metrics.Both[0].Float;
const line = `${padRight(metricName, 20)} ${padLeft(formatNumber(Math.round(oldValue)), 11)}|${padLeft(formatNumber(Math.round(newValue)), 11)} ${padLeft(changePercentage, 15)}`;
sectionBody += `${line}\n`;
}
}

sectionBody += "```\n</details>\n\n";

if (Math.abs(irDiff.diff_pct) > 5) {
significantChanges = true;
hasSignificantChanges = true;
if (Math.abs(irDiff.diff_pct) > 5) {
significantChanges = true;
hasSignificantChanges = true;
}
}
}
}
}
Expand Down
1 change: 0 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
"streetsidesoftware.code-spell-checker",
// Helpful
"mhutchie.git-graph",
"waderyan.gitblame",
"qezhu.gitlink",
"wmaurer.change-case"
]
Expand Down
Loading
Loading