PmTOC add tooltip title to back arrow links, minor refactor. Add $PmTOC['MinNumberedHeadings'], default 2.
Add markup !!#id Heading to define the id attributes of headings.
With $EnableMergeLastMinorEdit, checking the Minor edit checkbox will pre-fill the change summary field with the previous summary. Refactor MergeLastMinorEdit() to configure $InputTags['e_minorcheckbox'].
PmLib add average(array), refactor draggable, dispatched events will now bubble by default, refactor core utilities.
EnableNotSavedWarning moved to pmwiki-utils.js and can be used by custom forms.
Notify fix tz= could modify subsequent recipients (PITS:01536).
Add conditionals (:if empty:) (PITS:01529), (:if skin name:), and (:if attachments:) to false when uploads are disabled, alias (:if attachment:)
PmTOC allow for heading elements to be removed or restored in links.
Add PmLib.parser, update PmLib.isHidden.
PmSyntax: highlight custom input elements in forms and custom conditions, include $PostConfig configurations, detect more PmWiki variables.
Form text-like inputs add "placeholder" as 3rd positional attribute. Input datalist options can now be written in the list= attribute split by ";" or "\n".
Add $PostDispatchFunctions, save original working directory in $PmOWD.
Sortable tables fix bug when the header is sticky.
Update docs/sample-config.php for EnableGroupPageStore().
Update documentation.
Version 2.5.3 (2025-11-08)
Darktoggle: optimize synchronization between tabs.
RecipeCheck: update for PHP 8.4 (PITS:01526); add CSS class for easy styling.
Update docs/sample-config.php to remove pmcrypt().
Refactor PmNonce().
PmLib fix bug with PmLib.adjany, move makeDraggable() to PmLib.mkDrag(), setLS() to store all data in a single window.localStorage object, fix bug with data-shift, improve revert display, identify headings in page, allow for textarea[data-pmsyntax] to be highlighted.
Edit form "Preview" button to not require validation.
Recent changes [+] button will now toggle to [-] and hide the page changes.
Fix JS console error when Cookbook:LocalTimes is enabled but has never been used.
Handle more gracefully bad arguments with {(substr)} in UTF-8, reported by Martin Cuno.
Add $EditAutoBrackets, $EnableEditAutoText = 2 to enable in all textareas, new shortcuts Alt+ArrowUp and Alt+ArrowDown to swap lines, other improvements to guiedit.js.
If $EnablePmSyntax is set to 2, any textarea with the class name "pmsyntax" will now enable Cookbook:PmSyntax. F8 to toggle highlighting.
RecipeCheck restore inadvertantly commented out styles.
Refactor $MessagesFmt to allow nested arrays with keys that can be set from recipes and new attributes (:messages keys=a,b details=open:). If a message starts with "markup:" it will now be processed through the markup engine.
Cache auth conditional results for (:if auth level:).
Update blocklist.php for PHP 8, reported by Foster Schucker.
Update documentation.
Version 2.3.32 (2024-03-24)
Dark theme: add toggleImages(), add $ImgDarkSuffix, $FmtV['$PathUpload']. Restore light styles and pictures for printing.
Responsive skin: white background when printing, move dark toggle label styles into skin.css.
PmSyntax: only apply dark theme colors on screen (not print).
Add upload extensions and image extension patterns AVIF, AVIFS.
Lock AllRecentChanges in case of concurrent uploads.
FileSizeCompact() allow for base 1000 (PITS:01499).
Update documentation.
Version 2.3.31 (2024-02-23)
Add $EnableDarkThemeToggle, enable 3-way theme toggle, "Light", "Dark" and "Auto", add annotation tooltip showing the current theme on tap and on mouse over.
Refactor config data passed to pmwiki-utils.php, refactor dark toggle functions into a separate script.
Responsive skin add body attributes for group and page name, update dark theme, enable auto theme (browser preferences) by default.
PmSyntax improve dark theme thanks to a script by Said Achmiz; expose color properties for reuse.
GUIEditButtons refactor to enable Undo in textarea; allow for custom functions to configure mopen, mclose, and unselect for their buttons.
EditHelp refactor to allow undo; add shortcuts Ctrl+L convert selection to lowercase, Ctrl+Shift+L to uppercase, Ctrl+Shift+ArrowUp and ArrowDown to swap lines.
Replace autofocus inline JavaScript with attributes.
Edit form: the label next to the "Minor edit" checkbox now toggles the checkbox.
PmSyntax recognize (:template requires? ...:).
Update for PHP 8.
Obsolete PCCF() from PHP 7.2 not 8.0.
Add array $ObsoleteMarkups, function TraceMarkup(), update Markup(), Markup_e() and ObsoleteMarkup(), to retrieve and show files and line numbers for obsolete/disabled markup rules.
Fix bug with PSFT format %L.
Update documentation.
Version 2.3.13 (2022-10-07)
Close potential XSS vulnerability, reported by lukystreik (PITS:01483).
$EnablePmSyntax = 3; will enable syntax highlighting in the edit form by default, without the user clicking on "Highlight". Fix occasional text mis-alignment between the text area and the highlighted block.
(:markup:) can now have class=norender to only show the source code without processing it.
Updates for PHP 8.1, hide warnings, add PSFT() replacement for strftime() and 2 callbacks, $EnableFTimeNew, update core function calls, add %o for the ordinal suffix of the date (PITS:01418).
Notify: tz= (timezone) per-user.
PageList add category= argument (PITS:00447, PITS:01475); link= and category= now accept multiple pages, wildcards, and negations (PITS:00908).
[[!Category]] links can have alternative text (PITS:01095).
Simplify/optimize pmwiki-utils.js when using datasets, simplify sorting of table rows without cloning, add LocalTimes().
Page history diff anchors to also have "id=" attributes in addition to "name=".
Add $EnableLocalTimes (default disabled) and styles, add HandleDiffList().
Add markup @2022-01-09T08:35:00Z output as <time>; localized if $EnableLocalTimes.
PmTOC update CSS for properly indented subheadings.
Edit form $EnableIncludedPages, add placeholders to e_changesummary and e_author. Enable $EnableNotSavedWarning, add to sample-config.php. EditHelp to behave more like a word processor, typing "Enter" twice without writing text removes the preceding bullet.