asciidoc-0.1.1: CHANGELOG.md
# Revision history for asciidoc-hs
## 0.1.1 -- 2026-08-27
* Fix counter type for lowercase alpha start values.
`{counter:name:a}` produced UpperAlphaCounter due to a copy-paste error.
* Fix Meta Semigroup to keep title attributes with the title.
Both branches of the docTitleAttributes case returned m2's attributes,
so concatenating documents paired the first document's title with the
second document's title attributes.
* Allow empty cells in CSV/TSV tables.
* Require ';' to terminate character entity references.
* Traverse both components of definition list items in generic traversals.
* Require a space or end of line after definition list markers.
* Fix infinite loop on unterminated fenced and literal delimited blocks
at end of document.
* Consume extra backticks of a longer closing fence.
A closing fence longer than the opening one (e.g. closing a ``` block
with ````) was only matched up to the opening length, leaking the
remaining backticks into the following block.
* Guard against include cycles. A file that (transitively) included
itself caused infinite recursion in `handleIncludes`.
* Resolve attribute references at the point of use.
Attribute references were only substituted in a post-processing pass
using the end-of-document attribute values, so a reference before a
redefinition incorrectly picked up the later value.
* Infer implicit table headers from layout like Asciidoctor.
Tables were given a header row by default unless the noheader option
was set. Asciidoctor instead only implies a header when the first row
sits on a single line directly after the opening border and is
followed by a blank line.
* Add a benchmark suite.
* Consume whole letter runs in the inline parser.
* Try macro, autolink and email starts once per letter run.
* Avoid the full cell-separator lookahead at every PSV cell character.
* Speed up the inline, table and post-processing paths.
* Flatten the parser monad stack. Replace the derived
ReaderT/StateT-over-attoparsec stack with a hand-rolled, inlined
equivalent, so primitive operations no longer pay for two layers
of transformer binds. Backtracking semantics are unchanged: state
changes made by a failed branch of `<|>` are discarded.
* Reject non-definition-list lines with a substring check.
* Skip typographic replacement when no trigger is present.
* Scan plain inline text in chunks, not per word.
* Replace attoparsec with a hand-rolled CPS parser.
* Do typographic replacement in one pass, without a String round trip.
## 0.1.0.5 -- 2026-08-27
Tables: skip whitespace before cell spec (#13).
## 0.1.0.4 -- 2026-08-11
* Fix tracking of rowspans in table parsing (#13). Columns occupied
by rowspans from previous rows were not skipped when recording the
rowspans introduced by a new row, so tables with staggered rowspans
could fail to parse or be parsed incorrectly.
* Tables no longer have a footer by default (#13). Previously the
last row of every table was treated as a footer unless the
`nofooter` option was given. Now, as in Asciidoctor, a footer is
only created when the `footer` option is given.
## 0.1.0.3 -- 2026-06-02
* Open block delimiter is exactly two `--` (#12).
Fixes a performance bug with `---` thematic breaks.
* Improve parsing of link descriptions (#6).
## 0.1.0.2 -- 2026-03-17
* Allow fenced constructions to end with end-of-input (#9).
* Fix issue in parsing bracketed arguments (#8).
* Fix bug in table parsing with rowspans (#5).
* Improved parsing of line and block comments (#4).
## 0.1.0.1 -- 2026-02-01
* Fix character escaping issue (#3). Unconstrained forms of
delimited constructions weren't being allowed after `++`.
* Fix some footnote parsing issues (#2).
* Fix parsing of document attributes in the body of the document (#1).
Previously only those in the header were handled.
* Change handling of doc attributes. Collect them in state so that
we can handle attributes defined in the body of the document.
* Friendlier error message than "endOfInput" on unexpected content
at the end.
* Move regression tests to test/regression.
## 0.1 -- 2025-11-30
* Initial release.