Started: 2024-08-06 First published: 2024-09-04 State: Pre-alpha 2025_0822 UI Swaps iFrames for Shadow DOM Groups buttons by area not action (markup, html, monotext) Adds items tooltips triggered on hover Monotext Output Indents wrapped footnote lines to align with parent Markup parser Aligns right percentage based table properties automatically 2025_0821 Adds leading zero to footnotes and references Allows placeholder for ref number to share the same length Prevents layout shift because of replacement Makes footnote items sortable, and align with each other HTML Numbers HTML footnotes and references in document order (Produces same output as Monotext, uses same logic) Wraps strings with footnotes in a stylable span Improves nested list maker. DOCS Updates pairs writeup. 2025_0820 HTML output Adds toggle to output HTML without CSS Makes page intro from blocks before the first 'part' in markup Places intro before the page map (list of links to sections) Interlinks each section and its link in the page map Generates nested HTML page map (replaces CSS indented list) Nests parts so subsections land in, not after, their parent Makes part / section headers (optionally) sticky Outputs access key details only if page has over 2 sections As current access keys jump around sections top / map / main Merges list nesting functions used to make page map and lists Monotext output Footnotes Numbers footnotes from order of appearance in doc (Collects tokens in order of most to least deeply nested) Handles a footnote with its own footnote as a sub-item Advises against nested footnotes Wraps long footnote lines Other Updates documentation and logs Removes some unneeded styling from tool 2025_0819 Fixes cell text alignment in transposed tables Revises inline token pattern to "(String=Actions to run)" (This keeps markup consistent with defining variables) Processes most deeply nested tokens first (outer_k_start (inner_key=inner_v) outer_k_end = outer_v) Allows tokens mid(token)word Improves tokens write up Adds debounce to renderer to refresh no more than needed Loads Monotext output into iFrame (for a later idea) Lets user open Monotext output in new tab Removes (,) CSV block Accepts CSVs in tables block (+) via (+=,) Restyles frontend for clarity Renames justified pairs to dot pairs and invokes using (:=.) Reserves 'j' in block tag settings for justifying text only Removes backslashes used as an escape character from outputs 2025_0818 Adds markup errors display area to frontend Logs unique errors and total count Defines (table, variable, pair) keys with `^\nK= ` (vs. `=K=V`) Rewrites key value pair parser from scratch Explains markup for key value pairs in pairs block section Sets table names in the block body, before the first record key Merges backend table functions for transposed and normal tables Updates table demo text Lets table cells have blank lines between content text lines Presents multi-line cells in output for HTML and Monotext Updates CSV tables to define title in block not block tag Rewrites the stamps block markup documentation Makes table headers sticky in HTML output Adds 'to sentence case' flag for text blocks and paragraphs Auto aligns table cells at 'markup to JS' stage (vs per output) Rewrites parsers Determine property alignment if unspecified in markup Aligns right if all number-like, else left Removes the need to process per output format Documents table cell auto aligning 2025_0817 Implements 'number for hierarchy' list markup style (-=0) (Recycled idea from a prior mini project) Documents how to use the style. Implements error and message collector (to batch log at end) Explains on backend unexpected markup error logging behaviour Adds 'Code' block '(;)' to preserve line breaks and spaces Renames 'variables' block to 'stamps' 2025_0814 Replaces block parser to have more accurate block matching Ensures to only underline single-line headers Prevents a multi-line header from looking like many headers Adds PART block '(%)' to group blocks into a sections hierarchy Decides and sets monotext styling for part block levels 0-9 Revises starter text to use parts blocks Warns if a new PART sets its level to an invalid number. A subpart has a level one higher than its parent. Warns if a PART lacks a name (used for link IDs and headings) Warns if list block starts with text before first item Converts any such text block to a top level list item Warns if a list item level exceeds the prior item's by over one Makes such an item a child or sibling of the previous item Removes colour styling from front end 2025_0813 Revises inline token pattern to (stringToChange)(WhatToDo) Add inline token action chaining eg (string)(add_link,make_bold) Adds URLS: (string)(any url here) Adds footnotes: (string)(any footnote here) Footnotes may contain commas if quoted HTML output Interlinks footnote and reference pairs Swaps raw links to clickable 2025_0812 Adds function to match `openTag Token closeTag value` patterns e.g. `=key= multi-line-value` Adds multi line values to pair blocks Tweaks blocks that hold pairs to format data as `=key= value` Relevant blocks: settings, variables, pairs (justified/normal) Monitors justified pairs block value for newline in data If found, outputs a different block type to present data well (Monotext justified pairs must fit on one line 'key....value') Lets tables and flipped tables contain line breaks in cells Adds 'definitions list' type to pairs block `(:=d)` Adds definitions list output for Monotext and HTML formats. 2025_0806 MARKUP Changes paragraph block margin to apply 1 value to both sides Previously allowed setting left and right separately HTML Wraps anchor links in small tags (to improve no CSS styling) UI Calculates weight of HTML file KBs Swaps 'save text' function for a 'save anything' function Offers to save HTML file Updates 'save all' to include HTML file 2025_0805 MARKUP Adds 'document settings' block '(?)' Separates from variables block to keep purpose clear and neat Renames inline tokens 'uppercase' > 'mark' & 'spaced' > 'stress' This lets exact style vary based on output kind: Markup to HTML may use bold for mark and italic for stress Markup to Monotext may continue to use uppercase and spaced Sets paragraph block to indented style via tag config: (.=i) Before users set this mode by starting first line with a space Lets any uppercase letter in paragraph config set case to caps UI Updates IDs now that tool converts to and from various formats: Changes #output to #rendered_monotext Changes #input to #markup Updates example template to use new settings block (?) Sizes #rendered_monotext to fit content (now a contenteditable) Adds "Copy HTML" button HTML Makes a TOC if page has > 1 section Makes h1 use page title from variable in markup Adds tabindex tab key navigation Adds jump links to and from section headers and toc Groups document into sections where headers occur in markup Styles anchor links in headers to show on or hover focus Adds accesskeys (CTRL+OPT+Key (Mac)) and link to show in footer Tests HTML output without CSS. 2025_0804 MARKUP: Warns if markup contains non ascii (A-Z a-z 0-9 punctuation \n) HTML: Works on basic CSS for HTML output (Targets older features) Uses any title variable in markup as HTML title element Adds and tweaks a 'string to slug' function (URL friendly) Adds ID and anchor links to HTML header elements Adds TOC 2025_0803 Replaces Latin dummy text used in examples with English. Separates "Specification" and "License" to dedicated pages. Opens all links in new tabs to preserve user's input. Moves footer content to menu to tidy UI. Adjusts style to a duotone theme. Adds 'markup to html' library V0 (all blocks). Outputs HTML page code & preview. 2025_0802 Untangles "Markup to JS" & "JS to Monotext". 2025_0405 Restyles frontend. 2025_0403 Swaps zip library with tar to reduce tool weight. Adds align paragraph options: left center right justified. Reinstates `(/)` as comment tag. Adds paragraph margins options, 0-9 indents left and or right. Allows making paragraphs block content uppercase. Removes the block quotes block type. The paragraphs block has margins options for the same results. Documents and demonstrates all paragraph options. Adds flag `-i` for user to set indent width to N spaces. Clamps user given document settings to allowed ranges. 2025_0402 Changes spec so that tags for new blocks begin on a new line. This prevents matching any appearance of the tag elsewhere. Removes block closing tag `(/)` from the markup syntax. The start of a new block now also ends any previous one. Changes key value syntax to put any alignment tag after the key. This makes the inline tag look less like a block tag. Example: `key(l|c|r):val` Removes leading and trailing lines from block contents. Adds '-g' flag to set how many blank lines separate blocks. Fixes centering of 'text in a line' blocks (by trimming it). Changes backend global namespace (for grep-ability). Updates documentation to reflect changes to syntax. Changes inline tags: to ^(UPPERCASE) $(s p a c e) This allows changing the style by changing one character. [LARGE REWRITE] Parses 'markup to js', then typesets separately. This allows future flexibility: `markup_to[Monotext/HTML/MD]`. Adds helper functions for block parsers to share. This results in more consistent output. - 2024_1221 -- Allows manual line breaks in headers - 2024_1011 -- Merges column tags, (2) and (3), to (&) tag. - 2024_1010 -- Changes headers to block type ('). -- Changes divider line to block type (*). -- Changes text in line to use (*)text(/*). -- Allows aligning text in line ['L','R','C']. -- Changes comment block tag to (z). (TEMP) -- Simplifies markup so (/) ends all blocks. -- Allows aligning headers ['L','R','C']. -- Makes 'Insert' a drop down menu. -- Makes 'Save' a drop down menu. -- Swaps tab sections for popovers. -- Sums save file sizes only IF data changed. - 2024_1009 -- Merges pairs and justified pairs tags. -- Expects any variables block to start file. -- Reduces loops needed to process document. -- Unifies backend block function signatures. - 2024_1005 -- Swaps 'frontmatter' for variables block. -- Documents variables block. -- Adds variables block to insert panel. -- Adjusts comment block matching regex. - 2024_1004 -- Styles headers in OR on a line. Not both. -- Changes comma separated values tag to (,). -- Changes table block tag to (+). -- Changes transposed table block tag to (x). -- Adds list block (Replaces loose list items). -- Allows list items with multi line input. -- Allows paragraph breaks in list items. -- Merges touching text lines per list item. -- Adds 'insert' pane, for tags and blocks. -- Uses last caret position to insert blocks. -- Lets paragraph text controls style, not tag. -- Restyles CSS to accommodate insert pane. - 2024_1002 -- Fixes three-column-block 3rd column error. -- Adds template CV - 2024_0930 -- Renames main method "monotext.from_markup". - 2024_0929 -- Adds copy input button. -- Adds copy output button. -- Adds toggle to show input, output or both. -- Calculates zip weight. Refactors fn. -- Updates intro copy and specification copy. -- Moves the project summary to overview copy. -- Removes the site's header text. -- Calculates weights only on save menu launch. -- Restyles elements to clarify site hierarchy. -- Swaps field direction based on window width. -- Styles selected text, popovers, scrollbars. -- Updates table block to take pair records. -- Updates templates to use new table block. -- Moves the changelog to its own page. - 2024_0925 -- Adds CSV block, parser lacks quote support. -- Allows commas in quoted CSV block values. -- Allows quotes in quotes CSV block values. -- Demos CSV blocks with commas in values. -- Demos CSV blocks with quotes in values. - 2024_0922 -- Fixes site for webkit browsers. - 2024_0918 -- Adds and documents paragraph block. -- Adds a 2 column block. Refactors backend. -- Tweaks blockquote to only indent text lines. - 2024_0917 -- Adds and documents blockquote block. - 2024_0914 -- Documents more. - 2024_0913 -- Handles over-long justified-pair input. -- Demonstrates use of block for form fields. -- Refactors some functions for clarity. -- Returns output width value from main function. -- Resizes output textarea to match output width. -- Centers output textarea to width available. -- Improves paragraph wrapping. -- Unifies change log item format. -- Coins the project and format: "Monotext". - 2024_0912 -- Adds multi line comment blocks: (/)comment(//). -- Adds text explaining syntax and using the tool. -- Merges toc block into new (lr) block '(l.r)'. -- Adds changelog to page. -- Sort changelog by version, newer at top. -- Splits demo template to small testable parts. -- Handles separator in pair-block values. -- Untangles frontend code from back. -- Groups all scripts into a namespace. -- Refactors project work as a JavaScript library. -- Marks namespace-global variables for clarity. - 2024_0910 -- Adds spaced divider lines. e.g. '* * *'. - 2024_0909 -- Adds tab sections to front end (CSS only). -- Re-styles front end. -- Adds 'about' (project) to front end. - 2024_0906 . -- Trims trailing spaces from lines. -- Uses (!) for box tag. -- Uses any input title variable as HTML title. -- Uses any input title variable as save name. - 2024_0905 -- Uploads early alpha. - 2024_0904 -- Styles frontend, minimally. -- Fixes a regex to make block settings not greedy. -- Tweaks match logic for front matter block. -- Handles front matter values that include ': '. -- Adds download buttons: input, output, both.zip. -- Pads right of header only if character not ' '. -- Preserves whitespace-only values in variables. -- Calculates and shows byte/KB weight of output. -- Shows how to make a table cell empty. -- Adds T.O.C block: key left, dots, value right. -- Adds template system: logic, loader, examples. -- Tells variable swapper to not expect ')' in key. -- Punctuates and presents frontend example text. -- Adds 'no script' notice. -- Adds copyright notices and comments etc. -- Links to author page. -- Adds light and dark mode to frontend. -- Sets max line width (90ch), documents range. - 2024_0903 -- Parses consecutive divider-lines correctly. -- Splits long headers over multiple lines. -- Narrows multi-line headers to look centered. -- Tweaks 'surround header' instruction. now '=h'. -- Makes header uppercase if 'H '. leaves if 'h '. -- Adds header underlining via 'h=' 'h-'. -- Makes border styles easier to change on backend. -- Enables blank lines in 3 column block columns. -- Lets front matter instruct tool e.g. line width. -- Lets pair tag set key and value alignment & case. -- Prevents rules acting on already converted data. --- Stores converted block. returns a placeholder. --- Swaps placeholder for stored block at end. -- Tweaks pair-block multi-line and align logic. -- Starts a changelog, logs work in approx. order. -- Adds a template document to demo a use case. -- Keeps converted blocks accessible via console. -- Clears any data from previous run per run. -- Hides gap in table top border if table unnamed. - 2024_0902 -- Adds pairs block: to present 'key: value' data. -- Add variables: use front matter values in file. -- Adds easy column align to 3 column block (3=rcl). -- Adds align right block: (r)lines(/r). -- Transposes tables with '(grid x)' side by side. - 2024_0901 -- Adds ^uppercase^ & $s p a c e d$ (temp tokens). -- Adds basic interface with live update. -- Splits mono-file project to: HTML, JS, CSS. -- Adds comment tag '// ' to omit text from output. -- Adds front matter block for document meta data. -- Adds list block. -- Breaks long list item over indented lines. -- Splits long text line into multiple lines. -- Adds box block: hard wraps long lines and title. -- Adds 3-column-line feature 'left middle right'. -- Hard wraps long data in 3-column-line column. -- Gives 3-column-line closing tag:(3)c1 c2 c3(/3). -- Swaps 3-column-delimiter: (3)col1()col2()col3(/3). -- Lets each 3-column-block column hold new lines. -- Adds table block for data free of line-breaks.