# Built with AI

mdlib-pure was designed by Michele Polo and written with Claude (Anthropic)
through Claude Code. The maintainer sets the direction and makes the calls;
agents write the code, the tests and the docs, review the work and try to
break it. This page tells how, with facts from the git history and the
[changelog](docs/changelog.md).

The history has 49 commits, from 28 October 2026 to 2 November 2026; 47 of them carry a `Co-Authored-By: Claude` trailer.

## A contract written for agents

The first commit already shipped [`AGENTS.md`](docs/extending.md): rules that
each come with the command that verifies them, and recipes for extending the
parser. To test it, an agent implemented the `:::` container plugin using
only that file ([5a482ba]). Its friction log changed both the core
(`finalize()` now closes a block's open children) and the guide, which
gained the container recipe, the ordering rules against GFM table rows and
the per-line cost of `continue`.

From then on, first-party plugins were written by agents from `AGENTS.md`:

| Plugin | gzip at the time | Tests | Commit |
|:--|--:|--:|:--|
| `mdlib-pure/container` | 0.81 KB | 37 | [5a482ba] |
| `mdlib-pure/math` | 0.91 KB | 65 | [1c4dd87] |
| `mdlib-pure/mark` | 0.13 KB | 37 | [1c4dd87] |
| `mdlib-pure/frontmatter` | 0.57 KB | 38 | [1c4dd87] |
| `mdlib-pure/deflist` | 1.22 KB | 54 | [53f6b0f] |

The benchmark suite in `bench/` was built by an agent too ([cb973e5]).

## Bugs found by adversarial tests and reviews

Every new syntax ships with adversarial-input tests, and agents reviewed the
code looking for ways to break it. Some of what they found, with the numbers
from the commits that fixed it:

- **Inherited ReDoS.** The link title regex had overlapping alternatives
  (exponential backtracking), inherited from the reference implementation,
  and unanchored trailing-whitespace regexes were quadratic. Rewritten, and
  `AGENTS.md` gained its rule on linear regexes ([b6fde7c]).
- **Prototype lookup.** `&constructor;` resolved to `Object.prototype` in the
  fallback entity decoder: now a `Map`, and a rule ([b6fde7c]).
- **Quadratic GFM tables.** Opening a table split the whole paragraph on
  every delimiter-like line: 7.5 s on 30k lines, then 110 ms. Unbounded
  footnote labels: 805 ms, then 82 ms ([ea3dfd8]).
- **Deep emphasis.** Interleaved delimiters nested past `MAX_NESTING` took
  3.8 s at 60k, then 91 ms. Found by an agent review, with three more fixes
  in the same commit ([74de6d1]).
- **Quadratic sibling search.** Many setext headings or one-row tables took
  1.1 s at 100k; now linear ([53f6b0f]).
- **Unsanitized adapter output.** With `html: true` and `sanitize`,
  `toVNodes()` was not sanitized, so the framework adapter passed raw HTML to
  `dangerouslySetInnerHTML`. The regression test fails on the previous
  version ([e440762]).
- **Tailwind clash.** A real Tailwind CSS v4 build showed that
  `@theme inline { --radius-md }` replaced Tailwind's own `rounded-md` for the
  whole project ([27395d2]).
- **CSS source order.** A screenshot of the first demo editor revealed that,
  with zero-specificity rules, source order decides: the first heading kept
  its top margin and alerts had extra space below. The edge resets moved to
  the end of the theme ([ea3dfd8]; the screenshot is below).
- **A timing test that only failed on CI.** A 4 MB adversarial input took
  2.2 s on the CI runner, over the 2 s limit, while parsing was linear
  (~130 ms/MB). The first attempted fix made paragraphs quadratic; measuring
  caught it and it was reverted. The input shrank to 1 MB and every timing
  limit became `budget(ms)`, tripled on CI ([a593dd7]).

## Web Components, then Blazor

`mdlib-pure/element` added two custom elements that work in plain HTML and in
any framework: `<mdlib-markdown>`, a viewer, and `<mdlib-editor>`, an editor
with toolbar and live preview ([7f25396]). They were written as the base of a
Blazor wrapper. Core, every plugin and both elements came to 19.8 KB gzip at the time,
within a 26 KB budget; KaTeX and Mermaid come through loaders, fetched only
when a document needs them. The commit shipped with 7 Chromium tests.

An agent then built `MdlibPure.Blazor` on the elements, and the work was
reviewed ([13c87c3]): a Razor class library for .NET 10 with a viewer, an
editor bound with `@bind-Value`, and a C# service for the AST. It has 48 bUnit
tests and 20 Playwright end-to-end tests across Static SSR, Interactive
Server, WebAssembly and Auto. Version 0.1.0 is attached to a
[GitHub release](https://github.com/MichelePolo/mdlib-pure/releases/tag/blazor-v0.1.0);
version 0.1.1 ([release](https://github.com/MichelePolo/mdlib-pure/releases/tag/blazor-v0.1.1))
adds `PodcastEditor`. The guide is [its README](docs/blazor.md).

Building the wrapper found three problems in the elements, each reproduced
in a test before the fix ([60c7298]):

- **DOM morphing.** Blazor enhanced navigation (like Turbo and htmx) empties
  elements it did not create, and the elements never recovered. A
  `MutationObserver` now renders the viewer again and puts back the editor's
  toolbar and panes, keeping the typed text.
- **A stylesheet that disappeared.** The KaTeX stylesheet was a `<link>`
  added once, which a morph removed for good. It is now adopted through
  `document.adoptedStyleSheets`, with absolute font URLs.
- **Late loaders.** Elements defined before their loaders never drew math or
  diagrams. Every `defineElements()` call now refreshes the elements already
  in the page.

Then a rule for the docs ([8dcf108]): rule 10 of `AGENTS.md`, checked by
`npm run check`, requires every public entry point to be documented in
`docs/api.md` and the README, and every `docs/*.md` and
`bindings/*/README.md` to be linked from the README. This site adds the other
half: its build fails when one of those guides is not published as a docs
page. That is how the [Web Components guide](docs/elements.md) and the
[Blazor README](docs/blazor.md) became pages here.

## Then Angular

A second agent built `ngx-mdlib-pure` on the same elements, in a git worktree
of its own so that it could not collide with the agent updating this site
([5a551cd]). The package has standalone components whose tag *is* the Web
Component (`<mdlib-editor [(value)]>`, also a form control for `ngModel` and
reactive forms, and `<mdlib-markdown>`), a provider, and a service for the
AST that also runs on the server. It is checked by 29 unit tests in Chromium
and 11 end-to-end tests against a server-rendered, hydrated demo. Its
[README](docs/angular.md) became a docs page here in the same commit, since
the site build requires it.

Building and reviewing it found four problems outside the wrapper, each now
covered by a test or a check:

- **No disabled state.** Inside `<fieldset disabled>`, the editor still took
  typing. It now disables its text area and formatting buttons, like a
  disabled `<textarea>`.
- **A loader type that rejected KaTeX.** The documented
  `katex: () => import('katex/contrib/auto-render').then((m) => m.default)`
  did not compile under strict TypeScript. `npm run typecheck` now compiles
  it against KaTeX's own types.
- **Warnings in every build.** Bare `import "./chunk-*.js"` lines in `dist/`
  made each consumer's bundler warn ten times. The build removes them.
- **A stale copy in the cache.** Vite kept serving the mdlib-pure it had
  pre-bundled before a rebuild, so the unit tests ran against old code. The
  Angular workspace now drops that cache before testing.

Nothing is on a package registry yet. The README, the guides, `AGENTS.md`
and this site say so, and each gives the tarball to install today, attached
to a GitHub release.

## The maintainer decides

Agents propose; Michele decides. Some of the decisions in the history:

- The URL policy: an allowlist of `http`, `https`, `mailto`, `tel`, `sms` and
  relative URLs, with `data:` only for raster images ([9175b67]).
- Heading ids: first prefixed with `user-content-` by default ([9500a6b]),
  then clean by default, with the prefix recommended for untrusted input
  ([6303064]).
- The core size budget raised to 15 KB, to recover 39% of GFM throughput
  ([caf2d63]).
- Pandoc-style math output, so that KaTeX auto-render and MathJax work with
  no configuration ([691260a]).
- Mermaid diagrams: costs and benefits were laid out before any code
  (Mermaid 12 measured at 215 KB gzip on first load). Chosen: no dependency
  on Mermaid, lazy loading, theme from the tokens with redraw on light/dark,
  pre-rendered output only through a `render` option ([287334c]).
- The Blazor wrapper: built on the Web Components, in this repository, for
  .NET 10, in every render mode, with every plugin and access to the AST, and
  no server-side rendering of the Markdown for SEO ([13c87c3]).
- The repository made public and this site published on GitHub Pages
  ([ba0b3a4]).
- Publishing on npm put on hold, and the Blazor package released only on
  GitHub. The Angular wrapper followed, built on the same elements, and the
  docs say plainly that nothing is on a registry yet ([5a551cd]); the npm
  tarballs of mdlib-pure and the Angular wrapper are attached to GitHub
  releases as well.

## Checked on every change

`npm run verify` runs the type checker, the tests, the invariants (zero
dependencies, no HTML sinks) and the size budgets. GitHub Actions runs it on
Node 22 and 24, plus a Chromium suite with Playwright: CommonMark through the
DOM, `renderTo()` never assigning `innerHTML` without raw HTML, hostile
Markdown unable to run script, the theme, and a real Tailwind build
([297d6af]). A `blazor` job builds, tests and packs the wrapper and runs its
end-to-end tests ([13c87c3]).

## This site

This site was built the same way: an agent in Claude Code wrote the build
script, the pages and the playground. The docs are the repository's Markdown
rendered by mdlib-pure itself, and the screenshots below were taken with
Playwright. Checking the Mermaid sample in a real browser found two problems
that unit tests had not: this site switches themes through
`<meta name="color-scheme">`, which the redraw did not watch, and Mermaid's
black default edge-label background in dark mode. Both were fixed in the
library ([287334c]). The [samples](samples.md#elements) include a live
`<mdlib-editor>` and `<mdlib-markdown>`, defined from the library's sources
with this site's own copies of KaTeX and Mermaid as loaders.

[5a482ba]: https://github.com/MichelePolo/mdlib-pure/commit/5a482ba
[1c4dd87]: https://github.com/MichelePolo/mdlib-pure/commit/1c4dd87
[53f6b0f]: https://github.com/MichelePolo/mdlib-pure/commit/53f6b0f
[cb973e5]: https://github.com/MichelePolo/mdlib-pure/commit/cb973e5
[b6fde7c]: https://github.com/MichelePolo/mdlib-pure/commit/b6fde7c
[ea3dfd8]: https://github.com/MichelePolo/mdlib-pure/commit/ea3dfd8
[74de6d1]: https://github.com/MichelePolo/mdlib-pure/commit/74de6d1
[e440762]: https://github.com/MichelePolo/mdlib-pure/commit/e440762
[27395d2]: https://github.com/MichelePolo/mdlib-pure/commit/27395d2
[9175b67]: https://github.com/MichelePolo/mdlib-pure/commit/9175b67
[9500a6b]: https://github.com/MichelePolo/mdlib-pure/commit/9500a6b
[6303064]: https://github.com/MichelePolo/mdlib-pure/commit/6303064
[caf2d63]: https://github.com/MichelePolo/mdlib-pure/commit/caf2d63
[691260a]: https://github.com/MichelePolo/mdlib-pure/commit/691260a
[297d6af]: https://github.com/MichelePolo/mdlib-pure/commit/297d6af
[a593dd7]: https://github.com/MichelePolo/mdlib-pure/commit/a593dd7
[287334c]: https://github.com/MichelePolo/mdlib-pure/commit/287334c
[ba0b3a4]: https://github.com/MichelePolo/mdlib-pure/commit/ba0b3a4
[7f25396]: https://github.com/MichelePolo/mdlib-pure/commit/7f25396
[60c7298]: https://github.com/MichelePolo/mdlib-pure/commit/60c7298
[13c87c3]: https://github.com/MichelePolo/mdlib-pure/commit/13c87c3
[8dcf108]: https://github.com/MichelePolo/mdlib-pure/commit/8dcf108
[5a551cd]: https://github.com/MichelePolo/mdlib-pure/commit/5a551cd

## Screenshots

- [`2026-10-28-demo-editor-light.png`](story/screenshots/2026-10-28-demo-editor-light.png): The first live editor (`demo/`), light theme: CommonMark + GFM (alert, task list, table, code, footnote) rendered with `theme.css`. Captured while checking the theme; it revealed a CSS source-order bug (top margin of the first heading, extra space under the alert) that was then fixed.
- [`2026-10-28-demo-editor-dark-full.png`](story/screenshots/2026-10-28-demo-editor-dark-full.png): The same editor in dark mode, full page: neutral colors derive from `currentColor`, hues from `light-dark()`.
- [`2026-10-28-site-home-light.png`](story/screenshots/2026-10-28-site-home-light.png): The demonstration site (`npm run site:build`), home page, light, full page: hero with the live example, datasheet, plugins, benchmark, the section for AI agents. Display type is Computer Modern (KaTeX's fonts); Markdown markers in non-repro blue.
- [`2026-10-28-site-home-dark.png`](story/screenshots/2026-10-28-site-home-dark.png): The same home page in dark mode, full page: the site's colours are `light-dark()` tokens like the theme's.
- [`2026-10-28-site-docs-light.png`](story/screenshots/2026-10-28-site-docs-light.png): A docs page (`AGENTS.md` rendered by mdlib-pure at build time) with the sidebar and the table of contents from `toc()`, light.
- [`2026-10-28-site-docs-dark.png`](story/screenshots/2026-10-28-site-docs-dark.png): The same docs page in dark mode.
- [`2026-10-28-site-samples-light.png`](story/screenshots/2026-10-28-site-samples-light.png): The samples gallery at the math sample, light: Markdown source next to the output, typeset by KaTeX auto-render.
- [`2026-10-28-site-samples-dark.png`](story/screenshots/2026-10-28-site-samples-dark.png): The same sample in dark mode.
- [`2026-10-28-site-plugins-light.png`](story/screenshots/2026-10-28-site-plugins-light.png): The plugins page, light: import, use, measured size, syntax, AST nodes and reference link of `mdlib-pure/gfm`.
- [`2026-10-28-site-plugins-dark.png`](story/screenshots/2026-10-28-site-plugins-dark.png): The same plugins page in dark mode.
- [`2026-10-28-site-playground-light.png`](story/screenshots/2026-10-28-site-playground-light.png): The playground, light: the demo editor's top bar and two panes, extended with a sample picker, plugin toggles, Share and Preview/HTML/AST tabs (GFM sample).
- [`2026-10-28-site-playground-dark.png`](story/screenshots/2026-10-28-site-playground-dark.png): The same playground in dark mode.
- [`2026-10-28-site-home-mobile.png`](story/screenshots/2026-10-28-site-home-mobile.png): The home page at 390 px wide, full page: menu button for the navigation, hero and live example stacked.
- [`2026-10-28-site-mermaid-light.png`](story/screenshots/2026-10-28-site-mermaid-light.png): Samples page, Mermaid section, light: diagrams rendered by `renderMermaid()` with colors from the site's `--md-*` tokens.
- [`2026-10-28-site-mermaid-dark.png`](story/screenshots/2026-10-28-site-mermaid-dark.png): The same section after switching the site to dark: redrawn automatically from the dark tokens.
- [`2026-10-29-site-home.png`](story/screenshots/2026-10-29-site-home.png): The home page presenting the Web Components and the Blazor wrapper, light, full page: the datasheet's Output line names the elements and the Blazor wrapper, a new "Ways to use it" section has a snippet each for JavaScript, Web Components, React/Preact/Vue and Blazor (with the link to the GitHub release), and `mdlib-pure/element` appears in the plugins table with its measured size.
- [`2026-10-29-site-docs-elements.png`](story/screenshots/2026-10-29-site-docs-elements.png): The new "Web Components" docs page, rendered at build time from `docs/elements.md`, with both new pages in the sidebar.
- [`2026-10-29-site-docs-blazor.png`](story/screenshots/2026-10-29-site-docs-blazor.png): The new "Blazor" docs page, rendered from `bindings/blazor/README.md`; the site's note above it links the `.nupkg` on the GitHub release, and C# and Razor blocks are highlighted.
- [`2026-10-29-site-samples-elements.png`](story/screenshots/2026-10-29-site-samples-elements.png): Samples page, the live Web Components sample after typing a line in Chromium: the HTML source above a real `<mdlib-markdown>` and `<mdlib-editor>`, KaTeX and Mermaid loaded from the site's own assets, and the count of the editor's debounced `input` events.
- [`2026-10-29-angular-demo.png`](story/screenshots/2026-10-29-angular-demo.png): The `ngx-mdlib-pure` SSR demo after hydration: `<mdlib-editor [(value)]>` with toolbar and live preview (front matter, GFM, footnotes, highlights), and below it the Angular value bound to the editor and a `<mdlib-markdown>` viewer.

## Commit history

1. 00:15 [`a7fc8c0`](https://github.com/MichelePolo/mdlib-pure/commit/a7fc8c0) feat: CommonMark 0.31.2 core parser and renderer
2. 00:21 [`b6fde7c`](https://github.com/MichelePolo/mdlib-pure/commit/b6fde7c) fix(security): remove ReDoS and quadratic regexes, prototype lookups
3. 00:31 [`68836c4`](https://github.com/MichelePolo/mdlib-pure/commit/68836c4) feat: GFM plugin, semantic-token theme and Tailwind v4 integration
4. 00:36 [`ea3dfd8`](https://github.com/MichelePolo/mdlib-pure/commit/ea3dfd8) fix(gfm): linear-time table header scan and bounded footnote labels; docs, template, demo
5. 00:46 [`5a482ba`](https://github.com/MichelePolo/mdlib-pure/commit/5a482ba) feat: container plugin; finalize closes open children; AGENTS.md from dogfooding
6. 01:03 [`9175b67`](https://github.com/MichelePolo/mdlib-pure/commit/9175b67) feat(security): default URL allowlist
7. 01:13 [`297d6af`](https://github.com/MichelePolo/mdlib-pure/commit/297d6af) ci: GitHub Actions (verify on Node 22/24, browser tests in Chromium)
8. 01:14 [`60c60d3`](https://github.com/MichelePolo/mdlib-pure/commit/60c60d3) feat: highlight option for code blocks
9. 01:15 [`65ede55`](https://github.com/MichelePolo/mdlib-pure/commit/65ede55) feat: headings plugin (GitHub slugs, permalinks, toc)
10. 01:16 [`27395d2`](https://github.com/MichelePolo/mdlib-pure/commit/27395d2) test: verify the Tailwind v4 integration with a real build; fix rounded-md shadowing
11. 01:17 [`9500a6b`](https://github.com/MichelePolo/mdlib-pure/commit/9500a6b) fix(security): headings ids prefixed with user-content- by default
12. 01:20 [`6460289`](https://github.com/MichelePolo/mdlib-pure/commit/6460289) feat: framework adapter for React, Preact and Vue
13. 01:23 [`e440762`](https://github.com/MichelePolo/mdlib-pure/commit/e440762) fix(security): sanitize raw nodes returned by toVNodes()
14. 01:53 [`6303064`](https://github.com/MichelePolo/mdlib-pure/commit/6303064) feat(headings): clean ids by default (maintainer decision)
15. 01:57 [`04d2d42`](https://github.com/MichelePolo/mdlib-pure/commit/04d2d42) feat: block positions and attributes hook; docs/api.md; release prep
16. 02:13 [`74de6d1`](https://github.com/MichelePolo/mdlib-pure/commit/74de6d1) fix: issues found by agent review (emphasis nesting, custom runs, BOM, URL autolinks)
17. 02:15 [`1c4dd87`](https://github.com/MichelePolo/mdlib-pure/commit/1c4dd87) feat: math, mark and frontmatter plugins (built by agents from AGENTS.md)
18. 02:17 [`53f6b0f`](https://github.com/MichelePolo/mdlib-pure/commit/53f6b0f) feat: definition lists plugin; fix quadratic sibling search; generic tight paragraphs
19. 02:32 [`cb973e5`](https://github.com/MichelePolo/mdlib-pure/commit/cb973e5) perf: hot spots from profiling (+7-13% throughput); benchmark suite
20. 02:33 [`9ae18db`](https://github.com/MichelePolo/mdlib-pure/commit/9ae18db) docs: changelog for the new plugins and performance
21. 08:05 [`caf2d63`](https://github.com/MichelePolo/mdlib-pure/commit/caf2d63) perf(gfm): recover GFM throughput (+39%); core budget 15 KB
22. 08:07 [`691260a`](https://github.com/MichelePolo/mdlib-pure/commit/691260a) feat(math): pandoc-style output, works with KaTeX auto-render and MathJax as-is
23. 08:11 [`47b761e`](https://github.com/MichelePolo/mdlib-pure/commit/47b761e) bench: refresh results after the GFM speed recovery
24. 08:29 [`a5feda3`](https://github.com/MichelePolo/mdlib-pure/commit/a5feda3) docs: development screenshots (demo editor, light and dark)
25. 09:12 [`72d546f`](https://github.com/MichelePolo/mdlib-pure/commit/72d546f) feat: demo website (home, docs, samples, plugins, playground, story), agents-ready
26. 09:23 [`ba0b3a4`](https://github.com/MichelePolo/mdlib-pure/commit/ba0b3a4) ci: publish the demo site to GitHub Pages
27. 09:25 [`96a8008`](https://github.com/MichelePolo/mdlib-pure/commit/96a8008) docs: link the published website from README and package.json
28. 09:30 [`a593dd7`](https://github.com/MichelePolo/mdlib-pure/commit/a593dd7) test: CI-aware time budgets; shrink an oversized adversarial input
29. 16:33 [`287334c`](https://github.com/MichelePolo/mdlib-pure/commit/287334c) feat: Mermaid plugin (no dependency on Mermaid), samples on the site
30. 16:39 [`7e813b9`](https://github.com/MichelePolo/mdlib-pure/commit/7e813b9) docs: agents guide and website updated for Mermaid and recent lessons
31. 16:44 [`0b376f5`](https://github.com/MichelePolo/mdlib-pure/commit/0b376f5) fix(package): keep screenshots out of the npm package (3.1 MB -> ~140 KB)
32. 01:05 [`7f25396`](https://github.com/MichelePolo/mdlib-pure/commit/7f25396) feat: Web Components <mdlib-markdown> and <mdlib-editor> (mdlib-pure/element)
33. 01:52 [`60c7298`](https://github.com/MichelePolo/mdlib-pure/commit/60c7298) fix(element): survive DOM morphing, adopt the KaTeX sheet, refresh on late loaders
34. 01:52 [`13c87c3`](https://github.com/MichelePolo/mdlib-pure/commit/13c87c3) feat: Blazor wrapper MdlibPure.Blazor (bindings/blazor)
35. 08:15 [`8dcf108`](https://github.com/MichelePolo/mdlib-pure/commit/8dcf108) docs: Web Components guide, Blazor in the README, docs-coverage invariant
36. 08:44 [`141baad`](https://github.com/MichelePolo/mdlib-pure/commit/141baad) site: Web Components and Blazor pages, live editor sample, docs coverage check
37. 09:01 [`5a551cd`](https://github.com/MichelePolo/mdlib-pure/commit/5a551cd) feat: Angular wrapper ngx-mdlib-pure (bindings/angular); editor disabled state
38. 09:12 [`cdf65d3`](https://github.com/MichelePolo/mdlib-pure/commit/cdf65d3) site: the Angular wrapper in the story, with a screenshot of its demo
39. 09:19 [`59bcab7`](https://github.com/MichelePolo/mdlib-pure/commit/59bcab7) docs: install from the GitHub releases (mdlib-pure-v0.1.0, angular-v0.1.0)
40. 13:28 [`2312d9b`](https://github.com/MichelePolo/mdlib-pure/commit/2312d9b) fix(element, theme): value set before connection; Tailwind preflight; jsdom
41. 13:40 [`d525d87`](https://github.com/MichelePolo/mdlib-pure/commit/d525d87) release: mdlib-pure 0.1.1 (GitHub release mdlib-pure-v0.1.1)
42. 23:39 [`0f9dee9`](https://github.com/MichelePolo/mdlib-pure/commit/0f9dee9) feat(site): add fictional podcast custom-plugin sample
43. 23:54 [`e6743a5`](https://github.com/MichelePolo/mdlib-pure/commit/e6743a5) feat(blazor): ship configurable podcast editor and episode binding
44. 02:27 [`f6e579a`](https://github.com/MichelePolo/mdlib-pure/commit/f6e579a) docs: install MdlibPure.Blazor 0.1.1 from the blazor-v0.1.1 release (#3)
45. 18:30 [`a563b96`](https://github.com/MichelePolo/mdlib-pure/commit/a563b96) Podcast sample: hosting options for an application with its own rundown server (#4)
46. 08:54 [`9481e31`](https://github.com/MichelePolo/mdlib-pure/commit/9481e31) chore(angular): ngx-mdlib-pure 0.1.1 requires mdlib-pure ^0.1.1 (#5)
47. 10:50 [`011bab2`](https://github.com/MichelePolo/mdlib-pure/commit/011bab2) feat(angular): PodcastEditor in ngx-mdlib-pure/podcast; bindings follow the core (#6)
48. 10:56 [`4961ab1`](https://github.com/MichelePolo/mdlib-pure/commit/4961ab1) feat(blazor): OnValueCommit on MarkdownEditor and PodcastEditor (#7)
49. 11:00 [`b1c613b`](https://github.com/MichelePolo/mdlib-pure/commit/b1c613b) chore(release): ngx-mdlib-pure 0.2.0 and MdlibPure.Blazor 0.2.0 (#8)
