apex-ruby 1.0.17 → 1.0.20

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 (207) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -3
  3. data/ext/apex_ext/apex_ext.c +260 -91
  4. data/ext/apex_ext/apex_src/CHANGELOG.md +440 -0
  5. data/ext/apex_ext/apex_src/CMakeLists.txt +15 -1
  6. data/ext/apex_ext/apex_src/Formula/apex.rb +7 -2
  7. data/ext/apex_ext/apex_src/Package.swift +15 -4
  8. data/ext/apex_ext/apex_src/README.md +94 -35
  9. data/ext/apex_ext/apex_src/VERSION +1 -1
  10. data/ext/apex_ext/apex_src/apex-debug.log +4 -0
  11. data/ext/apex_ext/apex_src/apex.code-workspace +38 -0
  12. data/ext/apex_ext/apex_src/apex.taskpaper +12 -0
  13. data/ext/apex_ext/apex_src/apex_deflist_debug.log +25 -0
  14. data/ext/apex_ext/apex_src/buildnotes.md +1435 -0
  15. data/ext/apex_ext/apex_src/cli/main.c +262 -33
  16. data/ext/apex_ext/apex_src/debug.log +7 -0
  17. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +274 -0
  18. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +749 -0
  19. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +744 -0
  20. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +382 -0
  21. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +351 -0
  22. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +745 -0
  23. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +829 -0
  24. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +1148 -0
  25. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +161 -0
  26. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +184 -0
  27. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +211 -0
  28. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +67 -0
  29. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +340 -0
  30. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +11 -0
  31. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +234 -0
  32. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +516 -0
  33. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +461 -0
  34. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +193 -0
  35. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +201 -0
  36. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +678 -0
  37. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +1367 -0
  38. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +6 -0
  39. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +774 -300
  40. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +1194 -0
  41. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +416 -216
  42. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +3544 -1094
  43. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +371 -97
  44. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +153 -23
  45. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +358 -124
  46. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +1656 -0
  47. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +1226 -0
  48. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +201 -56
  49. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +279 -109
  50. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +200 -53
  51. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +2327 -0
  52. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +690 -271
  53. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +201 -55
  54. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +238 -68
  55. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +421 -221
  56. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +340 -78
  57. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +251 -86
  58. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +1362 -0
  59. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +277 -90
  60. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +673 -346
  61. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +1405 -0
  62. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +1902 -0
  63. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +1939 -1698
  64. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +1781 -0
  65. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +315 -140
  66. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +307 -113
  67. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +1132 -0
  68. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +1754 -0
  69. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +872 -376
  70. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  71. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  72. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +8746 -0
  73. data/ext/apex_ext/apex_src/documentation/shared_styles.css +20 -15
  74. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +55 -0
  75. data/ext/apex_ext/apex_src/escaping-repro.md +103 -0
  76. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +8 -0
  77. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  78. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +547 -0
  79. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  80. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +33 -0
  81. data/ext/apex_ext/apex_src/include/apex/apex.h +92 -6
  82. data/ext/apex_ext/apex_src/include/apex/ast_rtf.h +23 -0
  83. data/ext/apex_ext/apex_src/include/apex/ast_terminal.h +6 -0
  84. data/ext/apex_ext/apex_src/include/apex/module.modulemap +5 -0
  85. data/ext/apex_ext/apex_src/include/apex/plugins.h +105 -0
  86. data/ext/apex_ext/apex_src/include/apexc.h +1 -0
  87. data/ext/apex_ext/apex_src/man/apex.1 +82 -78
  88. data/ext/apex_ext/apex_src/man/apex.1.md +81 -4
  89. data/ext/apex_ext/apex_src/objc/Apex.swift +73 -0
  90. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +79 -0
  91. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +83 -5
  92. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +244 -1
  93. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +76 -0
  94. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +169 -0
  95. data/ext/apex_ext/apex_src/output.html +87 -0
  96. data/ext/apex_ext/apex_src/plans/quarto-mode.md +442 -0
  97. data/ext/apex_ext/apex_src/src/_README.md +85 -32
  98. data/ext/apex_ext/apex_src/src/apex.c +770 -200
  99. data/ext/apex_ext/apex_src/src/ast_rtf.c +848 -0
  100. data/ext/apex_ext/apex_src/src/ast_terminal.c +184 -7
  101. data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +10 -3
  102. data/ext/apex_ext/apex_src/src/extensions/advanced_tables.c +7 -11
  103. data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.c +467 -0
  104. data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.h +27 -0
  105. data/ext/apex_ext/apex_src/src/extensions/callouts.c +400 -4
  106. data/ext/apex_ext/apex_src/src/extensions/callouts.h +15 -5
  107. data/ext/apex_ext/apex_src/src/extensions/citations.c +26 -5
  108. data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.c +632 -0
  109. data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.h +22 -0
  110. data/ext/apex_ext/apex_src/src/extensions/concordance.c +632 -0
  111. data/ext/apex_ext/apex_src/src/extensions/definition_list.c +129 -15
  112. data/ext/apex_ext/apex_src/src/extensions/grid_tables.c +1050 -121
  113. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +569 -16
  114. data/ext/apex_ext/apex_src/src/extensions/ial.c +502 -52
  115. data/ext/apex_ext/apex_src/src/extensions/ial.h +2 -1
  116. data/ext/apex_ext/apex_src/src/extensions/includes.c +532 -33
  117. data/ext/apex_ext/apex_src/src/extensions/includes.h +7 -1
  118. data/ext/apex_ext/apex_src/src/extensions/index.c +1427 -140
  119. data/ext/apex_ext/apex_src/src/extensions/index.h +28 -0
  120. data/ext/apex_ext/apex_src/src/extensions/metadata.c +200 -161
  121. data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.c +251 -0
  122. data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.h +22 -0
  123. data/ext/apex_ext/apex_src/src/extensions/quarto_lists.c +624 -0
  124. data/ext/apex_ext/apex_src/src/extensions/quarto_lists.h +35 -0
  125. data/ext/apex_ext/apex_src/src/extensions/quarto_polish.c +264 -0
  126. data/ext/apex_ext/apex_src/src/extensions/quarto_polish.h +23 -0
  127. data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.c +307 -0
  128. data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.h +21 -0
  129. data/ext/apex_ext/apex_src/src/extensions/raw_content.c +351 -0
  130. data/ext/apex_ext/apex_src/src/extensions/raw_content.h +20 -0
  131. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +117 -3
  132. data/ext/apex_ext/apex_src/src/extensions/special_markers.c +53 -0
  133. data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +23 -1
  134. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +83 -92
  135. data/ext/apex_ext/apex_src/src/extensions/toc.c +446 -25
  136. data/ext/apex_ext/apex_src/src/extensions/toc.h +26 -1
  137. data/ext/apex_ext/apex_src/src/extensions/wiki_links.c +28 -0
  138. data/ext/apex_ext/apex_src/src/html_renderer.c +387 -17
  139. data/ext/apex_ext/apex_src/src/plugin_catalog.c +517 -0
  140. data/ext/apex_ext/apex_src/src/plugins_remote.c +88 -14
  141. data/ext/apex_ext/apex_src/src/plugins_remote.h +34 -0
  142. data/ext/apex_ext/apex_src/src/pretty_html.c +6 -1
  143. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +21 -0
  144. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +10 -0
  145. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +19 -0
  146. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +11 -0
  147. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +2 -0
  148. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +46 -0
  149. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +5 -0
  150. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +47 -0
  151. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +3 -0
  152. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +3 -0
  153. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +8 -0
  154. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +19 -0
  155. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +5 -0
  156. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +7 -0
  157. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +81 -0
  158. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +5 -0
  159. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +47 -0
  160. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +192 -0
  161. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +37 -0
  162. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +16 -0
  163. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +301 -0
  164. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +4 -0
  165. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +82 -0
  166. data/ext/apex_ext/apex_src/tests/test_extensions.c +821 -1
  167. data/ext/apex_ext/apex_src/tests/test_ial.c +7 -0
  168. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +25 -0
  169. data/ext/apex_ext/apex_src/tests/test_metadata.c +129 -0
  170. data/ext/apex_ext/apex_src/tests/test_output.c +568 -2
  171. data/ext/apex_ext/apex_src/tests/test_runner.c +11 -0
  172. data/ext/apex_ext/apex_src/tests/test_tables.c +420 -0
  173. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +1 -1
  174. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.c +77 -1
  175. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +135 -5
  176. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/blocks.c +56 -1
  177. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +38 -0
  178. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/main.c +1 -1
  179. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  180. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  181. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +69 -0
  182. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +74 -0
  183. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +22 -0
  184. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  185. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +44 -0
  186. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +128 -0
  187. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +5118 -0
  188. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  189. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  190. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +8 -0
  191. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +99 -0
  192. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +452 -0
  193. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +52 -0
  194. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +55 -0
  195. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +2455 -0
  196. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  197. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +171 -0
  198. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +55 -0
  199. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +220 -0
  200. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +43 -0
  201. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +7 -0
  202. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +76 -0
  203. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +10 -0
  204. data/ext/apex_ext/extconf.rb +35 -0
  205. data/lib/apex/version.rb +2 -2
  206. metadata +117 -2
  207. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/tempOptimizedIndex.dsidx +0 -0
@@ -2,6 +2,415 @@
2
2
 
3
3
  All notable changes to Apex will be documented in this file.
4
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
+
5
414
  ## [1.0.4] - 2026-03-31
6
415
 
7
416
  ### Fixed
@@ -2802,6 +3211,37 @@ Based on [cmark-gfm](https://github.com/github/cmark-gfm) by GitHub
2802
3211
 
2803
3212
  Developed for [Marked](https://marked2app.com) by Brett Terpstra
2804
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
2805
3245
  [1.0.4]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.4
2806
3246
  [1.0.3]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.3
2807
3247
  [1.0.2]: https://github.com/ApexMarkdown/apex/releases/tag/v1.0.2
@@ -6,7 +6,7 @@ if(POLICY CMP0000)
6
6
  endif()
7
7
  set(CMAKE_POLICY_VERSION_MINIMUM 3.5 CACHE STRING "Minimum CMake policy version" FORCE)
8
8
 
9
- project(apex VERSION 1.0.4 LANGUAGES C)
9
+ project(apex VERSION 1.1.20 LANGUAGES C)
10
10
 
11
11
  # Set C standard
12
12
  set(CMAKE_C_STANDARD 99)
@@ -93,6 +93,7 @@ endif()
93
93
  # Include directories
94
94
  include_directories(
95
95
  ${CMAKE_SOURCE_DIR}/include
96
+ ${CMAKE_SOURCE_DIR}/src
96
97
  ${CMAKE_SOURCE_DIR}/vendor/cmark-gfm/src
97
98
  ${CMAKE_SOURCE_DIR}/vendor/cmark-gfm/extensions
98
99
  ${CMAKE_BINARY_DIR}/vendor/cmark-gfm/src # For generated headers
@@ -112,16 +113,24 @@ set(APEX_LIB_SOURCES
112
113
  src/ast_markdown.c
113
114
  src/ast_terminal.c
114
115
  src/ast_man.c
116
+ src/ast_rtf.c
115
117
  src/filters_ast.c
116
118
  src/plugins_env.c
117
119
  src/plugins.c
118
120
  src/plugins_remote.c
121
+ src/plugin_catalog.c
119
122
  src/html_renderer.c
120
123
  src/extensions/metadata.c
121
124
  src/extensions/wiki_links.c
122
125
  src/extensions/math.c
123
126
  src/extensions/critic.c
124
127
  src/extensions/callouts.c
128
+ src/extensions/raw_content.c
129
+ src/extensions/code_fence_attrs.c
130
+ src/extensions/quarto_diagrams.c
131
+ src/extensions/quarto_shortcodes.c
132
+ src/extensions/quarto_polish.c
133
+ src/extensions/quarto_lists.c
125
134
  src/extensions/includes.c
126
135
  src/extensions/inline_tables.c
127
136
  src/extensions/toc.c
@@ -129,6 +138,7 @@ set(APEX_LIB_SOURCES
129
138
  src/extensions/emoji.c
130
139
  src/extensions/special_markers.c
131
140
  src/extensions/ial.c
141
+ src/extensions/bear_image_attrs.c
132
142
  src/extensions/definition_list.c
133
143
  src/extensions/advanced_footnotes.c
134
144
  src/extensions/advanced_tables.c
@@ -141,8 +151,10 @@ set(APEX_LIB_SOURCES
141
151
  src/extensions/sup_sub.c
142
152
  src/extensions/header_ids.c
143
153
  src/extensions/relaxed_tables.c
154
+ src/extensions/grid_tables.c
144
155
  src/extensions/citations.c
145
156
  src/extensions/index.c
157
+ src/extensions/concordance.c
146
158
  src/extensions/syntax_highlight.c
147
159
  src/pretty_html.c
148
160
  )
@@ -345,11 +357,13 @@ add_executable(apex_test_runner
345
357
  tests/test_links.c
346
358
  tests/test_tables.c
347
359
  tests/test_ial.c
360
+ tests/test_bear_image_attrs.c
348
361
  tests/test_extensions.c
349
362
  tests/test_output.c
350
363
  tests/test_marked_integration.c
351
364
  tests/test_syntax_highlight.c
352
365
  tests/test_plugins.c
366
+ tests/test_escaping_repro.c
353
367
  )
354
368
  target_link_libraries(apex_test_runner apex_static)
355
369
  target_compile_definitions(apex_test_runner PRIVATE TEST_FIXTURES_DIR="${CMAKE_SOURCE_DIR}/tests/fixtures/includes")
@@ -7,18 +7,21 @@
7
7
  class Apex < Formula
8
8
  desc "Unified Markdown processor supporting CommonMark, GFM, MultiMarkdown, and Kramdown"
9
9
  homepage "https://github.com/ApexMarkdown/apex"
10
- version "1.0.4"
10
+ version "1.1.18"
11
11
  license "MIT"
12
12
 
13
13
  depends_on "libyaml"
14
14
 
15
15
  on_macos do
16
16
  url "https://github.com/ApexMarkdown/apex/releases/download/v#{version}/apex-#{version}-macos-universal.tar.gz"
17
- sha256 "67aae33bd1417f4fec147004b0c858364f1dc452f42f3bb6dd5bb930abccd27b"
17
+ sha256 "3fa568b1a71deea8398516f91dc6dba37ceecf586b51f295a710aacca7242c38"
18
18
  end
19
19
 
20
20
  def install
21
21
  bin.install "apex"
22
+ man1.install "apex.1" if File.exist?("apex.1")
23
+ man5.install "apex-config.5" if File.exist?("apex-config.5")
24
+ man7.install "apex-plugins.7" if File.exist?("apex-plugins.7")
22
25
  # Fix libyaml path to point to Homebrew's libyaml
23
26
  # This handles both Apple Silicon (/opt/homebrew) and Intel (/usr/local) installations
24
27
  libyaml_path = "#{HOMEBREW_PREFIX}/lib/libyaml-0.2.dylib"
@@ -34,5 +37,7 @@ class Apex < Formula
34
37
  (testpath / "test.md").write("# Hello World\n")
35
38
  assert_match "<h1 id=\"hello-world\">Hello World</h1>", shell_output("#{bin}/apex test.md")
36
39
  assert_match version.to_s, shell_output("#{bin}/apex --version", 2)
40
+ # Assert once the release tarball includes man pages (bundled by make release-*)
41
+ assert_path_exists man1/"apex.1" if (buildpath/"apex.1").exist?
37
42
  end
38
43
  end
@@ -102,17 +102,25 @@ let package = Package(
102
102
  "src/ast_markdown.c",
103
103
  "src/ast_terminal.c",
104
104
  "src/ast_man.c",
105
+ "src/ast_rtf.c",
105
106
  "src/filters_ast.c",
106
107
  "src/ast_json.c",
107
108
  "src/plugins_env.c",
108
109
  "src/plugins.c",
109
110
  "src/plugins_remote.c",
111
+ "src/plugin_catalog.c",
110
112
  "src/html_renderer.c",
111
113
  "src/extensions/metadata.c",
112
114
  "src/extensions/wiki_links.c",
113
115
  "src/extensions/math.c",
114
116
  "src/extensions/critic.c",
115
117
  "src/extensions/callouts.c",
118
+ "src/extensions/raw_content.c",
119
+ "src/extensions/code_fence_attrs.c",
120
+ "src/extensions/quarto_diagrams.c",
121
+ "src/extensions/quarto_shortcodes.c",
122
+ "src/extensions/quarto_polish.c",
123
+ "src/extensions/quarto_lists.c",
116
124
  "src/extensions/includes.c",
117
125
  "src/extensions/inline_tables.c",
118
126
  "src/extensions/toc.c",
@@ -120,6 +128,7 @@ let package = Package(
120
128
  "src/extensions/emoji.c",
121
129
  "src/extensions/special_markers.c",
122
130
  "src/extensions/ial.c",
131
+ "src/extensions/bear_image_attrs.c",
123
132
  "src/extensions/definition_list.c",
124
133
  "src/extensions/advanced_footnotes.c",
125
134
  "src/extensions/advanced_tables.c",
@@ -132,8 +141,10 @@ let package = Package(
132
141
  "src/extensions/sup_sub.c",
133
142
  "src/extensions/header_ids.c",
134
143
  "src/extensions/relaxed_tables.c",
144
+ "src/extensions/grid_tables.c",
135
145
  "src/extensions/citations.c",
136
146
  "src/extensions/index.c",
147
+ "src/extensions/concordance.c",
137
148
  "src/extensions/syntax_highlight.c",
138
149
  "src/pretty_html.c",
139
150
  "src/buffer.c",
@@ -156,8 +167,8 @@ let package = Package(
156
167
  name: "ApexObjC",
157
168
  dependencies: ["ApexC"],
158
169
  path: "objc",
159
- exclude: ["Apex.swift"], // Exclude Swift file from ObjC target
160
- sources: ["NSString+Apex.m"],
170
+ exclude: ["Apex.swift", "ApexPlugins.swift"],
171
+ sources: ["NSString+Apex.m", "NSString+ApexPlugins.m"],
161
172
  publicHeadersPath: ".",
162
173
  cSettings: [
163
174
  .headerSearchPath("../include"),
@@ -169,8 +180,8 @@ let package = Package(
169
180
  name: "Apex",
170
181
  dependencies: ["ApexObjC", "ApexC"],
171
182
  path: "objc",
172
- exclude: ["NSString+Apex.m", "NSString+Apex.h"], // Exclude ObjC files from Swift target
173
- sources: ["Apex.swift"],
183
+ exclude: ["NSString+Apex.m", "NSString+Apex.h", "NSString+ApexPlugins.m", "NSString+ApexPlugins.h"],
184
+ sources: ["Apex.swift", "ApexPlugins.swift"],
174
185
  publicHeadersPath: ".",
175
186
  swiftSettings: [
176
187
  .define("APEX_HAVE_LIBYAML"), // Always enabled when bundled