<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>WebAssembly | Dylan Chiang</title><link>https://dylanchiang-dev.github.io/en/tags/webassembly/</link><atom:link href="https://dylanchiang-dev.github.io/en/tags/webassembly/index.xml" rel="self" type="application/rss+xml"/><description>WebAssembly</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-US</language><lastBuildDate>Sat, 11 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://dylanchiang-dev.github.io/media/icon_hu_982c5d63a71b2961.png</url><title>WebAssembly</title><link>https://dylanchiang-dev.github.io/en/tags/webassembly/</link></image><item><title>DC-WeMark: Local-first WeChat public account Markdown typesetting tool</title><link>https://dylanchiang-dev.github.io/en/project/dc-wemark/</link><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid>https://dylanchiang-dev.github.io/en/project/dc-wemark/</guid><description>&lt;p>DC-WeMark is an open source Markdown typesetting tool for WeChat public account authors. Users can write Markdown on the left, preview it in real time on the right, and paste style-preserving rich text into the official account editor with one click. The entire processing process is completed locally in the browser, and no account, backend or article upload is required.&lt;/p>
&lt;h2 id="what-i-am-responsible-for-in-the-project">What I am responsible for in the project&lt;/h2>
&lt;p>This is an independent open source project designed and developed by me. I am responsible for the complete process from problem definition, technical architecture to product delivery.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Product Design&lt;/strong>: Focus on format loss, repeated adjustments and content privacy issues when Markdown authors enter the public account editor, and establish a single workflow of &amp;ldquo;typesetting, previewing, and copying&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Core Engine&lt;/strong>: Parse Markdown AST with Rust and &lt;code>comrak&lt;/code>, convert theme rules into inline CSS acceptable to public accounts, and compile to WebAssembly.&lt;/li>
&lt;li>&lt;strong>Front-end experience&lt;/strong>: Use Vite and native TypeScript to complete dual-column editing, synchronous scrolling, mobile preview, file import and export, draft saving, and clipboard compatibility.&lt;/li>
&lt;li>&lt;strong>Design System&lt;/strong>: Create 48 original typography themes and provide adjustable parameters such as font, font size, accent color and copy background.&lt;/li>
&lt;li>&lt;strong>Project Delivery&lt;/strong>: Complete Rust unit testing, Playwright end-to-end testing, Docker self-racking solution, and Cloudflare Pages&amp;rsquo; continuous deployment process.&lt;/li>
&lt;/ul>
&lt;h2 id="core-innovation">Core Innovation&lt;/h2>
&lt;h3 id="1-put-the-typesetting-core-into-webassembly">1. Put the typesetting core into WebAssembly&lt;/h3>
&lt;p>Markdown parsing, theme application and compatibility processing are all completed by the Rust core, and then executed in the browser through WebAssembly. The same core set can be extended to the CLI or desktop in the future without having to re-implement the layout rules.&lt;/p>
&lt;h3 id="2-content-does-not-leave-the-users-device">2. Content does not leave the user’s device&lt;/h3>
&lt;p>The system has no server logic, database, or account services. Articles are always retained locally from input to copy, taking into account the privacy and offline availability of sensitive content.&lt;/p>
&lt;h3 id="3-compatible-output-for-official-account-editor">3. Compatible output for official account editor&lt;/h3>
&lt;p>General web page CSS cannot be saved directly in the official account editor. DC-WeMark inlines styles into elements one by one, filters unsupported tags and attributes, and writes them to the clipboard using &lt;code>text/html&lt;/code> to make the pasted layout as consistent as possible.&lt;/p>
&lt;h3 id="4-small-size-low-dependency-product-architecture">4. Small size, low dependency product architecture&lt;/h3>
&lt;p>The front end does not rely on a large UI framework, and the deployment artifacts are files that can be hosted by any static service. This keeps the online version, self-hosted version, and future multi-device reuse simple.&lt;/p>
&lt;h2 id="technical-architecture">Technical architecture&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Typesetting Core&lt;/strong>: Rust, comrak, WebAssembly&lt;/li>
&lt;li>&lt;strong>Front-end&lt;/strong>: Vite, TypeScript, HTML, CSS&lt;/li>
&lt;li>&lt;strong>Quality Assurance&lt;/strong>: Rust tests, Playwright E2E&lt;/li>
&lt;li>&lt;strong>Deployment&lt;/strong>: Cloudflare Pages, Docker, nginx&lt;/li>
&lt;li>&lt;strong>Authorization&lt;/strong>: MIT License&lt;/li>
&lt;/ul>
&lt;p>
·
&lt;/p></description></item></channel></rss>