mirror of https://github.com/logos-co/roadmap.git
167 lines
20 KiB
HTML
167 lines
20 KiB
HTML
<!DOCTYPE html>
|
||
<html><head><title>2023-08-06 Waku weekly</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="2023-08-06 Waku weekly"/><meta property="og:description" content="Milestones for current works are created and used. Next steps are: Refine scope of research work for rest of the year and create matching milestones for research and waku clients Review work not coming from research and setting dates Note that format matches the Notion page but can be changed easily as it’s scripted nwaku § Release Process Improvements {E:2023-qa} achieved: fixed a bug in release CI workflow, enhanced the CI workflow to build and push a docker image on each PR to make simulations per PR more feasible next: document how to run PR built images in waku-simulator, adding Linux arm64 binaries and images blocker: PostgreSQL {E:2023-10k-users} achieved: Docker compose with nwaku + postgres + prometheus + grafana + postgres_exporter 3 next: Carry on with stress testing Autosharding v1 {E:2023-1mil-users} achieved: feedback/update cycles for FILTER &amp; LIGHTPUSH next: New fleet, updating ENR from live subscriptions and merging blocker: Architecturally it seams difficult to send the info to Discv5 from JSONRPC for the Waku app."/><meta property="og:image" content="https://roadmap.logos.co/static/og-image.png"/><meta property="og:width" content="1200"/><meta property="og:height" content="675"/><link rel="icon" href="../../static/icon.png"/><meta name="description" content="Milestones for current works are created and used. Next steps are: Refine scope of research work for rest of the year and create matching milestones for research and waku clients Review work not coming from research and setting dates Note that format matches the Notion page but can be changed easily as it’s scripted nwaku § Release Process Improvements {E:2023-qa} achieved: fixed a bug in release CI workflow, enhanced the CI workflow to build and push a docker image on each PR to make simulations per PR more feasible next: document how to run PR built images in waku-simulator, adding Linux arm64 binaries and images blocker: PostgreSQL {E:2023-10k-users} achieved: Docker compose with nwaku + postgres + prometheus + grafana + postgres_exporter 3 next: Carry on with stress testing Autosharding v1 {E:2023-1mil-users} achieved: feedback/update cycles for FILTER &amp; LIGHTPUSH next: New fleet, updating ENR from live subscriptions and merging blocker: Architecturally it seams difficult to send the info to Discv5 from JSONRPC for the Waku app."/><meta name="generator" content="Logos Roadmaps"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link href="../../index.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://fonts.googleapis.com/css2?family=IBM Plex Mono&family=sans-serif:wght@400;700&family=sans-serif:ital,wght@0,400;0,600;1,400;1,600&display=swap" rel="stylesheet" type="text/css" spa-preserve/><script src="../../prescript.js" type="application/javascript" spa-preserve></script><script type="application/javascript" spa-preserve>const fetchData = fetch(`../../static/contentIndex.json`).then(data => data.json())</script></head><body data-slug="waku/updates/2023-08-06"><div id="quartz-root" class="page"><div id="quartz-body"><div class="left sidebar"><h1 class="page-title"><a href="../..">Logos Collective Project Roadmaps</a></h1><div class="spacer mobile-only"></div><div class="search"><div id="search-icon"><p>Search</p><div></div><svg tabIndex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search</title><desc id="desc">Search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg></div><div id="search-container"><div id="search-space"><input autocomplete="off" id="search-bar" name="search" type="text" aria-label="Search for something" placeholder="Search for something"/><div id="results-container"></div></div></div></div><div class="darkmode"><input class="toggle" id="darkmode-toggle" type="checkbox" tabIndex="-1"/><label id="toggle-label-light" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xmlSpace="preserve"><title>Light mode</title><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z"></path></svg></label><label id="toggle-label-dark" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background='new 0 0 100 100'" xmlSpace="preserve"><title>Dark mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447-14.65,22.008-14.65,35.369 c0,13.36,5.203,25.921,14.65,35.368s22.008,14.65,35.368,14.65c13.361,0,25.921-5.203,35.369-14.65 c3.872-3.871,7.064-8.328,9.491-13.246C97.826,68.608,97.611,67.309,96.76,66.458z"></path></svg></label></div><div class="toc desktop-only"><button type="button" id="toc"><h3>Table of Contents</h3><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><div id="toc-content"><ul class="overflow"><li class="depth-0"><a href="#nwaku" data-for="nwaku">nwaku</a></li><li class="depth-0"><a href="#js-waku" data-for="js-waku">js-waku</a></li><li class="depth-0"><a href="#go-waku" data-for="go-waku">go-waku</a></li><li class="depth-0"><a href="#eco-dev" data-for="eco-dev">Eco Dev</a></li><li class="depth-0"><a href="#docs" data-for="docs">Docs</a></li><li class="depth-0"><a href="#research" data-for="research">Research</a></li></ul></div></div></div><div class="center"><div class="page-header"><div class="popover-hint"><h1 class="article-title">2023-08-06 Waku weekly</h1><p class="content-meta">Aug 08, 2023, 3 min read</p><ul class="tags"><li><a href="../../tags/waku-updates" class="internal tag-link">#waku-updates</a></li></ul></div></div><article class="popover-hint"><p>Milestones for current works are created and used. Next steps are:</p>
|
||
<ol>
|
||
<li>Refine scope of <a href="https://github.com/waku-org/research/issues/3" class="external">research work</a> for rest of the year and create matching milestones for research and waku clients</li>
|
||
<li>Review work not coming from research and setting dates
|
||
Note that format matches the Notion page but can be changed easily as it’s scripted</li>
|
||
</ol>
|
||
<h2 id="nwaku">nwaku<a aria-hidden="true" tabindex="-1" href="#nwaku" class="internal"> §</a></h2>
|
||
<p><strong><a href="https://github.com/waku-org/nwaku/issues/1889" class="external">Release Process Improvements</a></strong> {E:2023-qa}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: fixed a bug in release CI workflow, enhanced the CI workflow to build and push a docker image on each PR to make simulations per PR more feasible</li>
|
||
<li><em>next</em>: document how to run PR built images in waku-simulator, adding Linux arm64 binaries and images</li>
|
||
<li><em>blocker</em>:</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/nwaku/issues/1888" class="external">PostgreSQL</a></strong> {E:2023-10k-users}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: Docker compose with <code>nwaku</code> + <code>postgres</code> + <code>prometheus</code> + <code>grafana</code> + <code>postgres_exporter</code> <a href="https://github.com/alrevuelta/nwaku-compose/pull/3" class="external">3</a></li>
|
||
<li><em>next</em>: Carry on with stress testing</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/nwaku/issues/1846" class="external">Autosharding v1</a></strong> {E:2023-1mil-users}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: feedback/update cycles for FILTER & LIGHTPUSH</li>
|
||
<li><em>next</em>: New fleet, updating ENR from live subscriptions and merging</li>
|
||
<li><em>blocker</em>: Architecturally it seams difficult to send the info to Discv5 from JSONRPC for the Waku app.</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/nwaku/issues/1767" class="external">Move Waku v1 and Waku-Bridge to new repos</a></strong> {E:2023-qa}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: Removed v1 and wakubridge code from nwaku repo</li>
|
||
<li><em>next</em>: Remove references to <code>v2</code> from nwaku directory structure and documents</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/nwaku/issues/1332" class="external">nwaku c-bindings</a></strong> {E:2023-many-platforms}</p>
|
||
<ul>
|
||
<li><em>achieved</em>:
|
||
<ul>
|
||
<li>Moved the Waku execution into a secondary working thread. Essential for NodeJs.</li>
|
||
<li>Adapted the NodeJs example to use the <code>libwaku</code> with the working-thread approach. The example had been receiving relay messages during a weekend. The memory was stable without crashing.</li>
|
||
</ul>
|
||
</li>
|
||
<li><em>next</em>: start applying the thread-safety recommendations <a href="https://github.com/waku-org/nwaku/issues/1878" class="external">1878</a></li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/nwaku/issues/1076" class="external">HTTP REST API: Store, Filter, Lightpush, Admin and Private APIs</a></strong> {E:2023-many-platforms}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: Legacy Filter - v1 - interface Rest Api support added.</li>
|
||
<li><em>next</em>: Extend Rest Api interface for new v2 filter. Get v2 filter service supported from node.</li>
|
||
</ul>
|
||
<hr/>
|
||
<h2 id="js-waku">js-waku<a aria-hidden="true" tabindex="-1" href="#js-waku" class="internal"> §</a></h2>
|
||
<p><strong><a href="https://github.com/waku-org/js-waku/issues/1429" class="external">Peer Exchange is supported and used by default</a></strong> {E:2023-light-protocols}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: robustness around peer-exchange, and highlight discovery vs connections for PX on the web-chat example</li>
|
||
<li><em>next</em>: saving successfully connected PX peers to local storage for easier connections on reload</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/js-waku/issues/905" class="external">Waku Relay scalability in the Browser</a></strong> {NO EPIC}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: draft of direct browser-browser RTC example <a href="https://github.com/waku-org/js-waku-examples/pull/260" class="external">260</a></li>
|
||
<li><em>next</em>: improve the example (connection re-usage), work on contentTopic based RTC example</li>
|
||
</ul>
|
||
<hr/>
|
||
<h2 id="go-waku">go-waku<a aria-hidden="true" tabindex="-1" href="#go-waku" class="internal"> §</a></h2>
|
||
<p><strong><a href="https://github.com/waku-org/go-waku/issues/629" class="external">C-Bindings Improvement: Callbacks and Duplications</a></strong> {E:2023-many-platforms}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: updated c-bindings to use callbacks</li>
|
||
<li><em>next</em>: refactor v1 encoding functions and update RFC</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/go-waku/issues/620" class="external">Improve Test Coverage</a></strong> {E:2023-qa}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: Enabled -race flag and ran all unit tests to identify data races.</li>
|
||
<li><em>next</em>: Fix issues reported by the data race detector tool</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/go-waku/issues/605" class="external">RLN: Post-Testnet3 Improvements</a></strong> {E:2023-rln}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: use zerokit batch insert/delete for members, exposed function to retrieve data from merkle tree, modified zerokit and go-zerokit-rln to pass merkle tree persistance configuration settings</li>
|
||
<li><em>next</em>: resume onchain sync from persisted tree db</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/go-waku/issues/594" class="external">Introduce Peer Management</a></strong> {E:2023-peer-mgmt}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: Basic peer management to ensure standard in/out ratio for relay peers.</li>
|
||
<li><em>next</em>: add service slots to peer manager</li>
|
||
</ul>
|
||
<hr/>
|
||
<h2 id="eco-dev">Eco Dev<a aria-hidden="true" tabindex="-1" href="#eco-dev" class="internal"> §</a></h2>
|
||
<p><strong><a href="https://github.com/waku-org/internal-waku-outreach/issues/103" class="external">Aug 2023</a></strong> {E:2023-eco-growth}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: production of swags and marketing collaterals for web3conf completed</li>
|
||
<li><em>next</em>: web3conf talk and side event production. various calls with commshub for preparing marketing collaterals.</li>
|
||
</ul>
|
||
<hr/>
|
||
<h2 id="docs">Docs<a aria-hidden="true" tabindex="-1" href="#docs" class="internal"> §</a></h2>
|
||
<p><strong><a href="https://github.com/waku-org/docs.waku.org/issues/104" class="external">Advanced docs for js-waku</a></strong> {E:2023-eco-growth}</p>
|
||
<ul>
|
||
<li><em>next</em>: create guide on <code>@waku/react</code> and debugging js-waku web apps</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/docs.waku.org/issues/102" class="external">incorporating feedback (2023)</a></strong> {E:2023-eco-growth}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: rewrote the docs in UK English</li>
|
||
<li><em>next</em>: update docs terms, announce js-waku docs</li>
|
||
</ul>
|
||
<p><strong><a href="https://github.com/waku-org/docs.waku.org/issues/101" class="external">Foundation of js-waku docs</a></strong> {E:2023-eco-growth}</p>
|
||
<p><em>achieved</em>: added guide on js-waku bootstrapping</p>
|
||
<hr/>
|
||
<h2 id="research">Research<a aria-hidden="true" tabindex="-1" href="#research" class="internal"> §</a></h2>
|
||
<p><strong><a href="https://github.com/waku-org/research/issues/6" class="external">1.1 Network requirements and task breakdown</a></strong> {E:2023-1mil-users}</p>
|
||
<ul>
|
||
<li><em>achieved</em>: Setup project management tools; determined number of shards to 8; some conversations on RLN memberships</li>
|
||
<li><em>next</em>: Breakdown and assign tasks under each milestone for the 1 million users/public Waku Network epic.</li>
|
||
</ul>
|
||
<hr/></article></div><div class="right sidebar"><div class="graph"><h3>Graph View</h3><div class="graph-outer"><div id="graph-container" data-cfg="{"drag":true,"zoom":true,"depth":1,"scale":1.1,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1}"></div><svg version="1.1" id="global-graph-icon" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 55 55" fill="currentColor" xmlSpace="preserve"><path d="M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
|
||
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
|
||
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
|
||
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
|
||
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
|
||
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
|
||
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
|
||
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
|
||
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
|
||
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
|
||
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z"></path></svg></div><div id="global-graph-outer"><div id="global-graph-container" data-cfg="{"drag":true,"zoom":true,"depth":-1,"scale":0.9,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1}"></div></div></div><div class="backlinks"><h3>Backlinks</h3><ul class="overflow"><li>No backlinks found</li></ul></div></div></div><footer><hr/><p>Created by Logos with <a href="https://quartz.jzhao.xyz/">Quartz v4.0.8</a>, © 2023</p><ul><li><a href="https://github.com/logos-co/roadmap">GitHub</a></li><li><a href="https://discord.com/invite/logos-state">Discord Community</a></li></ul></footer></div></body><script type="application/javascript">// quartz/components/scripts/quartz/components/scripts/callout.inline.ts
|
||
function toggleCallout() {
|
||
const outerBlock = this.parentElement;
|
||
outerBlock.classList.toggle(`is-collapsed`);
|
||
const collapsed = outerBlock.classList.contains(`is-collapsed`);
|
||
const height = collapsed ? this.scrollHeight : outerBlock.scrollHeight;
|
||
outerBlock.style.maxHeight = height + `px`;
|
||
let current = outerBlock;
|
||
let parent = outerBlock.parentElement;
|
||
while (parent) {
|
||
if (!parent.classList.contains(`callout`)) {
|
||
return;
|
||
}
|
||
const collapsed2 = parent.classList.contains(`is-collapsed`);
|
||
const height2 = collapsed2 ? parent.scrollHeight : parent.scrollHeight + current.scrollHeight;
|
||
parent.style.maxHeight = height2 + `px`;
|
||
current = parent;
|
||
parent = parent.parentElement;
|
||
}
|
||
}
|
||
function setupCallout() {
|
||
const collapsible = document.getElementsByClassName(
|
||
`callout is-collapsible`
|
||
);
|
||
for (const div of collapsible) {
|
||
const title = div.firstElementChild;
|
||
if (title) {
|
||
title.removeEventListener(`click`, toggleCallout);
|
||
title.addEventListener(`click`, toggleCallout);
|
||
const collapsed = div.classList.contains(`is-collapsed`);
|
||
const height = collapsed ? title.scrollHeight : div.scrollHeight;
|
||
div.style.maxHeight = height + `px`;
|
||
}
|
||
}
|
||
}
|
||
document.addEventListener(`nav`, setupCallout);
|
||
window.addEventListener(`resize`, setupCallout);
|
||
</script><script type="module">
|
||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
||
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
|
||
mermaid.initialize({
|
||
startOnLoad: false,
|
||
securityLevel: 'loose',
|
||
theme: darkMode ? 'dark' : 'default'
|
||
});
|
||
document.addEventListener('nav', async () => {
|
||
await mermaid.run({
|
||
querySelector: '.mermaid'
|
||
})
|
||
});
|
||
</script><script src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/copy-tex.min.js" type="application/javascript"></script><script src="../../postscript.js" type="module"></script></html> |