Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
debe604
simple ws worker
softmarshmallow Sep 26, 2025
dd6c567
Merge branch 'main' of https://github.com/gridaco/grida into canvas/crdt
softmarshmallow Sep 26, 2025
c0096e4
Merge pull request #429 from gridaco/canvas/crdt
softmarshmallow Sep 26, 2025
4d4e6a1
sync cursor id
softmarshmallow Sep 26, 2025
4683c98
update doc
softmarshmallow Sep 26, 2025
59cf960
history with patches
softmarshmallow Sep 26, 2025
851078d
primitives
softmarshmallow Sep 26, 2025
bb3fb71
cursor ephemeral_chat type
softmarshmallow Sep 26, 2025
6c054f8
org
softmarshmallow Sep 26, 2025
624a548
cursor assets
softmarshmallow Sep 27, 2025
719e78f
update cursor size 64
softmarshmallow Sep 27, 2025
66b39a4
sync dpr
softmarshmallow Sep 27, 2025
183be3f
chore: update fake cursor svg
softmarshmallow Sep 28, 2025
10974fa
chore
softmarshmallow Sep 28, 2025
33c65fb
cursor chat
softmarshmallow Sep 28, 2025
247cf57
multiplayer cursor chat
softmarshmallow Sep 28, 2025
382c613
chore
softmarshmallow Sep 29, 2025
de052fc
chore: camera
softmarshmallow Sep 29, 2025
0cb695e
chore: surface
softmarshmallow Sep 29, 2025
fc8c243
mv usedpr
softmarshmallow Sep 29, 2025
11d9df8
mv scaffold
softmarshmallow Sep 29, 2025
054727c
mount
softmarshmallow Sep 29, 2025
e122056
de corner radius
softmarshmallow Sep 29, 2025
1cee3e6
stroke overlay non closed stroke
softmarshmallow Sep 29, 2025
3c2e83d
wasm 0.0.75
softmarshmallow Sep 29, 2025
1148ca8
loading gate
softmarshmallow Sep 29, 2025
aa99cc0
chore
softmarshmallow Sep 29, 2025
5ef91a1
dpr handling
softmarshmallow Sep 29, 2025
e99cffe
exporter
softmarshmallow Sep 30, 2025
fabc825
fit once mount
softmarshmallow Sep 30, 2025
fb5735c
rm dpr from camera
softmarshmallow Sep 30, 2025
2cf783d
split store
softmarshmallow Sep 30, 2025
713a453
update commands
softmarshmallow Sep 30, 2025
5e2b580
apply edits
softmarshmallow Oct 1, 2025
b52de0f
wg crdt id doc
softmarshmallow Oct 1, 2025
76a6be5
update actor id 0 doc
softmarshmallow Oct 1, 2025
d6a52ab
id alloc rules
softmarshmallow Oct 1, 2025
bbb9160
loading errmsg
softmarshmallow Oct 1, 2025
94b1f93
idgen
softmarshmallow Oct 2, 2025
8c00eca
chore
softmarshmallow Oct 2, 2025
bc87100
proxy - rotation
softmarshmallow Oct 2, 2025
6410956
proxy - opacity
softmarshmallow Oct 2, 2025
14e5f11
proxy - blendMode
softmarshmallow Oct 2, 2025
a272171
proxy - mask
softmarshmallow Oct 2, 2025
8fddf95
proxy - name active locked
softmarshmallow Oct 2, 2025
75b000a
perf loading
softmarshmallow Oct 2, 2025
cac3947
rm reset action
softmarshmallow Oct 2, 2025
6c64be9
rm dispatch all
softmarshmallow Oct 2, 2025
833c112
logger
softmarshmallow Oct 2, 2025
18e7ece
mv scene actions
softmarshmallow Oct 2, 2025
578cb28
chore
softmarshmallow Oct 2, 2025
92963f7
history manager
softmarshmallow Oct 2, 2025
ad43cbe
suscribe with patches
softmarshmallow Oct 2, 2025
5b13298
sync with patches
softmarshmallow Oct 2, 2025
91f82f1
fix paste
softmarshmallow Oct 3, 2025
0684daf
chore
softmarshmallow Oct 3, 2025
6638d27
undo redo patches
softmarshmallow Oct 3, 2025
5423044
add json-patch
softmarshmallow Oct 3, 2025
e6f18e5
update node transform diff
softmarshmallow Oct 4, 2025
759040c
wasm 0.0.76 - io apply patches
softmarshmallow Oct 6, 2025
5141803
patch-sync-render
softmarshmallow Oct 6, 2025
8d6a96f
update just
softmarshmallow Oct 6, 2025
89a768d
bump skia 0.89
softmarshmallow Oct 6, 2025
5a6de3b
switch scene
softmarshmallow Oct 6, 2025
4efa5a8
chore
softmarshmallow Oct 7, 2025
7f45de9
chore
softmarshmallow Oct 7, 2025
ebb8bf5
`@grida/sequence`
softmarshmallow Oct 7, 2025
d007e6a
devtools events
softmarshmallow Oct 8, 2025
c11fa48
rm test
softmarshmallow Oct 8, 2025
e60c440
is.ichildren
softmarshmallow Oct 8, 2025
893d851
tree with custom key
softmarshmallow Oct 8, 2025
bfba4f0
treelib types
softmarshmallow Oct 10, 2025
b3417c9
doc ver `0.0.1-beta.1+20251010`
softmarshmallow Oct 10, 2025
17b9c65
ns tree lib
softmarshmallow Oct 10, 2025
111c833
tree lib graph
softmarshmallow Oct 11, 2025
6866254
graph policy
softmarshmallow Oct 11, 2025
4b91484
chore: fix ready lock
softmarshmallow Oct 11, 2025
c3d8dc5
chore: common types
softmarshmallow Oct 11, 2025
91e4629
tree lib import sub graph
softmarshmallow Oct 11, 2025
6e536ed
graph generation and lut
softmarshmallow Oct 11, 2025
4fb3da5
document node graph
softmarshmallow Oct 11, 2025
8df89c4
document scene graph
softmarshmallow Oct 11, 2025
eab58cf
bump doc
softmarshmallow Oct 11, 2025
5d149df
fmt
softmarshmallow Oct 11, 2025
212efc3
io grida graph
softmarshmallow Oct 13, 2025
6643a6d
fix: translate with hierarchy change on root
softmarshmallow Oct 13, 2025
37ae72a
fix: tree view
softmarshmallow Oct 13, 2025
3803e5d
wasm 0.0.77 - schema change
softmarshmallow Oct 13, 2025
53de914
pack / unpack
softmarshmallow Oct 13, 2025
85a1ad4
1010 db draft
softmarshmallow Oct 13, 2025
75fbd53
chore
softmarshmallow Oct 14, 2025
1de6aaf
sync reset
softmarshmallow Oct 14, 2025
304dd37
fix create scene with lut
softmarshmallow Oct 14, 2025
bf5ed1a
chore
softmarshmallow Oct 14, 2025
508cb31
promote canvas as main demo backend
softmarshmallow Oct 14, 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
18 changes: 11 additions & 7 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ We use turborepo (except few isolated packages).
To run test, build, and dev, use below commands.

```sh
# run tests
# run tests (all, not recommended. requires crates build)
turbo test

# run tests for packages
Expand All @@ -185,16 +185,19 @@ turbo test --filter='./packages/*'
# build packages (required for typecheck for its dependants)
turbo build --filter='./packages/*'

# build packages in watch mode
pnpm dev:packages --concurrency 100

# run tests except for rust crates
turbo test --filter='!./crates/*'

# run build
# run build (all, not recommended)
turbo build

# run dev
turbo dev

# run typecheck
# run typecheck (always run)
turbo typecheck # fallback when build fails due to network issues (nextjs package might fail due to font fetching issues)

# for crates specific tests
Expand Down Expand Up @@ -223,14 +226,15 @@ file. After cloning the repo or installing dependencies, run the following
steps before executing `pnpm typecheck`:

```sh
# install dependencies for shared packages and the editor
pnpm install --filter "./packages/*"
pnpm install --filter editor
pnpm install

# build shared packages and the wasm bundle
pnpm turbo build --filter="./packages/*"
pnpm --filter @grida/canvas-wasm build
pnpm turbo build --filter @grida/canvas-wasm

# finally, run the repository-wide typecheck
pnpm typecheck

# run test (only packages and editor)
pnpm turbo test --filter='./packages/*' --filter=editor
```
31 changes: 27 additions & 4 deletions Cargo.lock

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

84 changes: 45 additions & 39 deletions crates/grida-canvas-fonts/tests/e2e_round_trip_simple_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,22 @@ fn test_round_trip_italic_to_roman_to_italic() {

// Create font faces with real data
let font_data: Vec<_> = paths.iter().map(|p| fs::read(p).unwrap()).collect();

// Helper function to create font_faces
let create_font_faces = || vec![
UIFontFace {
face_id: "Inter-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[0],
user_font_style_italic: Some(false), // Roman
},
UIFontFace {
face_id: "Inter-Italic-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[1],
user_font_style_italic: Some(true), // Italic
},
];
let create_font_faces = || {
vec![
UIFontFace {
face_id: "Inter-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[0],
user_font_style_italic: Some(false), // Roman
},
UIFontFace {
face_id: "Inter-Italic-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[1],
user_font_style_italic: Some(true), // Italic
},
]
};

// Start with italic style
let initial_style = CurrentTextStyle {
Expand Down Expand Up @@ -122,20 +124,22 @@ fn test_round_trip_roman_to_italic_to_roman() {

// Create font faces with real data
let font_data: Vec<_> = paths.iter().map(|p| fs::read(p).unwrap()).collect();

// Helper function to create font_faces
let create_font_faces = || vec![
UIFontFace {
face_id: "Inter-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[0],
user_font_style_italic: Some(false), // Roman
},
UIFontFace {
face_id: "Inter-Italic-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[1],
user_font_style_italic: Some(true), // Italic
},
];
let create_font_faces = || {
vec![
UIFontFace {
face_id: "Inter-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[0],
user_font_style_italic: Some(false), // Roman
},
UIFontFace {
face_id: "Inter-Italic-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[1],
user_font_style_italic: Some(true), // Italic
},
]
};

// Start with roman style
let initial_style = CurrentTextStyle {
Expand Down Expand Up @@ -215,20 +219,22 @@ fn test_round_trip_with_smart_resolution() {

// Create font faces with real data
let font_data: Vec<_> = paths.iter().map(|p| fs::read(p).unwrap()).collect();

// Helper function to create font_faces
let create_font_faces = || vec![
UIFontFace {
face_id: "Inter-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[0],
user_font_style_italic: Some(false),
},
UIFontFace {
face_id: "Inter-Italic-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[1],
user_font_style_italic: Some(true),
},
];
let create_font_faces = || {
vec![
UIFontFace {
face_id: "Inter-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[0],
user_font_style_italic: Some(false),
},
UIFontFace {
face_id: "Inter-Italic-VariableFont_opsz,wght.ttf".to_string(),
data: &font_data[1],
user_font_style_italic: Some(true),
},
]
};

// Test with smart resolution (explicit properties + custom_axes)
let mut custom_axes = HashMap::new();
Expand Down
Loading