πΊοΈ Explorer mapFn: Rewrite node display names in quartz.ts. Use text.replace(/[\p{Emoji_Presentation}\p{Extended_Pictographic}\uFE0F]/gu, "") for safe Unicode emoji stripping.
π¨ Native Canvas Rendering: Place .canvas files directly into the content directory. Quartz processes interactive zooming and panning natively.
β‘ Concurrent Emitters: Design custom emitters as pure functions avoiding shared mutable state. This drastically accelerates build times.
π¨ Gotchas / Warnings
β οΈ Option Nesting: Ensure plugin settings sit under the options: block in YAML. Misplaced options are silently ignored.
β οΈ v4 Migration: Upgrading from v4 requires manually translating quartz.config.ts to quartz.config.yaml.
β οΈ Nginx Clean URLs: Quartz references clean URLs but emits .html files. Configure Nginx with try_files $uri $uri/ $uri.html =404; to prevent 404 errors.
β οΈ AST Deep Cloning: NEVER deep clone HAST trees during transformations. This neutralizes shallow-cloning and creates severe memory bloat.
β οΈ ASCII-only Regex: AVOID naive regex (e.g. /[^\x00-\x7F]/) for emoji stripping. This corrupts international characters and breaks valid filenames.
β οΈ Canvas Data Silos: DO NOT manually export Canvases to PNG/PDF/HTML. Rely entirely on the SSOT pipeline.