Skip to content

Grida Canvas - Tools & Agents Pt1#448

Merged
softmarshmallow merged 87 commits intomainfrom
canary
Dec 1, 2025
Merged

Grida Canvas - Tools & Agents Pt1#448
softmarshmallow merged 87 commits intomainfrom
canary

Conversation

@softmarshmallow
Copy link
Copy Markdown
Member

@softmarshmallow softmarshmallow commented Nov 5, 2025

This PR aims to introduce best practices and patterns required for full-agent mode.

  • Command Palette
  • Agent mode & chat interfaces
  • Minimal tools
  • SDK V1

Tools

  • image
  • svg cg304 Grida Canvas - SVGs #453
  • html (partial) - browser-grade css/html paint tree serializer (csscascade project)
  • markdown (depends on html)
  • mermaid
  • table

Impls

Pt1. Image Gen Tools

day-303-grida-canvas-agent-mode-pt1-image-gen-tool.mp4

Note

Adds a vendored third_party/usvg crate providing SVG parsing, style/text layout, filters, and SVG writer, with docs and tests.

  • Third-Party Library:
    • Add third_party/usvg crate (fork) with SVG parser, tree model, text layout, filters, gradients/patterns, clip-paths/masks, and writer.
    • Include Cargo.toml, licenses, docs, codegen utilities, and test suites for parser/writer.
  • Capabilities:
    • Style/CSS resolution, path/shape conversion, image embedding, filter pipeline, paint servers; text shaping with fontdb/rustybuzz; SVG reserialization with configurable options.

Written by Cursor Bugbot for commit 6483ae6. This will update automatically on new commits. Configure here.

Summary by CodeRabbit

  • New Features

    • Added CSS cascade engine with Stylo integration for style resolution
    • Added Markdown-to-HTML conversion support
    • Added SVG optimization and packing capabilities
    • Extended WASM bindings to expose Markdown and SVG APIs
    • New color, transform, and alignment types with serialization support
  • Bug Fixes

    • Unified path node representation for consistency
  • Documentation

    • Added CSS cascade architecture guide and README
    • Added optimization documentation for bundle size

✏️ Tip: You can customize this high-level summary in your review settings.

@codesandbox
Copy link
Copy Markdown

codesandbox Bot commented Nov 5, 2025

Review or Edit in CodeSandbox

Open the branch in Web EditorVS CodeInsiders

Open Preview

@vercel
Copy link
Copy Markdown

vercel Bot commented Nov 5, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
backgrounds Ready Ready Preview Comment Dec 1, 2025 0:23am
blog Ready Ready Preview Comment Dec 1, 2025 0:23am
docs Ready Ready Preview Comment Dec 1, 2025 0:23am
grida Ready Ready Preview Comment Dec 1, 2025 0:23am
viewer Ready Ready Preview Comment Dec 1, 2025 0:23am
2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
code Ignored Ignored Dec 1, 2025 0:23am
legacy Ignored Ignored Dec 1, 2025 0:23am

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 5, 2025

Caution

Review failed

The pull request is closed.

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

A new CSS cascade engine crate (csscascade) is introduced alongside significant refactoring of grida-canvas. The workspace adds two new members, dependencies are reorganized, core types are restructured (SVGPath→Path, Rectangle→Rect), gradient rendering gains new geometric parameters (xy1, xy2, tile_mode), JSON models are rewritten to use CG-based types, and WASM bindings expand with Markdown and SVG modules.

Changes

Cohort / File(s) Summary
New CSS Cascade Crate
.ref/.gitignore, .ref/css/README.md, Cargo.toml (workspace), crates/csscascade/Cargo.toml, crates/csscascade/README.md, crates/csscascade/ARCHITECTURE.md, crates/csscascade/src/lib.rs, crates/csscascade/src/main.rs, crates/csscascade/src/rcdom/mod.rs, crates/csscascade/src/tree/mod.rs
New crate providing a browser-like CSS cascade and style resolution engine built on Stylo, with reference-counted DOM implementation (rcdom), style-resolved tree representation, documentation, and library/binary targets.
Csscascade Examples
crates/csscascade/examples/exp_impl_telement.rs, crates/csscascade/examples/html2html.rs, crates/csscascade/examples/print_rcdom.rs, crates/csscascade/examples/print_tree.rs
Example programs demonstrating DOM parsing, cascade integration with Stylo, and tree serialization for the new CSS cascade system.
Documentation & Optimization
crates/OPTIMIZATION_SIZE.md
New guidance on WebAssembly bundle size optimization and inspection tools.
Grida-Canvas Core Types & Modules
crates/grida-canvas/src/cg/color.rs, crates/grida-canvas/src/cg/colormatrix.rs, crates/grida-canvas/src/cg/rect.rs, crates/grida-canvas/src/cg/alignment.rs, crates/grida-canvas/src/cg/transform.rs, crates/grida-canvas/src/cg/tilemode.rs, crates/grida-canvas/src/cg/svg.rs, crates/grida-canvas/src/cg/mod.rs, crates/grida-canvas/src/cg/prelude.rs
New or refactored core graphics types with full serialization support: color constants, color matrix operations, rectangles, 2D transforms, tile modes, SVG paint/gradient representations, and alignment/UV coordinates.
Grida-Canvas Type Enhancements
crates/grida-canvas/src/cg/types.rs, crates/grida-canvas/src/cg/stroke_dasharray.rs, crates/grida-canvas/src/cg/varwidth.rs
Extended serialization support (Serialize/Deserialize) for existing types; gradient paints gain xy1/xy2 alignments and tile_mode fields; added constructors (from_stops, from_colors).
Grida-Canvas IO & Markdown/SVG
crates/grida-canvas/src/io/io_markdown.rs, crates/grida-canvas/src/io/io_svg.rs, crates/grida-canvas/src/io/mod.rs
New modules for Markdown-to-HTML conversion and SVG packing/optimization using pulldown-cmark and usvg.
Grida-Canvas JSON Model Refactor
crates/grida-canvas/src/io/io_grida.rs
Large-scale refactoring replacing legacy JSON types (JSONTransform2D, JSONRGBA) with CG-based equivalents (CGTransform2D, CGColor); updates all color/transform fields; introduces top-level parse() function.
Grida-Canvas Node System
crates/grida-canvas/src/node/schema.rs, crates/grida-canvas/src/node/factory.rs, crates/grida-canvas/src/layout/engine.rs, crates/grida-canvas/src/layout/into_taffy.rs, crates/grida-canvas/src/cache/geometry.rs, crates/grida-canvas/src/painter/geometry.rs, crates/grida-canvas/src/painter/layer.rs, crates/grida-canvas/src/painter/painter_debug_node.rs
Systematic renaming of SVGPath→Path node variant; updates all pattern matches and trait implementations across layout, geometry, and painting layers.
Grida-Canvas Gradient & Paint Rendering
crates/grida-canvas/src/painter/gradient.rs, crates/grida-canvas/src/painter/paint.rs, crates/grida-canvas/src/painter/painter.rs
Gradient rendering refactored to use dynamic xy1/xy2 alignments and per-gradient tile_mode; fill rendering for open shapes enabled; opacity blending added to diamond/sweep gradients at shader level.
Grida-Canvas Layout & Geometry
crates/grida-canvas/src/io/id_converter.rs, crates/grida-canvas/src/cache/paragraph.rs
Minor updates: background color wrapping, import path consolidation (types→prelude), node type remapping (Vector/Path).
Grida-Canvas Other Modules
crates/grida-canvas/src/lib.rs, crates/grida-canvas/src/os/mod.rs
Added sk_tiny and svg public modules; removed wasm32 conditional compilation from winit module.
Grida-Canvas Cargo & Deletions
crates/grida-canvas/Cargo.toml, crates/grida-canvas/examples/app_figma.rs, crates/grida-canvas/examples/app_grida.rs
Reorganized dependencies: removed uuid/async-trait/futures from top-level, moved figma-api to dev-dependencies, added usvg/pulldown-cmark/gl; removed two example applications.
Grida-Canvas Examples (Golden Tests & Tools)
crates/grida-canvas/examples/golden_*.rs, crates/grida-canvas/examples/tool_*.rs, crates/grida-canvas/examples/golden_sk_svg_filters/main.rs
Systematic import path updates (types→prelude) across 30+ examples; gradient constructors refactored to use from_colors/from_stops; SVGPath→Path node variant; added new SVG filter/packing examples and tools.
Grida-Canvas-WASM TypeScript Bindings
crates/grida-canvas-wasm/lib/bin/grida-canvas-wasm.d.ts, crates/grida-canvas-wasm/lib/c-api.d.ts, crates/grida-canvas-wasm/lib/index.ts, crates/grida-canvas-wasm/lib/modules/canvas.ts, crates/grida-canvas-wasm/lib/modules/memory.ts
Extended TypeScript definitions to include markdown/SVG modules; added CAPIMethodResult type variants; renamed Rectangle→Rect throughout; updated Scene class with markdownkit/svgkit properties.
Grida-Canvas-WASM SVG & Markdown Modules
crates/grida-canvas-wasm/lib/modules/svg-bindings.d.ts, crates/grida-canvas-wasm/lib/modules/svg.ts, crates/grida-canvas-wasm/lib/modules/markdown-bindings.d.ts, crates/grida-canvas-wasm/lib/modules/markdown.ts
New TypeScript declaration modules and implementations for SVG optimization/packing and Markdown-to-HTML conversion via WASM FFI with memory management helpers.
Grida-Canvas-WASM Rust Implementation
crates/grida-canvas-wasm/src/_internal.rs, crates/grida-canvas-wasm/src/main.rs, crates/grida-canvas-wasm/src/wasm_markdown.rs, crates/grida-canvas-wasm/src/wasm_svg.rs, crates/grida-canvas-wasm/src/wasm_fonts.rs
New WASM bindings for Markdown and SVG processing; moved response wrapper types to _internal.rs; exposed C-ABI FFI functions for grida_markdown_to_html and grida_svg_{optimize,pack}.
Grida-Canvas-WASM Manifest
crates/grida-canvas-wasm/Cargo.toml, crates/grida-canvas-wasm/package.json
Updated serde_json dependency (1.0.140→1.0); bumped package version (0.0.83-canary.0→0.0.84-canary.0).

Sequence Diagram(s)

sequenceDiagram
    participant Client as JavaScript/Browser
    participant WASM as Grida Canvas WASM
    participant Markdown as Markdown Module
    participant SVG as SVG Module
    
    Note over Client,SVG: Markdown to HTML Conversion Flow
    Client->>WASM: grida_markdown_to_html(markdown ptr)
    WASM->>Markdown: Parse & convert markdown
    Markdown-->>WASM: HTML string
    WASM->>WASM: Serialize to JSON response
    WASM-->>Client: JSON (success/error)
    
    Note over Client,SVG: SVG Optimization & Packing Flow
    Client->>WASM: grida_svg_optimize(svg ptr)
    WASM->>SVG: Normalize & optimize SVG
    SVG-->>WASM: Optimized SVG string
    WASM->>WASM: Serialize to JSON response
    WASM-->>Client: JSON (success/error)
    
    Client->>WASM: grida_svg_pack(svg ptr)
    WASM->>SVG: Parse & build IR tree
    SVG-->>WASM: IRSVGInitialContainerNode
    WASM->>WASM: Serialize IR to JSON
    WASM-->>Client: JSON (success/error + IR tree)
Loading
sequenceDiagram
    participant Input as Input HTML/Markdown
    participant Parser as HTML5 Parser
    participant DOM as RcDom
    participant Cascade as Cascade Engine
    participant Stylo as Stylo Style Engine
    participant Output as Styled Tree Output
    
    Note over Input,Output: CSS Cascade Resolution Pipeline
    Input->>Parser: Parse HTML/Markdown input
    Parser->>DOM: Build reference-counted DOM tree
    DOM->>Cascade: Provide DOM structure
    Cascade->>Stylo: Collect stylesheets & selector match
    Stylo->>Stylo: Resolve cascade (specificity, inheritance)
    Stylo-->>Cascade: Computed values per node
    Cascade->>Output: Build styled tree with computed styles
    Output-->>Input: Return style-resolved static tree
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120+ minutes

Key areas requiring extra attention:

  • crates/csscascade: New comprehensive crate (~1000+ LOC) with Stylo integration, RcDom implementation, and tree serialization; requires validation of DOM trait implementations and Stylo bridge correctness.
  • crates/grida-canvas/src/io/io_grida.rs: Large refactoring replacing type system (JSONRGBA→CGColor, JSONTransform2D→CGTransform2D) with widespread JSON model changes; verify all conversions and default handling are correct.
  • Gradient rendering changes: Dynamic xy1/xy2 alignments, tile_mode per gradient, and shader-level opacity blending across multiple painter modules; validate visual correctness of gradient rendering.
  • SVGPath→Path renaming: Systematic variant rename across 20+ files (node/schema, painter, layout, examples); ensure no missed matches causing compilation or runtime issues.
  • WASM FFI additions: New grida_markdown_to_html and grida_svg_pack/optimize functions with C-ABI; validate memory management (allocation/deallocation), null checks, and error handling for safety.
  • Breaking API changes: Rectangle→Rect, new gradient constructors (from_colors/from_stops), CG type reorganization; verify downstream consumers are fully updated.
  • Dependency changes: Removed uuid/async-trait/futures, added usvg/pulldown-cmark/gl; assess impact on existing code and transitivity.

Possibly related PRs

Suggested labels

codex, breaking


🐰 A cascade of changes hops through the crate,
New SVG styles and types aggregate,
Path nodes renamed, gradients align,
Markdown and CSS in perfect design,
From DOM to DOM, the styles resonate!

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch canary

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1a7a541 and 6483ae6.

⛔ Files ignored due to path filters (33)
  • Cargo.lock is excluded by !**/*.lock
  • crates/grida-canvas-wasm/lib/bin/grida_canvas_wasm.wasm is excluded by !**/*.wasm
  • crates/grida-canvas/goldens/gradient_linear_transform.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feColorMatrix.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feComponentTransfer.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feComposite.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feConvolveMatrix.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feDiffuseLighting.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feDisplacementMap.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feDropShadow.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feFlood.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feGaussianBlur.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feMorphology.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feSpecularLighting.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/sk_svg_filters-feTurbulence.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/svg_linear_gradient.png is excluded by !**/*.png
  • crates/grida-canvas/goldens/svg_radial_gradient.png is excluded by !**/*.png
  • fixtures/fonts/Noto_Sans_Arabic/NotoSansArabic-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • fixtures/fonts/Noto_Serif/NotoSerif-Italic-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • fixtures/fonts/Noto_Serif/NotoSerif-VariableFont_wdth,wght.ttf is excluded by !**/*.ttf
  • fixtures/test-svg/L0/filters-feColorMatrix.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feComponentTransfer.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feComposite.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feConvolveMatrix.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feDiffuseLighting.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feDisplacementMap.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feDropShadow.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feFlood.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feGaussianBlur.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feMorphology.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feSpecularLighting.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/filters-feTurbulence.svg is excluded by !**/*.svg
  • fixtures/test-svg/L0/groups.svg is excluded by !**/*.svg
📒 Files selected for processing (107)
  • .ref/.gitignore (1 hunks)
  • .ref/css/README.md (1 hunks)
  • Cargo.toml (1 hunks)
  • crates/OPTIMIZATION_SIZE.md (1 hunks)
  • crates/csscascade/ARCHITECTURE.md (1 hunks)
  • crates/csscascade/Cargo.toml (1 hunks)
  • crates/csscascade/README.md (1 hunks)
  • crates/csscascade/examples/exp_impl_telement.rs (1 hunks)
  • crates/csscascade/examples/html2html.rs (1 hunks)
  • crates/csscascade/examples/print_rcdom.rs (1 hunks)
  • crates/csscascade/examples/print_tree.rs (1 hunks)
  • crates/csscascade/src/lib.rs (1 hunks)
  • crates/csscascade/src/main.rs (1 hunks)
  • crates/csscascade/src/rcdom/mod.rs (1 hunks)
  • crates/csscascade/src/tree/mod.rs (1 hunks)
  • crates/grida-canvas-wasm/Cargo.toml (1 hunks)
  • crates/grida-canvas-wasm/lib/bin/grida-canvas-wasm.d.ts (2 hunks)
  • crates/grida-canvas-wasm/lib/c-api.d.ts (1 hunks)
  • crates/grida-canvas-wasm/lib/index.ts (2 hunks)
  • crates/grida-canvas-wasm/lib/modules/canvas.ts (4 hunks)
  • crates/grida-canvas-wasm/lib/modules/markdown-bindings.d.ts (1 hunks)
  • crates/grida-canvas-wasm/lib/modules/markdown.ts (1 hunks)
  • crates/grida-canvas-wasm/lib/modules/memory.ts (1 hunks)
  • crates/grida-canvas-wasm/lib/modules/svg-bindings.d.ts (1 hunks)
  • crates/grida-canvas-wasm/lib/modules/svg.ts (1 hunks)
  • crates/grida-canvas-wasm/package.json (1 hunks)
  • crates/grida-canvas-wasm/src/_internal.rs (1 hunks)
  • crates/grida-canvas-wasm/src/main.rs (1 hunks)
  • crates/grida-canvas-wasm/src/wasm_fonts.rs (1 hunks)
  • crates/grida-canvas-wasm/src/wasm_markdown.rs (1 hunks)
  • crates/grida-canvas-wasm/src/wasm_svg.rs (1 hunks)
  • crates/grida-canvas/Cargo.toml (1 hunks)
  • crates/grida-canvas/examples/app_figma.rs (0 hunks)
  • crates/grida-canvas/examples/app_grida.rs (0 hunks)
  • crates/grida-canvas/examples/golden_colors.rs (1 hunks)
  • crates/grida-canvas/examples/golden_container_stroke.rs (1 hunks)
  • crates/grida-canvas/examples/golden_corner_smoothing.rs (1 hunks)
  • crates/grida-canvas/examples/golden_gradient_diamond.rs (1 hunks)
  • crates/grida-canvas/examples/golden_gradient_diamond_transform.rs (1 hunks)
  • crates/grida-canvas/examples/golden_gradient_linear.rs (2 hunks)
  • crates/grida-canvas/examples/golden_gradient_linear_transform.rs (6 hunks)
  • crates/grida-canvas/examples/golden_gradient_radial.rs (2 hunks)
  • crates/grida-canvas/examples/golden_gradient_radial_transform.rs (4 hunks)
  • crates/grida-canvas/examples/golden_gradient_sweep.rs (1 hunks)
  • crates/grida-canvas/examples/golden_gradient_sweep_transform.rs (1 hunks)
  • crates/grida-canvas/examples/golden_layout_flex.rs (1 hunks)
  • crates/grida-canvas/examples/golden_layout_flex_alignment.rs (1 hunks)
  • crates/grida-canvas/examples/golden_layout_flex_padding.rs (1 hunks)
  • crates/grida-canvas/examples/golden_layout_padding.rs (1 hunks)
  • crates/grida-canvas/examples/golden_pdf.rs (5 hunks)
  • crates/grida-canvas/examples/golden_sk_mask.rs (1 hunks)
  • crates/grida-canvas/examples/golden_sk_paints.rs (9 hunks)
  • crates/grida-canvas/examples/golden_sk_svg_filters/main.rs (1 hunks)
  • crates/grida-canvas/examples/golden_sk_text_backdrop_blur_path.rs (1 hunks)
  • crates/grida-canvas/examples/golden_stroke_rect.rs (1 hunks)
  • crates/grida-canvas/examples/golden_svg.rs (5 hunks)
  • crates/grida-canvas/examples/golden_svg_gradients.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_decoration.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_decoration_color.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_emoji_placeholder.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_font_features.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_line_height.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_stroke.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_var_casl.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_var_opsz.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_var_slnt.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_var_wght.rs (1 hunks)
  • crates/grida-canvas/examples/golden_type_word_spacing.rs (1 hunks)
  • crates/grida-canvas/examples/golden_vector_fillrule.rs (1 hunks)
  • crates/grida-canvas/examples/golden_vector_regions_fills.rs (1 hunks)
  • crates/grida-canvas/examples/golden_vector_variable_width.rs (1 hunks)
  • crates/grida-canvas/examples/tool_io_grida.rs (1 hunks)
  • crates/grida-canvas/examples/tool_io_svg.rs (1 hunks)
  • crates/grida-canvas/examples/tool_sk_svgdom.rs (1 hunks)
  • crates/grida-canvas/src/cache/geometry.rs (2 hunks)
  • crates/grida-canvas/src/cache/paragraph.rs (2 hunks)
  • crates/grida-canvas/src/cg/alignment.rs (2 hunks)
  • crates/grida-canvas/src/cg/color.rs (1 hunks)
  • crates/grida-canvas/src/cg/colormatrix.rs (1 hunks)
  • crates/grida-canvas/src/cg/mod.rs (1 hunks)
  • crates/grida-canvas/src/cg/prelude.rs (1 hunks)
  • crates/grida-canvas/src/cg/rect.rs (1 hunks)
  • crates/grida-canvas/src/cg/stroke_dasharray.rs (2 hunks)
  • crates/grida-canvas/src/cg/svg.rs (1 hunks)
  • crates/grida-canvas/src/cg/tilemode.rs (1 hunks)
  • crates/grida-canvas/src/cg/transform.rs (1 hunks)
  • crates/grida-canvas/src/cg/types.rs (15 hunks)
  • crates/grida-canvas/src/cg/varwidth.rs (1 hunks)
  • crates/grida-canvas/src/io/id_converter.rs (2 hunks)
  • crates/grida-canvas/src/io/io_figma.rs (7 hunks)
  • crates/grida-canvas/src/io/io_grida.rs (32 hunks)
  • crates/grida-canvas/src/io/io_markdown.rs (1 hunks)
  • crates/grida-canvas/src/io/io_svg.rs (1 hunks)
  • crates/grida-canvas/src/io/mod.rs (1 hunks)
  • crates/grida-canvas/src/layout/engine.rs (4 hunks)
  • crates/grida-canvas/src/layout/into_taffy.rs (2 hunks)
  • crates/grida-canvas/src/lib.rs (1 hunks)
  • crates/grida-canvas/src/node/factory.rs (1 hunks)
  • crates/grida-canvas/src/node/schema.rs (9 hunks)
  • crates/grida-canvas/src/os/mod.rs (0 hunks)
  • crates/grida-canvas/src/painter/geometry.rs (2 hunks)
  • crates/grida-canvas/src/painter/gradient.rs (5 hunks)
  • crates/grida-canvas/src/painter/layer.rs (1 hunks)
  • crates/grida-canvas/src/painter/paint.rs (1 hunks)
  • crates/grida-canvas/src/painter/painter.rs (1 hunks)
  • crates/grida-canvas/src/painter/painter_debug_node.rs (2 hunks)
  • crates/grida-canvas/src/painter/shadow.rs (1 hunks)
⛔ Files not processed due to max files limit (63)
  • crates/grida-canvas/src/resources/mod.rs
  • crates/grida-canvas/src/sk/mappings.rs
  • crates/grida-canvas/src/sk_tiny/mod.rs
  • crates/grida-canvas/src/svg/from_usvg.rs
  • crates/grida-canvas/src/svg/from_usvg_tree.rs
  • crates/grida-canvas/src/svg/mod.rs
  • crates/grida-canvas/src/svg/pack.rs
  • crates/grida-canvas/src/vectornetwork/vn_painter.rs
  • crates/grida-canvas/src/window/application.rs
  • crates/grida-canvas/src/window/application_native_demo.rs
  • crates/grida-canvas/src/window/mod.rs
  • crates/grida-canvas/tests/dashed_stroke.rs
  • crates/grida-canvas/tests/export_as_pdf.rs
  • crates/grida-canvas/tests/geometry_cache.rs
  • crates/grida-canvas/tests/hit_test.rs
  • crates/grida-canvas/tests/vector_corner_radius.rs
  • crates/grida-dev/AGENTS.md
  • crates/grida-dev/Cargo.toml
  • crates/grida-dev/README.md
  • crates/grida-dev/TESTING.md
  • crates/grida-dev/examples/bench_100k.rs
  • crates/grida-dev/examples/grida_basic.rs
  • crates/grida-dev/examples/grida_blendmode.rs
  • crates/grida-dev/examples/grida_booleans.rs
  • crates/grida-dev/examples/grida_container.rs
  • crates/grida-dev/examples/grida_effects.rs
  • crates/grida-dev/examples/grida_fills.rs
  • crates/grida-dev/examples/grida_gradients.rs
  • crates/grida-dev/examples/grida_image.rs
  • crates/grida-dev/examples/grida_images.rs
  • crates/grida-dev/examples/grida_lines.rs
  • crates/grida-dev/examples/grida_mask.rs
  • crates/grida-dev/examples/grida_nested.rs
  • crates/grida-dev/examples/grida_paint.rs
  • crates/grida-dev/examples/grida_shapes.rs
  • crates/grida-dev/examples/grida_shapes_ellipse.rs
  • crates/grida-dev/examples/grida_strokes.rs
  • crates/grida-dev/examples/grida_texts.rs
  • crates/grida-dev/examples/grida_vector.rs
  • crates/grida-dev/examples/grida_webfonts.rs
  • crates/grida-dev/examples/sys_camera.rs
  • crates/grida-dev/examples/wd_animation.rs
  • crates/grida-dev/examples/wd_windowed_mode.rs
  • crates/grida-dev/reftest.example.toml
  • crates/grida-dev/src/lib.rs
  • crates/grida-dev/src/main.rs
  • crates/grida-dev/src/platform/mod.rs
  • crates/grida-dev/src/platform/native_application.rs
  • crates/grida-dev/src/platform/native_demo.rs
  • crates/grida-dev/src/platform/winit.rs
  • crates/grida-dev/src/reftest/args.rs
  • crates/grida-dev/src/reftest/compare.rs
  • crates/grida-dev/src/reftest/config.rs
  • crates/grida-dev/src/reftest/mod.rs
  • crates/grida-dev/src/reftest/render.rs
  • crates/grida-dev/src/reftest/report.rs
  • crates/grida-dev/src/reftest/runner.rs
  • crates/grida-dev/tests/fonts.rs
  • docs/wg/feat-ai/tools.md
  • docs/wg/feat-css/glossary/css_properties.json5.md
  • docs/wg/feat-svg/testing.md
  • editor/.env.example
  • editor/app/(api)/private/ai/chat/route.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@vercel vercel Bot temporarily deployed to Preview – viewer November 10, 2025 10:06 Inactive
@vercel vercel Bot temporarily deployed to Preview – blog November 10, 2025 10:06 Inactive
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +6 to +10
// Enable GitHub Flavored Markdown (GFM) features
let options = Options::ENABLE_STRIKETHROUGH
| Options::ENABLE_TABLES
| Options::ENABLE_MATH
| Options::ENABLE_TASKLISTS
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Drop nonexistent pulldown-cmark math flag

The new Markdown helper sets Options::ENABLE_MATH, but pulldown-cmark 0.13.0 (the version locked in Cargo.lock) only exposes ENABLE_TABLES, ENABLE_FOOTNOTES, ENABLE_STRIKETHROUGH, ENABLE_TASKLISTS, ENABLE_SMART_PUNCTUATION, and ENABLE_HEADING_ATTRIBUTES. Because ENABLE_MATH is not defined, this file does not compile for any target, breaking the WASM bindings and the host crate. Please remove the nonexistent option or gate math parsing behind a compatible library.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant