Initial commit: Tauri + CanvasKit + React editor scaffold
- Tauri v2 desktop shell with 1280x800 window
- CanvasKit WASM (Skia) rendering via WebGL2
- Scene graph with typed nodes (Frame, Rectangle, Ellipse, Line, etc.)
- Skia renderer with fills, strokes, rounded corners, opacity, rotation
- Selection system with resize handles
- Undo/redo manager (inverse command pattern with batching)
- Bottom toolbar (Select, Frame, Rect, Ellipse, Line) matching Figma UI3
- Left layers panel, right properties panel
- Pan (scroll), zoom (Ctrl+scroll toward cursor)
- Keyboard shortcuts: V/F/R/O/L for tools, Cmd+Z undo, Backspace delete
- 5 demo shapes rendered on canvas
2026-02-27 12:48:29 +00:00
|
|
|
{
|
|
|
|
|
"$schema": "https://schema.tauri.app/config/2",
|
2026-02-28 23:39:32 +00:00
|
|
|
"productName": "OpenPencil",
|
2026-03-03 14:30:09 +00:00
|
|
|
"version": "0.5.1",
|
2026-02-28 20:51:22 +00:00
|
|
|
"identifier": "net.dannote.open-pencil",
|
Initial commit: Tauri + CanvasKit + React editor scaffold
- Tauri v2 desktop shell with 1280x800 window
- CanvasKit WASM (Skia) rendering via WebGL2
- Scene graph with typed nodes (Frame, Rectangle, Ellipse, Line, etc.)
- Skia renderer with fills, strokes, rounded corners, opacity, rotation
- Selection system with resize handles
- Undo/redo manager (inverse command pattern with batching)
- Bottom toolbar (Select, Frame, Rect, Ellipse, Line) matching Figma UI3
- Left layers panel, right properties panel
- Pan (scroll), zoom (Ctrl+scroll toward cursor)
- Keyboard shortcuts: V/F/R/O/L for tools, Cmd+Z undo, Backspace delete
- 5 demo shapes rendered on canvas
2026-02-27 12:48:29 +00:00
|
|
|
"build": {
|
|
|
|
|
"beforeDevCommand": "bun run dev",
|
|
|
|
|
"devUrl": "http://localhost:1420",
|
|
|
|
|
"beforeBuildCommand": "bun run build",
|
|
|
|
|
"frontendDist": "../dist"
|
|
|
|
|
},
|
|
|
|
|
"app": {
|
|
|
|
|
"windows": [
|
|
|
|
|
{
|
|
|
|
|
"title": "OpenPencil",
|
|
|
|
|
"width": 1280,
|
|
|
|
|
"height": 800
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"security": {
|
|
|
|
|
"csp": null
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"bundle": {
|
|
|
|
|
"active": true,
|
|
|
|
|
"targets": "all",
|
|
|
|
|
"icon": [
|
|
|
|
|
"icons/32x32.png",
|
|
|
|
|
"icons/128x128.png",
|
|
|
|
|
"icons/128x128@2x.png",
|
|
|
|
|
"icons/icon.icns",
|
|
|
|
|
"icons/icon.ico"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|