apex-ruby 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/apex-ruby.gemspec +14 -3
  4. data/ext/apex_ext/apex_src/include/apex/apex.h +11 -2
  5. data/ext/apex_ext/apex_src/src/apex.c +64 -5
  6. data/ext/apex_ext/apex_src/src/ast_terminal.c +2 -4
  7. data/ext/apex_ext/apex_src/src/extensions/callouts.c +103 -63
  8. data/ext/apex_ext/apex_src/src/extensions/callouts.h +3 -2
  9. data/ext/apex_ext/apex_src/src/extensions/citations.c +15 -2
  10. data/ext/apex_ext/apex_src/src/extensions/emoji.c +73 -7
  11. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +25 -4
  12. data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +4 -1
  13. data/ext/apex_ext/apex_src/src/extensions/insert.c +49 -0
  14. data/ext/apex_ext/apex_src/src/extensions/metadata.c +275 -55
  15. data/ext/apex_ext/apex_src/src/extensions/metadata.h +9 -0
  16. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +172 -254
  17. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +36 -127
  18. data/ext/apex_ext/apex_src/src/html_renderer.c +99 -157
  19. data/ext/apex_ext/extconf.rb +31 -79
  20. data/lib/apex/version.rb +1 -1
  21. metadata +1 -470
  22. data/ext/apex_ext/apex_src/AGENTS.md +0 -41
  23. data/ext/apex_ext/apex_src/BENCHMARK.md +0 -32
  24. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +0 -67
  25. data/ext/apex_ext/apex_src/CHANGELOG.md +0 -3373
  26. data/ext/apex_ext/apex_src/CMakeLists.txt +0 -481
  27. data/ext/apex_ext/apex_src/Dockerfile.linux-build +0 -15
  28. data/ext/apex_ext/apex_src/Formula/apex.rb +0 -43
  29. data/ext/apex_ext/apex_src/Info.plist.in +0 -27
  30. data/ext/apex_ext/apex_src/Package.swift +0 -192
  31. data/ext/apex_ext/apex_src/PackageSupport/README.md +0 -17
  32. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +0 -4
  33. data/ext/apex_ext/apex_src/README.md +0 -536
  34. data/ext/apex_ext/apex_src/ROADMAP.md +0 -5
  35. data/ext/apex_ext/apex_src/VERSION +0 -1
  36. data/ext/apex_ext/apex_src/apex-debug.log +0 -4
  37. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  38. data/ext/apex_ext/apex_src/apex-plugins.json.example +0 -20
  39. data/ext/apex_ext/apex_src/apex.code-workspace +0 -38
  40. data/ext/apex_ext/apex_src/apex.pc.in +0 -11
  41. data/ext/apex_ext/apex_src/apex.taskpaper +0 -12
  42. data/ext/apex_ext/apex_src/apex_deflist_debug.log +0 -25
  43. data/ext/apex_ext/apex_src/buildnotes.md +0 -1435
  44. data/ext/apex_ext/apex_src/cli/main.c +0 -4588
  45. data/ext/apex_ext/apex_src/debug.log +0 -7
  46. data/ext/apex_ext/apex_src/debug_test.sh +0 -22
  47. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +0 -451
  48. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +0 -166
  49. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +0 -274
  50. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +0 -749
  51. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +0 -744
  52. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +0 -220
  53. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +0 -501
  54. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +0 -73
  55. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +0 -391
  56. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +0 -237
  57. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +0 -210
  58. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +0 -344
  59. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +0 -382
  60. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +0 -144
  61. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +0 -278
  62. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +0 -321
  63. data/ext/apex_ext/apex_src/docs/PROGRESS.md +0 -167
  64. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +0 -174
  65. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +0 -243
  66. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +0 -316
  67. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +0 -803
  68. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +0 -91
  69. data/ext/apex_ext/apex_src/docs/index.md +0 -459
  70. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +0 -351
  71. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +0 -745
  72. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +0 -829
  73. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +0 -1148
  74. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +0 -161
  75. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +0 -184
  76. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +0 -211
  77. data/ext/apex_ext/apex_src/documentation/README.md +0 -160
  78. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +0 -67
  79. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +0 -340
  80. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +0 -11
  81. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +0 -234
  82. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +0 -516
  83. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +0 -461
  84. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +0 -193
  85. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +0 -201
  86. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +0 -678
  87. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +0 -1367
  88. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +0 -371
  89. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +0 -24
  90. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +0 -2211
  91. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +0 -1194
  92. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +0 -1620
  93. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +0 -6024
  94. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +0 -1877
  95. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +0 -1040
  96. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +0 -1402
  97. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +0 -1656
  98. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +0 -1226
  99. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +0 -1148
  100. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +0 -1478
  101. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +0 -1225
  102. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +0 -2327
  103. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +0 -2041
  104. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +0 -1314
  105. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +0 -1868
  106. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +0 -1731
  107. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +0 -2242
  108. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +0 -1533
  109. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +0 -1362
  110. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +0 -1338
  111. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +0 -3188
  112. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +0 -1405
  113. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +0 -1902
  114. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +0 -4222
  115. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +0 -1781
  116. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +0 -1629
  117. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +0 -1394
  118. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +0 -1132
  119. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +0 -1754
  120. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +0 -2562
  121. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  122. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  123. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +0 -22
  124. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  125. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  126. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  127. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  128. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  129. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  130. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  131. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  132. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +0 -914
  133. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +0 -399
  134. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  135. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  136. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +0 -772
  137. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +0 -678
  138. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +0 -873
  139. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +0 -733
  140. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +0 -8746
  141. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +0 -17073
  142. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +0 -64
  143. data/ext/apex_ext/apex_src/documentation/shared_styles.css +0 -651
  144. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +0 -260
  145. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +0 -55
  146. data/ext/apex_ext/apex_src/escaping-repro.md +0 -103
  147. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +0 -119
  148. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +0 -11
  149. data/ext/apex_ext/apex_src/examples/example.html +0 -53
  150. data/ext/apex_ext/apex_src/examples/example.md +0 -85
  151. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +0 -158
  152. data/ext/apex_ext/apex_src/examples/kbd.md +0 -8
  153. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +0 -250
  154. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +0 -9
  155. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +0 -8
  156. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  157. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +0 -547
  158. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  159. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +0 -33
  160. data/ext/apex_ext/apex_src/ial.html +0 -24
  161. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  162. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  163. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  164. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  165. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  166. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  167. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  168. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  169. data/ext/apex_ext/apex_src/man/apex-config.5 +0 -455
  170. data/ext/apex_ext/apex_src/man/apex-config.5.md +0 -262
  171. data/ext/apex_ext/apex_src/man/apex-plugins.7 +0 -541
  172. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +0 -365
  173. data/ext/apex_ext/apex_src/man/apex.1 +0 -583
  174. data/ext/apex_ext/apex_src/man/apex.1.html +0 -703
  175. data/ext/apex_ext/apex_src/man/apex.1.md +0 -803
  176. data/ext/apex_ext/apex_src/man/apex.1.new +0 -338
  177. data/ext/apex_ext/apex_src/objc/Apex.swift +0 -316
  178. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +0 -79
  179. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +0 -207
  180. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +0 -584
  181. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +0 -76
  182. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +0 -169
  183. data/ext/apex_ext/apex_src/output.html +0 -87
  184. data/ext/apex_ext/apex_src/pages/index.md +0 -459
  185. data/ext/apex_ext/apex_src/plans/quarto-mode.md +0 -442
  186. data/ext/apex_ext/apex_src/src/_README.md +0 -413
  187. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +0 -869
  188. data/ext/apex_ext/apex_src/test-linux-build.sh +0 -20
  189. data/ext/apex_ext/apex_src/test.html +0 -103
  190. data/ext/apex_ext/apex_src/test_coverage.sh +0 -121
  191. data/ext/apex_ext/apex_src/test_ial_fenced.md +0 -6
  192. data/ext/apex_ext/apex_src/test_math_norm.py +0 -79
  193. data/ext/apex_ext/apex_src/test_pandoc_output.html +0 -48
  194. data/ext/apex_ext/apex_src/test_spm.sh +0 -107
  195. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +0 -50
  196. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +0 -229
  197. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +0 -25
  198. data/ext/apex_ext/apex_src/tests/README.md +0 -152
  199. data/ext/apex_ext/apex_src/tests/benchmark.sh +0 -113
  200. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +0 -166
  201. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +0 -31
  202. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +0 -25
  203. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +0 -24
  204. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +0 -33
  205. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +0 -26
  206. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +0 -260
  207. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +0 -6
  208. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +0 -7
  209. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +0 -9
  210. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +0 -5
  211. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +0 -5
  212. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +0 -652
  213. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +0 -3
  214. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +0 -11
  215. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +0 -177
  216. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +0 -94
  217. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +0 -3
  218. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +0 -3
  219. data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +0 -1
  220. data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +0 -7
  221. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +0 -74
  222. data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +0 -8
  223. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +0 -10
  224. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +0 -27
  225. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
  226. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +0 -63
  232. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +0 -60
  233. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +0 -27
  234. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +0 -94
  235. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +0 -16
  236. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +0 -4
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +0 -3
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +0 -5
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +0 -5
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +0 -2
  241. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +0 -11
  242. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +0 -8
  243. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +0 -4
  244. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +0 -19
  245. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +0 -11
  246. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +0 -7
  247. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  248. data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +0 -1
  249. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +0 -1094
  250. data/ext/apex_ext/apex_src/tests/fixtures/metadata/mmd-metadata.md +0 -5
  251. data/ext/apex_ext/apex_src/tests/fixtures/metadata/pandoc-meta.md +0 -4
  252. data/ext/apex_ext/apex_src/tests/fixtures/metadata/yaml-frontmatter.md +0 -6
  253. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +0 -11
  254. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +0 -2
  255. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +0 -46
  256. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +0 -96
  257. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +0 -43
  258. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +0 -12
  259. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +0 -53
  260. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +0 -37
  261. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +0 -5
  262. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +0 -47
  263. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +0 -3
  264. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +0 -3
  265. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +0 -8
  266. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +0 -19
  267. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +0 -5
  268. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +0 -7
  269. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +0 -81
  270. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +0 -5
  271. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +0 -47
  272. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +0 -192
  273. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +0 -93
  274. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +0 -37
  275. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +0 -41
  276. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +0 -12
  277. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +0 -15
  278. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +0 -15
  279. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +0 -105
  280. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +0 -143
  281. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +0 -96
  282. data/ext/apex_ext/apex_src/tests/gh_api_test.md +0 -6
  283. data/ext/apex_ext/apex_src/tests/ial_demo.html +0 -186
  284. data/ext/apex_ext/apex_src/tests/include_code.py +0 -19
  285. data/ext/apex_ext/apex_src/tests/include_snippet.md +0 -15
  286. data/ext/apex_ext/apex_src/tests/metadata_cli_test.sh +0 -119
  287. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +0 -64
  288. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +0 -80
  289. data/ext/apex_ext/apex_src/tests/sample_data.csv +0 -7
  290. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +0 -4
  291. data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +0 -29
  292. data/ext/apex_ext/apex_src/tests/test-swift-package.sh +0 -14
  293. data/ext/apex_ext/apex_src/tests/test_basic.c +0 -74
  294. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +0 -301
  295. data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +0 -189
  296. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +0 -4
  297. data/ext/apex_ext/apex_src/tests/test_custom_plugins.c +0 -78
  298. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +0 -82
  299. data/ext/apex_ext/apex_src/tests/test_extensions.c +0 -3337
  300. data/ext/apex_ext/apex_src/tests/test_helpers.c +0 -183
  301. data/ext/apex_ext/apex_src/tests/test_helpers.h +0 -91
  302. data/ext/apex_ext/apex_src/tests/test_ial.c +0 -289
  303. data/ext/apex_ext/apex_src/tests/test_links.c +0 -418
  304. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +0 -290
  305. data/ext/apex_ext/apex_src/tests/test_metadata.c +0 -1147
  306. data/ext/apex_ext/apex_src/tests/test_output.c +0 -2056
  307. data/ext/apex_ext/apex_src/tests/test_plugins.c +0 -219
  308. data/ext/apex_ext/apex_src/tests/test_refs.bib +0 -31
  309. data/ext/apex_ext/apex_src/tests/test_runner.c +0 -268
  310. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +0 -198
  311. data/ext/apex_ext/apex_src/tests/test_tables.c +0 -1298
  312. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +0 -9
  313. data/ext/apex_ext/apex_src/tests/yaml_test.md +0 -13
  314. data/ext/apex_ext/apex_src/tests.rb +0 -39
  315. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +0 -48
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +0 -14
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +0 -43
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +0 -74
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +0 -38
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +0 -206
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +0 -30
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +0 -15
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +0 -16
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +0 -111
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +0 -35
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +0 -1169
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +0 -21
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +0 -16
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +0 -13
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +0 -11
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +0 -14
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +0 -9
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +0 -10
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +0 -32
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +0 -8
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +0 -67
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +0 -36
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +0 -15
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +0 -17
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +0 -14
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +0 -3
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +0 -5
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +0 -5
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +0 -5
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +0 -11
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +0 -15
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +0 -44
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +0 -23
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +0 -13
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +0 -24
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +0 -13
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +0 -18
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +0 -595
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +0 -19
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +0 -33
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +0 -1245
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +0 -1495
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +0 -119
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +0 -92
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +0 -22
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +0 -12
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +0 -91
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +0 -110
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +0 -28
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +0 -10
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +0 -133
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +0 -78
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +0 -1041
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +0 -1
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +0 -230
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +0 -7
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +0 -38
  373. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +0 -76
  374. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +0 -10
  375. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +0 -365
  376. data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +0 -10
  377. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +0 -114
  378. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  379. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  380. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +0 -49
  381. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +0 -58
  382. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +0 -105
  383. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +0 -67
  384. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
  385. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +0 -38
  386. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +0 -989
  387. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +0 -67
  388. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +0 -194
  389. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +0 -160
  390. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +0 -375
  391. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +0 -50
  392. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +0 -4
  393. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +0 -177
  394. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +0 -10212
  395. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +0 -152
  396. data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +0 -17
  397. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +0 -41
  398. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +0 -13
  399. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +0 -32
  400. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +0 -22
  401. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +0 -319
  402. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +0 -80
  403. data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +0 -104
  404. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +0 -6
  405. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +0 -37
  406. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +0 -15
  407. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +0 -208
  408. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +0 -109
  409. data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +0 -160
  410. data/ext/apex_ext/apex_src/vendor/libyaml/Changes +0 -372
  411. data/ext/apex_ext/apex_src/vendor/libyaml/License +0 -20
  412. data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +0 -51
  413. data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +0 -46
  414. data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +0 -89
  415. data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +0 -3
  416. data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +0 -4
  417. data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +0 -73
  418. data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +0 -222
  419. data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +0 -17
  420. data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +0 -26
  421. data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +0 -26
  422. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +0 -29
  423. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +0 -24
  424. data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +0 -10
  425. data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +0 -2
  426. data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +0 -14
  427. data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +0 -1
  428. data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +0 -2
  429. data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +0 -1
  430. data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +0 -7
  431. data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +0 -7
  432. data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +0 -3
  433. data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +0 -17
  434. data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +0 -1999
  435. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +0 -77
  436. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +0 -32
  437. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +0 -1
  438. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +0 -23
  439. data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +0 -1
  440. data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +0 -4
  441. data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +0 -1393
  442. data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +0 -394
  443. data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +0 -2358
  444. data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +0 -544
  445. data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +0 -1416
  446. data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +0 -469
  447. data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +0 -3598
  448. data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +0 -141
  449. data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +0 -684
  450. data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +0 -27
  451. data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +0 -9
  452. data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +0 -63
  453. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +0 -800
  454. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +0 -1127
  455. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +0 -217
  456. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +0 -202
  457. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +0 -29
  458. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +0 -314
  459. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +0 -290
  460. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +0 -327
  461. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +0 -63
  462. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +0 -196
  463. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +0 -88
  464. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +0 -63
  465. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +0 -354
  466. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +0 -29
  467. data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +0 -10
  468. data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +0 -16
  469. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +0 -74
  470. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +0 -22
  471. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  472. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +0 -44
  473. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +0 -128
  474. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +0 -5118
  475. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  476. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  477. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +0 -8
  478. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +0 -99
  479. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +0 -452
  480. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +0 -52
  481. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +0 -55
  482. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +0 -2455
  483. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  484. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +0 -171
  485. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +0 -55
  486. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +0 -220
  487. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +0 -43
  488. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +0 -7
  489. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +0 -76
  490. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +0 -10
@@ -1,3373 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to Apex will be documented in this file.
4
-
5
- ## [1.1.20] - 2026-09-05
6
-
7
- ### Fixed
8
-
9
- - **Metadata file string ownership** keeps paths, titles, themes, and stylesheet values valid after `apex_options_apply_meta_file` returns
10
-
11
- ## [1.1.19] - 2026-09-05
12
-
13
- ### New
14
-
15
- - **Metadata file API** lets embedding hosts load and apply CLI-compatible YAML, Pandoc, or MultiMarkdown metadata files to `apex_options`
16
-
17
- ## [1.1.18] - 2026-09-05
18
-
19
- ### New
20
-
21
- - **Quoted heading overrides** (`{^"term"}` and `[visible]{^"override"}`) so standalone marks and custom index headings work without falling through to superscript
22
- - **Underscore emphasis in TextIndex headings** renders as `<em>` in the index and sorts as plain text
23
- - *** and ** wildcards** expand the preceding heading (stripping emphasis; `**` also lowercases)
24
- - **Prefix wildcards** (`*^` / `*^-`) reuse an earlier matching heading path
25
- - **See and see-also cross-references** (`|target`, `|+target`, hierarchical `parent>"child"`) with see-type marks omitting locators
26
- - **Inbound cross-references** (`@` / `@+`) attach see/see-also refs onto the target entry
27
- - **Aliases** (`#name` after a path, usable in headings and cross-refs) plus **unreferenced aliases** (`##name`) that define without a locator
28
- - **Hierarchical TextIndex paths** (`"Parent">"Child"`) as nested index entries
29
- - **`--concordance FILE`** loads TextIndex concordance TSV files and auto-inserts `[match]{^...}` marks before index processing (enables indices; repeatable)
30
- - **Processing toggles** (`{^-}` / `{^+}`) to leave TextIndex marks literal in selected regions
31
-
32
- ### Improved
33
-
34
- - **Duplicate headings merge into one entry** with multiple locators (TextIndex and mmark)
35
- - **Homebrew installs man pages** (`apex.1`, `apex-config.5`, `apex-plugins.7`) from the release archive
36
-
37
- ### Fixed
38
-
39
- - **`[phrase]{^}` strips square brackets** from visible text while indexing the phrase
40
- - **Bare `word{^}` indexes only the adjacent word**, not a multi-word run of preceding text
41
-
42
- ## [1.1.17] - 2026-09-05
43
-
44
- ### New
45
-
46
- - **Quoted heading overrides** (`{^"term"}` and `[visible]{^"override"}`) so standalone marks and custom index headings work without falling through to superscript
47
- - **Underscore emphasis in TextIndex headings** renders as `<em>` in the index and sorts as plain text
48
- - *** and ** wildcards** expand the preceding heading (stripping emphasis; `**` also lowercases)
49
- - **Prefix wildcards** (`*^` / `*^-`) reuse an earlier matching heading path
50
- - **See and see-also cross-references** (`|target`, `|+target`, hierarchical `parent>"child"`) with see-type marks omitting locators
51
- - **Inbound cross-references** (`@` / `@+`) attach see/see-also refs onto the target entry
52
- - **Aliases** (`#name` after a path, usable in headings and cross-refs) plus **unreferenced aliases** (`##name`) that define without a locator
53
- - **Hierarchical TextIndex paths** (`"Parent">"Child"`) as nested index entries
54
- - **`--concordance FILE`** loads TextIndex concordance TSV files and auto-inserts `[match]{^...}` marks before index processing (enables indices; repeatable)
55
- - **Processing toggles** (`{^-}` / `{^+}`) to leave TextIndex marks literal in selected regions
56
- - **Duplicate headings merge into one entry** with multiple locators (TextIndex and mmark)
57
- - **Homebrew installs man pages** (`apex.1`, `apex-config.5`, `apex-plugins.7`) from the release archive
58
- - **`[phrase]{^}` strips square brackets** from visible text while indexing the phrase
59
- - **Bare `word{^}` indexes only the adjacent word**, not a multi-word run of preceding text
60
-
61
- ### Fixed
62
-
63
- - **Spaced pipes (`| |`) stay blank cells** even when a later row uses consecutive pipes (`|||||`) for colspan
64
- - **Colspan only from consecutive pipes** (`||` / `|||`) or bare `<<`, not from whitespace-only cells
65
- - **Indent/blank columns keep alignment** when a full-width colspan row follows (Hazel-style tables)
66
-
67
- ## [1.1.16] - 2026-08-14
68
-
69
- ## [1.1.15] - 2026-08-07
70
-
71
- ### Fixed
72
-
73
- - **Link IAL attributes** (e.g. {.js-lightbox}) are preserved when a raw HTML <a> appears earlier in the document.
74
-
75
- ## [1.1.14] - 2026-08-07
76
-
77
- ### Fixed
78
-
79
- - **Link IAL attributes** (e.g. `{.js-lightbox}`) are preserved when a raw HTML `<a>` appears earlier in the document.
80
- - **RTF remote images** show a hyperlinked alt label (or "image" when alt is empty) instead of dumping raw URLs.
81
- - **-t rtf** writes Rich Text Format from the CLI (also `-o file.rtf`).
82
- - **APEX_OUTPUT_RTF** / **apex_cmark_to_rtf()** return RTF from the C API.
83
- - **RTF writer** covers headings, emphasis, links, lists (including tasks), code, quotes, tables, images, footnotes, definition lists, strike/sup/sub, and best-effort callouts/HTML.
84
- - **ObjC/Swift apexRTF** and **apexAttributedString** (RTF preferred, HTML fallback) for AppKit/UIKit.
85
- - Additional docset pages
86
- - **RTF local images** embed as PNG/JPEG picts by default without needing --embed-images.
87
- - **Link IAL attributes** (e.g. {.js-lightbox}) are preserved when a raw HTML <a> appears earlier in the document.
88
-
89
- ## [1.1.13] - 2026-08-03
90
-
91
- ### Changed
92
-
93
- - **RTF remote images** show a hyperlinked alt label (or "image" when alt is empty) instead of dumping raw URLs.
94
- - **-t rtf** writes Rich Text Format from the CLI (also `-o file.rtf`).
95
- - **APEX_OUTPUT_RTF** / **apex_cmark_to_rtf()** return RTF from the C API.
96
- - **RTF writer** covers headings, emphasis, links, lists (including tasks), code, quotes, tables, images, footnotes, definition lists, strike/sup/sub, and best-effort callouts/HTML.
97
- - **ObjC/Swift apexRTF** and **apexAttributedString** (RTF preferred, HTML fallback) for AppKit/UIKit.
98
- - Additional docset pages
99
- - **RTF local images** embed as PNG/JPEG picts by default without needing --embed-images.
100
-
101
- ### New
102
-
103
- - **Node npm binding design** documenting @apexmarkdown/apex native distribution, camelCase options, and v1 platform scope.
104
- - **Node npm implementation plan** covering CMake binding, complete options mapping, and platform prebuilds.
105
- - **Autolinking** scales linearly on large documents instead of slowing quadratically.
106
-
107
- ## [1.1.12] - 2026-07-19
108
-
109
- ### New
110
-
111
- - **Bear image attributes** Apply safe JSON metadata while preserving its comment.
112
- - **Reference metadata** Apply attributes to every matching image.
113
- - **Per-image reference attributes** Override shared metadata on one image.
114
-
115
- ### Fixed
116
-
117
- - **Bear image metadata parser** releases prior results when an output struct is reused, so early parse failures no longer leak or retain stale attributes
118
- - **Bear image attributes** no longer apply in Kramdown, which only enters the image preprocessor for URL encoding.
119
- - **Reference metadata** only applies when the Bear comment directly follows the definition URL, title, or attributes.
120
- - **Definition comments** keep their original line ending so following blocks are not glued to the comment.
121
- - **Bear titles** override quoted definition titles instead of being shadowed.
122
-
123
- ## [1.1.11] - 2026-07-14
124
-
125
- ### Improved
126
-
127
- - Undelimited MMD metadata keys may only contain letters, digits, spaces, hyphens, and underscores; punctuation in the key rejects the line as ordinary text
128
- - A single candidate metadata line longer than 100 characters is treated as prose rather than a lone MMD key/value pair
129
-
130
- ### Fixed
131
-
132
- - Undelimited MultiMarkdown metadata is only recognized at the very start of a file; a leading blank line or any content before the first key/value pair (including headings) disables it
133
- - Prose paragraphs with a colon after an H1 are no longer mistaken for MMD metadata and stripped from the output
134
-
135
- ## [1.1.9] - 2026-07-14
136
-
137
- ### Fixed
138
-
139
- - Undelimited MultiMarkdown metadata is only recognized at the very start of a file; a leading blank line or any content before the first key/value pair (including headings) disables it
140
- - Prose paragraphs with a colon after an H1 are no longer mistaken for MMD metadata and stripped from the output
141
-
142
- ### Improved
143
-
144
- - Undelimited MMD metadata keys may only contain letters, digits, spaces, hyphens, and underscores; punctuation in the key rejects the line as ordinary text
145
- - A single candidate metadata line longer than 100 characters is treated as prose rather than a lone MMD key/value pair
146
-
147
- ## [1.1.5] - 2026-07-06
148
-
149
- ### Fixed
150
-
151
- - Buffered definition-list term text before a fenced code block is no longer discarded when the preprocessor closes the list for the fence
152
- - Images and reference link definitions immediately after a blockquote line without a blank line are no longer swallowed into the blockquote by CommonMark lazy continuation
153
- - Reference-style images like ![][id] following a blockquote render outside the blockquote with the reference resolved correctly
154
-
155
- ## [1.1.4] - 2026-06-25
156
-
157
- ### Changed
158
-
159
- - Homebrew formula bumped to 1.1.3
160
-
161
- ### New
162
-
163
- - --paginate-symbols renders images as chafa ANSI art compatible with less -R when paging terminal output
164
- - --no-paginate disables terminal pagination, overriding -p/--paginate and paginate settings from config or metadata
165
- - Paginate: symbols metadata enables pager-friendly terminal images (chafa -f symbols) alongside normal pagination
166
- - APEX_DEBUG_TERMINAL environment variable logs terminal image viewer selection, exec commands, and syntax highlighter invocations to stderr
167
-
168
- ### Improved
169
-
170
- - Terminal image tools use terminal-aware chafa formats (iterm, kitty, symbols) with 256- or 16-color levels matching terminal256 vs terminal
171
- - --width wrapping preserves OSC, DCS, and Kitty graphics escape sequences instead of breaking inline image output
172
-
173
- ### Fixed
174
-
175
- - Imgcat is only used in iTerm2 so inline images no longer appear as raw binary garbage in Cursor and other non-iTerm terminals
176
- - Apex automatically skips the pager when inline terminal graphics are present, since less -R and most pagers only support ANSI color
177
-
178
- ## [1.1.3] - 2026-06-24
179
-
180
- ### Changed
181
-
182
- - Quarto mode enables callouts and image captions, disables wiki links, marked extensions, py callouts, and index generation
183
-
184
- ### New
185
-
186
- - Add APEX_MODE_QUARTO and --mode quarto / mode: quarto metadata for Quarto-compatible processing with unified-family defaults
187
- - Add apex_mode_is_unified_family() and apex_mode_is_kramdown_or_unified_family() helpers to share unified/quarto code paths
188
- - Add enable_quarto_extensions flag for future Pandoc/Quarto preprocessors
189
- - Images with {fig-alt="..."} use markdown alt text as figure caption and fig-alt as accessible img alt attribute
190
- - Add .smallcaps, .underline, and span.mark CSS in quarto standalone output
191
- - Add quarto mode test suite and smoke fixtures (callouts, spans, fig-alt, fenced divs)
192
- - Quarto mode preprocesses Pandoc/Quarto raw content: fenced ```{=html} blocks and inline `content`{=html} passthrough HTML when unsafe is enabled; non-html formats are wrapped in <!-- raw format=... --> comments
193
- - Add raw content examples to quarto smoke fixture and quarto mode test suite
194
- - Quarto mode supports Pandoc list continuation markers: standalone (@) lines are stripped and split ordered lists merge when only blank lines interrupt them; interrupted lists keep intervening content and continue numbering with start attribute
195
- - Quarto mode supports roman list markers (i), ii), I), etc.) with lower-roman and upper-roman list-style-type in HTML output
196
- - Quarto mode converts Pandoc line blocks (lines starting with |) to div.line-block with preserved spacing
197
- - Add list extension tests and smoke fixture examples for (@), roman lists, and line blocks
198
- - Quarto mode supports labeled example list markers such as (@good) with labels stripped from output
199
- - Quarto mode preprocesses Pandoc/Quarto fenced code block attributes ({.python filename="run.py" linenos=true}): normalizes to plain language fences and preserves filename, linenos, and other keys as data-* attributes on the rendered pre element
200
- - Per-block linenos=true on fenced code blocks enables line numbers during external syntax highlighting even when global --code-line-numbers is off
201
- - Add code fence attribute tests and smoke fixture example
202
- - Quarto mode preprocesses {mermaid}, {dot}, and {graphviz} fenced blocks into raw pre elements with matching diagram classes (requires unsafe)
203
- - Standalone Quarto output auto-injects mermaid.js when mermaid diagrams are present and no mermaid script is already configured
204
- - Add quarto-diagrams metadata key, diagram tests, and smoke fixture examples
205
- - Quarto mode converts {{< pagebreak >}} shortcodes to page breaks in HTML output (raw HTML when unsafe, Leanpub marker otherwise)
206
- - Quarto mode converts {{< kbd ... >}} and {{% kbd ... %}} shortcodes to {% kbd %} liquid tags for use with the kbd plugin
207
- - Quarto mode converts {{< include path >}} shortcodes to <<[path]> Marked file include syntax
208
- - Add enable_quarto_shortcodes option (enabled by default in --mode quarto) and quarto-shortcodes metadata key to toggle the shortcode preprocessor
209
- - Unknown Quarto shortcodes are left unchanged; set APEX_VERBOSE=1 to log warnings for unrecognized shortcode names
210
- - Wrap Quarto cross-ref tokens (@fig-id, @sec-id, @tbl-id, @eq-id) in span.quarto-xref in HTML output
211
- - Add per-feature Quarto metadata toggles (quarto-raw, quarto-list-continuation, quarto-line-blocks, quarto-roman-lists, quarto-code-attrs, quarto-strict-lists, quarto-xrefs, quarto-extensions)
212
- - Add optional quarto-strict-lists preprocessor for Pandoc strict blank-line-before-list behavior
213
- - Add .hidden and .quarto-xref rules to standalone default CSS
214
- - Split Quarto test fixtures by topic and add wiki Quarto-Mode documentation
215
-
216
- ### Improved
217
-
218
- - CLI --mode quarto restores quarto extension flags after global/project config metadata merge
219
-
220
- ### Fixed
221
-
222
- - Bracketed span IAL class attributes now emit valid HTML (class="..." instead of class="...")
223
- - Quarto mode treats (@) and (@label) as Pandoc example_lists list markers (line-start markers with item text), not as standalone list-continuation lines between numbered items
224
- - Example lists interrupted by paragraphs continue document-wide numbering with ol start on resumed lists
225
- - When quarto-xrefs is enabled, bare @fig-/@sec-/@tbl-/@eq- tokens are no longer parsed as author-in-text citations (bracketed [@key] citations unchanged)
226
-
227
- ## [1.1.2] - 2026-06-23
228
-
229
- ### New
230
-
231
- - Public C API (apex/plugins.h) to fetch the plugin directory, list installed plugins, and install or uninstall plugins programmatically.
232
- - ApexPluginManager Swift API and ApexPluginCatalog Objective-C wrappers for building plugin picker UIs in Xcode apps.
233
- - EnablePlugins option in ApexOptions and the NSString options dictionary to turn on external plugin processing during conversion.
234
-
235
- ## [1.1.1] - 2026-06-21
236
-
237
- ### Changed
238
-
239
- - Version bumped to 1.1.0.
240
-
241
- ### New
242
-
243
- - Pandoc grid table syntax via --grid-tables / --enable-grid-tables (opt-in; converts +---+ grids to tables before parsing).
244
- - Enable_grid_tables API option (default off; requires enable_tables).
245
- - --no-grid-tables explicitly disables Pandoc grid table preprocessing (grid tables remain off by default in unified mode).
246
- - Grid-tables / grid_tables metadata key enables or disables Pandoc grid tables per document.
247
-
248
- ### Improved
249
-
250
- - Grid tables support colspan rows, nested grids inside cells, multiline list content in cells, and HTML output for tables with partial in-cell separators.
251
- - Embedded nested grids inside grid table cells convert to HTML tables so they display inside markdown="1" cells (pipe tables are not parsed there).
252
- - Headerless single-row grid tables emit a valid pipe-table header row instead of a lone delimiter line.
253
-
254
- ### Fixed
255
-
256
- - Reference-style links in markdown="1" HTML blocks (callouts, blockquotes, divs, etc.) now resolve definitions from the full document instead of rendering as literal text.
257
- - Reference footnotes [^id] in markdown="1" blocks now resolve definitions from the full document and render footnote refs and a footnotes section inside the block.
258
- - Markdown="1" blocks with footnotes no longer render as empty elements when parsed HTML exceeds the initial output buffer.
259
- - Grid tables no longer treat every row with fewer pipe cells than columns as a full-row colspan (e.g. Property | Earth headers now render as separate cells with correct colspan, not one merged cell).
260
- - Colspan rows with nested grids no longer leak raw pipe or grid syntax as paragraphs after the table; nested grids inside colspan cells render as HTML tables.
261
- - Grid tables with in-row partial separators (+---+ inside a row) now parse Pandoc-style layouts with rowspan/colspan (e.g. Temperature / 1961-1990 spanning rows with min/mean/min data).
262
- - Multiline grid table cells (lists, multiple lines) now render markdown correctly via HTML cells instead of literal text with <br> tags.
263
- - Lines starting with "+" alone (e.g. list items) are no longer mistaken for grid tables; only "+---" / "+===" border rows start a grid block.
264
- - Invalid or unconvertible grid blocks now preserve the original source lines instead of silently dropping content.
265
-
266
- ## [1.0.15] - 2026-06-11
267
-
268
- ### Fixed
269
-
270
- - Reference-style links in markdown="1" HTML blocks (callouts, blockquotes, divs, etc.) now resolve link definitions from the full document instead of rendering as literal text.
271
-
272
- ## [1.0.14] - 2026-06-09
273
-
274
- ### Fixed
275
-
276
- - Special markers (<!--BREAK-->, <!--PAUSE:N-->, {::pagebreak /}, {index}, and ^ end-of-block) are no longer converted inside fenced code blocks, indented code blocks, or inline code spans.
277
- - Backslash-escaped MultiMarkdown TOC markers like \{\{TOC\}\} are no longer expanded into a table of contents after markdown strips the escape backslashes.
278
- - Kramdown {:toc} markers inside fenced or indented code blocks are no longer converted to <!--TOC--> during IAL preprocessing.
279
-
280
- ## [1.0.13] - 2026-05-06
281
-
282
- ### New
283
-
284
- - Add --py-callouts and --quarto-callouts CLI toggles to enable Python/markdown-callouts and Quarto callout parsing only when explicitly requested.
285
- - Support Python callouts in both !!! type "Title" blocks and NOTE: label style, including collapsed >? NOTE: syntax when --py-callouts is enabled.
286
- - Support Quarto callout fences (::: {.callout-*}) as callouts behind --quarto-callouts.
287
-
288
- ### Improved
289
-
290
- - Fenced code examples with pipelines now render as code without unexpected table artifacts in highlighted HTML and markdown output.
291
- - Preserve normal fenced div behavior for non-callout ::: blocks while Quarto callouts are enabled.
292
- - Add dedicated fixtures and expanded tests for Obsidian, Python, and Quarto callout formats to prevent regressions.
293
-
294
- ### Fixed
295
-
296
- - Relaxed table processing no longer injects ---|---|---| separator rows inside fenced code blocks that contain pipe-heavy shell commands.
297
- - Remove leading empty paragraph artifacts from converted Quarto callout content blocks.
298
-
299
- ## [1.0.12] - 2026-04-20
300
-
301
- ### Improved
302
-
303
- - Pre-parse plugin transforms now apply to the final selected include content (including section/address-filtered text) instead of rewriting source files before section matching.
304
-
305
- ### Fixed
306
-
307
- - Section-targeted transclusions now extract the requested section before pre-parse plugins run, so ![[file#Section]] and other include syntaxes return the correct section content.
308
-
309
- ## [1.0.11] - 2026-04-20
310
-
311
- ### Changed
312
-
313
- - Homebrew installs now point to Apex 1.0.10 with the updated macOS release artifact checksum.
314
-
315
- ### Improved
316
-
317
- - Included file content now runs through pre-parse plugins before section slicing, address extraction, and nested include processing so plugin transformations apply consistently to transclusions.
318
-
319
- ### Fixed
320
-
321
- - Section-targeted includes now fall back to including the full source document when the requested section heading does not exist.
322
- - Obsidian ![[file#section]] and MultiMarkdown {{file#section}} now behave consistently when section names are missing or mistyped.
323
-
324
- ## [1.0.10] - 2026-04-20
325
-
326
- ### Changed
327
-
328
- - Homebrew installs now point to Apex 1.0.9 with the updated macOS release artifact checksum.
329
-
330
- ### New
331
-
332
- - Supports Obsidian embed transclusion syntax ![[file]] and ![[file#Section]] with section extraction.
333
- - Section-targeted includes now work consistently across Marked, MultiMarkdown, and iA Writer include syntaxes.
334
-
335
- ### Fixed
336
-
337
- - Obsidian embeds now respect --wikilink-extension for extensionless targets and fall back to .md when the configured extension file does not exist.
338
- - Wiki link parsing no longer rewrites ![[...]] embeds into !<a ...> output.
339
-
340
- ## [1.0.9] - 2026-04-19
341
-
342
- ### Changed
343
-
344
- - Homebrew installs now point to Apex 1.0.8 with the updated macOS release artifact checksum.
345
-
346
- ### Fixed
347
-
348
- - Picture generation now preserves image attributes like loading, width, and height on fallback img tags when using avif/webp with retina variants.
349
-
350
- ## [1.0.8] - 2026-04-19
351
-
352
- ### Changed
353
-
354
- - Homebrew users now install Apex v1.0.7 from the release tarball.
355
-
356
- ### Fixed
357
-
358
- - Autolinking no longer rewrites image density filenames like text-basic@2x.jpg into mailto links.
359
- - Autolinking now ignores content inside HTML tags and attributes such as href and srcset values.
360
-
361
- ## [1.0.7] - 2026-04-15
362
-
363
- ### New
364
-
365
- - Tests for CommonMark !\[ (non-image), false ![ blog case, U+2033 vs ASCII quotes, real images, and glued ** after punctuation (see tests/test_escaping_repro.c).
366
-
367
- ### Fixed
368
-
369
- - Prevented autolink preprocessing from rewriting text inside markdown link labels, which fixes broken rendering for links like [email](mailto:user@example.com?subject=...&body=...).
370
-
371
- ## [1.0.6] - 2026-04-02
372
-
373
- ### Changed
374
-
375
- - Update Homebrew formula to Apex 1.0.5 and refresh the macOS release checksum.
376
-
377
- ### Fixed
378
-
379
- - Keep synthetic nested ordered sublists tight in unified mode so first-level list items do not get unwanted paragraph wrappers.
380
- - Preserve intentionally loose list rendering when users add explicit blank lines before nested ordered sublists.
381
- - Prevent <<[file] includes from consuming following [ref]: and [^id]: lines as include address specs.
382
- - Stop definition lines after included CSV tables from being misread as table captions.
383
-
384
- ## [1.0.5] - 2026-04-01
385
-
386
- ### Changed
387
-
388
- - Update Homebrew formula to Apex 1.0.4 and refresh the macOS release checksum.
389
-
390
- ### Improved
391
-
392
- - Strengthen public module exports so Swift and ObjC module consumers can resolve markdown and man serializer APIs consistently across build environments.
393
- - Fix compiler warnings
394
- - Tighten [Caption] detection so caption parsing only triggers when the paragraph contains standalone caption content.
395
- - Restrict backward caption lookup to the nearest valid caption context so distant captions cannot be reused.
396
- - Normalize TOC nesting relative to the selected minimum heading level so depth filtering produces stable structure.
397
- - Normalize TOC labels by trimming and collapsing whitespace so generated links stay clean.
398
-
399
- ### Fixed
400
-
401
- - Render indented numeric sublists as nested ordered lists in unified mode instead of flattening them into parent list item text.
402
- - Correct alpha lists with nested sublists so continuation items render as proper list items instead of plain text.
403
- - Remove leaked [apex-alpha-list:lower] markers from rendered HTML when alpha lists contain nested sublists.
404
- - Prevent "$40" and similar currency amounts from being parsed as inline math delimiters.
405
- - Restore Swift package and release-check builds that failed after merge due to missing markdown/man serializer type and function declarations.
406
- - Render {{TOC}} markers in MultiMarkdown mode so table of contents placeholders are expanded instead of being left as literal text.
407
- - Prevent footnote definitions like [^1]: ... from being treated as table captions.
408
- - Prevent footnote and link definition lines like [ref]: ... from being treated as table captions.
409
- - Stop inclusion-table captions from leaking onto other nearby tables that do not define their own caption.
410
- - Make {{TOC:2}} render matching headings instead of an empty TOC.
411
- - Keep same-level headings as siblings in range TOCs like {{TOC:2-6}}.
412
- - Remove extra indentation whitespace that appeared inside TOC link text in pretty HTML output.
413
-
414
- ## [1.0.4] - 2026-03-31
415
-
416
- ### Fixed
417
-
418
- - Prevent heading ID generation crashes on very large headings by making heading text extraction buffer growth handle required size safely.
419
-
420
- ## [1.0.3] - 2026-03-29
421
-
422
- ## [1.0.2] - 2026-03-29
423
-
424
- ## [1.0.1] - 2026-03-29
425
-
426
- ## [0.1.104] - 2026-03-29
427
-
428
- ### Fixed
429
-
430
- - After merging global/project/document/`--meta` metadata, the CLI now re-applies every option that was set on the command line so config and YAML metadata cannot override explicit flags (including `--mode`, `-t`/`--to`, feature toggles, `--standalone`, `--style`/`--css`, bibliography/CSL, and the rest of the documented CLI surface).
431
- - Track argv-set fields with apex_cli_option_mask, snapshot options after wiring bibliography/stylesheet, and re-apply after apex_apply_metadata_to_options so global/project/document metadata cannot override explicit flags.
432
-
433
- ## [0.1.103] - 2026-03-29
434
-
435
- ### New
436
-
437
- - `i/--info` prints version, merged config (global, project, --meta-file, --meta),
438
- - `--extract-meta` and `-e KEY` merge per-file document metadata in order (mode-aware)
439
- - Add metadata_yaml_emit unit tests and man page entries.
440
- - CLI `-s`/`--standalone` (and `--style`/`--css`, which imply standalone) now wins over `standalone: false` from document or config metadata, so explicit standalone output is not downgraded to an HTML fragment.
441
-
442
- ### Fixed
443
-
444
- - Track explicit -s/--standalone and --style/--css and re-apply standalone after apex_apply_metadata_to_options so document or config YAML cannot force a fragment when the user asked for a full document.
445
-
446
- ## [0.1.102] - 2026-03-22
447
-
448
- ### Changed
449
-
450
- - Use `--to xhtml`/`-t strict-xhtml` for semantic reasons, original `--[strict-]xhtml` flags left in place
451
-
452
- ## [0.1.100] - 2026-03-22
453
-
454
- ### Changed
455
-
456
- - Homebrew formula bumped to 0.1.97.
457
- - Bump Homebrew formula to v0.1.98 with updated release tarball SHA256.
458
-
459
- ### New
460
-
461
- - Display inline images in terminal output using imgcat, chafa, viu, or catimg
462
- - `--[no-]terminal-images`, `--terminal-image-width
463
- - Remote images are downloaded to temp directory for terminal display (requires curl)
464
- - Rough tests for image output
465
-
466
- ### Improved
467
-
468
- - SwiftPM now exports the raw C API via the `ApexC` product.
469
-
470
- ### Fixed
471
-
472
- - Avoid Swift module-name collisions so `apex_*` symbols are visible from Swift.
473
- - Include new module map
474
-
475
- ## [0.1.98] - 2026-03-19
476
-
477
- ### Changed
478
-
479
- - Homebrew formula bumped to 0.1.97.
480
-
481
- ### Improved
482
-
483
- - SwiftPM now exports the raw C API via the `ApexC` product.
484
-
485
- ### Fixed
486
-
487
- - Avoid Swift module-name collisions so `apex_*` symbols are visible from Swift.
488
-
489
- ## [0.1.97] - 2026-03-19
490
-
491
- ### Changed
492
-
493
- - Metadata extraction is now mode-aware so Combined/Unified and Kramdown keep YAML-first interpretation of delimiter blocks, while MMD uses MMD-compatible precedence.
494
-
495
- ### New
496
-
497
- - CSV and TSV includes now support custom separators via {delimiter=X} and single-character shorthand {X} while keeping comma/tab defaults when no override is provided.
498
- - This release adds delimiter support as discussed in [#13](https://github.com/ApexMarkdown/apex/issues/13)
499
-
500
- ### Improved
501
-
502
- - Metadata-to-meta conversion now works consistently in MultiMarkdown, Unified (combined), and Kramdown modes.
503
- - In --mode mmd, delimiter-style metadata is parsed using MultiMarkdown rules while still falling back to YAML parsing for true YAML front matter.
504
- - Include parsing now recognizes explicit delimiter overrides consistently across iA Writer, Marked, and MultiMarkdown include styles for CSV/TSV table conversion.
505
-
506
- ### Fixed
507
-
508
- - Standalone HTML now emits generic metadata headers as <meta name="..."> tags instead of dropping them.
509
- - Generated meta tags preserve declared metadata order and safely escape attribute content.
510
- - MultiMarkdown mode now accepts delimited metadata blocks with dash or dot closers (for example "----" ... "......") without leaking the delimiter into HTML output.
511
- - Marked include syntax now supports embedded delimiter overrides inside the include token (for example <<[data.csv{;}] and <<[data.csv{delimiter=;}] ) to avoid conflicts with bracket-plus-brace parsing patterns.
512
- - MultiMarkdown transclusions now accept embedded delimiter overrides (for example {{data.csv{;}}} and {{data.csv{delimiter=;}}}) and no longer fail when braces appear inside the transclusion path.
513
- - This release resolves [#17](https://github.com/ApexMarkdown/apex/issues/17)
514
-
515
- ## [0.1.96] - 2026-03-19
516
-
517
- ### Improved
518
-
519
- - Swift plugin integrations can now fetch default low-level options through NSString.defaultApexOptions() and mutate apex_options fields directly.
520
-
521
- ### Fixed
522
-
523
- - Swift-side module visibility for C interop is improved by exporting ApexC from the Apex Swift module.
524
-
525
- ## [0.1.95] - 2026-03-16
526
-
527
- ### Improved
528
-
529
- - Added all_checks target that runs C tests and Swift package builds together for one-command verification before publishing
530
- - Cleanup: quieter tests by fixing logical-op and unused-variable warnings in table test suite
531
-
532
- ### Fixed
533
-
534
- - Swift package now compiles cleanly in debug and release as part of all_checks, catching Swift-side breakage before release
535
- - Man-page renderer builds without enum or options-type warnings in both CMake CLI and Swift package builds
536
-
537
- ## [0.1.94] - 2026-03-07
538
-
539
- ### Fixed
540
-
541
- - CMake/C99 build: add missing stdlib.h so malloc, free, realloc, getenv, and strtol are declared (fixes build on strict compilers)
542
- - Bracketed spans like [-]{.taskmarker} no longer trigger list parsing; markdown="span" is only emitted when the span content contains inline markdown syntax (emphasis, links, code, etc.)
543
-
544
- ## [0.1.93] - 2026-03-05
545
-
546
- ### New
547
-
548
- - Tests that one-line definition list syntax (term::definition) is not converted inside inline code spans, fenced code blocks, indented code blocks, and multi-line inline code
549
- - Tests that emoji (:name:) patterns are not converted inside inline code spans, fenced code blocks, and indented code blocks
550
-
551
- ### Improved
552
-
553
- - HTML emoji replacement skips content inside <code> and <pre> elements so code examples display :emoji: patterns as written
554
-
555
- ### Fixed
556
-
557
- - Definition list one-line term::definition no longer converts inside inline code spans (backticks), preserving literal syntax in code examples
558
- - Definition list processing now skips indented code blocks (4+ spaces or tab), not just fenced blocks
559
- - Kramdown-style : definition lines inside multi-line inline code spans are no longer incorrectly parsed as definition list items
560
- - Emoji replacement (:name:) is now skipped inside fenced code blocks, indented code blocks, and inline code spans so patterns remain literal
561
- - Emoji autocorrect no longer modifies :emoji: patterns inside any code context
562
-
563
- ## [0.1.92] - 2026-03-05
564
-
565
- ### Changed
566
-
567
- - Update apex_options cmark_init/cmark_done callback signatures to add a user_data parameter, requiring existing C/Obj-C callback implementations to add a fourth void* argument when upgrading
568
-
569
- ### Improved
570
-
571
- - Ensure custom cmark-gfm init/done callbacks configured via apex_options work consistently so extension-based integrations remain stable across builds
572
- - Better integration of Apex as library
573
-
574
- ### Fixed
575
-
576
- - Fix cmark_done callback invocation to match the 3-argument apex_options callback signature so builds succeed again
577
- - Update test cmark callback helper signatures and option fields to use the current cmark_init/cmark_done API and keep the test runner passing
578
- - Fix cmark_done callback invocation to match the 4-argument apex_options callback signature including user_data so builds succeed again
579
- - Add new tests and fix missing includes
580
-
581
- ## [0.1.91] - 2026-03-04
582
-
583
- ### New
584
-
585
- - Add test fixtures for percent decoding
586
-
587
- ### Improved
588
-
589
- - Apex_extract_heading_text now recurses into inline containers (EMPH, STRONG, LINK) and includes HTML_INLINE literal content so extracted text matches rendered HTML for reliable (level, text) matching during ID injection
590
-
591
- ### Fixed
592
-
593
- - Headings with inline emphasis (e.g. "### *Processing* modes") now receive IDs correctly instead of being skipped
594
- - Headings with ampersands (e.g. "## Documentation & resources") now receive IDs correctly by extracting text from HTML_INLINE nodes
595
-
596
- ## [0.1.90] - 2026-03-04
597
-
598
- ### New
599
-
600
- - Apex_options.cmark_init callback: register custom cmark-gfm syntax extensions before parsing; call cmark_parser_attach_syntax_extension() in your callback (include cmark-gfm.h and cmark-gfm-extension_api.h when implementing) Resolves [#10](https://github.com/ApexMarkdown/apex/issues/10)
601
- - Apex_version_string() exposed in ObjC/Swift via [NSString apexVersion] and Apex.version
602
-
603
- ### Improved
604
-
605
- - CSV/TSV inline tables (```table fences, <!--TABLE-->, includes) now accept Markdown-style alignment specs in the second row. Cells containing only colons and dashes (e.g. :--, --:, :--:) are parsed by colon position: leading = left, trailing = right, both = center, neither = auto. Keywords (left, right, center, auto) continue to work unchanged. Resolves [#14](https://github.com/ApexMarkdown/apex/issues/14)
606
-
607
- ### Fixed
608
-
609
- - Include paths now support percent encoding (e.g. <<[with%20space.txt], {{file%20name}}, /path%20to%2Ffile) so paths with spaces and special characters resolve correctly to files on disk. Resolves [#12](https://github.com/ApexMarkdown/apex/issues/12)
610
-
611
- ## [0.1.89] - 2026-03-04
612
-
613
- ### Improved
614
-
615
- - CSV/TSV inline tables: alignment row may use Markdown-style syntax (`:--`, `--:`, `:--:`) in addition to keywords (left, right, center, auto). Cells containing only colons and dashes are parsed by colon position: leading colon = left, trailing = right, both = center, neither = auto.
616
-
617
- ### Changed
618
-
619
- - Definition lists rewritten as preprocessing (no cmark extension): supports Kramdown "term" + ": definition" or ":: definition", plus one-line "term::definition" and "term :: definition" using last :: to avoid splitting URLs
620
- - CLI flags --one-line-definitions and --no-one-line-definitions to enable or disable definition list processing
621
- - Metadata keys one-line-definitions and one_line_definitions for front-matter control of definition lists
622
- - Table caption ": Caption" no longer misparses Kramdown definition lines (e.g. "Term\n\n: definition 1") by requiring prev_line_was_table_row or in_table_section instead of prev_line_was_blank alone
623
- - Table captions before tables: ": Caption" now recognized when the next non-blank line is a table row
624
- - Table caption paragraphs removed from output so captions appear only in figcaption, not duplicated as standalone paragraphs
625
-
626
- ## [0.1.88] - 2026-03-02
627
-
628
- ### Changed
629
-
630
- - Formula/apex.rb: version 0.1.87, update macOS universal tarball sha256
631
-
632
- ### Improved
633
-
634
- - Definition lists: support indented continuation lines (4+ spaces) so multi-line definitions stay within a single dd element instead of splitting into separate paragraphs
635
-
636
- ### Fixed
637
-
638
- - Disable smart typography for man and man-html output so option names like --to and --standalone render as literal double hyphen instead of en-dash
639
- - Prevent metadata from overwriting -t man-html when document sets mode or other options in front matter
640
- - Force disable smart typography for man and man-html output in apex_markdown_to_html so option names stay as literal --
641
- - Man-html: Replace UTF-8 en-dash (U+2013) with "--" in rendered text and definition list HTML blocks so options like --standalone display correctly even when smart typography slips through
642
-
643
- ## [0.1.87] - 2026-03-02
644
-
645
- ### Changed
646
-
647
- - Formula/apex.rb: version 0.1.86, update macOS universal tarball sha256
648
-
649
- ### Fixed
650
-
651
- - Linux release build: add missing limits.h include for INT_MAX in apex_cli_terminal_width
652
-
653
- ## [0.1.86] - 2026-03-02
654
-
655
- ### Changed
656
-
657
- - Syntax highlighter chooses HTML or ANSI output based on destination format (--format html vs --format ansi for Shiki when output is terminal).
658
- - Apex_apply_syntax_highlighting() now takes a fifth parameter ansi_output (bool); pass false for HTML output, true for terminal/ANSI. All internal call sites updated; direct callers (e.g. Swift/SPM) must be updated.
659
- - Pygments highlighting now respects code-highlight-theme for both HTML and terminal/terminal256 output (maps to style=THEME).
660
- - Skylighting highlighting now respects code-highlight-theme for both HTML and ANSI terminal output (maps to --style THEME) and chooses --color-level=16/256 based on terminal vs terminal256.
661
- - Shiki highlighting now uses --theme THEME for both HTML and ANSI output and chooses --format html/ansi based on destination format.
662
-
663
- ### New
664
-
665
- - Support --code-highlight shiki (and abbreviation sh) on the command line; uses the shiki CLI (@shikijs/cli) when available.
666
- - Support code-highlight: shiki and code-highlight: sh in metadata and config (front matter, meta-file, config.yml).
667
- - Add --list-themes CLI command to print available Pygments and Skylighting themes in columns and point to bundled Shiki themes.
668
- - Add -p/--paginate flag to page terminal/cli/terminal256 output through a user-configurable pager instead of writing directly to stdout.
669
- - Add paginate: true config option (and terminal.paginate) to enable pagination by default for terminal-style output while still allowing per-run overrides.
670
-
671
- ### Improved
672
-
673
- - When Shiki exits with an error (e.g. language not specified and cannot be auto-detected), the code block is left as plain text instead of failing.
674
-
675
- ### Fixed
676
-
677
- - Prevent segfault when external code highlighting is enabled without an explicit theme by initializing the code highlight theme option safely in the default configuration.
678
-
679
- ## [0.1.85] - 2026-03-01
680
-
681
- ### Changed
682
-
683
- - Makefile "make man" now generates man pages with the built apex binary (apex -t man) after running "make build"; pandoc and go-md2man are no longer required.
684
- - When both a TOC marker in code and a TOC marker in normal flow exist, only the first marker that is not inside <code> or <pre> is replaced with the generated table of contents.
685
-
686
- ### New
687
-
688
- - Definition list terms may use Kramdown-style double colon :: as well as single : before the definition (e.g. "term:: definition").
689
- - Man page creation
690
- - Man-html without -s/--standalone outputs content snippet only (no wrapper, no nav); with -s outputs full document with sidebar and headline.
691
- - Man-html standalone: fixed left sidebar nav (TOC) for top-level sections only (NAME, SYNOPSIS, etc.), large headline from NAME section (command and description), document_title metadata used when present (e.g. APEX(1)).
692
- - Man-html standalone: custom CSS via --css/--style emitted as <link rel="stylesheet"> after embedded style; optional syntax highlighting via --code-highlight (pygmentize/skylighting) for code blocks in both snippet and standalone output.
693
-
694
- ### Improved
695
-
696
- - CMake man page generation uses only apex_cli -t man when pre-generated pages are missing; removed duplicate/broken pandoc branch from merge and fixed invalid add_custom_command structure.
697
- - Man-html CSS: bold and headline color #a02172, links #2376b1, section headings #3f789b, sidebar background #f5f4f0 and border #e0ddd6.
698
- - CLI help: --css/--style describes use with man-html and -s; -s/--standalone describes man-html behavior (with -s: nav sidebar and full page; without -s: snippet only).
699
-
700
- ### Fixed
701
-
702
- - Man pages generated from Markdown no longer convert option hyphens to em dashes; pandoc is invoked with -f markdown-smart so -- stays as literal ASCII double hyphen in roff output.
703
- - When both MMD inline abbreviations [>(abbr) expansion] and reference-style definitions [>abbr]: expansion appear in the same document, all abbreviations are now wrapped in <abbr> tags instead of only the reference-style ones (inline entries were previously overwritten in the list).
704
- - Definition list terms and definitions now render with correct content when using "**term**" followed by ":: definition" (previously produced empty <dt></dt><dd></dd>).
705
- - TOC markers ({{TOC}}, <!--TOC--> and variants) inside inline code (backticks) or inside code blocks (fenced or indented) are no longer expanded; they are left as literal text in the output.
706
-
707
- ## [0.1.84] - 2026-02-27
708
-
709
- ### Changed
710
-
711
- - Homebrew formula bumped to 0.1.83 with updated release checksum
712
-
713
- ### New
714
-
715
- - --width flag wraps terminal and terminal256 output to a fixed column width for better integration with terminal file managers and previews
716
- - Terminal.width metadata and config option lets you set a default wrap width per document instead of relying only on CLI flags
717
- - Terminal.theme metadata and config option lets documents select a default terminal theme when using -t terminal or -t terminal256
718
- - Terminal theme list_marker style controls the color and emphasis of bullet and numbered list markers, defaulting to bold bright red when unset
719
-
720
- ### Improved
721
-
722
- - Terminal themes can now mark headings, links, code spans, code blocks, blockquotes, and tables as bold with a bold: true flag in theme YAML instead of encoding bold in the color string
723
- - Span_classes mappings in terminal themes style inline span classes and attribute list classes consistently in terminal and terminal256 output
724
-
725
- ## [0.1.83] - 2026-02-26
726
-
727
- ### New
728
-
729
- - Span_classes theme mapping lets you define styles for inline span classes in terminal and terminal256 output
730
-
731
- ### Improved
732
-
733
- - Terminal output now respects classes from inline attribute lists and bracketed spans (e.g. *emphasis*{.tag} and [text]{.tag}) including spans generated by plugins
734
- - Terminal theme YAML parsing is more robust so existing themes continue to work even when libyaml is unavailable
735
-
736
- ## [0.1.82] - 2026-02-25
737
-
738
- ### New
739
-
740
- - Add -t/--to output formats for html, json, json-filtered/ast-json/ast, markdown/md, mmd, commonmark/cmark, kramdown, gfm, terminal/cli, and terminal256.
741
- - Add terminal and terminal256 ANSI renderers with theme support and compact list and blockquote formatting for comfortable reading in a TTY.
742
- - Add --theme option and support for user theme files in ~/.config/apex/terminal/themes/NAME.theme with automatic default.theme selection when no explicit theme is given.
743
- - Add JSON and AST JSON output points before and after AST filters so external tools can consume either the raw or fully-processed document structure.
744
-
745
- ### Improved
746
-
747
- - Improve MultiMarkdown output so TOC markers and escaping work correctly in -t mmd output without breaking MMD-specific syntax.
748
- - Improve terminal table rendering with Unicode box drawing, column alignment, captions, footer rules, and advanced colspan/rowspan handling that more closely matches advanced_tables behavior.
749
- - Terminal output now replaces :emoji: patterns with Unicode emoji when in GFM or unified mode, matching HTML behavior.
750
-
751
- ### Fixed
752
-
753
- - Replace APEXLTLT placeholders with literal << in terminal table cells so escaped \<< renders correctly in CLI output.
754
- - Integrate external code highlighters (Pygments/Skylighting) into terminal output when --code-highlight is enabled, using readable pastel styles appropriate for 8-color and 256-color modes.
755
- - Compact list item spacing and blockquote rendering in terminal output so lists, quotes, and callouts read cleanly without stray blank lines.
756
-
757
- ## [0.1.81] - 2026-02-23
758
-
759
- ### New
760
-
761
- - Tests for extended syntax in indented and fenced code blocks, inline code, nested list lines with 4-space indent, and real indented code without list markers
762
-
763
- ### Improved
764
-
765
- - Lines that start with a list marker after 4+ spaces or tab (nested or continuation list lines) are no longer treated as code blocks, so sup/sub and highlight are still applied there
766
-
767
- ### Fixed
768
-
769
- - Superscript (^), subscript (~), underline (~text~), strikethrough (~~), and highlight (==) are no longer processed inside indented code blocks (4+ spaces or tab)
770
- - Extended syntax remains skipped inside fenced code blocks and inline code as before
771
-
772
- ## [0.1.80] - 2026-02-18
773
-
774
- ## [0.1.79] - 2026-02-18
775
-
776
- ### New
777
-
778
- - IAL attributes for picture formats: webp, avif (emit <picture> with srcset), and video formats: webm, ogg, mp4, mov, m4v (emit <video> with <source> elements)
779
- - IAL attribute "auto" discovers format variants (2x, 3x, webp, avif, video) from filesystem and expands img to picture/video when files exist
780
- - Video URLs (mp4, webm, ogg, mov, m4v, ogv) automatically render as <video> elements instead of <img>
781
- - --[no-]image-captions and --[no-]title-captions-only CLI options to control figure/figcaption wrapping (title-captions-only: only add captions for images with title, alt-only images get no caption)
782
- - Image URL ending in .* (e.g. ![](image.*)) auto-discovers format variants from filesystem, same as auto attribute
783
-
784
- ### Improved
785
-
786
- - Image attribute matching uses URL + alt to disambiguate same-src images when injecting IAL attributes
787
- - Picture elements with title or alt now get figure/figcaption wrapping when image captions are enabled
788
-
789
- ### Fixed
790
-
791
- - TOC HTML structure now produces valid ul > li > ul nesting instead of invalid ul > ul (nested lists inside list items, never ul directly in ul)
792
- - Image captions from title: ![alt](url "Title caption") now correctly uses the title for figcaption instead of alt text (quoted titles were being stripped by preprocessor before cmark could parse them)
793
- - Wildcard image syntax (![](image.*)) now expands correctly when document contains image examples in code blocks (e.g. `![](image.*)` in documentation)
794
- - Truncated </figure> tag in picture output (memcpy used wrong length for "</figcaption></figure>")
795
- - Invalid HTML5: strip <p> wrapper around figure, video, and picture elements (p may only contain phrasing content)
796
- - Auto media expansion when replacement exceeds buffer (grow buffer instead of falling back to original img tag)
797
-
798
- ## [0.1.78] - 2026-02-13
799
-
800
- ### New
801
-
802
- - Test added to verify autolinking does not run inside indented code blocks.
803
-
804
- ### Fixed
805
-
806
- - Autolink preprocessor now skips indented code blocks (4+ spaces or tab at line start) so URLs inside them are not converted to links.
807
-
808
- ## [0.1.77] - 2026-02-09
809
-
810
- ### Fixed
811
-
812
- - Package.swift missing filters
813
- - Package.swift missing ast_json
814
-
815
- ## [0.1.76] - 2026-02-07
816
-
817
- ### Changed
818
-
819
- - Formula/apex.rb: version 0.1.75 and release sha256.
820
-
821
- ### New
822
-
823
- - Install filter by path: directory JSON can specify "path" (e.g. "contrib/code-includes.lua"); apex clones repo to temp, copies that file to filters/<basename>, then removes temp.
824
- - Code blocks with info string "inc" emit Pandoc keyvals [["inc","yes"]] in AST JSON so code-includes-style filters can replace block content with file contents.
825
-
826
- ### Improved
827
-
828
- - Uninstall: when filter is not a directory, try filters/NAME.lua, NAME.py, NAME.rb and remove that file.
829
- - Filter resolution: --filter NAME now resolves to filters/NAME, filters/NAME.lua, filters/NAME.py, or filters/NAME.rb (regular files) before trying NAME as a directory.
830
-
831
- ### Fixed
832
-
833
- - .lua filters are run via `lua "path"` so scripts without a shebang work.
834
-
835
- ## [0.1.75] - 2026-02-06
836
-
837
- ## [0.1.74] - 2026-02-06
838
-
839
- ### New
840
-
841
- - AST filters (Pandoc-style JSON): run filters via --filter, --filters, and --lua-filter; apex_options gains ast_filter_commands, ast_filter_count, and ast_filter_strict
842
- - --install-filter to install AST filters from the apex-filters directory or from a Git URL
843
- - --no-strict-filters to skip failing filters and invalid filter JSON instead of aborting
844
- - Div blocks in Pandoc JSON are now parsed (attributes skipped, inner blocks appended to the document)
845
- - --list-filters lists installed filters (from the user filters directory) and available filters from the central apex-filters directory, with titles, authors, descriptions, and homepages for available entries
846
- - --uninstall-filter ID removes a filter by id (file or directory) after a confirmation prompt; cannot be combined with --install-filter
847
-
848
- ### Improved
849
-
850
- - Silence C compiler narrowing warnings in the abbreviations extension so embedding Apex and building language bindings can run with cleaner, warning-free builds
851
- - Images already inside a <figure> (e.g. from ::: >figure) are no longer wrapped again in figure/figcaption by the image-caption logic
852
- - Redundant <p> around a single <img> inside <figure> is stripped so ::: >figure with "< ![Image](...)" yields <figure><img...></figure> without an inner paragraph
853
- - Pandoc JSON parser accepts block and inline objects with keys in any order (e.g. "c" before "t" as emitted by dkjson/Lua) so filter output from Lua and other generators parses correctly
854
- - Filter directory JSON parsing is shared for both "plugins" and "filters" arrays; apex_remote_fetch_filters_directory fetches and parses apex-filters.json for list/install
855
- - Apex_remote_print_plugins_filtered accepts an optional noun so the empty-list message says "filters" when listing filters instead of "plugins"
856
-
857
- ### Fixed
858
-
859
- - Pandoc JSON parser now consumes the closing "c" array bracket after Header inlines so multi-block filter output (e.g. unwrap filter with heading plus figure) parses correctly and renders full output
860
- - Multi-block Pandoc JSON (e.g. Header + RawBlock) now parses to all blocks instead of only the first; parse_blocks_array returns the container and callers adopt its children then free it so the block chain is preserved
861
-
862
- ## [0.1.73] - 2026-02-04
863
-
864
- ### New
865
-
866
- - Multi-image test coverage ensures that a reference-style image with attributes between two @2x images keeps its attributes without gaining an unwanted 2x srcset, and that the surrounding images still emit correct srcset values
867
- - @3x image attribute adds support for 3x retina assets and automatically emits srcset entries for 1x, 2x, and 3x variants of the same path for both inline and reference-style images
868
-
869
- ### Fixed
870
-
871
- - @2x image attribute no longer mangles domains or query-string-only URLs; srcset 2x URLs are only generated when the path has a real file extension and the domain portion is never altered
872
- - Reference-style image attributes (width, height, style, classes, id) are correctly applied in Unified, MultiMarkdown, and GFM modes, even when mixed with inline images and fenced div/figure blocks
873
- - Reference-style image attributes no longer leak across images; inline images with @2x keep their own srcset and reference-style images only gain 2x srcset when explicitly marked
874
-
875
- ## [0.1.72] - 2026-02-02
876
-
877
- ### Changed
878
-
879
- - --indices now enables mmark, TextIndex, and Leanpub syntax; Leanpub is on by default in unified mode.
880
- - Index anchor IDs use idxref-N format (was idxref:N) to avoid emoji processing corrupting placeholders.
881
-
882
- ### New
883
-
884
- - Add Leanpub index syntax: {i: term}, {i: "term"}, and {i: "Main!sub"} for hierarchical entries under headings.
885
- - {index} marker: write {index} in the document to place the generated index at that position (replaced with <!--INDEX--> internally).
886
-
887
- ### Fixed
888
-
889
- - TextIndex [term]{^} no longer includes the closing bracket in the index entry (e.g. "fresh" instead of "fresh]").
890
- - Leanpub {i: term} is no longer consumed by MMD metadata or parsed as IAL; content is preserved in output.
891
-
892
- ## [0.1.71] - 2026-01-30
893
-
894
- ### Changed
895
-
896
- - Strikethrough is now controlled by the enable_strikethrough option instead of mode; can be enabled in modes that lack it by default (commonmark, mmd, kramdown) and disabled in modes that include it (gfm, unified).
897
-
898
- ### New
899
-
900
- - Add --strikethrough and --no-strikethrough CLI flags to enable or disable GFM-style ~~strikethrough~~ processing independent of mode.
901
- - Strikethrough is configurable via metadata using the strikethrough or strike-through keys (true/false).
902
-
903
- ## [0.1.70] - 2026-01-30
904
-
905
- ### Changed
906
-
907
- - Strikethrough is now controlled by the enable_strikethrough option instead of mode; can be enabled in modes that lack it by default (commonmark, mmd, kramdown) and disabled in modes that include it (gfm, unified).
908
-
909
- ### New
910
-
911
- - Add --strikethrough and --no-strikethrough CLI flags to enable or disable GFM-style ~~strikethrough~~ processing independent of mode.
912
- - Strikethrough is configurable via metadata using the strikethrough or strike-through keys (true/false).
913
-
914
- ## [0.1.69] - 2026-01-30
915
-
916
- ### Improved
917
-
918
- - URLs with a protocol (http, https, etc.) are no longer URL-encoded so query parameters in image URLs are preserved.
919
- - Image reference definitions with key= attributes or bare @2x after the URL are now split and applied (width, height, srcset) in all modes, not only when image attributes are enabled.
920
-
921
- ### Fixed
922
-
923
- - Paragraph IAL on the same line (no blank line), e.g. "Text\n{: .lead }", now applies the class to the paragraph.
924
- - Block IAL (e.g. {: .lead }) inside fenced divs and markdown="1" blocks now applies to the previous paragraph and the IAL line is removed from output.
925
- - Block IAL is now recognized when an HTML block (e.g. </div>) sits between the content paragraph and the IAL paragraph.
926
- - Reference-style images (e.g. ![alt][ref] with [ref]: url width=250 height=83) no longer produce blank output; attributes are applied and refs are expanded correctly.
927
- - First line of document that looks like a Markdown link or image (e.g. [![...](#){: .class }]) is no longer consumed as MMD metadata, fixing blank output for such content.
928
- - Image width, height, and other attributes from reference definitions are now applied to images inside fenced divs (::: ... :::) and other HTML elements with markdown="1"; they were previously dropped when inner content was parsed and rendered separately.
929
-
930
- ## [0.1.68] - 2026-01-30
931
-
932
- ### Changed
933
-
934
- - Run image caption conversion whenever HTML is produced so caption="" is always honored; pass enable_image_captions and title_captions_only into the converter.
935
-
936
- ### New
937
-
938
- - Allow caption="TEXT" attribute on images (IAL); always wraps in figure/figcaption even when --image-captions is disabled, and strips the caption attribute from the emitted img tag.
939
- - Add --title-captions-only and --no-title-captions-only CLI flags.
940
- - Add title-captions-only / title_captions_only metadata support.
941
-
942
- ### Improved
943
-
944
- - When --title-captions-only is set, automatically enable image captions so both flags are not required.
945
-
946
- ## [0.1.67] - 2026-01-30
947
-
948
- ### New
949
-
950
- - Image attribute @2x in inline, reference-style, or IAL (e.g. ![alt](url @2x) or [ref]: url @2x) emits srcset="url 1x, url@2x 2x"; the 2x asset is assumed to have the same path with @2x before the extension (e.g. icon.png -> icon@2x.png).
951
-
952
- ### Fixed
953
-
954
- - SPM builds no longer fail with "config.h" file not found or "Could not build module 'CcmarkGFM'" when adding Apex as an integrated Xcode package or as a Swift Package dependency.
955
-
956
- ## [0.1.66] - 2026-01-30
957
-
958
- ### New
959
-
960
- - Image attribute @2x in inline, reference-style, or IAL (e.g. ![alt](url @2x) or [ref]: url @2x) emits srcset="url 1x, url@2x 2x"; the 2x asset is assumed to have the same path with @2x before the extension (e.g. icon.png -> icon@2x.png).
961
-
962
- ### Fixed
963
-
964
- - SPM builds no longer fail with "config.h" file not found or "Could not build module 'CcmarkGFM'" when adding Apex as an integrated Xcode package or as a Swift Package dependency.
965
-
966
- ## [0.1.65] - 2026-01-29
967
-
968
- ### Fixed
969
-
970
- - SPM builds no longer fail with missing config.h or cmark-gfm_export.h when adding Apex via Swift Package Manager.
971
- - SPM builds no longer fail at link time with undefined symbol _apex_apply_syntax_highlighting when adding Apex via Swift Package Manager.
972
-
973
- ## [0.1.64] - 2026-01-29
974
-
975
- ### Fixed
976
-
977
- - Require Marked-style include syntax (`<<[file]`, `<<(file)`, `<<{file}`) to appear at the very beginning of a line, preventing indented code blocks from being processed as includes.
978
- - Normalize even-numbered fenced code block delimiters to odd backticks so include syntax inside fenced code blocks (e.g. ````...````) is never processed; only fence delimiters at line start are normalized, not backticks inside code block content.
979
- - Pandoc fenced divs using custom element names (e.g. ::: >custom-element customclass) now output correct HTML: the custom element wraps its paragraphs instead of the opening tag being incorrectly wrapped in a <p> (fixes GitHub issue #5).
980
- - Escaped `\<<` in table cells now renders as literal `<<` in HTML (placeholder APEXLTLT is replaced with &lt;&lt; in table HTML postprocess).
981
- - Rowspan no longer puts cell content in the opening tag (e.g. <td Engineering rowspan="2">); rowspan is now applied correctly so the first cell shows <td rowspan="2">A</td>.
982
- - When injecting rowspan/colspan into table HTML, only the tag name (<td or <th) is copied then attributes are injected; content between tag name and ">" is skipped so malformed or erroneously placed content is never written into the tag.
983
-
984
- ## [0.1.63] - 2026-01-29
985
-
986
- ### Fixed
987
-
988
- - Pandoc fenced divs using custom element names (e.g. ::: >custom-element customclass) now output correct HTML: the custom element wraps its paragraphs instead of the opening tag being incorrectly wrapped in a <p> (fixes GitHub issue #5).
989
- - Escaped `\<<` in table cells now renders as literal `<<` in HTML (placeholder APEXLTLT is replaced with &lt;&lt; in table HTML postprocess).
990
-
991
- ## [0.1.62] - 2026-01-29
992
-
993
- ### Fixed
994
-
995
- - Require Marked-style include syntax (`<<[file]`, `<<(file)`, `<<{file}`) to appear at the very beginning of a line, preventing indented code blocks from being processed as includes.
996
- - Normalize even-numbered fenced code block delimiters to odd backticks so include syntax inside fenced code blocks (e.g. ````...````) is never processed; only fence delimiters at line start are normalized, not backticks inside code block content.
997
-
998
- ## [0.1.61] - 2026-01-28
999
-
1000
- ### Fixed
1001
-
1002
- - Preserve literal include syntax inside backticked code spans so examples like `<<[path/file]` render correctly in HTML without being processed.
1003
-
1004
- ## [0.1.60] - 2026-01-28
1005
-
1006
- ### Changed
1007
-
1008
- - Convert images with alt or title text to <figure> and <figcaption> in supported modes while leaving plain images unchanged.
1009
-
1010
- ### New
1011
-
1012
- - Add --[no-]image-captions CLI flag to control automatic figure and figcaption wrapping of images.
1013
- - Enable automatic image captions by default in MultiMarkdown and Unified modes, configurable per document via metadata.
1014
-
1015
- ### Improved
1016
-
1017
- - Add regression tests covering image caption behavior across modes and configuration combinations.
1018
-
1019
- ### Fixed
1020
-
1021
- - Prevent image titles and other inline image attributes from bleeding onto different images when parsing and rendering image attributes.
1022
-
1023
- ## [0.1.59] - 2026-01-27
1024
-
1025
- ### Changed
1026
-
1027
- - Show plugin metadata (id, title, author, description, homepage) in a stable order grouped under a single Installed Plugins section when using --list-plugins
1028
-
1029
- ### New
1030
-
1031
- - --wikilink-sanitize to sanitize the wiki links
1032
- - Add comprehensive --wikilink-sanitize documentation to Command-Line-Options.md wiki page
1033
- - Support ++insert++ syntax that renders to <ins> and supports IAL attributes for ids and classes on inserted spans
1034
- - Discover project plugins from .apex directories in the current directory, base directory, and git repository root in addition to global config
1035
- - List installed plugins from project and global .apex/plugins roots in the CLI, following the same precedence rules as runtime plugin loading so users can see exactly which plugins are active for a given project
1036
-
1037
- ### Improved
1038
-
1039
- - Highlight detection logic now properly validates both opening and closing == markers with stricter requirements
1040
- - Allow project plugins to shadow global plugins with the same id so projects can locally override or disable user-global plugins
1041
- - Add APEX_SUPPRESS_HIGHLIGHT_WARNINGS environment variable to suppress noisy missing-syntax-highlighter warnings when running in controlled environments
1042
- - Read configuration from project .apex/config.yml (with global config as a fallback) so per-project defaults override user-wide settings while keeping existing metadata and CLI precedence intact
1043
-
1044
- ### Fixed
1045
-
1046
- - Highlight conversion now correctly rejects === (three equals) and only matches == (exactly two equals) for mark tags
1047
- - Highlight conversion no longer matches when preceded by = or + characters
1048
- - Highlight conversion no longer matches when followed by + character
1049
- - Highlight conversion no longer matches when closing == is preceded by space or followed by = or +
1050
- - Honor MultiMarkdown-style image attributes on reference-style images in unified and MultiMarkdown modes so definitions like [id]: path \"Title\" class=center width=300 height=200 style=\"...\" correctly apply class, width, height, and style
1051
- - Honor MultiMarkdown-style image attributes on inline and reference-style images in unified and MultiMarkdown modes so syntax like ![alt](/img.jpg \"Title\" class=center width=300 height=200 style=\"...\") or [id]: /img.jpg \"Title\" class=center width=300 height=200 style=\"...\" correctly applies class, width, height, and style to the rendered img tag
1052
- - Preserve MMD6-style image titles in parentheses like ![Image](image.png (Parentheses title)) so they render a proper title attribute instead of leaving a stray closing parenthesis in the output
1053
-
1054
- ## [0.1.58] - 2026-01-15
1055
-
1056
- ### Fixed
1057
-
1058
- - Missing test files
1059
-
1060
- ## [0.1.57] - 2026-01-15
1061
-
1062
- ### New
1063
-
1064
- - Definition lists now support blank lines between the term and first definition, and between multiple definitions. Terms are preserved across blank lines and definition lists remain open across blank lines instead of closing prematurely.
1065
-
1066
- ### Improved
1067
-
1068
- - Expanded test coverage
1069
-
1070
- ### Fixed
1071
-
1072
- - Definition lists with blank lines between definitions no longer create separate <dl> blocks - all definitions for a term are now grouped in a single definition list.
1073
- - Terms with blank lines before their definitions are now correctly converted to <dt> tags instead of being rendered as paragraphs.
1074
-
1075
- ## [0.1.56] - 2026-01-14
1076
-
1077
- ### New
1078
-
1079
- - Add test_marked_integration.c test file for Marked integration features
1080
-
1081
- ## [0.1.55] - 2026-01-14
1082
-
1083
- ### New
1084
-
1085
- - Add test_marked_integration.c test file for Marked integration features
1086
-
1087
- ## [0.1.54] - 2026-01-14
1088
-
1089
- ### New
1090
-
1091
- - --highlight-language-only flag to only highlight code blocks that have a language specified (via ```language or IAL), leaving plain code blocks unhighlighted
1092
- - Config file support for code-highlight option (accepts pygments, skylighting, or abbreviations p/pyg, s/sky)
1093
- - Config file support for code-line-numbers option (boolean)
1094
- - Config file support for highlight-language-only option (boolean)
1095
- - Display 256-color ANSI art logo alongside version info when running `apex --version` in a wide terminal (>=70 columns)
1096
-
1097
- ### Improved
1098
-
1099
- - Version output detects terminal capabilities and falls back gracefully (narrow terminal, piped output, NO_COLOR set)
1100
- - Logo uses transparent background, blending with user's terminal colors instead of forcing black rectangle
1101
-
1102
- ### Fixed
1103
-
1104
- - Blank line above ASCII art in --version output
1105
-
1106
- ## [0.1.53] - 2026-01-13
1107
-
1108
- ### New
1109
-
1110
- - Display ASCII art logo alongside version info when running `apex --version` in a wide enough terminal (>=80 columns)
1111
- - --code-highlight TOOL flag for syntax highlighting via external tools (pygments, skylighting, or abbreviations p, s)
1112
- - --code-line-numbers flag to include line numbers in syntax-highlighted code blocks (requires --code-highlight)
1113
- - --css flag now accepts multiple stylesheets via repeated flags or comma-separated list (e.g., --css style.css --css syntax.css or --css style.css,syntax.css)
1114
- - Automatic GitHub-style syntax highlighting CSS embedded when --code-highlight is used (covers both Pygments and Skylighting class names)
1115
- - Add test runner `--badge` mode that outputs pass/fail count (e.g., "981/981") for badge generation
1116
-
1117
- ### Improved
1118
-
1119
- - Version output automatically detects terminal capabilities and falls back to text-only when logo cannot display (narrow terminal, piped output, NO_COLOR set)
1120
- - --embed-css now embeds all specified stylesheets as inline <style> blocks
1121
- - Test output in errors-only mode (`-e`) now only prints suite titles for suites with failures
1122
-
1123
- ## [0.1.52] - 2026-01-11
1124
-
1125
- ### Changed
1126
-
1127
- - Per-cell alignment is now enabled by default only in unified mode, disabled in all other modes (CommonMark, GFM, MultiMarkdown, Kramdown)
1128
-
1129
- ### New
1130
-
1131
- - Table preprocessing converts consecutive pipes without whitespace (|||) to << markers for colspan detection, distinguishing between whitespace-separated empty cells (| | |) which remain separate and consecutive pipes (|||) which create colspans.
1132
- - Table cells can now specify alignment by adding colons at the start and/or end of cell content: leading colon (:) for left-align, trailing colon (:) for right-align, or both (:content:) for center-align. The colons are stripped from the output and replaced with style="text-align: ..." attributes.
1133
- - Added --per-cell-alignment and --no-per-cell-alignment CLI flags to enable or disable per-cell alignment markers in tables
1134
- - Added tests to verify colspan behavior with consecutive pipes vs empty cells with whitespace
1135
-
1136
- ### Improved
1137
-
1138
- - Colspan attribute injection in HTML post-processing now includes fallback matching that checks nearby rows when position-based matching fails, ensuring colspan attributes are applied correctly even when row indices shift due to removed cells.
1139
- - HTML post-processing now removes cells containing &lt;&lt; markers (entity-encoded <<) that were missed by AST-level removal.
1140
- - Cell text extraction for attribute matching now recursively checks nested text nodes (paragraphs, etc.) to properly match cells with complex content structures.
1141
- - Colspan merge logic now preserves cell alignment styles when cells are merged together, ensuring alignment attributes are maintained correctly when cells span multiple columns.
1142
- - Per-cell alignment processing is now conditional and only runs when the feature is enabled, improving performance when disabled
1143
- - Row-header detection in tables now correctly identifies empty first header cells
1144
-
1145
- ### Fixed
1146
-
1147
- - Colspan detection now only triggers on cells with << markers (from consecutive pipes), not plain empty cells, so whitespace-separated pipes create separate empty cells as intended.
1148
- - Cells with << markers now always merge with previous cell to create colspan, even when followed by additional content in subsequent cells.
1149
- - Colspan now only merges consecutive empty cells (|||), not empty cells with whitespace between pipes (| |)
1150
- - Email autolinking no longer converts @ symbols in URLs to email addresses (e.g., Mastodon profile links like https://hachyderm.io/@ttscoff)
1151
- - Email autolinking now requires that the @ symbol is preceded by an alphanumeric character (not space or punctuation)
1152
- - Email autolinking now requires a TLD (top-level domain) to match, so only [user]@[domain].[tld] format is autolinked
1153
- - Email autolinking is now skipped inside markdown link URLs [text](url) to prevent incorrect conversions
1154
- - Row-header tables (tables with empty first header cell) now correctly convert first-column body cells to `<th scope="row">` even when `relaxed_tables` is disabled
1155
-
1156
- ## [0.1.51] - 2026-01-09
1157
-
1158
- ### New
1159
-
1160
- - Support for : Caption syntax before tables, with or without IAL attributes
1161
- - Caption format now works before tables (previously only worked after tables)
1162
- - Added tests for : Caption before tables (basic, with IAL, without blank line)
1163
- - Add regression test to ensure table parsing works correctly when files don't end with a newline, preventing future regressions
1164
- - Add regression test to ensure table parsing works correctly when files use CR line endings, preventing future regressions with Table: Caption syntax
1165
-
1166
- ### Improved
1167
-
1168
- - Definition list processor now skips : Caption lines that are followed by tables to avoid conflicts
1169
- - Table caption detection now handles blank lines between captions and tables
1170
- - Paragraph removal logic now recognizes and removes : Caption format paragraphs from output
1171
- - Refactored test suite to use centralized test_result() and test_resultf() helper functions instead of scattered printf statements with manual errors_only_output checks
1172
-
1173
- ### Fixed
1174
-
1175
- - Buffer overflow in stdin reading that caused segfaults when piping from pbpaste
1176
- - Prevent memory leak in is_table_caption by only storing full_text in user_data when caption is confirmed, not before validation
1177
- - Fix potential crash when processing multiple tables by ensuring full_text is properly freed when caption validation fails
1178
- - Fix double-free in add_table_caption by checking for existing caption before freeing user_data, preventing use-after-free errors
1179
- - Fix : Caption lines before tables being incorrectly parsed as definition lists by always treating them as captions when followed by a table, regardless of IAL presence or blank lines
1180
- - Fix table parsing issue where last row of first table is not parsed when file doesn't end with a newline by normalizing input to always end with a line ending character before preprocessing and parsing
1181
- - Normalization breaking file includes
1182
- - Fix table parsing issue where last row of first table is not parsed when file doesn't end with a newline by normalizing input to always end with a line ending character before table preprocessing and final parsing
1183
- - Fix Table: Caption syntax not being processed when file uses CR line endings by updating table caption preprocessing to handle CR, LF, and CRLF line endings correctly
1184
- - --errors-only flag now correctly suppresses all passing test output, including negative tests that pass
1185
-
1186
- ## [0.1.50] - 2026-01-04
1187
-
1188
- ### Changed
1189
-
1190
- - Removed rouge_css function from documentation generators (generate_docset.rb, generate_single_html.rb, generate_app_docs.rb) in favor of using the shared stylesheet approach.
1191
-
1192
- ### New
1193
-
1194
- - Added generate_docset.rb script to generate Dash docsets from Apex documentation
1195
- - Added support for single-page CLI options docset using mmd2cheatset
1196
- - Added support for multi-page docset from wiki files with full navigation
1197
- - Added shared_styles.css with common styling for all documentation generators
1198
- - Added shared_scripts.js with hamburger menu functionality for mobile navigation
1199
- - Added hamburger menu button for mobile navigation that slides sidebar in from left
1200
- - Added mobile menu overlay that closes sidebar when clicked
1201
-
1202
- ### Improved
1203
-
1204
- - Documentation generators now use shared CSS and JavaScript files for consistency
1205
- - Sidebar width increased to 180-250px on larger screens to prevent menu item wrapping
1206
- - Hamburger menu fades to 0.2 opacity when not hovered, full opacity on hover
1207
- - Hamburger menu repositions to right of sidebar when menu is open
1208
- - Hash handling on page load now supports both page IDs and section IDs
1209
- - Added hashchange event listener to handle URL hash changes after page load
1210
- - Moved Rouge syntax highlighting CSS to shared stylesheet (shared_styles.css) for better maintainability. All documentation generators now use the centralized GitHub theme CSS instead of generating it dynamically.
1211
- - Documentation generators now prioritize build/apex over build-release/apex when searching for the Apex binary, ensuring the most recently built version is used for documentation generation.
1212
-
1213
- ### Fixed
1214
-
1215
- - TOC link navigation now uses getAbsoluteTop function for reliable scroll positioning
1216
- - Hash navigation in single-page HTML files now correctly shows page and scrolls to section
1217
- - TOC links in C API and other pages now scroll correctly instead of only moving 5px
1218
- - Definition lists are no longer incorrectly processed inside fenced code blocks. The definition list preprocessor now detects code block boundaries and skips processing when inside a code block, preserving the literal markdown syntax in code examples.
1219
- - Definition lists are no longer incorrectly processed inside fenced code blocks. The definition list preprocessor now detects code block boundaries and distinguishes between closing fences (```) and opening fences (```markdown). When inside a code block, only closing fences exit the block, while opening fences with language identifiers are treated as content, preventing definition list syntax from being rendered as HTML in code examples.
1220
- - Fixed double-free memory error in definition list preprocessor by setting ref_definitions to NULL after freeing and adding NULL checks in error paths to prevent attempting to free already-freed memory.
1221
-
1222
- ## [0.1.49] - 2026-01-03
1223
-
1224
- ### New
1225
-
1226
- - Added standalone HTML document generation method with stylesheet and title support
1227
- - Added pretty-printing option method for formatted HTML output
1228
- - Added dictionary-based options method for flexible configuration
1229
- - Added Swift-friendly convenience method combining common options (generateHeaderIDs, hardBreaks, pretty)
1230
- - Added instance methods (apexHTML and apexHTMLWithMode) for fluent NSString usage
1231
- - Added Swift API wrapper (Apex.swift) with type-safe ApexMode enum and ApexOptions struct
1232
- - Added String extensions providing idiomatic Swift API for Markdown conversion
1233
- - Added static Apex converter struct for functional-style Swift usage
1234
- - Swift Package Manager (SPM) support - Apex can now be added as a package dependency in Xcode projects via SPM
1235
- - IOS support - Apex now supports iOS 11+ in addition to macOS 10.13+ through bundled libyaml dependency
1236
- - Module map for Swift C API imports - Added module.modulemap to enable direct C API access from Swift
1237
- - Add Package.swift for Swift Package Manager integration
1238
- - Add module.modulemap for Swift/Objective-C interop
1239
- - Add SPM test script and test project
1240
-
1241
- ### Improved
1242
-
1243
- - Framework build now includes module map for proper Swift module support
1244
- - Add default initializer to ApexOptions struct for better Swift ergonomics
1245
-
1246
- ### Fixed
1247
-
1248
- - Swift/Objective-C bridging issues in Apex.swift to work correctly with SPM module structure
1249
- - Fix node type declarations to use enum values instead of extern variables for better module compatibility
1250
-
1251
- ## [0.1.48] - 2026-01-03
1252
-
1253
- ### Fixed
1254
-
1255
- - Linux build error: add missing stdint.h include to emoji.c for SIZE_MAX definition
1256
-
1257
- ## [0.1.47] - 2026-01-03
1258
-
1259
- ### Changed
1260
-
1261
- - Updated Objective-C API to use mode constants instead of string literals in default implementation
1262
-
1263
- ### New
1264
-
1265
- - Added emoji autocorrect option to enable automatic conversion of emoji names like :rocket: to Unicode emoji characters
1266
- - Added progress indicator option to show processing progress on stderr for operations longer than 1 second
1267
-
1268
- ### Improved
1269
-
1270
- - Added mode constants (ApexModeCommonmark, ApexModeGFM, etc.) to Objective-C API for better type safety and code clarity
1271
-
1272
- ## [0.1.46] - 2026-01-03
1273
-
1274
- ## [0.1.45] - 2026-01-03
1275
-
1276
- ### Improved
1277
-
1278
- - Table caption preprocessing now handles blank lines between tables and captions by buffering and discarding them appropriately
1279
- - Table matching in HTML renderer now uses sequential matching instead of index-based matching to correctly handle tables with attributes
1280
- - Caption detection now concatenates all text nodes in a paragraph to ensure IAL attributes are found even when split across nodes
1281
-
1282
- ### Fixed
1283
-
1284
- - Table captions now work correctly when separated from tables by blank lines
1285
- - IAL attributes (id, class) are now correctly extracted and applied to tables with captions
1286
- - Table: caption format now works when appearing immediately after table rows without blank lines
1287
- - Table: caption format now supports case-insensitive "table:" in addition to "Table:"
1288
-
1289
- ## [0.1.44] - 2026-01-02
1290
-
1291
- ### Changed
1292
-
1293
- - Updated emoji_entry structure to support both unicode and image-based emojis with separate unicode and image_url fields
1294
- - Table alignment test now accepts both align="center" and style="text-align: center" attributes to be more flexible with cmark-gfm's output format
1295
-
1296
- ### New
1297
-
1298
- - Fenced divs now support specifying different HTML block elements using >blocktype syntax (e.g., ::: >aside {.sidebar} creates <aside> instead of <div>)
1299
- - Support for common HTML5 block elements: aside, article, section, details, summary, header, footer, nav, and custom elements
1300
- - Block type syntax works with all attribute types including IDs, classes, and custom attributes
1301
- - Added comprehensive test coverage for block type feature including nesting, multiple attributes, and edge cases
1302
- - In GFM format, emojis in headers are converted to their textual names in generated IDs (e.g., # Support -> id="smile-support"), matching Pandoc's GFM behavior
1303
- - Added support for all 861 GitHub emojis (expanded from ~200), including 14 image-based emojis like :bowtie:, :octocat:, and :feelsgood:
1304
- - Added emoji name autocorrect feature using fuzzy matching with Levenshtein distance algorithm to correct typos and formatting errors in emoji names
1305
- - Added --emoji-autocorrect and --no-emoji-autocorrect command-line flags to control emoji autocorrection
1306
- - Emoji autocorrect is enabled by default in unified mode and can be enabled in GFM mode
1307
- - Image-based emojis in headers now use em units (height: 1em) for proper scaling instead of fixed pixel sizes
1308
-
1309
- ### Improved
1310
-
1311
- - Fenced div block types can be nested and mixed with regular divs
1312
- - Emoji processing now validates that only complete :emoji_name: patterns are processed (requires at least one character and no spaces between colons)
1313
- - Emoji names are normalized (lowercase, hyphens to underscores) before matching to handle case variations and formatting differences
1314
- - Table processing now completes in under 30ms for large tables (previously timing out after 5+ seconds) by avoiding expensive string comparisons when no changes are made
1315
- - Added early exit in table attribute injection to skip processing for simple tables without special attributes, avoiding expensive AST traversal for tables that don't need it
1316
- - Table post-processing performance significantly improved for large tables (2600+ cells) by implementing lazy cell content extraction, only extracting content when needed for attribute matching or alignment processing
1317
- - Added timeout protection (10 seconds) to table post-processing loop to prevent hangs on extremely large tables, gracefully exiting and returning processed HTML
1318
- - Per-cell alignment processing now disabled automatically for tables with more than 1000 cells to avoid timeouts, while column alignment from delimiter rows continues to work (handled by cmark-gfm)
1319
- - Optimized alignment colon detection to only check first and last non-whitespace characters instead of scanning entire cell content, reducing character comparisons by ~50x
1320
- - Added early exit for tables with only simple attributes (no rowspan/colspan/data-remove) to skip expensive HTML processing when no complex features are needed
1321
- - Content-based cell matching now skipped for tables with more than 500 attributes to avoid performance degradation
1322
- - Added CMARK_OPT_LIBERAL_HTML_TAG option when unsafe mode is enabled to allow cmark-gfm to properly recognize inline HTML tags instead of encoding them
1323
- - MacOS binaries now use @rpath for libyaml instead of hardcoded Homebrew paths, allowing the binary to work when copied to /usr/local/bin as long as libyaml is installed in /usr/local/lib or /opt/homebrew/lib
1324
- - Emoji name resolution now prefers longer, more descriptive names (e.g., "thumbsup" over "+1")
1325
- - Header ID generation now normalizes common Latin diacritics (e, a, c, etc.)
1326
- - Table rowspan matching now extracts cell content for more accurate matching
1327
-
1328
- ### Fixed
1329
-
1330
- - Fixed issue where partial emoji patterns or empty patterns could cause incorrect matches
1331
- - Emoji replacement now correctly ignores table alignment patterns like :---: and :|: to prevent incorrect emoji processing in table delimiter rows
1332
- - Emoji patterns (like :bowtie:) inside HTML tag attributes are now correctly ignored and not processed, preventing mangled HTML output when emojis appear in attributes like title=":emoji:"
1333
- - Autolink processing now skips URLs inside HTML tag attributes, preventing URLs in attributes like src="https://..." from being converted to markdown links
1334
- - Inline HTML tags like <img> are no longer HTML-encoded when --unsafe is enabled, preserving raw HTML in paragraphs, blockquotes, and definition lists
1335
- - Header IDs with emojis now correctly replace cmark-gfm's auto-generated IDs instead of being skipped, ensuring custom ID formats (like emoji-to-name conversion) are applied
1336
- - Emoji processing now correctly skips index placeholders (<!--IDX:...-->)
1337
- - Table processing now correctly detects and processes rowspan markers (^^)
1338
- - Table attribute processing optimization no longer incorrectly skips rowspan/colspan attributes
1339
- - Table formatting in fixture
1340
- - Remove unused function
1341
-
1342
- ## [0.1.43] - 2025-12-31
1343
-
1344
- ### Changed
1345
-
1346
- - Reference image attribute expansion now converts IAL
1347
-
1348
- attributes (ID, classes) to key=value format for
1349
- compatibility with inline image parsing
1350
-
1351
- - Test suite refactored: split test_runner.c into multiple
1352
-
1353
- files (test_basic.c, test_extensions.c, test_helpers.c,
1354
- test_ial.c, test_links.c, test_metadata.c, test_output.c,
1355
- test_tables.c) for better organization
1356
-
1357
- - Test fixtures reorganized: moved all .md test files from
1358
-
1359
- tests/ to tests/fixtures/ with subdirectories (basic/,
1360
- demos/, extensions/, ial/, images/, output/, tables/)
1361
-
1362
- ### New
1363
-
1364
- Support for Pandoc-style table captions using `: Caption` syntax (in addition to existing `[Caption]` and `Table: Caption` formats)
1365
-
1366
- IAL attributes in table captions are now extracted and applied to the table element (e.g., `: Caption {#id .class}` applies `id` and `class` to the table)
1367
-
1368
- Support for Pandoc-style IAL syntax without colon prefix (`{#id .class}` in addition to Kramdown `{:#id .class}` format)
1369
-
1370
- - Support Pandoc-style IAL syntax ({#id .class}) in addition
1371
-
1372
- to Kramdown-style ({: #id .class}) for all IAL contexts
1373
- including block-level, inline, and paragraph IALs
1374
-
1375
- - Extract_ial_from_text function now recognizes both {: and
1376
-
1377
- {# or {. formats when extracting IALs from text
1378
-
1379
- - Extract_ial_from_paragraph function now accepts
1380
-
1381
- Pandoc-style IALs for pure IAL paragraphs
1382
-
1383
- - Process_span_ial_in_container function now processes
1384
-
1385
- Pandoc-style IALs for inline elements like links, images,
1386
- and emphasis
1387
-
1388
- - Is_ial_line function now detects Pandoc-style IAL-only
1389
-
1390
- lines in addition to Kramdown format
1391
-
1392
- - Support Pandoc-style IAL syntax ({#id .class}) in addition
1393
-
1394
- to Kramdown-style ({: #id .class}) for all IAL contexts
1395
- including block-level elements, paragraphs, inline
1396
- elements, and headings
1397
-
1398
- - Add support for Pandoc fenced divs syntax (::::: {#id
1399
-
1400
- .class} ... :::::) in unified mode, enabled by default
1401
-
1402
- - Add --divs and --no-divs command-line flags to control
1403
-
1404
- fenced divs processing
1405
-
1406
- - Add comprehensive test suite for Pandoc fenced divs
1407
-
1408
- covering basic divs, nested divs, attributes, and edge
1409
- cases
1410
-
1411
- - Add bracketed spans feature that converts [text]{IAL}
1412
-
1413
- syntax to HTML span elements with attributes, enabled by
1414
- default in unified mode
1415
-
1416
- - Add --spans and --no-spans command-line flags to
1417
-
1418
- enable/disable bracketed spans in other modes
1419
-
1420
- - Bracketed spans support all IAL attribute types (IDs,
1421
-
1422
- classes, key-value pairs) and process markdown inside
1423
- spans
1424
-
1425
- - Reference link definitions take precedence over bracketed
1426
-
1427
- spans - if [text] matches a reference link, it remains a
1428
- link
1429
-
1430
- - Add comprehensive test suite for bracketed spans including
1431
-
1432
- reference link precedence, nested brackets, and markdown
1433
- processing
1434
-
1435
- - Add bracketed spans examples and documentation
1436
- - Add automatic width/height attribute conversion:
1437
-
1438
- percentages and non-integer/non-px values convert to style
1439
- attributes, Xpx values convert to integer width/height
1440
- attributes (strips px suffix), bare integers remain as
1441
- width/height attributes
1442
-
1443
- - Add support for Pandoc/Kramdown IAL syntax on images:
1444
-
1445
- inline images support IAL after closing paren like
1446
- ![alt](url){#id .class width=50%}
1447
-
1448
- - Add support for IAL syntax after titles in reference image
1449
-
1450
- definitions: [ref]: url "title" {#id .class width=50%}
1451
-
1452
- - Add support for Pandoc-style IAL with space prefix: {
1453
-
1454
- width=50% } syntax works for images
1455
-
1456
- - Add comprehensive test suite for width/height conversion
1457
-
1458
- covering percentages, pixels, integers, mixed cases, and
1459
- edge cases like decimals and viewport units
1460
-
1461
- - Reference image definitions now preserve and include title
1462
-
1463
- attributes from definitions like [ref]: url "title" {#id}
1464
-
1465
- ### Improved
1466
-
1467
- - Table caption preprocessing now converts `: Caption`
1468
-
1469
- format to `[Caption]` format before definition list
1470
- processing to avoid conflicts
1471
-
1472
- - HTML renderer now extracts and injects IAL attributes from
1473
-
1474
- table captions while excluding internal attributes like
1475
- `data-caption`
1476
-
1477
- - IAL parsing automatically detects format and adjusts
1478
-
1479
- content offset accordingly (2 chars for {: format, 1 char
1480
- for {# or {. format)
1481
-
1482
- - HTML markdown extension now uses CMARK_OPT_UNSAFE to allow
1483
-
1484
- raw HTML including nested divs in processed content
1485
-
1486
- - Width/height conversion properly merges with existing
1487
-
1488
- style attributes when both are present
1489
-
1490
- - IAL detection now properly handles whitespace before IAL
1491
-
1492
- syntax for both inline and reference images
1493
-
1494
- - Reference image expansion now correctly skips IAL even
1495
-
1496
- when closing paren is not found
1497
-
1498
- ### Fixed
1499
-
1500
- - Table caption test assertions now correctly match table
1501
-
1502
- tags with attributes by using <table instead of <table>
1503
-
1504
- - Extract_ial_from_paragraph now allows newline character
1505
-
1506
- after closing brace in IAL syntax
1507
-
1508
- - List items with key:value format (e.g., "- Foo: Bar") are
1509
-
1510
- no longer incorrectly parsed as MMD metadata in unified
1511
- mode
1512
-
1513
- - Fenced divs now add markdown="1" attribute so content
1514
-
1515
- inside divs is properly parsed as markdown
1516
-
1517
- - HTML markdown extension now preserves all attributes (id,
1518
-
1519
- class, custom attributes) when processing divs with
1520
- markdown="1"
1521
-
1522
- - HTML markdown extension now recursively processes nested
1523
-
1524
- divs with markdown="1" attributes
1525
-
1526
- - HTML markdown extension now adds newline after closing div
1527
-
1528
- tags to ensure following markdown headers and content are
1529
- parsed correctly
1530
-
1531
- - Bracketed spans now correctly handle nested brackets by
1532
-
1533
- matching outer brackets instead of first closing bracket
1534
-
1535
- - Remove test assertions checking for markdown attribute on
1536
-
1537
- bracketed spans which is correctly removed by
1538
- html_markdown extension
1539
-
1540
- - IAL syntax with spaces (e.g., { width=50% }) now correctly
1541
-
1542
- detected and processed for images
1543
-
1544
- - IAL syntax is now properly stripped from output even when
1545
-
1546
- parsing fails, preventing raw IAL from appearing in HTML
1547
-
1548
- - Reference image definitions with IAL after URL (no title)
1549
-
1550
- now correctly detected and processed
1551
-
1552
- - Test string length issues: replaced hardcoded lengths with
1553
-
1554
- strlen() calls to ensure full IAL syntax is processed in
1555
- width/height conversion tests
1556
-
1557
- - Removed unused style_attr_index variable to eliminate
1558
-
1559
- compiler warning
1560
-
1561
- ## [0.1.42] - 2025-12-30
1562
-
1563
- ### New
1564
-
1565
- - ALD references can now be combined with additional
1566
-
1567
- attributes in the same IAL (e.g., {:id .class3} where id
1568
- is an ALD reference and .class3 is an additional class)
1569
-
1570
- ### Improved
1571
-
1572
- - When merging ALD attributes with additional attributes,
1573
-
1574
- duplicate key-value pairs are now replaced instead of
1575
- duplicated (e.g., if ALD defines rel="x" and IAL includes
1576
- rel="y", the result is rel="y")
1577
-
1578
- - Classes from additional attributes are appended to ALD
1579
-
1580
- classes, and IDs in IALs override ALD IDs when specified
1581
-
1582
- - Enhanced merge_attributes function to properly handle
1583
-
1584
- attribute key conflicts by replacing existing values
1585
- rather than creating duplicates
1586
-
1587
- ## [0.1.41] - 2025-12-30
1588
-
1589
- ### New
1590
-
1591
- - Inline Attribute Lists (IALs) can now appear immediately
1592
-
1593
- after inline elements within paragraphs, not just at the
1594
- end of paragraphs
1595
-
1596
- - IALs can be applied to strong (bold), emphasis (italic),
1597
-
1598
- and code elements in addition to links and images
1599
-
1600
- - IALs now work with nested inline elements, allowing
1601
-
1602
- attributes to be applied to italic text inside bold text
1603
- and similar nested structures
1604
-
1605
- - Added comprehensive test suite for inline IAL
1606
-
1607
- functionality covering links, strong, emphasis, code,
1608
- multiple IALs, and edge cases
1609
-
1610
- - Added IAL demo markdown file (tests/ial_demo.md)
1611
-
1612
- demonstrating all supported IAL features
1613
-
1614
- - Added script (tests/generate_ial_demo.sh) to automatically
1615
-
1616
- generate an HTML file with interactive attribute
1617
- inspection tooltips
1618
-
1619
- ### Fixed
1620
-
1621
- - IALs (Inline Attribute Lists) are now correctly applied to
1622
-
1623
- the intended link element when multiple links in a
1624
- document share the same URL
1625
-
1626
- - IALs are now correctly applied to the intended element
1627
-
1628
- when multiple elements share the same URL or content,
1629
- using separate element counters for each inline element
1630
- type
1631
-
1632
- - Block-level HTML elements now correctly include a space
1633
-
1634
- between the tag name and attributes when IAL attributes
1635
- are injected
1636
-
1637
- ## [0.1.40] - 2025-12-23
1638
-
1639
- ### Changed
1640
-
1641
- - Table captions now default to below the table instead of
1642
-
1643
- above
1644
-
1645
- - Tfoot row detection in AST now separates the logic for
1646
-
1647
- marking the === row itself versus rows that come after it,
1648
- improving accuracy of tfoot section identification.
1649
-
1650
- - Disallow using --combine and --mmd-merge together to avoid
1651
-
1652
- ambiguous multi-file behavior
1653
-
1654
- - Update CSV include and inline table handling so both share
1655
-
1656
- the same CSV-to-table conversion and alignment behavior
1657
-
1658
- ### New
1659
-
1660
- - Added --captions option to control caption position (above
1661
-
1662
- or below)
1663
-
1664
- - Added default CSS styling for figcaption elements in
1665
-
1666
- standalone output (centered, bold, 0.8em)
1667
-
1668
- - Added CSS styling for table figures to align captions with
1669
-
1670
- tables (fit-content width)
1671
-
1672
- - Support for tables that start with alignment rows
1673
-
1674
- (separator rows) without header rows. Column alignment
1675
- specified in the separator row is automatically applied to
1676
- all data columns.
1677
-
1678
- - Support for individual cell alignment in tables using
1679
-
1680
- colons, similar to Jekyll Spaceship. Cells can be aligned
1681
- independently with :Text (left), Text: (right), or :Text:
1682
- (center). Colons are removed from output and alignment is
1683
- applied via CSS text-align styles.
1684
-
1685
- - Support per-cell alignment markers inside table cells
1686
- - Support multiline table cells using trailing backslash
1687
-
1688
- markers
1689
-
1690
- - Support header and footer colspans based on empty cells
1691
- - Add --combine CLI mode to concatenate Markdown files with
1692
-
1693
- include expansion and GitBook-style SUMMARY.md index
1694
- support.
1695
-
1696
- - Add --mmd-merge CLI mode to merge MultiMarkdown index
1697
-
1698
- files into a single Markdown stream
1699
-
1700
- - Support indentation-based header level shifting when
1701
-
1702
- merging mmd_merge index entries
1703
-
1704
- - Support inline CSV/TSV tables using ```table fenced blocks
1705
-
1706
- with automatic CSV/TSV delimiter detection
1707
-
1708
- - Support <!--TABLE--> markers that convert following
1709
-
1710
- CSV/TSV lines into Markdown tables until a blank line
1711
-
1712
- - Add --aria command-line option to enable ARIA labels and
1713
-
1714
- accessibility attributes in HTML output
1715
-
1716
- - Add aria-label="Table of contents" to TOC navigation
1717
-
1718
- elements when --aria is enabled
1719
-
1720
- Add role="figure" to figure elements when --aria is enabled
1721
-
1722
- - Add role="table" to table elements when --aria is enabled
1723
- - Generate id attributes for figcaption elements in table
1724
-
1725
- figures when --aria is enabled
1726
-
1727
- - Add aria-describedby attributes linking tables to their
1728
-
1729
- captions when --aria is enabled
1730
-
1731
- ### Improved
1732
-
1733
- - Removed unused variables to eliminate compiler warnings
1734
- - Empty thead sections from headerless tables are now
1735
-
1736
- removed from HTML output instead of rendering empty header
1737
- cells.
1738
-
1739
- - Table row mapping now better handles the relationship
1740
-
1741
- between HTML row indices and AST row indices, accounting
1742
- for separator rows that are removed from HTML output.
1743
-
1744
- - Added safeguards to prevent rows that should be in tbody
1745
-
1746
- from being skipped, including protection for the first few
1747
- rows (header and first two data rows) when a === separator
1748
- is present.
1749
-
1750
- - Make table captions positionable above or below tables
1751
- - Center and style figcaptions in standalone HTML output
1752
- - Support optional alignment keyword rows (left, right,
1753
-
1754
- center, auto) and headless tables for both included CSV
1755
- files and inline CSV/TSV data
1756
-
1757
- - Preserve ```table fences without commas or tabs by leaving
1758
-
1759
- them as code blocks so users can show literal CSV/TSV
1760
- without conversion
1761
-
1762
- ### Fixed
1763
-
1764
- - Removed unused variable 'row_idx' from advanced_tables.c
1765
-
1766
- to eliminate compiler warnings.
1767
-
1768
- - Rows before the === separator are now correctly placed in
1769
-
1770
- tbody instead of being incorrectly placed in tfoot or
1771
- skipped entirely. The fix includes HTML position
1772
- verification to ensure rows that appear before the === row
1773
- in the rendered HTML are always in tbody, regardless of
1774
- AST marking.
1775
-
1776
- - Prevent === separator rows from appearing as table content
1777
-
1778
- Ensure footer rows render in tfoot without losing body rows
1779
-
1780
- - Preserve legitimate empty cells such as missing Q4 values
1781
- - Apply ^^ rowspans correctly for all table sections
1782
- - Apply ^^ rowspans correctly across table sections without
1783
-
1784
- leaking into unrelated rows
1785
-
1786
- - Support footer colspans so footer cells can span multiple
1787
-
1788
- columns like headers and body rows
1789
-
1790
- - Preserve legitimate empty table cells that are not part of
1791
-
1792
- colspans or rowspans
1793
-
1794
- - KaTeX auto-render now properly configures delimiters and
1795
-
1796
- manually renders math spans to prevent plain text from
1797
- appearing after rendered equations
1798
-
1799
- - Relaxed table header conversion now only runs when
1800
-
1801
- relaxed_tables option is enabled
1802
-
1803
- - HTML document wrapping now strips existing </body></html>
1804
-
1805
- tags to prevent duplicates when content already contains
1806
- them
1807
-
1808
- - KaTeX auto-render now properly configures delimiters and
1809
-
1810
- manually renders math spans to prevent plain text from
1811
- appearing after rendered equations
1812
-
1813
- - Relaxed table header conversion now only runs when
1814
-
1815
- relaxed_tables option is enabled
1816
-
1817
- - HTML document wrapping now strips existing </body></html>
1818
-
1819
- tags to prevent duplicates when content already contains
1820
- them
1821
-
1822
- - Table captions appearing after their tables now correctly
1823
-
1824
- link via aria-describedby attributes
1825
-
1826
- ## [0.1.39] - 2025-12-19
1827
-
1828
- ### Changed
1829
-
1830
- - Table post-processing now tracks all cells (including
1831
-
1832
- removed ones) to correctly map HTML column positions to
1833
- original AST column indices, ensuring attributes are
1834
- applied to the correct cells.
1835
-
1836
- - Added content-based detection for ^^ marker cells during
1837
-
1838
- HTML post-processing to ensure they are properly removed
1839
- even when attribute matching fails.
1840
-
1841
- ### New
1842
-
1843
- - Added content verification to prevent false matches when
1844
-
1845
- cells are covered by rowspans
1846
-
1847
- - Added tracking of previous cell's colspan to detect and
1848
-
1849
- remove empty cells after colspan
1850
-
1851
- - Added detection and removal of === marker rows in tfoot
1852
-
1853
- sections
1854
-
1855
- ### Improved
1856
-
1857
- - Rowspan cell tracking now uses a per-column active cell
1858
-
1859
- approach (inspired by Jekyll Spaceship) for more reliable
1860
- rowspan calculation across complex table structures.
1861
-
1862
- - Cell matching now uses position-based fallback to previous
1863
-
1864
- row when current row match fails
1865
-
1866
- - Row mapping accounts for rowspan coverage to correctly
1867
-
1868
- identify visible columns
1869
-
1870
- - Tfoot row detection now uses AST row indices instead of
1871
-
1872
- HTML row indices for accuracy
1873
-
1874
- ### Fixed
1875
-
1876
- - Table rowspan rendering now correctly handles rows where
1877
-
1878
- most cells use ^^ markers. Previously, cells like "Beta"
1879
- and "Gamma" in rows with multiple ^^ cells would be
1880
- missing or appear in the wrong position. The fix includes
1881
- proper mapping between HTML row indices and AST row
1882
- indices, accounting for separator rows that are removed
1883
- from HTML output.
1884
-
1885
- - Missing cells after colspan (e.g., "92.00" cell was
1886
-
1887
- missing when "Absent" had colspan="2")
1888
-
1889
- - Rowspan not applying correctly when HTML row mapping was
1890
-
1891
- off by one
1892
-
1893
- - Footer alignment rows (=== markers) appearing in output
1894
-
1895
- instead of being removed
1896
-
1897
- - Empty cells after colspan not being removed from rendered
1898
-
1899
- HTML
1900
-
1901
- ## [0.1.38] - 2025-12-18
1902
-
1903
- ### Changed
1904
-
1905
- - In standalone mode, insert script tags just before </body>
1906
- - In snippet mode, append script tags at the end of the HTML
1907
-
1908
- fragment
1909
-
1910
- - When --embed-css is used with --css, replace the
1911
-
1912
- stylesheet <link> tag with an inline <style> block
1913
- containing the CSS file contents
1914
-
1915
- ### New
1916
-
1917
- - Support Pandoc-style "Table: Caption" syntax and
1918
- - Add --script CLI flag to inject scripts into HTML output
1919
- - Support shorthands for common JS libraries (mermaid,
1920
-
1921
- mathjax, katex, highlightjs, prism, htmx, alpine)
1922
-
1923
- - Add --embed-css option to inline CSS files into the
1924
-
1925
- standalone document head
1926
-
1927
- ### Improved
1928
-
1929
- - Compress extraneous newlines between HTML elements
1930
- - Remove unused apex_remote_trim helper to eliminate
1931
-
1932
- compiler warnings
1933
-
1934
- ### Fixed
1935
-
1936
- - Prevent caption paragraphs from being reused across
1937
- - Skip URL encoding for footnote definitions ([^id]: ...) so
1938
-
1939
- footnote
1940
-
1941
- ## [0.1.37] - 2025-12-17
1942
-
1943
- ### Changed
1944
-
1945
- - Image attributes are mode-dependent: work in Unified and
1946
-
1947
- MultiMarkdown modes only
1948
-
1949
- - URL encoding is mode-dependent: works in Unified,
1950
-
1951
- MultiMarkdown, and Kramdown modes
1952
-
1953
- - Improved caption detection to check all table rows for
1954
-
1955
- caption markers, not just the last row, to handle cases
1956
- where captions come after tfoot rows.
1957
-
1958
- ### New
1959
-
1960
- - Support for MultiMarkdown-style image attributes in
1961
-
1962
- unified and MultiMarkdown modes
1963
-
1964
- Inline image attributes: ![alt](url width=300 style="float:left" "title")
1965
-
1966
- - Reference-style image attributes: ![][ref] with [ref]: url
1967
-
1968
- width=300
1969
-
1970
- - Automatic URL encoding for links with spaces in unified,
1971
-
1972
- MultiMarkdown, and Kramdown modes
1973
-
1974
- - URLs with spaces are automatically percent-encoded (e.g.,
1975
-
1976
- "path with spaces.png" becomes "path%20with%20spaces.png")
1977
-
1978
- - Added support for MultiMarkdown-style image attributes in
1979
-
1980
- reference-style images. Reference definitions can now
1981
- include attributes: [img1]: image.png width=300
1982
- style="float:left"
1983
-
1984
- Added support for inline image attributes: ![alt](url width=300 style="...")
1985
-
1986
- - Added automatic URL encoding for all link URLs (images and
1987
-
1988
- regular links). URLs with spaces are automatically
1989
- percent-encoded (e.g., "path to/image.png" becomes
1990
- "path%20to/image.png")
1991
-
1992
- - Added detection and removal of table alignment separator
1993
-
1994
- rows that were incorrectly being rendered as table rows.
1995
-
1996
- - Added test cases for table captions appearing before and
1997
-
1998
- after tables.
1999
-
2000
- Added support for tfoot sections in tables using `===` row markers. Rows containing `===` markers are now placed in `<tfoot>` sections, and all subsequent rows after the first `===` row are also placed in tfoot.
2001
-
2002
- - Added comprehensive table feature tests that validate
2003
-
2004
- rowspan,
2005
-
2006
- ### Improved
2007
-
2008
- - Improved attribute injection in HTML renderer to correctly
2009
-
2010
- place attributes before closing > or /> in img and link
2011
- tags
2012
-
2013
- - Enhanced URL parsing to distinguish between spaces within
2014
-
2015
- URLs vs spaces before attributes using forward-scanning
2016
- pattern detection
2017
-
2018
- - Self-closing img tags now consistently use " />" (space
2019
-
2020
- before slash) when attributes are injected, matching the
2021
- format used by cmark-gfm for img tags without injected
2022
- attributes
2023
-
2024
- - Rowspan and colspan attribute handling now properly
2025
-
2026
- appends to existing attributes instead of replacing them,
2027
- allowing multiple attributes to coexist on table cells.
2028
-
2029
- - Alignment rows (rows containing only '' characters) are
2030
-
2031
- now detected and marked for removal, preventing them from
2032
- appearing in HTML output.
2033
-
2034
- ### Fixed
2035
-
2036
- - Fixed bug where image prefix "![" was incorrectly removed
2037
-
2038
- during preprocessing of expanded reference-style images
2039
-
2040
- - URL encoding now only encodes unsafe characters (space,
2041
-
2042
- control chars, non-ASCII). Valid URL characters like /, :,
2043
- ?, #, ~, etc. are preserved and no longer incorrectly
2044
- encoded.
2045
-
2046
- - Titles in links and images are now correctly detected and
2047
-
2048
- excluded from URL encoding. Supports quoted titles
2049
- ("title", 'title') and parentheses titles ((title)). URLs
2050
- with parentheses (like Wikipedia links) are correctly
2051
- distinguished from titles based on whether a space
2052
- precedes the opening parenthesis.
2053
-
2054
- - Reference-style images with attributes now render
2055
-
2056
- correctly. Reference definitions with image attributes are
2057
- removed from output, while those without attributes are
2058
- preserved (with URL encoding) so cmark can resolve the
2059
- references.
2060
-
2061
- - Spacing between attributes in HTML output. Attributes
2062
-
2063
- injected into img and link tags now have proper spacing,
2064
- preventing malformed HTML like alt="text"width="100".
2065
-
2066
- - Table attributes now render correctly with proper spacing.
2067
-
2068
- Fixed missing space in table tag when id attribute
2069
- immediately follows (e.g., <tableid="..." now renders as
2070
- <table id="...").
2071
-
2072
- - Rowspan and colspan injection now works correctly in all
2073
-
2074
- cases. Fixed bug where table tracking variables weren't
2075
- set when fixing missing space in table tag (e.g.,
2076
- <tableid="..."), causing row and cell processing to be
2077
- skipped. Table tracking is now properly initialized even
2078
- when correcting tag spacing.
2079
-
2080
- - Captions after tables were not being detected when tables
2081
-
2082
- had IAL attributes, as IAL processing replaced the caption
2083
- data stored in user_data. Added fallback logic to check
2084
- for caption paragraphs directly in the AST when user_data
2085
- lookup fails.
2086
-
2087
- - Rows containing only `===` markers are now properly
2088
-
2089
- skipped entirely rather than rendering as empty cells in
2090
- tfoot sections.
2091
-
2092
- - Caption paragraphs before tables are now properly removed,
2093
-
2094
- ## [0.1.36] - 2025-12-16
2095
-
2096
- ### Fixed
2097
-
2098
- - Resolve CMake error when building framework where
2099
-
2100
- file(GLOB) returns multiple dylib files, causing
2101
- semicolon-concatenated paths in file(COPY) command. Now
2102
- extracts first file from glob result before copying.
2103
-
2104
- - Homebrew installation now correctly links to system
2105
-
2106
- libyaml instead of hardcoded CI path
2107
-
2108
- ## [0.1.35] - 2025-12-16
2109
-
2110
- ### Changed
2111
-
2112
- - Update Homebrew formula to install from a precompiled
2113
-
2114
- macOS universal binary instead of building from source
2115
- with cmake.
2116
-
2117
- - Allow --install-plugin to accept a Git URL or GitHub
2118
-
2119
- shorthand (user/repo) in addition to directory IDs when
2120
- installing plugins.
2121
-
2122
- ### Improved
2123
-
2124
- - Simplify Homebrew installation so users no longer need
2125
-
2126
- cmake or Xcode build tools to install apex.
2127
-
2128
- - Add an interactive security confirmation when installing
2129
-
2130
- plugins from a direct Git URL or GitHub repo name,
2131
- reminding users that plugins execute unverified code.
2132
-
2133
- ## [0.1.34] - 2025-12-16
2134
-
2135
- ## [0.1.33] - 2025-12-16
2136
-
2137
- ## [0.1.32] - 2025-12-16
2138
-
2139
- ## [0.1.31] - 2025-12-16
2140
-
2141
- ## [0.1.30] - 2025-12-16
2142
-
2143
- ### Changed
2144
-
2145
- - Make --list-plugins show installed plugins before remote
2146
-
2147
- ones.
2148
-
2149
- - Prevent remote plugins that are already installed from
2150
-
2151
- being listed under Available Plugins.
2152
-
2153
- - Build system now detects libyaml via multiple methods
2154
-
2155
- (yaml-0.1, yaml, libyaml) for better cross-platform
2156
- support.
2157
-
2158
- - Homebrew formula now includes libyaml as a dependency to
2159
-
2160
- ensure full YAML support.
2161
-
2162
- - Suppressed unused-parameter warnings from vendored
2163
-
2164
- cmark-gfm extensions to reduce build noise.
2165
-
2166
- ### New
2167
-
2168
- Add --uninstall-plugin CLI flag to remove installed plugins.
2169
-
2170
- - Run optional post_install command from plugin.yml after
2171
-
2172
- cloning a plugin.
2173
-
2174
- - Full YAML parsing support using libyaml for arrays and
2175
-
2176
- nested structures in metadata and plugin manifests.
2177
-
2178
- - Plugin bundle support allowing multiple plugins to be
2179
-
2180
- defined in a single plugin.yml manifest.
2181
-
2182
- - Expose APEX_FILE_PATH to external plugins so scripts can
2183
-
2184
- see the original input path or base directory when
2185
- processing.
2186
-
2187
- ### Improved
2188
-
2189
- - Split() metadata transform now accepts regular expressions
2190
-
2191
- as delimiters (for example split(,\s*)).
2192
-
2193
- - YAML arrays are automatically normalized to
2194
-
2195
- comma-separated strings for backward compatibility with
2196
- existing metadata transforms.
2197
-
2198
- - External plugin environment now includes the source file
2199
-
2200
- path (when available) alongside APEX_PLUGIN_DIR and
2201
- APEX_SUPPORT_DIR.
2202
-
2203
- ### Fixed
2204
-
2205
- - Tighten mutual-exclusion checks between install and
2206
-
2207
- uninstall plugin flags.
2208
-
2209
- - Ensure CMake policy version is compatible with vendored
2210
-
2211
- cmark-gfm on newer CMake releases.
2212
-
2213
- - Install the Apex framework with its public apex.h header
2214
-
2215
- correctly embedded in Apex.framework/Headers for Xcode
2216
- use.
2217
-
2218
- - Bundle libcmark-gfm and libcmark-gfm-extensions dylibs
2219
-
2220
- into Apex.framework so dependent apps no longer hit
2221
- missing library errors at runtime.
2222
-
2223
- ## [0.1.29] - 2025-12-15
2224
-
2225
- ### Changed
2226
-
2227
- - Make --list-plugins show installed plugins before remote
2228
-
2229
- ones.
2230
-
2231
- - Prevent remote plugins that are already installed from
2232
-
2233
- being listed under Available Plugins.
2234
-
2235
- ### New
2236
-
2237
- - Initial planning for a remote plugin directory and install
2238
-
2239
- features
2240
-
2241
- Add --uninstall-plugin CLI flag to remove installed plugins.
2242
-
2243
- ### Fixed
2244
-
2245
- - Superscript/subscript no longer process content inside
2246
-
2247
- Liquid {% %} tags.
2248
-
2249
- - Autolink detection skips Liquid {% %} tags so emails and
2250
-
2251
- URLs are not rewritten there.
2252
-
2253
- - Fix directory url for `--list-plugins`
2254
-
2255
- ## [0.1.28] - 2025-12-15
2256
-
2257
- ### Changed
2258
-
2259
- - Default wikilink URLs now replace spaces with dashes (e.g.
2260
-
2261
- [[Home Page]] -> href="Home-Page").
2262
-
2263
- ### New
2264
-
2265
- - Add --wikilink-space and --wikilink-extension flags to
2266
-
2267
- control how [[WikiLink]] hrefs are generated.
2268
-
2269
- - Allow wikilink space and extension configuration via
2270
-
2271
- metadata keys wikilink-space and wikilink-extension.
2272
-
2273
- - Support Kramdown-style {:toc ...} markers mapped to Apex
2274
-
2275
- TOC generation.
2276
-
2277
- - Add tests for `{:toc}` syntaxes
2278
- - MMD includes support full glob patterns like {{*.md}} and
2279
-
2280
- {{c?de.py}}.
2281
-
2282
- - Add plugin discovery from .apex/plugins and
2283
-
2284
- ~/.config/apex/plugins.
2285
-
2286
- - Allow external handler plugins in any language via JSON
2287
-
2288
- stdin/stdout.
2289
-
2290
- - Support declarative regex plugins for pre_parse and
2291
-
2292
- post_render phases.
2293
-
2294
- - Add `--no-plugins` CLI flag to disable all plugins for a
2295
-
2296
- run.
2297
-
2298
- - Support `plugins: true/false` metadata to enable or
2299
-
2300
- disable plugins.
2301
-
2302
- - Initial planning for a remote plugin directory and install
2303
-
2304
- features
2305
-
2306
- ### Improved
2307
-
2308
- - Exclude headings with .no_toc class from generated tables
2309
-
2310
- of contents for finer-grained TOC control.
2311
-
2312
- - MMD-style {{file.*}} now resolves preferred extensions
2313
-
2314
- before globbing.
2315
-
2316
- - Transclusion respects brace-style patterns such as
2317
-
2318
- {{{intro,part1}.md}} where supported.
2319
-
2320
- - Provide `APEX_PLUGIN_DIR` and `APEX_SUPPORT_DIR` for
2321
-
2322
- plugin code and data.
2323
-
2324
- - Add profiling (APEX_PROFILE_PLUGINS=1) for plugins
2325
-
2326
- ## [0.1.27] - 2025-12-15
2327
-
2328
- ### Changed
2329
-
2330
- - Default wikilink URLs now replace spaces with dashes (e.g.
2331
-
2332
- [[Home Page]] -> href="Home-Page").
2333
-
2334
- ### New
2335
-
2336
- - Add --wikilink-space and --wikilink-extension flags to
2337
-
2338
- control how [[WikiLink]] hrefs are generated.
2339
-
2340
- - Allow wikilink space and extension configuration via
2341
-
2342
- metadata keys wikilink-space and wikilink-extension.
2343
-
2344
- - Support Kramdown-style {:toc ...} markers mapped to Apex
2345
-
2346
- TOC generation.
2347
-
2348
- - Add tests for `{:toc}` syntaxes
2349
- - MMD includes support full glob patterns like {{*.md}} and
2350
-
2351
- {{c?de.py}}.
2352
-
2353
- - Add plugin discovery from .apex/plugins and
2354
-
2355
- ~/.config/apex/plugins.
2356
-
2357
- - Allow external handler plugins in any language via JSON
2358
-
2359
- stdin/stdout.
2360
-
2361
- - Support declarative regex plugins for pre_parse and
2362
-
2363
- post_render phases.
2364
-
2365
- - Add `--no-plugins` CLI flag to disable all plugins for a
2366
-
2367
- run.
2368
-
2369
- - Support `plugins: true/false` metadata to enable or
2370
-
2371
- disable plugins.
2372
-
2373
- - Initial planning for a remote plugin directory and install
2374
-
2375
- features
2376
-
2377
- ### Improved
2378
-
2379
- - Exclude headings with .no_toc class from generated tables
2380
-
2381
- of contents for finer-grained TOC control.
2382
-
2383
- - MMD-style {{file.*}} now resolves preferred extensions
2384
-
2385
- before globbing.
2386
-
2387
- - Transclusion respects brace-style patterns such as
2388
-
2389
- {{{intro,part1}.md}} where supported.
2390
-
2391
- - Provide `APEX_PLUGIN_DIR` and `APEX_SUPPORT_DIR` for
2392
-
2393
- plugin code and data.
2394
-
2395
- - Add profiling (APEX_PROFILE_PLUGINS=1) for plugins
2396
-
2397
- ## [0.1.26] - 2025-12-14
2398
-
2399
- ### Changed
2400
-
2401
- - Change `--enable-includes` to `--[no-]includes`, allowing
2402
-
2403
- `--no-includes` to disable includes in unified mode and
2404
- shortening the flag
2405
-
2406
- - Integrate metadata-to-options application into CLI after
2407
-
2408
- metadata merging
2409
-
2410
- - Preserve bibliography files array when metadata mode
2411
-
2412
- resets options structure
2413
-
2414
- ### New
2415
-
2416
- - Add apex_apply_metadata_to_options() function to apply
2417
-
2418
- metadata values to apex_options structure
2419
-
2420
- - Support controlling boolean flags via metadata (indices,
2421
-
2422
- wikilinks, includes, relaxed-tables, alpha-lists,
2423
- mixed-lists, sup-sub, autolink, transforms, unsafe,
2424
- tables, footnotes, smart, math, ids, header-anchors,
2425
- embed-images, link-citations, show-tooltips,
2426
- suppress-bibliography, suppress-index,
2427
- group-index-by-letter, obfuscate-emails, pretty,
2428
- standalone, hardbreaks)
2429
-
2430
- - Support controlling string options via metadata
2431
-
2432
- (bibliography, csl, title, style/css, id-format, base-dir,
2433
- mode)
2434
-
2435
- - Boolean metadata values accept true/false, yes/no, or 1/0
2436
-
2437
- (case-insensitive, downcased)
2438
-
2439
- - String metadata values used directly for options that take
2440
-
2441
- arguments
2442
-
2443
- - Metadata mode option resets options to mode defaults
2444
-
2445
- before applying other metadata
2446
-
2447
- - Comprehensive tests for metadata control of command line
2448
-
2449
- options
2450
-
2451
- ## [0.1.25] - 2025-12-13
2452
-
2453
- ### New
2454
-
2455
- - Add citation processing with support for Pandoc,
2456
-
2457
- MultiMarkdown, and mmark syntaxes
2458
-
2459
- - Add bibliography loading from BibTeX, CSL JSON, and CSL
2460
-
2461
- YAML formats
2462
-
2463
- - Add --bibliography CLI option to specify bibliography
2464
-
2465
- files (can be used multiple times)
2466
-
2467
- - Add --csl CLI option to specify citation style file
2468
- - Add --no-bibliography CLI option to suppress bibliography
2469
-
2470
- output
2471
-
2472
- - Add --link-citations CLI option to link citations to
2473
-
2474
- bibliography entries
2475
-
2476
- - Add --show-tooltips CLI option for citation tooltips
2477
- - Add bibliography generation and insertion at <!--
2478
-
2479
- REFERENCES --> marker
2480
-
2481
- Add support for bibliography specified in document metadata
2482
-
2483
- - Added missing docs and man page for citation support
2484
- - Add support for transclude base metadata to control file
2485
-
2486
- transclusion paths
2487
-
2488
- - Add Base Header Level and HTML Header Level metadata to
2489
-
2490
- adjust heading levels
2491
-
2492
- - Add CSS metadata to link external stylesheets in
2493
-
2494
- standalone HTML documents
2495
-
2496
- - Add HTML Header and HTML Footer metadata to inject custom
2497
-
2498
- HTML
2499
-
2500
- - Add Language metadata to set HTML lang attribute in
2501
-
2502
- standalone documents
2503
-
2504
- - Add Quotes Language metadata to control smart quote styles
2505
-
2506
- (French, German, Spanish, etc.)
2507
-
2508
- - Add --css CLI flag as alias for --style with metadata
2509
-
2510
- override precedence
2511
-
2512
- - Add metadata key normalization: case-insensitive matching
2513
-
2514
- with spaces removed (e.g., "HTML Header Level" matches
2515
- "htmlheaderlevel")
2516
-
2517
- - Add index extension supporting mmark syntax (!item),
2518
-
2519
- (!item, subitem), and (!!item, subitem) for primary
2520
- entries
2521
-
2522
- - Add TextIndex syntax support with {^}, [term]{^}, and
2523
-
2524
- {^params} patterns
2525
-
2526
- - Add automatic index generation at end of document or at
2527
-
2528
- <!--INDEX--> marker
2529
-
2530
- - Add alphabetical sorting and optional grouping by first
2531
-
2532
- letter for index entries
2533
-
2534
- - Add hierarchical sub-item support in generated index
2535
- - Add --indices CLI flag to enable index processing
2536
- - Add --no-indices CLI flag to disable index processing
2537
- - Add --no-index CLI flag to suppress index generation while
2538
-
2539
- keeping markers
2540
-
2541
- - Add comprehensive test suite with 40 index tests covering
2542
-
2543
- both syntaxes
2544
-
2545
- ### Improved
2546
-
2547
- - Only process citations when bibliography is actually
2548
-
2549
- provided for better performance
2550
-
2551
- - Add comprehensive tests for MultiMarkdown metadata keys
2552
- - Add comprehensive performance profiling system
2553
-
2554
- (APEX_PROFILE=1) to measure processing time for all
2555
- extensions and CLI operations
2556
-
2557
- - Add early exit checks for IAL processing when no {:
2558
-
2559
- markers are present
2560
-
2561
- - Add early exit checks for index processing when no index
2562
-
2563
- patterns are found
2564
-
2565
- - Add early exit checks for citation processing when no
2566
-
2567
- citation patterns are found
2568
-
2569
- - Add early exit checks for definition list processing when
2570
-
2571
- no : patterns are found
2572
-
2573
- - Optimize alpha lists postprocessing with single-pass
2574
-
2575
- algorithm replacing O(n*m) strstr() loops
2576
-
2577
- - Add early exit check for alpha lists postprocessing when
2578
-
2579
- no markers are present
2580
-
2581
- - Optimize file I/O by using fwrite() with known length
2582
-
2583
- instead of fputs()
2584
-
2585
- - Add markdown syntax detection in definition lists to skip
2586
-
2587
- parser creation for plain text
2588
-
2589
- - Optimize definition lists by selectively extracting only
2590
-
2591
- needed reference definitions instead of prepending all
2592
-
2593
- - Add profiling instrumentation for all preprocessing,
2594
-
2595
- parsing, rendering, and post-processing steps
2596
-
2597
- - Add profiling instrumentation for CLI operations (file
2598
-
2599
- I/O, metadata processing)
2600
-
2601
- ### Fixed
2602
-
2603
- - Prevent autolinking of @ symbols in citation syntax (e.g.,
2604
-
2605
- [@key])
2606
-
2607
- - Handle HTML comments in autolinker to preserve citation
2608
-
2609
- placeholders
2610
-
2611
- - Fix quote language adjustment to handle Unicode curly
2612
-
2613
- quotes in addition to HTML entities
2614
-
2615
- Fix bibliography_files assignment to remove unnecessary cast
2616
-
2617
- - Fix heap-buffer-overflow in html_renderer.c when writing
2618
-
2619
- null terminator (allocate capacity+1)
2620
-
2621
- - Fix use-after-free in ial.c by deferring node unlinking
2622
-
2623
- until after iteration completes
2624
-
2625
- - Fix buffer overflow in definition_list.c HTML entity
2626
-
2627
- escaping (correct length calculation for &amp; and &quot;)
2628
-
2629
- ## [0.1.24] - 2025-12-13
2630
-
2631
- ### New
2632
-
2633
- - Add citation processing with support for Pandoc,
2634
-
2635
- MultiMarkdown, and mmark syntaxes
2636
-
2637
- - Add bibliography loading from BibTeX, CSL JSON, and CSL
2638
-
2639
- YAML formats
2640
-
2641
- - Add --bibliography CLI option to specify bibliography
2642
-
2643
- files (can be used multiple times)
2644
-
2645
- - Add --csl CLI option to specify citation style file
2646
- - Add --no-bibliography CLI option to suppress bibliography
2647
-
2648
- output
2649
-
2650
- - Add --link-citations CLI option to link citations to
2651
-
2652
- bibliography entries
2653
-
2654
- - Add --show-tooltips CLI option for citation tooltips
2655
- - Add bibliography generation and insertion at <!--
2656
-
2657
- REFERENCES --> marker
2658
-
2659
- Add support for bibliography specified in document metadata
2660
-
2661
- ### Improved
2662
-
2663
- - Only process citations when bibliography is actually
2664
-
2665
- provided for better performance
2666
-
2667
- ### Fixed
2668
-
2669
- - Raw HTML tags and comments are now preserved in definition
2670
-
2671
- lists by default in unified mode. Previously, HTML content
2672
- in definition list definitions was being replaced with
2673
- "raw HTML omitted" even when using --unsafe or in unified
2674
- mode.
2675
-
2676
- - Unified mode now explicitly sets unsafe=true by default to
2677
-
2678
- ensure raw HTML is allowed.
2679
-
2680
- - Prevent autolinking of @ symbols in citation syntax (e.g.,
2681
-
2682
- [@key])
2683
-
2684
- - Handle HTML comments in autolinker to preserve citation
2685
-
2686
- placeholders
2687
-
2688
- ## [0.1.23] - 2025-12-12
2689
-
2690
- ### Changed
2691
-
2692
- - Remove remote image embedding support (curl dependency
2693
-
2694
- removed)
2695
-
2696
- ### New
2697
-
2698
- - Add metadata variable transforms with [%key:transform]
2699
-
2700
- syntax
2701
-
2702
- - Add --transforms and --no-transforms flags to
2703
-
2704
- enable/disable transforms
2705
-
2706
- - Add 19 text transforms: upper, lower, title, capitalize,
2707
-
2708
- trim, slug, replace (with regex support), substring,
2709
- truncate, default, html_escape, basename, urlencode,
2710
- urldecode, prefix, suffix, remove, repeat, reverse,
2711
- format, length, pad, contains
2712
-
2713
- - Add array transforms: split, join, first, last, slice
2714
- - Add date/time transform: strftime with date parsing
2715
- - Add transform chaining support (multiple transforms
2716
-
2717
- separated by colons)
2718
-
2719
- - Add --meta-file flag to load metadata from external files
2720
-
2721
- (YAML, MMD, or Pandoc format, auto-detected)
2722
-
2723
- - Add --meta KEY=VALUE flag to set metadata from command
2724
-
2725
- line (supports multiple flags and comma-separated pairs)
2726
-
2727
- - Add metadata merging with proper precedence: command-line
2728
- > document > file
2729
- - Add --embed-images flag to embed local images as base64
2730
-
2731
- data URLs in HTML output
2732
-
2733
- - Add --base-dir flag to set base directory for resolving
2734
-
2735
- relative paths (images, includes, wiki links)
2736
-
2737
- - Add automatic base directory detection from input file
2738
-
2739
- directory when reading from file
2740
-
2741
- - Add base64 encoding utility for image data
2742
- - Add MIME type detection from file extensions (supports
2743
-
2744
- jpg, png, gif, webp, svg, bmp, ico)
2745
-
2746
- - Add image embedding function that processes HTML and
2747
-
2748
- replaces local image src attributes with data URLs
2749
-
2750
- - Add test suite for image embedding functionality
2751
-
2752
- ### Improved
2753
-
2754
- - Wiki link scanner now processes all links in a text node
2755
-
2756
- in a single pass instead of recursively processing one at
2757
- a time, significantly improving performance for documents
2758
- with multiple wiki links per text node.
2759
-
2760
- - Added early-exit optimization to skip wiki link AST
2761
-
2762
- traversal entirely when no wiki link markers are present
2763
- in the document.
2764
-
2765
- - Improve error handling in transform execution to return
2766
-
2767
- original value instead of NULL on failure
2768
-
2769
- - Add comprehensive test coverage for all transforms
2770
-
2771
- including edge cases
2772
-
2773
- - Relative path resolution for images now uses
2774
-
2775
- base_directory option
2776
-
2777
- - Base directory is automatically set from input file
2778
-
2779
- location when not specified
2780
-
2781
- ### Fixed
2782
-
2783
- - Fix bracket handling in regex patterns - properly match
2784
-
2785
- closing brackets in [%...] syntax when patterns contain
2786
- brackets
2787
-
2788
- - Fix YAML metadata parsing to strip quotes from quoted
2789
-
2790
- string values
2791
-
2792
- - Raw HTML tags and comments are now preserved in definition
2793
-
2794
- lists by default in unified mode. Previously, HTML content
2795
- in definition list definitions was being replaced with
2796
- "raw HTML omitted" even when using --unsafe or in unified
2797
- mode.
2798
-
2799
- - Unified mode now explicitly sets unsafe=true by default to
2800
-
2801
- ensure raw HTML is allowed.
2802
-
2803
- ## [0.1.20] - 2025-12-11
2804
-
2805
- #### NEW
2806
-
2807
- - Added man page generation and installation support. Man
2808
-
2809
- pages can be generated from Markdown source using pandoc
2810
- or go-md2man, with pre-generated man pages included in the
2811
- repository as fallback. CMake build system now handles man
2812
- page installation, and Homebrew formula installs the man
2813
- page.
2814
-
2815
- - Added comprehensive test suite for MMD 6 features
2816
-
2817
- including multi-line setext headers and link/image titles
2818
- with different quote styles (single quotes, double quotes,
2819
- parentheses). Tests verify these features work in both
2820
- MultiMarkdown and unified modes.
2821
-
2822
- - Added build-test man_page_copy target for man page
2823
-
2824
- installation.
2825
-
2826
- - Added --obfuscate-emails flag to hex-encode mailto links.
2827
-
2828
- #### IMPROVED
2829
-
2830
- - Superscript processing now stops at sentence terminators
2831
-
2832
- (. , ; : ! ?) instead of including them in the superscript
2833
- content. This prevents punctuation from being incorrectly
2834
- included in superscripts.
2835
-
2836
- - Enhanced subscript and underline detection logic. The
2837
-
2838
- processor now correctly differentiates between subscript
2839
- (tildes within a word, e.g., H~2~O) and underline (tildes
2840
- at word boundaries, e.g., ~text~) by checking if tildes
2841
- are within alphanumeric words or at word boundaries.
2842
-
2843
- - Expanded test coverage for superscript, subscript,
2844
-
2845
- underline, strikethrough, and highlight features with
2846
- additional edge case tests.
2847
-
2848
- - Email autolink detection trims trailing punctuation.
2849
-
2850
- #### FIXED
2851
-
2852
- - Autolink now only wraps real URLs/emails instead of every
2853
-
2854
- word.
2855
-
2856
- Email autolinks now use mailto: hrefs instead of bare text.
2857
-
2858
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2859
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2860
-
2861
- ## [0.1.19] - 2025-12-09
2862
-
2863
- #### CHANGED
2864
-
2865
- - HTML comments now replaced with "raw HTML omitted" in
2866
-
2867
- CommonMark and GFM modes by default
2868
-
2869
- - Added enable_sup_sub flag to apex_options struct
2870
- - Updated mode configurations to enable sup/sub in
2871
-
2872
- appropriate modes
2873
-
2874
- - Added sup_sub.c to CMakeLists.txt build configuration
2875
- - Removed unused variables to resolve compiler warnings
2876
- - Tag filter (GFM security feature) now only applies in GFM
2877
-
2878
- mode, not Unified mode, allowing raw HTML and autolinks in
2879
- Unified mode as intended.
2880
-
2881
- - Autolink extension registration now respects the
2882
-
2883
- enable_autolink option flag.
2884
-
2885
- #### NEW
2886
-
2887
- - Added MultiMarkdown-style superscript (^text^) and
2888
-
2889
- subscript (~text~) syntax support
2890
-
2891
- - Added --[no-]sup-sub command-line option to enable/disable
2892
-
2893
- superscript/subscript
2894
-
2895
- - Superscript/subscript enabled by default in unified and
2896
-
2897
- MultiMarkdown modes
2898
-
2899
- - Created sup_sub extension (sup_sub.c and sup_sub.h) for
2900
-
2901
- processing ^ and ~ syntax
2902
-
2903
- - Added --[no-]unsafe command-line option to control raw
2904
-
2905
- HTML handling
2906
-
2907
- - Added test_sup_sub() function with 13 tests covering
2908
-
2909
- superscript and
2910
-
2911
- - Added test_mixed_lists() function with 10 tests covering
2912
-
2913
- mixed list
2914
-
2915
- - Added test_unsafe_mode() function with 8 tests covering
2916
-
2917
- raw HTML
2918
-
2919
- - Added preprocessing for angle-bracket autolinks
2920
-
2921
- (<http://...>) to convert them to explicit markdown links,
2922
- ensuring they work correctly with custom rendering paths.
2923
-
2924
- - Added --[no-]autolink CLI option to control automatic
2925
-
2926
- linking of URLs and email addresses. Autolinking is
2927
- enabled by default in GFM, MultiMarkdown, Kramdown, and
2928
- unified modes, and disabled in CommonMark mode.
2929
-
2930
- - Added enable_autolink field to apex_options structure to
2931
-
2932
- control autolink behavior programmatically.
2933
-
2934
- - Added underline syntax support: ~text~ now renders as
2935
-
2936
- <u>text</u> when there's a closing ~ with no space before
2937
- it.
2938
-
2939
- #### IMPROVED
2940
-
2941
- - Test suite now includes 36 additional tests, increasing
2942
-
2943
- total test
2944
-
2945
- - Autolink preprocessing now skips processing inside code
2946
-
2947
- spans (`...`) and code blocks (```...```), preventing URLs
2948
- from being converted to links when they appear in code
2949
- examples.
2950
-
2951
- - Metadata replacement retains HTML edge-case handling and
2952
-
2953
- properly cleans up intermediate buffers.
2954
-
2955
- #### FIXED
2956
-
2957
- - Unified mode now correctly enables mixed list markers and
2958
-
2959
- alpha lists by default when no --mode is specified
2960
-
2961
- - ^ marker now properly separates lists by creating a
2962
-
2963
- paragraph break instead of just blank lines
2964
-
2965
- - Empty paragraphs created by ^ marker are now removed from
2966
-
2967
- final HTML output
2968
-
2969
- - Superscript and subscript processing now skips ^ and ~
2970
-
2971
- characters
2972
-
2973
- - Superscript processing now skips ^ when part of footnote
2974
-
2975
- reference
2976
-
2977
- - Subscript processing now skips ~ when part of critic
2978
-
2979
- markup patterns
2980
-
2981
- - Setext headers are no longer broken when followed by
2982
-
2983
- highlight syntax (==text==). Highlight processing now
2984
- stops at line breaks to prevent interference with header
2985
- parsing.
2986
-
2987
- - Metadata parser no longer incorrectly treats URLs and
2988
-
2989
- angle-bracket autolinks as metadata. Lines containing < or
2990
- URLs (http://, https://, mailto:) are now skipped during
2991
- metadata extraction.
2992
-
2993
- - Superscript/subscript processor now correctly
2994
-
2995
- differentiates between ~text~ (underline), ~word
2996
- (subscript), and ~~text~~ (strikethrough). Double-tilde
2997
- sequences are skipped so strikethrough extension can
2998
- handle them.
2999
-
3000
- - Subscript processing now stops at sentence terminators (.
3001
-
3002
- , ; : ! ?) instead of including them in the subscript
3003
- content.
3004
-
3005
- - Metadata variable replacement now runs before autolinking
3006
-
3007
- so [%key] values containing URLs are turned into links
3008
- when autolinking is enabled.
3009
-
3010
- - MMD metadata parsing no longer incorrectly rejects entries
3011
-
3012
- with URL values; only URL-like keys or '<' characters in
3013
- keys are rejected, allowing "URL: https://example.com" as
3014
- valid metadata.
3015
-
3016
- Headers starting with `#` are now correctly recognized instead of being treated as autolinks. The autolink preprocessor now skips `#` at the start of a line when followed by whitespace.
3017
-
3018
- Math processor now validates that `\(...\)` sequences contain actual math content (letters, numbers, or operators) before processing them. This prevents false positives like `\(%\)` from being treated as math when they only contain special characters.
3019
-
3020
- ## [0.1.18] - 2025-12-06
3021
-
3022
- ### Fixed
3023
- - GitHub Actions workflow now properly builds separate Linux
3024
-
3025
- x86_64 and ARM64 binaries
3026
-
3027
- ## [0.1.17] - 2025-12-06
3028
-
3029
- ### Fixed
3030
- - Relaxed tables now disabled by default for CommonMark,
3031
-
3032
- GFM, and MultiMarkdown modes (only enabled for Kramdown
3033
- and Unified modes)
3034
-
3035
- - Header ID extraction no longer incorrectly parses metadata
3036
-
3037
- variables like `[%title]` as MMD-style header IDs
3038
-
3039
- - Tables with alignment/separator rows now correctly
3040
-
3041
- generate `<thead>` even when relaxed table mode is enabled
3042
-
3043
- - Relaxed tables preprocessor preserves input newline
3044
-
3045
- behavior in output
3046
-
3047
- - Memory management bug in IAL preprocessing removed
3048
-
3049
- unnecessary free call
3050
-
3051
- ## [0.1.16] - 2025-12-06
3052
-
3053
- ### Fixed
3054
- - IAL (Inline Attribute List) markers appearing immediately
3055
-
3056
- after content without a blank line are now correctly
3057
- parsed
3058
-
3059
- Added `apex_preprocess_ial()` function to ensure Kramdown-style IAL syntax works correctly with cmark-gfm parser
3060
-
3061
- ## [0.1.15] - 2025-12-06
3062
-
3063
- ### Fixed
3064
- - Homebrew formula updated with correct version and commit
3065
-
3066
- hash
3067
-
3068
- ## [0.1.10] - 2025-12-06
3069
-
3070
- ### Changed
3071
- - License changed to MIT
3072
-
3073
- ### Added
3074
- - Homebrew formula update scripts
3075
-
3076
- ## [0.1.9] - 2025-12-06
3077
-
3078
- ### Fixed
3079
- - Shell syntax in Linux checksum step for GitHub Actions
3080
-
3081
- ## [0.1.8] - 2025-12-06
3082
-
3083
- ### Fixed
3084
- - Link order for Linux static builds
3085
-
3086
- ## [0.1.7] - 2025-12-06
3087
-
3088
- ### Fixed
3089
- - Added write permissions for GitHub releases
3090
-
3091
- ## [0.1.6] - 2025-12-06
3092
-
3093
- ### Fixed
3094
- `.gitignore` pattern fixed to properly include apex headers (was incorrectly matching `include/apex/`)
3095
-
3096
- ## [0.1.5] - 2025-12-06
3097
-
3098
- ### Changed
3099
- - Added verbose build output for CI debugging
3100
-
3101
- ## [0.1.4] - 2025-12-06
3102
-
3103
- ### Fixed
3104
- - CMake build rules updated
3105
-
3106
- ## [0.1.3] - 2025-12-06
3107
-
3108
- ### Fixed
3109
- - CMake policy version for cmark-gfm compatibility
3110
-
3111
- ## [0.1.2] - 2025-12-06
3112
-
3113
- ### Fixed
3114
- - GitHub Actions workflow fixes
3115
-
3116
- ## [0.1.1] - 2025-12-04
3117
-
3118
- ### Added
3119
- - CMake setup documentation
3120
-
3121
- ## [0.1.0] - 2025-12-04
3122
-
3123
- ### Added
3124
-
3125
- **Core Features:**
3126
-
3127
- - Initial release of Apex unified Markdown processor
3128
- - Based on cmark-gfm for CommonMark + GFM support
3129
- - Support for 5 processor modes: CommonMark, GFM,
3130
-
3131
- MultiMarkdown, Kramdown, Unified
3132
-
3133
- **Metadata:**
3134
-
3135
- - YAML front matter parsing
3136
- - MultiMarkdown metadata format
3137
- - Pandoc title block format
3138
- - Metadata variable replacement with `[%key]` syntax
3139
-
3140
- **Extended Syntax:**
3141
-
3142
- - Wiki-style links: `[[Page]]`, `[[Page|Display]]`,
3143
-
3144
- `[[Page#Section]]`
3145
-
3146
- - Math support: `$inline$` and `$$display$$` with LaTeX
3147
- - Critic Markup: All 5 types ({++add++}, {--del--},
3148
-
3149
- {~~sub~~}, {==mark==}, {>>comment<<})
3150
-
3151
- - GFM tables, strikethrough, task lists, autolinks
3152
- - Reference-style footnotes
3153
- - Smart typography (smart quotes, dashes, ellipsis)
3154
-
3155
- **Build System:**
3156
-
3157
- - CMake build system for cross-platform support
3158
- - Builds shared library, static library, CLI binary, and
3159
-
3160
- macOS framework
3161
-
3162
- - Clean compilation on macOS with Apple Clang
3163
-
3164
- **CLI Tool:**
3165
-
3166
- - `apex` command-line binary
3167
- - Support for all processor modes via `--mode` flag
3168
- - Stdin/stdout support for Unix pipes
3169
- - Comprehensive help and version information
3170
-
3171
- **Integration:**
3172
-
3173
- Objective-C wrapper (`NSString+Apex`) for Marked integration
3174
-
3175
- - macOS framework with proper exports
3176
- - Detailed integration documentation and examples
3177
-
3178
- **Testing:**
3179
-
3180
- - Automated test suite with 31 tests
3181
- - 90% pass rate across all feature areas
3182
- - Manual testing validated
3183
-
3184
- **Documentation:**
3185
-
3186
- - Comprehensive user guide
3187
- - Complete API reference
3188
- - Architecture documentation
3189
- - Integration guides
3190
- - Code examples
3191
-
3192
- ### Known Issues
3193
-
3194
- - Critic Markup substitutions have edge cases with certain
3195
-
3196
- inputs
3197
-
3198
- - Definition lists not yet implemented
3199
- - Kramdown attributes not yet implemented
3200
- - Inline footnotes not yet implemented
3201
-
3202
- ### Performance
3203
-
3204
- - Small documents (< 10KB): < 10ms
3205
- - Medium documents (< 100KB): < 100ms
3206
- - Large documents (< 1MB): < 1s
3207
-
3208
- ### Credits
3209
-
3210
- Based on [cmark-gfm](https://github.com/github/cmark-gfm) by GitHub
3211
-
3212
- Developed for [Marked](https://marked2app.com) by Brett Terpstra
3213
-
3214
- [1.1.20]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.20
3215
- [1.1.19]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.19
3216
- [1.1.18]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.18
3217
- [1.1.17]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.17
3218
- [1.1.16]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.16
3219
- [1.1.15]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.15
3220
- [1.1.14]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.14
3221
- [1.1.13]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.13
3222
- [1.1.12]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.12
3223
- [1.1.11]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.11
3224
- [1.1.10]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.10
3225
- [1.1.9]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.9
3226
- [1.1.8]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.8
3227
- [1.1.7]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.7
3228
- [1.1.6]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.6
3229
- [1.1.5]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.5
3230
- [1.1.4]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.4
3231
- [1.1.3]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.3
3232
- [1.1.2]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.2
3233
- [1.1.1]: https://github.com/ApexMarkdown/apex/releases/tag/v1.1.1
3234
- [1.0.15]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.15
3235
- [1.0.14]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.14
3236
- [1.0.13]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.13
3237
- [1.0.12]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.12
3238
- [1.0.11]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.11
3239
- [1.0.10]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.10
3240
- [1.0.9]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.9
3241
- [1.0.8]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.8
3242
- [1.0.7]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.7
3243
- [1.0.6]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.6
3244
- [1.0.5]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.5
3245
- [1.0.4]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.4
3246
- [1.0.3]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.3
3247
- [1.0.2]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.2
3248
- [1.0.1]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.1
3249
- [0.1.104]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.104
3250
- [0.1.103]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.103
3251
- [0.1.102]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.102
3252
- [0.1.100]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.100
3253
- [0.1.98]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.98
3254
- [0.1.97]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.97
3255
- [0.1.96]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.96
3256
- [0.1.95]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.95
3257
- [0.1.94]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.94
3258
- [0.1.93]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.93
3259
- [0.1.92]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.92
3260
- [0.1.91]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.91
3261
- [0.1.90]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.90
3262
- [0.1.89]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.89
3263
- [0.1.88]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.88
3264
- [0.1.87]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.87
3265
- [0.1.86]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.86
3266
- [0.1.85]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.85
3267
- [0.1.84]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.84
3268
- [0.1.83]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.83
3269
- [0.1.82]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.82
3270
- [0.1.81]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.81
3271
- [0.1.80]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.80
3272
- [0.1.79]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.79
3273
- [0.1.78]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.78
3274
- [0.1.77]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.77
3275
- [0.1.76]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.76
3276
- [0.1.75]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.75
3277
- [0.1.74]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.74
3278
- [0.1.73]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.73
3279
- [0.1.72]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.72
3280
- [0.1.71]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.71
3281
- [0.1.70]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.70
3282
- [0.1.69]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.69
3283
- [0.1.68]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.68
3284
- [0.1.67]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.67
3285
- [0.1.66]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.66
3286
- [0.1.65]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.65
3287
- [0.1.64]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.64
3288
- [0.1.63]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.63
3289
- [0.1.62]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.62
3290
- [0.1.61]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.61
3291
- [0.1.60]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.60
3292
- [0.1.59]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.59
3293
- [0.1.58]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.58
3294
- [0.1.57]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.57
3295
- [0.1.56]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.56
3296
- [0.1.55]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.55
3297
- [0.1.54]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.54
3298
- [0.1.53]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.53
3299
- [0.1.52]: https://github.com/ttscoff/apex/releases/tag/v0.1.52
3300
- [0.1.51]: https://github.com/ttscoff/apex/releases/tag/v0.1.51
3301
- [0.1.50]: https://github.com/ttscoff/apex/releases/tag/v0.1.50
3302
- [0.1.49]: https://github.com/ttscoff/apex/releases/tag/v0.1.49
3303
- [0.1.48]: https://github.com/ttscoff/apex/releases/tag/v0.1.48
3304
- [0.1.47]: https://github.com/ttscoff/apex/releases/tag/v0.1.47
3305
- [0.1.46]: https://github.com/ttscoff/apex/releases/tag/v0.1.46
3306
- [0.1.45]: https://github.com/ttscoff/apex/releases/tag/v0.1.45
3307
- [0.1.44]: https://github.com/ttscoff/apex/releases/tag/v0.1.44
3308
- [0.1.43]:
3309
- https://github.com/ttscoff/apex/releases/tag/v0.1.43
3310
- [0.1.42]:
3311
- https://github.com/ttscoff/apex/releases/tag/v0.1.42
3312
- [0.1.41]:
3313
- https://github.com/ttscoff/apex/releases/tag/v0.1.41
3314
- [0.1.40]:
3315
- https://github.com/ttscoff/apex/releases/tag/v0.1.40
3316
- [0.1.39]:
3317
- https://github.com/ttscoff/apex/releases/tag/v0.1.39
3318
- [0.1.38]:
3319
- https://github.com/ttscoff/apex/releases/tag/v0.1.38
3320
- [0.1.37]:
3321
- https://github.com/ttscoff/apex/releases/tag/v0.1.37
3322
- [0.1.36]:
3323
- https://github.com/ttscoff/apex/releases/tag/v0.1.36
3324
- [0.1.35]:
3325
- https://github.com/ttscoff/apex/releases/tag/v0.1.35
3326
- [0.1.34]:
3327
- https://github.com/ttscoff/apex/releases/tag/v0.1.34
3328
- [0.1.33]:
3329
- https://github.com/ttscoff/apex/releases/tag/v0.1.33
3330
- [0.1.32]:
3331
- https://github.com/ttscoff/apex/releases/tag/v0.1.32
3332
- [0.1.31]:
3333
- https://github.com/ttscoff/apex/releases/tag/v0.1.31
3334
- [0.1.30]:
3335
- https://github.com/ttscoff/apex/releases/tag/v0.1.30
3336
- [0.1.29]:
3337
- https://github.com/ttscoff/apex/releases/tag/v0.1.29
3338
- [0.1.28]:
3339
- https://github.com/ttscoff/apex/releases/tag/v0.1.28
3340
- [0.1.27]:
3341
- https://github.com/ttscoff/apex/releases/tag/v0.1.27
3342
- [0.1.26]:
3343
- https://github.com/ttscoff/apex/releases/tag/v0.1.26
3344
- [0.1.25]:
3345
- https://github.com/ttscoff/apex/releases/tag/v0.1.25
3346
- [0.1.24]:
3347
- https://github.com/ttscoff/apex/releases/tag/v0.1.24
3348
- [0.1.23]:
3349
- https://github.com/ttscoff/apex/releases/tag/v0.1.23
3350
- [0.1.20]:
3351
- https://github.com/ttscoff/apex/releases/tag/v0.1.20
3352
- [0.1.19]:
3353
- https://github.com/ttscoff/apex/releases/tag/v0.1.19
3354
- [0.1.18]:
3355
- https://github.com/ttscoff/apex/releases/tag/v0.1.18
3356
- [0.1.17]:
3357
- https://github.com/ttscoff/apex/releases/tag/v0.1.17
3358
- [0.1.16]:
3359
- https://github.com/ttscoff/apex/releases/tag/v0.1.16
3360
- [0.1.15]:
3361
- https://github.com/ttscoff/apex/releases/tag/v0.1.15
3362
- [0.1.10]:
3363
- https://github.com/ttscoff/apex/releases/tag/v0.1.10
3364
- [0.1.9]: https://github.com/ttscoff/apex/releases/tag/v0.1.9
3365
- [0.1.8]: https://github.com/ttscoff/apex/releases/tag/v0.1.8
3366
- [0.1.7]: https://github.com/ttscoff/apex/releases/tag/v0.1.7
3367
- [0.1.6]: https://github.com/ttscoff/apex/releases/tag/v0.1.6
3368
- [0.1.5]: https://github.com/ttscoff/apex/releases/tag/v0.1.5
3369
- [0.1.4]: https://github.com/ttscoff/apex/releases/tag/v0.1.4
3370
- [0.1.3]: https://github.com/ttscoff/apex/releases/tag/v0.1.3
3371
- [0.1.2]: https://github.com/ttscoff/apex/releases/tag/v0.1.2
3372
- [0.1.1]: https://github.com/ttscoff/apex/releases/tag/v0.1.1
3373
- [0.1.0]: https://github.com/ttscoff/apex/releases/tag/v0.1.0