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 '=='.