PmWiki Changelog

What's new in PmWiki 2.3.33

Apr 21, 2024
  • This version includes updates for PHP 8, improvements to the responsive skin, to the preview changes mode, to conditional markup handling, and the documentation was updated. PmSyntax will now colorize links in double brackets. A new variable $HTMLTitleFmt in local configuration can override the format between <title>...</title> defined in a skin template.

New in PmWiki 2.3.31 (Feb 23, 2024)

  • This release includes improvements to the color sets of the dark theme for the PmWiki-responsive skin, and for the PmSyntax highlighting. The dark toggle icons icons are now 3-state, rotating between Light, Dark, and Auto (browser/system preference), and an annotation tooltip near the icon displays the current mode. The dark theme functions detecting, storing, and restoring visitor preferences can be reused by other skins, and a new variable $EnableDarkThemeToggle can define the default theme for visitors that have not used the toggle icon.
  • The page attributes form where passwords and permissions are defined, can now add or remove passwords, users, or groups, without the need to rewrite the full definition. If for example you need to add a new password and a group without removing existing permissions, type "+ " (plus, space) or "- " (minus, space), followed by the permissions to be added or removed:
  • MyNewPassword @newgroup
  • Edit templates entries can now include page patterns where the template should be used. For example:
  • $EditTemplatesFmt[] = "Site.TalkTemplate name=*-Talk";
  • The function PrintFmt() was refactored to process markup and wiki pages before outputting HTML headers, which would allow for markup, headers, footers, sidebars included from the skin, and action pages like the Auth form, to configure $HTMLHeaderFmt and $HTMLStylesFmt, and the directives (:noheader:), (:notitle:), (:noleft:), (:noaction:) to work from these pages. In case your wiki relied on the previous behavior, you can revert to it by adding to config.php:
  • $EnablePrePrintFmt = 0;
  • The variable $EnableUploadVersions can now be set to 2, and if a file with the same name already exists, the new file will have a unique suffix added.
  • RecipeCheck was updated to also list skins and report their versions.
  • Other minor changes include: the "form" attribute was added to input fields; WikiStyles accept a new property 'columns', (:redirect quiet=1:) has been refactored to prevent an infinite loop, and the documentation was updated.

New in PmWiki 2.3.30 (Jan 22, 2024)

  • Here are some new developments that may be interesting.
  • Dark color theme: The PmWiki-responsive skin has new styles for a user-activated dark/night scheme, with dark backgrounds and light texts. A dark theme can be softer on the eyes if used at night or in dark rooms.
  • An icon to toggle the styles is placed near the search box in the header. It is possible to place toggle icons and/or labels in wiki pages, headers, footers, sidebars, to toggle stylesheets, and all functions can be easily reused in other skins, and with syntax highlighting, see Cookbook:DarkColorScheme.
  • PmSyntax: We added styles for the new dark color theme. These may be improved in the future.

New in PmWiki 2.3.29 (Dec 18, 2023)

  • This version includes a fix for PHP 8.2 and improvements to the PmSyntax functions, markup directives defined in $MarkupDirectiveFunctions now accept dashes in attribute names, and the documentation was updated.

New in PmWiki 2.3.28 (Nov 27, 2023)

  • This version adds new form input types "month" and "color".
  • A new variable $NotifyRelatedTrailFmt allows for the Notify trail= function to automatically include related pages when the base page is in the trail. This has been enabled on PmWiki.org, so if your notify trail contains Cookbook.MyRecipe, you will be notified about edits to this page, but also to Cookbook.MyRecipe-Talk and Cookbook.MyRecipe-Users.
  • The "simpletable" zebra backgrounds are now reversed when the table has a <thead> element, in order to have dark-light-dark rows instead of dark-dark-light.
  • With UrlApprovals, if a URL with the insecure http: scheme has been approved, URLs with the secure https: scheme to the same domain name will be automatically approved (not the other way around).
  • Some utility JavaScript functions should now work better when localStorage is not available.

New in PmWiki 2.3.27 (Oct 23, 2023)

  • This version includes fixes PHP 8, for time formats with an invalid timezone.
  • When merging the last edit, it will now reuse the previous edit summary if none was input.
  • The ".diffmarkup" element now has the style "white-space: pre-wrap" - if a custom skin disables core styles you may want to update the skin styles.
  • When $EnableEditAutoText is enabled, new keyboard shortcuts will be available: Ctrl+B ('''bold'''), Ctrl+I (''italic''), Ctrl+K ([[link]]/unlink).
  • The documentation was updated.

New in PmWiki 2.3.26 (Sep 28, 2023)

  • This version includes updates for PHP 8.2, customizable HTML snippets for trails and input labels. It is now possible to configure searching for "at least one" term among many, as opposed to currently searching for all terms. Extensions are now removed from the $UploadExts array if their size is set to zero in $UploadExtSize, and the documentation was updated.

New in PmWiki 2.3.25 (Jul 29, 2023)

  • This version includes updates for PHP 8.2.
  • Some core markup directives were refactored to prevent very rare bugs.
  • The documentation was updated.

New in PmWiki 2.3.24 (Jun 6, 2023)

  • This version includes some code refactoring, and a new helper function InsertEditFunction() to simplify the reuse of core functionality by recipes.
  • It is now possible to configure the merging of the latest edits by the same author into a single history entry, see $EnableMergeLastMinorEdit.
  • New configuration variables $AuthFormRespCode, $EnableUploadMimeMatch, $EnableDownloadRanges, see documentation.
  • PmForm now can validate an email address field with the "template require FIELD if=validemail" condition.
  • A few other minor improvements in the change log, and the documentation was updated.

New in PmWiki 2.3.23 (May 3, 2023)

  • This version implements session tokens to prevent potential cross-site request forgery vulnerabilities, suggested by Dominique Faure. Most core actions that modify pages or files should have this enabled and should work like before.
  • This new feature can be disabled by setting these variables in config.php:
  • $EnablePmToken = 0; # edit, upload, attributes, approveurls
  • $PmFormEnablePmToken = 0; # PmForm
  • Some installations might encounter the error message "Token invalid or missing". These can include custom edit forms, automated scripts posting to the wiki, AJAX posting text or uploads used by some recipes, or partial upgrades where some core scripts haven't been updated. Most of these should be easy to update -- please report such cases to us -- otherwise you may selectively disable the feature.
  • A form element (:input pmtoken:) was added, and the helper function pmtoken() was documented to make it easy for custom forms and recipes to use this new feature.
  • The version also includes a minor code refactoring, a bug fix, and the documentation was updated.

New in PmWiki 2.3.22 (Apr 6, 2023)

  • This version adds to the core the Cookbook:PmForm recipe (script and templates), not enabled by default. This is in order to reduce my workload, and future updates to PmForm will be made only in the core version.
  • If you already use PmForm, you can enable the core script, by modifying your include_once() call from "cookbook/pmform.php" to "scripts/pmform.php". Your existing templates and configuration should continue to work.
  • A bug was fixed with PageLists with multiple category=+A,+B categories. Input forms and buttons can now be configured to ask for confirmation before they are submitted. A few updates for recent PHP versions, and other minor improvements, and the documentation was updated.

New in PmWiki 2.3.21 (Mar 6, 2023)

  • This version includes updates for PHP 8, and bug fixes with sortable tables and multiline $MarkupDirectiveFunctions. The core table of contents was updated to work better with recent SectionEdit versions, and the documentation was updated.
  • New features include: the upload extension CSV, $EnableLocalTimes with a new short mode 3 where old dates are shown as MM'YY, and a new variable $EnableCopyCode to add [+] buttons for easy copying of preformatted blocks.

New in PmWiki 2.3.20 (Feb 12, 2023)

  • This version fixes an unidentified variable warning introduced yesterday in 2.3.19.

New in PmWiki 2.3.19 (Feb 11, 2023)

  • This version includes fixes for recent PHP versions, new helper functions, new variables allowing more customization, and the documentation was updated.

New in PmWiki 2.3.18 (Jan 15, 2023)

  • This version fixes a bug user groups in with conditional markup, includes updates for PHP 8, minor improvements to the edit textarea and to the syntax highlighting. A helper function pm_json_encode() was added for servers where the PHP-JSON extension is not enabled.
  • The documentation was updated.

New in PmWiki 2.3.17 (Dec 18, 2022)

  • The edit textarea had some improvements. Edit buttons and the automatic edit text will now insert their wiki markup in a way which allows for the "undo" function in the text area to work (with Ctrl+Z). The edit textarea (with $EnableEditAutoText enabled) now accepts 4 new keyboard shortcuts: Ctrl+L and Ctrl+Shift+L to convert the selected text to lowercase or uppercase, and Ctrl+Shift+ArrowUp or ArrowDown to move the line with the cursor up or down.
  • A new variable $EnableBaseNameConfig was added - it allows to enable automatic inclusion of local configuration for the "basename" of the current page, for example Group.Page-Draft to include local/Group.Page.php if it exists.
  • Conditional markup (:if auth @admins,@editors:) can now check if the current user belongs to selected usergroups (with AuthUser).
  • A few minor bugs and omissions were fixed, and the documentation was updated.

New in PmWiki 2.3.16 (Nov 28, 2022)

  • This version fixes a bug with some skins introduced in 2.3.15 last week, and reverts PrePrintFmt().
  • New WikiStyles 'notoc' and 'overflow' were added. PmTOC Table of contents, and the list of included pages in the edit form, now use classnames instead of style attributes.
  • PmSyntax fixes a font-size alignment bug with nested programming languages, and has been optimized for large pages.
  • A few more minor bugs were fixed, including for PHP 8, and the documentation was updated.

New in PmWiki 2.3.15 (Nov 21, 2022)

  • Security: Closed a potential XSS vulnerability discovered today. Your wiki may be at risk if untrusted people can edit your pages.
  • HTTP headers: CSP updated, XSSP added. Both can be disabled or modified by changing the $HTTPHeaders values.
  • Cookies: Added a new variable $CookieSameSite default to 'Lax' per current browser defaults and expectations. Updated pmsetcookie() added an argument $samesite, and refactored to work with old and current PHP versions. Added function pm_session_start() as a replacement for session_start() with respect for local preferences ($CookieSameSite, $EnableCookieSecure, $EnableCookieHTTPOnly).
  • PmSyntax: A new CSS variable --pmsyntax-fontsize-editform allows to set the font size of the edit form separately from highlighted elements in the documentation. Fixed the [[Highlight]] label could change fonts when clicked.
  • Responsive skin: The font size for "pre" and "code" elements is now scalable/relative to the paragraph font size rather than fixed. This works better in headings or small text blocks.
  • GUI edit buttons: Part of these functions were rewritten to avoid 'unsafe inline' JavaScript. While default and most custom buttons should work without change, you should no longer need to url-encode some characters like % or add backslashes. If you have such buttons, you may need to update their declarations to strip the extra backslashes.
  • WikiStyles: Refactored to move all inline WikiStyles to the $HTMLStylesFmt array in the header of the HTML page.
  • Tables and block markup: Replaced inline style="..." attributes with class names.
  • The function PrintFmt() was refactored to process skin parts, skin functions, markup, and wiki pages, before sending the HTTP and HTML headers. This allows for wikistyles and recipes in sidebars and footers to add their configuration to the headers.

New in PmWiki 2.3.14 (Nov 3, 2022)

  • This version includes fixes for recent PHP versions and for 2 minor bugs (searchbox wrongly encoded entities and {(ftime %L)} format). Inline JavaScript for focusing form fields is now replaced with native attributes. In the Edit form, the "Minor edit" label can now toggle the checkbox.
  • The "disabled obsolete markup" tooltip now includes the file path and the line number of the markup rule definition.
  • PmSyntax now recognizes (:template requires? ...:) which is used by some recipes.
  • The documentation was updated.

New in PmWiki 2.3.13 (Oct 7, 2022)

  • This version closes a potential XSS vulnerability, reported by lukystreik. A new variable $FailedLoginsFunction will allow to define a function limiting the number of failed logins. The documentation was updated.

New in PmWiki 2.3.12 (Sep 25, 2022)

  • This version has a few fixes for PHP8. Complex conditionals with empty page variables could cause errors, now fixed. Form elements with values like "0" could appear empty, now fixed. The PSFT() function and the {(ftime)} markup expression now recognize a "%L" format as a human-readable localizable timestamp. A new helper function PrintAuthForm() was split from PmWikiAuth() to allow recipes to call it directly. The documentation was updated.

New in PmWiki 2.3.11 (Aug 30, 2022)

  • This version fixes the function stripmagic(), when used with arrays (a recent update for PHP 8 broke it).

New in PmWiki 2.3.9 (Aug 18, 2022)

  • This version includes updates for PHP 8. Non-wildcard $DefaultUnsetPageTextVars should now work with (:input default:). PmSyntax now handles blocks with simpler selectors, possibly created by recipes. The documentation was updated.

New in PmWiki 2.3.8 (Jul 22, 2022)

  • This version fixes a bug caused by a recent update for PHP 8 with the include markup.
  • In addition, PmSyntax was improved when more than one inline blocks are on the same line, and the documentation was updated.

New in PmWiki 2.3.7 (Jun 29, 2022)

  • This version sets default HTTP headers X-Frame-Options (reported by Imagine Dragon) and Content-Security-Policy to disallow embedding in external websites by default and clickjacking attempts.
  • Should you require the previous behavior, you can add this line to local/config.php:
  • unset($HTTPHeaders['XFO'], $HTTPHeaders['CSP']);
  • $EnableHighlight will now remember any links to PmWiki variables and restore them after the highlighting.
  • $EnablePmSyntax will now process %hlt pmwiki% in addition to %pmhlt% blocks, and escaped markup after it will be tentatively highlighted.
  • The documentation was updated.

New in PmWiki 2.3.6 (Jun 19, 2022)

  • This version contains fixes for PHP 8. A form attribute "lang" was added.
  • Sortable tables now allow for table headers to have markup such as bold (except links), and will use a case-insensitive natural ordering.
  • Searchbox now has a default placeholder "$[Search]" and can have the submit button removed with the argument label="" (users need to press Enter on their keyboards to search).
  • $EnableHighlight-formatted code blocks are now converted to plain text to prevent warnings; there is an ongoing discussion in the mailing list so this solution may evolve.
  • For developers: $UploadVerifyFunction can now modify $upname, and a variable $PageIndexTermsFunction can configure a replacement function for PageIndexTerms().
  • The documentation was updated.

New in PmWiki 2.3.5 (May 23, 2022)

  • This version fixes a bug with (:pagelist list=grouphomes:). A new helper function DisableSkinParts() allows for simpler disabling of headers, footers and sidebars from recipes. When a file is uploaded, new variables with the file path and URL are now available to recipes.

New in PmWiki 2.3.4 (Apr 23, 2022)

  • This version includes fixes for PHP 8 and documentation updates.

New in PmWiki 2.3.2 (Feb 9, 2022)

  • This version includes bug fixes and updates for PHP 8.1. The core variable $EnableIncludedPages introduced in 2.3.0 was renamed to $EnableListIncludedPages to avoid ambiguity. With LocalTimes, is now possible to configure the number of days the "plus" button will pull from the page history, and the function will better recognize some older RecentUploads formats. PmSyntax was updated so that "\" line breaks in tables and headings are treated like in the core, staying in the same context; and the different PmSyntax blocks will now be processed in parallel.
  • The code configuring and loading pmwiki-utils.js was moved to a new file scripts/utils.php, and a new variable $EnablePmUtils was added to allow administrators to easily disable these functions. The script pmwiki-utils.js will now be included in the page header rather than the footer, which may reduce the number of page redraws. The individual functions will now be processed in parallel.
  • The documentation was updated.

New in PmWiki 2.3.1 (Jan 15, 2022)

  • There was an omission in the release script which unexpectedly deleted the $VersionNum variable which broke some settings. This quick release fixes it.

New in PmWiki 2.3.0 (Jan 15, 2022)

  • January 2022 is the 20th year anniversary of the release of PmWiki version 0.1, and 13 years since I (Petko) became core developer. This merited additional work and effort with hopefully interesting and useful new production.
  • PHP 5.3 - 8.1 compatibility
  • PmWiki 2.3.0 includes updates for PHP 8.0 and 8.1.
  • Consequently, it requires PHP version 5.3 (released 2009) or more recent.
  • PmSyntax. A new function PmSyntax was added to the core, and enabled on pmwiki.org:
  • It highlights PmWiki syntax in the documentation, and possibly in the basic edit form.
  • It only highlights PmWiki markup, and is independent from Highlight.js. See Cookbook:PmSyntax and $EnablePmSyntax.
  • It should highlight most core language features and those of many recipes, see this mashup of various markups.
  • Developers can add custom rules in the $CustomSyntax array, see Cookbook:CustomSyntax.
  • The (:markup:) directive can now have class=norender to only show the source code without processing it. This may be useful, together with PmSyntax, in 2 cases: writing/discussing markup code without actually running it, or working on PageList Templates where you want to see and edit them highlighted.
  • Improvements to the edit form:
  • PmSyntax (above) can be enabled to highlight the PmWiki markup the edit form, and should work in recent standards-compliant browsers.
  • The variable $EnableNotSavedWarning is now enabled by default. Add to config.php $EnableNotSavedWarning = 0; to disable it.
  • A new variable $EnableIncludedPages allows listing of other pages included from the currently edited page, with links to see or edit them. When the variable is enabled, the list of pages appears in the edit form, after the text area, in a collapsed <details> element. The list includes pages from which text, text variables, or templates are included from the edited page. This is enabled on pmwiki.org if you wish to preview it.
  • The $EnableEditAutoText function will now feel more like other text editors by removing the automatically inserted bullet when Enter is pressed twice.
  • Dates and times, monitoring, review:
  • The {(ftime)} Markup expression now accepts a new format '%o' for the ordinal suffix of the date.
  • The Notify feature now accepts a tz= timezone specifier for individual subscribers. See Notify#tz.
  • A function based on Cookbook:LocalTimes was added to the core. See the recipe page for the differences. You can continue using the recipe, or disable it and enable the core function.
  • New core variables $EnableLocalTimes, $CurrentLocalTime.
  • New markup @2022-01-09T08:35:00Z output as a <time> element, formatted via $TimeFmt; localized if $EnableLocalTimes.
  • Added a variable $EnableRecentUploads which makes it easy to enable the Recent Uploads feature on AllRecentChanges. This is a basic format that may be good enough for many wikis. For more options, see Cookbook:RecentUploadsLog.
  • The default $RecentChangesFmt now use the variable $CurrentLocalTime instead of $CurrentTime. In the wiki source text it saves the timestamps in a portable time format in GMT, which is then shown formatted per $TimeFmt (wiki timezone). It looks just like $CurrentTime did previously, but can be converted to the visitor's time zone if LocalTimes is enabled. If you have custom $RecentChangesFmt entries that use $CurrentTime, nothing will change for you, but you may want to update these with $CurrentLocalTime if you want to benefit from localization.
  • The "page history" page now has CSS classes for the delay between edits: diffday, diffweek, diffmonth, diffyear. These allow styling of vertical spacing between individual edits in page histories. See Cookbook:DiffDelay for an example.
  • The page history can now have a "hidden" edit type, in addition to "minor". This is intended to be used by recipes in order to hide, rather than delete, some edits from the page history. A couple of new recipes using this feature will be added in the next few days.
  • PageLists, categories, backlinks:
  • PageLists now accept a new argument category=Name which lists only pages declared in the category with the markup [[!Name]], and does not include pages simply linking to [[Category/Name]] (unless they also contain [[!Name]]).
  • The differentiation between links to !Name and Category.Name requires the pages containing category links to be re-indexed; see Cookbook:ReindexCategories which can automate this.
  • Also in PageLists, the arguments link= and category= now accept multiple and negative specifiers, and wildcards. See PageLists#wildcards. If you previously used the recipe Cookbook:PageListMultiTargets, please disable it when you upgrade to 2.3.0.
  • Category links can now have a different text, like [[!Name|Text]], and the markup generally behaves like other links, see PITS:01095.
  • Styles (core skin PmWiki-responsive):
  • Collapsible sections details+summary will now change the cursor to the "pointer" style over the clickable element, and the color will change to "navy".
  • The core table of contents function ($PmTOC) has had its styles updated, in order to properly indent long sub-headings.
  • Core helper functions:
  • A new helper function PSFT() can now be used as an almost drop-in replacement for strftime() and gmstrftime() which became deprecated in PHP 8.1. Please review the documentation at Functions#PSFT. If you have local configurations or recipes using strftime() you can change for PSFT() now.
  • A helper function DownloadUrl($pagename, $path) was added, see Functions#DownloadUrl. It can simplify the handling of attached files by recipes.
  • Last but not least, the documentation in English has been updated with the latest development (and in German by MFWolff).

New in PmWiki 2.2.145 (Dec 11, 2021)

  • This version includes a minor change in search patterns: searches and pagelists with a wrong or undefined $SearchPatterns (list=abc argument) will now use $SearchPatterns["default"] rather than an empty array (effectively all pages). This was likely the intended behavior, a way for admins to restrict search locations.
  • It also includes updates for PHP 8, a fix of an emoji for non-UTF8 wikis, and the latest pages of the documentation.

New in PmWiki 2.2.144 (Nov 6, 2021)

  • This version includes fixes for PHP 8 and an update to intermap.txt.
  • The conditional markup "exists" was optimized when called multiple times.
  • The functions CondExists(), MatchPageNames(), and MatchNames(), can now be called with an additional argument (false) when a case-sensitive match is needed.
  • The documentation was updated.

New in PmWiki 2.2.143 (Oct 2, 2021)

  • This version should prevent recent frequent PHP errors from local customization or recipes, by disabling obsolete markup rules and replacement patterns. If such markup appears on a page, it will not be processed, it will be rendered like this: ??(:obsolete markup:) and a tooltip title should have some additional information.
  • Care should be taken with custom calls to the deprecated PCCF(), and incompatible custom replacement patterns processed via PPRE() or PPRA() are silently skipped, which may not work as expected. If you experience any difficulties, please do let us know and we'll try to provide a fix.
  • The documentation was updated.

New in PmWiki 2.2.142 (Sep 1, 2021)

  • his version hides some PHP 8 notices, and adds 2 new form element attributes "accept" and "autofocus". The documentation was updated.

New in PmWiki 2.2.141 (Jul 9, 2021)

  • This version adds ways to define 2 custom functions:
  • $MultiFactorAuthFunction to enable custom MFA/2FA with AuthUser
  • $PageIndexFoldFunction to define a custom function normalizing the page terms while indexing and searching (by default PmWiki converts the terms to lowercase).
  • The documentation was updated.

New in PmWiki 2.2.140 (Jun 26, 2021)

  • This version has updates for PHP 8.
  • The API of the source code highlighting library has changed and the PmWiki loader function was adapted; if you use this feature, please upgrade Highlight.js to version 11.0.0 or newer.
  • Note: since version 11, Highlight.js doesn't preserve HTML in the preformatted blocks and issues a console warning, so you should only use the (space)[=escaped=] or the [@escaped@] markup blocks.
  • The documentation was updated.

New in PmWiki 2.2.139 (May 5, 2021)

  • This version removes empty "title" attributes in HTML tags (links and images), fixes warnings which appear with PHP 8 and updates the documentation.

New in PmWiki 2.2.138 (Mar 2, 2021)

  • This version fixes a bug when a details directive has markup in the summary attribute, and the documentation was updated.

New in PmWiki 2.2.137 (Feb 27, 2021)

  • This version fixes a bug introduced earlier today with entities encoded twice in PQA() quoted arguments.

New in PmWiki 2.2.136 (Feb 26, 2021)

  • This version fixes a XSS vulnerability for WikiStyles reported today by Igor Sak-Sakovskiy.
  • The fix adds a second argument $keep to the core function PQA($attr, $keep=true) which by default escapes HTML special characters and places the values in Keep() containers. If you have custom functions that call PQA() and expect the previous behavior, call PQA() with a second argument set to false.

New in PmWiki 2.2.135 (Feb 1, 2021)

  • This version fixes a number of PHP8 compatibility issues. This is a work in progress, if you uncover others, please report them at PITS:01461.
  • A work is underway to implement session tokens to prevent CSRF vulnerabilities -- suggested by Dominique Faure. I wanted to rework these functions but the PHP8 compatibilities are more urgent so at the moment the PmToken functions are transparent/non-functional.
  • A defunct syndicated blocklist was disabled, a minor code refactoring was done for PmTOC to better support manual edit section links, and the documentation was updated.

New in PmWiki 2.2.134 (Nov 30, 2020)

  • This is a documentation update version.

New in PmWiki 2.2.133 (Oct 25, 2020)

  • This version fixes a potential vulnerability to CWE-384: Session Fixation, reported by Dominique Faure. The fix regenerates the session identifier at the moment someone logs in. In case this is not desirable, a wiki admin can set the new variable $EnableAuthPostRegenerateSID to false.
  • This version also fixes an unintended variable evaluation in link markups. The CSS from Cookbook:RecipeCheck will now be injected only when needed. The responsive skin styles contained a reduced padding value for numbered and bulleted lists in order to save space, but in longer lists it could clip the item numbers. This value was removed from the styles because it was complex to reliably override it from local configuration.

New in PmWiki 2.2.131 (Aug 30, 2020)

  • This is a documentation update version.

New in PmWiki 2.2.130 (Jul 4, 2020)

  • This is a documentation update version.

New in PmWiki 2.2.129 (May 21, 2020)

  • This version adds the styles for the "simpletable" class of tables from the "pmwiki-responsive" skin into the old "pmwiki" skin, and the documentation was updated.

New in PmWiki 2.2.128 (Apr 26, 2020)

  • This version only includes some cosmetic changes and updates the documentation.

New in PmWiki 2.2.126 (Feb 1, 2020)

  • This version fixes a bug with $PmTOC['MinNumber'] set to -1, and updates the .htaccess format for caches.php. The documentation was updated.

New in PmWiki 2.2.125 (Jan 27, 2020)

  • This version adds a variable $SetCookieFunction to override the core "pmsetcookie" function. A new feature ToggleNext was included in the core, documented at Cookbook:ToggleNext. The documentation was updated.

New in PmWiki 2.2.123 (Jan 1, 2020)

  • This version allows link URLs to be escaped with [=link address=] if they contain any special characters, including quotes, parentheses and pipes. The obfuscated e-mails will now work from headers, footers and sidebars. A form attribute "formnovalidate" was added to the core and to the "Cancel" button in the edit form. Core table of contents will now work better with Cookbook:SectionEdit. Cookbook:RecipeCheck was included in the core -- if you have this recipe already installed, you can simply comment it out from your config.php. The code that handles $EnableRCDiffBytes was refactored to also show the bytes changed in the page histories. New upload extensions "webp" (images) and "opus" (audio) were added. The documentation was updated.

New in PmWiki 2.2.121 (Nov 19, 2019)

  • This version fixes a bug with ObfuscateLinkIMap() and international characters. New configuration variables $DefaultUnsetPageTextVars, $DefaultEmptyPageTextVars can set default values for page text variables. The built-in table of contents and numbered headings can now be set interdependently. A pagelist template pseudovariable {$$EachCount} was added, containing the number of the page in the current "each" loop. Input form elements and the (:searchbox:) field now can have ARIA accessibility attributes.
  • The documentation was updated.

New in PmWiki 2.2.120 (Oct 14, 2019)

  • This version fixes a bug with existing complex custmizations of GUIEdit buttons. Very long tables of contents will now be scrollable. A new "input datalist" form element (list of suggestions to other input fields), and a new "details+summary" block section (toggle sections without JavaScript) were added. The documentation was updated.

New in PmWiki 2.2.119 (Oct 3, 2019)

  • E-mail obfuscation functions based on Cookbook:DeObMail
  • A FixUrl button based on Cookbook:FixURL, see $EnableGuiEditFixUrl
  • EnableNotSavedWarning based on Cookbook:NotSavedWarning
  • EnableEditAutoText based on Cookbook:EditHelp
  • PmTOC, (:toc:), (:notoc:), Table of contents/Numbered headings, based on a simplified variant of Cookbook:AutoTOC
  • EnableSortable, basic sortable tables
  • EnableRCDiffBytes based on Cookbook:DeltaBytesRecentChanges
  • EnableSimpleTableRowspan replicating the markup from Cookbook:RowspanInSimpleTables
  • WikiPageCSSFmt enables CSS in a wiki page, based on Cookbook:LocalCSS
  • EnableHighlight code highlight feature compatible with "highlight.js"
  • AddLinkCSS['othergroup'] and $AddLinkCSS['samedomain'] can contain custom CSS classes for in-wiki links to other groups and for URL links to the same site.

New in PmWiki 2.2.118 (Aug 28, 2019)

  • This version integrates the features of the recipe Cookbook:PreviewChanges into the core. If you currently use this recipe, please uninstall it and add to config.php:
  • $EnablePreviewChanges = 1;

New in PmWiki 2.2.117 (Jul 28, 2019)

  • This version adds handling of "partial content" requests for file downloads. New video file extensions 'm4v' and '3gp' were added. The Upload form now includes a new text field "Uploader" pre-filled with the name of the editor, and a new variable $EnableUploadAuthorRequired was added (defaults to $EnablePostAuthorRequired). The documentation was updated.

New in PmWiki 2.2.116 (Jun 19, 2019)

  • This version fixes pagelists with case insensitive matches of page (text) variables for international wikis. If your international wiki pagelists rely on case-sensitive variable matches, please see $PageListVarFoldFn. The documentation was updated.

New in PmWiki 2.2.115 (May 13, 2019)

  • In this version the responsive skin in large "desktop" mode changes the search form background to transparent, for easier custom styling of the header. The documentation was updated.

New in PmWiki 2.2.114 (Apr 2, 2019)

  • This version adds a skin directive <!--IncludeTemplate ... --> and the variable $SkinTemplateIncludeLevel. The core variable documentation format identifiers were moved to the definition term element to allow CSS ":target" styling, and the header and link text of the vardoc table can now be translated. Input forms have a new HTML5 element "tel", a new attribute "pattern" and two bugs were fixed with the classnames of the new elements and with the identifiers of "select" lists. The documentation was updated.

New in PmWiki 2.2.113 (Mar 1, 2019)

  • This version adds a new (:input button:) form element. All form elements can now accept custom data-* attributes, which can be disabled by setting $EnableInputDataAttr to 0. Both additions are meant for easier integration with custom JavaScript functions or some frameworks.
  • The documentation was updated.

New in PmWiki 2.2.112 (Jan 9, 2019)

  • This version includes a fix for PHP 7.3, and the documentation was updated.

New in PmWiki 2.2.111 (Dec 8, 2018)

  • This version updates core .htaccess files to be compatible with both Apache 2.4 and earlier versions, and the variable $DenyHtaccessContent was added with the updated content. In case of difficulties or questions please contact us.
  • A CSS value in the pmwiki-responsive skin was fixed. The MarkupExpression {(ftime )} now accepts tz= (time zone) and locale= (language locale) arguments. The documentation was updated.

New in PmWiki 2.2.110 (Nov 6, 2018)

  • This version prevents a warning with the {(substr )} markup expression when non-number arguments are typed. A new variable $PageListSortCmpFunction allows custom functions to order page lists. A new variable $MarkupMarkupLevel indicates when the processing happens inside (:markup:) blocks.
  • The default style for [@escaped code@] dropped white spaces inconsistently and was fixed. If you rely on the previous behavior please add this to your pub/css/local.css file to revert it:
  • code.escaped { white-space: nowrap; }
  • The documentation was updated.

New in PmWiki 2.2.109 (Jul 10, 2018)

  • This version fixes a bug with the Path: InterMap prefix which was broken in 2.2.108. The function pmcrypt() was updated to prevent more strings from causing "invalid hash" warnings in PHP 7. The variable $EnableMarkupDiag was added to help diagnose all markup calls. The documentation was updated.

New in PmWiki 2.2.108 (Jul 6, 2018)

  • This version adds the $PCCFOverrideFunction variable allowing a custom function to override PCCF(). $AuthUserPageFmt can now be an array of page names. The page cache file name can now be customized. Form checkbox labels now have the same tooltip title as the checkbox. Ordered lists with the %reversed% WikiStyle will have descending numbers. Minor fixes to refcount.php, vardoc.php, and pmcrypt(). The default InterMap PmWiki URLs have now the HTTPS protocol. The documentation was updated.

New in PmWiki 2.2.107 (Feb 14, 2018)

  • This version includes more fixes for PHP 7.2 for forms and pagelists. A new variable $MailFunction allows administrators and developers to write replacement functions for the PHP function "mail()". Styles were improved for right-to-left text blocks embedded into left-to-right texts (and vice versa). The documentation was updated.

New in PmWiki 2.2.75 (May 6, 2015)

  • This version adds a pmcrypt($pass, $salt) function which can be used as a replacement for the PHP crypt() function when encrypting passwords. From PHP 5.6 on, crypt() should not be used without a $salt parameter and would raise a notice. If pmcrypt() is called with a $salt parameter it will simply call crypt() in order to check a password. If it is called without a $salt parameter, pmcrypt() will create a password hash with the password_hash() function or with crypt() depending on your installation. You can replace any calls to crypt() with pmcrypt(), notably in config.php when defining $DefaultPasswords entries.
  • Markup was added for the semantic HTML5 tags article, section, nav, header, footer, aside, address.
  • A bug with the uploads feature was fixed when $EnableReadOnly is set, and the documentation was updated.

New in PmWiki 2.2.74 (Mar 30, 2015)

  • This version allows the translation of the word "OK" in authentication forms. The documentation was updated to the latest state on pmwiki.org.

New in PmWiki 2.2.73 (Mar 2, 2015)

  • This release only updates the documentation to the latest state on pmwiki.org.

New in PmWiki 2.2.72 (Jan 28, 2015)

  • This version improves the ?action=ruleset display for markup rules potentially incompatible with PHP 5.5 when the function debug_backtrace() is not available. It restores the ability to set a custom function handling the (:markup:) demos. A variable $AbortFunction was added allowing administrators to override the core Abort() function. The documentation was updated.

New in PmWiki 2.2.71 (Dec 30, 2014)

  • This version removes the hard word wrap in (:markup:) wikicode examples, and instead of tags, it wraps it in tags. This allows newcomers to copy and paste the code in their wikis without inserted line breaks (which often cause the markup to not work).
  • The release also adds back-tracing for markup rules potentially incompatible with PHP 5.5. Such rules, often added by recipes, can trigger "Deprecated: preg_replace()" warnings. To find out which recipes may trigger the warnings, enable diagnostic tools in config.php with $EnableDiag = 1; then open a page with the 'ruleset' action, eg. [[HomePage?action=ruleset]]. The PHP-5.5-incompatible rules will be flagged with filenames, line numbers and patterns. See also the pages Troubleshooting and CustomMarkup on pmwiki.org.
  • The variable $DraftActionsPattern was added, the pagelist "request" parameter can now contain a list of allowed or disallowed parameters that can be overridden by the user, the "input default source" parameter can now contain multiple pages, and a minor bug was fixed in upload.php ('strict' warning). See the updated documentation for more information.

New in PmWiki 2.2.70 (Nov 10, 2014)

  • This release only updates the documentation to the latest state on pmwiki.org.

New in PmWiki 2.2.69 (Oct 14, 2014)

  • This version fixes a bug when dates are defined as relative to other dates, eg. "2014-10-13 -3 days". The documentation was updated; note that the instructions in Site.UploadQuickReference were updated to reflect the display of the upload form in current browsers.

New in PmWiki 2.2.68 (Sep 20, 2014)

  • This version adds a Skins: InterMap prefix pointing to the Skins section on PmWiki.org, a "signature" markup in the edit quick reference, new WikiStyles clear, min-width and max-width and the documentation was updated.

New in PmWiki 2.2.67 (Aug 4, 2014)

  • This version fixes an inconsistency with input forms when values are taken from PageTextVariables. The documentation was updated to the latest state on pmwiki.org.

New in PmWiki 2.2.66 (Jul 3, 2014)

  • This version fixes a minor longstanding bug in the default Notification format when a page is deleted. In custom patterns, the "_" character will no longer be considered a function name. The documentation was updated.

New in PmWiki 2.2.65 (Jun 9, 2014)

  • This version fixes Pagelist handling of {$$PseudoVars} when they contain page variables. File permissions handling was improved when the current directory is owned by "root". The documentation was updated.

New in PmWiki 2.2.64 (May 9, 2014)

  • This version adds the "{(mod)}" markup expression for modulo/reminder calculations, and the "tel:" and "geo:" URI schemes which, on compatible devices like smartphones, allow the creation of links to dial telephone numbers and open map/location applications.
  • The $SysMergePassthru switch was added, if enabled, it allows the "Simultaneous Edits" conflict resolution to use the passthru() function instead of popen().
  • The documentation was updated.

New in PmWiki 2.2.63 (Apr 7, 2014)

  • This version allows for form elements to have custom attributes containing a dash in the attribute names and enables the attributes 'required', 'placeholder' and 'autocomplete' for HTML5 forms. A minor bug with pagelist {$$RequestVariables} appearing on some installations was fixed. The documentation was updated.

New in PmWiki 2.2.62 (Feb 28, 2014)

  • This version adds the variable $EnableTableAutoValignTop which allows to make advanced tables compatible with HTML5. For developers, a fourth argument $template was added to the Markup_e() function, and a callback template 'return' was added. The documentation was updated.

New in PmWiki 2.2.61 (Feb 1, 2014)

  • This version removes unnecessary snippets of code and adds the variable $TableCellAlignFmt which allows to make simple tables compatible with HTML5. The documentation was updated.

New in PmWiki 2.2.60 (Jan 14, 2014)

  • This version reverts the changes to the pmwiki.css file made in 2.2.59.

New in PmWiki 2.2.59 (Jan 14, 2014)

  • This version has an improvement for Blocklist when multiple text fields are posted. A bug with some nested markup conditionals was fixed. The default skin switched font sizes from points (fixed) to percents (relative). A couple of other minor bugs were fixed and the documentation was updated.

New in PmWiki 2.2.58 (Dec 30, 2013)

  • This version enables customization of (:input auth_form:), and fixes a couple of minor bugs. The documentation was updated.

New in PmWiki 2.2.57 (Nov 4, 2013)

  • This version enables the use of the Attach: link format in the (:attachlist:) directive. The documentation was updated.

New in PmWiki 2.2.56 (Oct 1, 2013)

  • This version aims to fix a PHP 5.5 compatibility issue with a deprecated feature of the preg_replace() function. The PageStore() class now detects and works around a bug with the iconv() function, and the documentation was updated.

New in PmWiki 2.2.55 (Sep 17, 2013)

  • This version adds the variable $EnableDraftAtomicDiff. If enabled, publishing from a draft version will clear the history of intermediate draft edits, and the published version will contain a single combined diff from the previous published version. The documentation was updated.

New in PmWiki 2.2.54 (Aug 13, 2013)

  • This version fixes a bug when old versions are restored from draft pages. The documentation was updated.

New in PmWiki 2.2.53 (Jul 10, 2013)

  • This version enables a message to be shown when a post is blocked because of too many unapproved links. The documentation was updated.

New in PmWiki 2.2.52 (Jun 17, 2013)

  • This version hides warnings about a deprecated feature in PHP 5.5 installations (preg_replace with /e eval flag). Three new upload extensions were added: docx, pptx and xlsx produced by recent versions of some office suites. The documentation was updated.

New in PmWiki 2.2.51 (May 9, 2013)

  • This version updates the addresses for the remote blocklists.
  • A minor XSS vulnerability for open wikis, which I discovered today, was fixed.
  • The documentation was updated.

New in PmWiki 2.2.50 (Apr 8, 2013)

  • This release only updates the documentation to the latest state on pmwiki.org.

New in PmWiki 2.2.49 (Mar 10, 2013)

  • This version adds an array $UploadBlacklist containing forbidden strings of an uploaded filename (case insensitive). Some Apache installations try to execute a file which has ".php", ".pl" or ".cgi" anywhere in the filename, for example, "test.php.txt" may be executed. To disallow such files to be uploaded via the PmWiki interface, add to config.php such a line: $UploadBlacklist = array('.php', '.pl', '.cgi');
  • The documentation was updated.

New in PmWiki 2.2.48 (Feb 12, 2013)

  • This version fixes a bug introduced yesterday with some links.

New in PmWiki 2.2.47 (Feb 11, 2013)

  • This version enables tooltip titles in links to anchors in the same page, and the documentation was updated.

New in PmWiki 2.2.46 (Jan 8, 2013)

  • This version adds $UploadPermAdd and $UploadPermSet variables, and the documentation was updated.
  • If your wiki has uploads enabled, it is recommended to set the variable $UploadPermAdd to 0.
  • The $UploadPermAdd variable sets additional unix permissions applied to the uploaded files, and should be 0 (recommended as of 2013). If uploaded files cannot be downloaded and displayed on the website, for example with the error 403 Forbidden, set this value to 0444 (core setting, default since 2006) $UploadPermAdd = 0; # recommended
  • The $UploadPermSet variable unconditionally sets the file permissions on uploaded files. Only advanced administrators should use it.

New in PmWiki 2.2.45 (Dec 3, 2012)

  • This version fixes some PHP notices appearing on some installations. The documentation was updated.

New in PmWiki 2.2.44 (Oct 22, 2012)

  • This version improves the display of consecutive whitespaces in page histories, and fixes the definition of PageTextVariables containing a dash. The documentation was updated.

New in PmWiki 2.2.43 (Sep 20, 2012)

  • This version makes it possible to use HTML attribute names to contain dashes, and removes a warning when editing and previewing Site.EditForm. The documentation was updated.

New in PmWiki 2.2.42 (Aug 20, 2012)

  • This version provides a workaround for cases when a wiki page contains a character nonexistent in the active encoding. The documentation was updated.

New in PmWiki 2.2.41 (Aug 13, 2012)

  • This version changes the internal $KeepToken separator to be compatible with more encodings. The documentation was updated.

New in PmWiki 2.2.40 (Jul 23, 2012)

  • This version provides a helper function replacing htmlspecialchars() and compatible with PHP 5.4. The documentation was updated.

New in PmWiki 2.2.36 (Mar 27, 2012)

  • This version fixes the recode function to try to recover Windows-1252 characters in ISO-8859-1 files.
  • A new variable $EnableOldCharset enables the $page["=oldcharset"] entry which will be used in the future.
  • A couple of minor bugs were fixed and the documentation was updated.