All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Unit tests for
blocks.lua,academic.lua,reader_inlines.lua,reader_blocks.lua,reader_academic.lua(235 new assertions, 505 total across 11 test files) - Golden baseline comparison (
make test-golden) in CI pipeline make test-alltarget for single-command full validation (lint + test + golden + reader + validate)- Wildcard test discovery in
make test-unit(auto-discovers new test files) - Unit tests for task list checkboxes, subfigure extraction, LineBlock handler, inline edge cases (Quoted, SmallCaps, Span anchors), and reader block handler output (130 new assertions, 621 total)
- Reader round-trip golden baselines (
make test-reader-golden,make update-reader-golden) - Shared
THEOREM_VARIANTSandTHEOREM_REF_PREFIXESconstants inlib/utils.lua - SECURITY.md with supported version policy
- Content version bumped from
0.7.0to0.7.1to align with cdx-core v0.7.1 - Aligned
make lintflags with CI (--no-unused-args --no-max-line-length) - Updated CONTRIBUTING.md pre-PR command to
make test-all - Consolidated theorem variant and reference prefix definitions from
academic.lua/inlines.luainto sharedutils.luaconstants - Removed dead code: unused
captionparameter fromblocks.image(), unusedconvert_inline/_handlersexports frominlines.lua,has_classre-export frominlines.lua
- README Pandoc version requirement: corrected from 2.11+ to 3.0+
- Table cell complex content: now collects all child nodes from nested blocks, not just text nodes
- Measurement sentinel: defaults to
value=0/unit=""with stderr warnings for unparseable input - RawBlock format preservation: sets
languagefield from block format (e.g.,html,latex) - Citation prefix/suffix: prefix applied only to first citation, suffix/locator only to last (multi-citation fix)
- Mark namespacing: semantic marks now use
semantic:prefix (semantic:citation,semantic:entity,semantic:glossary), academic marks useacademic:prefix (academic:theorem-ref,academic:equation-ref,academic:algorithm-ref). Core marks (footnote,anchor,math,link,code) are unchanged. - Measurement is now a core block type (
measurement) with adisplayfield containing the original text. Removedsemantic:measurementtype andschema(schema.org QuantitativeValue) field. - Figure subfigures moved from
childrento a dedicatedsubfiguresarray. Subfigure objects haveid,label, andchildrenfields (notype). - Inline math mark now includes
sourcefield containing the LaTeX string alongsideformat: "latex". - Content version bumped from
0.1to0.7.0to align with cdx-core serialization format. - Extension tracking now covers inline marks (semantic and academic), not just blocks.
- Reader accepts both namespaced and legacy non-namespaced mark formats for backward compatibility.
- Academic extension (
codex.academic): theorems (8 variants), proofs, exercises with hints/solutions, exercise sets, algorithms, abstracts with keywords, equation groups - Academic cross-reference marks:
theorem-ref,equation-ref,algorithm-reffor typed internal links - Admonition blocks from fenced Divs (note, warning, tip, danger, important, caution)
- Figure container blocks with
figcaptionchildren and subfigure support - Core
definitionList/definitionItem/definitionTerm/definitionDescriptionblocks - Inline math as
mathmark on text nodes (no longer splits paragraphs) - Auto-detection of aligned LaTeX environments (align, gather, split) →
academic:equation-group - Dynamic extension tracking in manifest
extensionsfield make validate-schematarget for spec schema validationmake test-goldentarget for golden output baseline comparisonmake linttarget for local luacheck execution- Academic kitchen sink integration test (
tests/inputs/academic-full.md) - Golden output baselines for all 27 integration tests
- Unit tests for bibliography, inlines, metadata, and shared utilities (270 total assertions)
- New
lib/academic.luaandlib/reader_academic.luamodules
- Refactored Div handler into structured dispatch (
div_block()) with extension points - Replaced if/elseif dispatch chains with handler tables in
blocks.luaandreader_blocks.lua - Definition lists outside
.glossaryDivs now produce coredefinitionList(notsemantic:term) - Figures produce
figurecontainers instead of flattenedimageblocks - Inline math produces
mathmark instead ofmath_sentinelparagraph splits - Consolidated
has_class()into sharedlib/utils.lua; extractedinsert_converted(),generate_term_id(),extract_block_attr()helpers - Defined extension ID constants (
EXT_SEMANTIC,EXT_ACADEMIC) inlib/utils.lua - Simplified
bibliography.extract_entry()andmetadata.generate_jsonld()with table-driven field mappings
- Fixed
bibliography.extract_date()crash on raw number date-parts (accessed.ton number value) - Fixed README inaccuracies about reader behavior and citation output format
- Removed dead code: unused
set_inlines()stubs, orphaneddetect_latex_env()function - Removed duplicated project structure from CONTRIBUTING.md
- ORCID support for author identifiers in metadata
- Full CSL metadata extraction for bibliography entries
semantic:bibliographyblock with structured entry data (title, authors, DOI, URL, etc.)- Citation style detection from document metadata
- Entity linking via
[text]{.entity uri="..." entityType="..."}spans - Glossary term definitions via definition lists (
Term\n: Definition) - Glossary references via
[text]{.glossary ref="term-id"}spans - Measurement annotations via
[value unit]{.measurement value="..." unit="..."} - Schema.org
QuantitativeValuemetadata for measurements
- JSON-LD metadata generation from Dublin Core
- Cross-reference support via anchor marks (
[text]{#id}) semantic:refblocks for internal document links
- Improved footnote handling with proper
footnotemarks instead of superscript
- Initial Pandoc custom writer for Codex format
- Block types: paragraph, heading, list, codeBlock, blockquote, table, math, image, horizontalRule
- Inline marks: bold, italic, code, link, strikethrough, underline, superscript, subscript
- Dublin Core metadata extraction from YAML frontmatter
- Pandoc reader for Codex JSON back to any output format
- Full pipeline script for creating
.cdxarchives - Integration test suite with 12 test cases