Perline CHANGELOG

Current Version = Newest date below

2025_0311
Adds batch converter to swap one or more text files to perline.
Accepts files to convert via drag and drop anywhere on window.
Adds instruction on batch conversion.

2024_1125
Splits sentences where wrapped text occurs: (){}[]<>""''“”‘’.
  
2024_1119
Names project "Perline".
Adds project to Github and interlinks.
Softwraps Perline area IF user sets max width to zero.

2024_1116
Allows break points before the abbreviations 'i.e.' and 'e.g.'.
Adds template to show and test abbreviation handling.

2024_1108
Lets alt+up and alt+down to move current line up or down.
Moves child lines with parent lines.
Updates indent features to insert or remove custom indent value.
Produces one sentence per line style if maximum line width '0'.

2024_1107
Handles abbreviations.
Updates intro text.
Swaps UI to use another project's.
Adds live ruler to show desired maximum width.
Adds template loader and initial templates.

2024_1106
Handles markdown headers.
Handles list items.
Lets user set what string to use as 'one indent' in output.
Detects what string equals 'one indent' in input.
Indents line if `CMD+]` pressed.
Unindents line if `CMD+[` pressed.
Removes indent near caret if `shift+tab` pressed.
Inserts tab at position if `tab` pressed.
Refactors converters to use matchAll.
Adds save and copy functions to both fields.
Splits log to separate page.

2024_0911
Adds tab section interface.
Lets user set maximum line length wanted.
Accepts configuration object per converter function.
Splits long lines before a non-interrogative 'which'.
Offers to indent wrapped lines of a sentence to show relation.

2024_0907
Renames main script.
Groups all library functions in a single namespace.
Rewrites the process for converting from normal text.
  Scraps previous inefficient recursion method for new:
    Splits each sentence into smallest parts then reassembles.
    Leaves link parts on their own line.
    Leaves parts longer than max line length, on their own line.
    Puts as many parts on a line as will fit within any limit.
    Makes a new line for a part when the current one lacks room.
Puts frontend rules docs in separate area on page.
Tweaks and slims frontend CSS.
Handles wikilinks in data.

2022_1205
Splits text by paragraphs then sentences to lines.
Splits sentences that exceed maximum line width setting further:
  Finds first of any split points:
    Splits after punctuation [": ","; ",", "].
    Splits before wrapped elements: (...) [...] {...}.
  Splits sentence at first split point found into A and B parts.
  Performs same action on A or B part if still too long.
  Stops splitting a lines:
    Once it fits within the maximum line width;
    Or When it has no more logical split points.
Offers to flag lines that exceed max width with the prefix '=='.