Fixed
- Task-list checkboxes rendered on their own line, above the item text. cmark-gfm emits GFM task-list checkboxes as
<li><input type="checkbox">with no wrapping element, buttasklist.jslooked for a.task-list-itemclass that never existed, so the checkbox-inline CSS rule never matched. The script now selectsli > input[type="checkbox"]directly, and all 7 bundled theme stylesheets get a matching rule to keep the checkbox and its text on the same line. [TOC]links pointed at anchors that didn't exist.MarkdownRenderercomputed a slug for each heading to build the table of contents, but never wrote a matchingidattribute onto the heading itself — so every generated link 404'd within the page. Headings now get deduplicated ids (GitHub-style-1,-2suffixes for repeated titles) that the TOC links actually target.
Changed
- Prism → highlight.js for code syntax highlighting. Prism's line-numbers plugin needed a separate script and CSS file per theme and lagged on language coverage; highlight.js covers more languages through one init script. The highlighting theme picker in Settings is now a proper
Pickerpopulated from the bundled themes, instead of a free-text field.
Testing
- Added WKWebView-driven end-to-end coverage (
GFMFeatureCoverageTests,PreviewThemeCoverageTests,BundleResolutionTests) asserting against real rendered DOM — heading ids/TOC links, checkbox layout, and highlight.js tokenization — across all 7 bundled themes, light and dark.
Full Changelog: v0.2.8...v0.2.9