The md dialect
One hand-rolled parser (mrlycore::md) feeds both faces: the site renders blocks to html, the pixel face lays the same blocks out as plain text lines. Anything the parser refuses degrades to literal text - never an error page, never raw html on the wire.
Accepted
#and##headings. Blank lines separate blocks.- Paragraphs; consecutive lines join with a space.
-bullets and1.numbered lists.- Fenced code blocks (triple backtick), contents escaped verbatim.
**bold**,*italic*, and backtick code spans. Nothing is
parsed inside a span; an unclosed backtick stays literal. ASCII math like a*b*c belongs in a span or the asterisks italicize.
- Links: absolute http(s) URLs open in a new tab. Relative links
become slugs the site build resolves against tracked md files - a broken link fails the build.
- Images:
alone on a line, local paths only. The
build resolves the path against git-tracked files, copies the asset into dist at its repo path, and fails on any miss.
- Pipe tables: header row,
|---|separator (colons tolerated,
alignment ignored), body rows. Every row piped at both ends, same cell count throughout; cells take the full inline pass.
- Blockquotes:
>lines; consecutive lines merge into one quote.
Refused
###and deeper headings.- Raw html - escaped and shown as text.
- Remote images, inline-position images, and any
javascript:or
other protocol in a link or image.
- Malformed tables (missing separator, ragged rows, unpiped ends).
- Everything else degrades to the literal text that was typed.