PmWiki / ChangeLog

See the cookbook recent changes page for additional updates and activity by other developers, or join the PmWiki mailing lists to discuss feature development with us.

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.
  • Refactor redirect quiet (PITS:01498).
  • Page attributes passwords form: allow for +addition and -removal of passwords, users, groups.
  • Allow $EditTemplatesFmt entries to apply to specific pages with name= specification (suggested by Simon).
  • Forms add attribute "form".
  • Refactor $PostConfig to allow called functions to update it.
  • Update RecipeCheck to also list skins, suggested by Simon.
  • Refactor PrintFmt, add $EnablePrePrintFmt.
  • WikiStyles add 'columns'.
  • When Highlight.js is enabled, Vardoc links will be the same color as variables in highlighted code blocks.
  • Refactor $EnableUploadVersions.
  • Update documentation.

Version 2.3.30 (2024-01-22)

  • Add prototype for dark theme toggle. See PITS:01497 and Cookbook:DarkColorScheme.
    • PmWiki-responsive skin converted CSS colors to variables, added dark theme styles.
    • Add skins/pmwiki/pmwiki-32.svg, enable default for $PageLogoUrl.
    • PmSyntax added dark theme styles.
  • $EnableUploadMimeMatch with Fileinfo not enabled to deny uploads.
  • upload.php fix warning for PHP 8.
  • RecipeCheck use https, suggested by Simon.
  • PrintDiff() add $since argument.
  • Add $EnableRedirectQuiet = 2. Prevent infinite redirect loops.
  • Fix Attach: links with escaped path and filename.
  • Improved readability for inline diffs in page history.
  • Forms enable input e_author not only for action=edit, fix unquoted positional form action URL.
  • Update documentation.

Version 2.3.29 (2023-12-18)

  • Fix urlapprove.php for PHP 8.2.
  • PmSyntax textarea remove styles for width, height (Cookbook:PmSyntax-Talk), allow for fractional dimensions of the highlighted area.
  • $MarkupDirectiveFunctions allow dashes in attribute names.
  • Update documentation.

Version 2.3.28 (2023-11-27)

  • Add input month and color fields.
  • Add $NotifyRelatedTrailFmt.
  • Reverse simpletable row backgrounds when there is a thead element.
  • Fix pmwiki-utils.js when window.localStorage is disabled.
  • UrlApprovals allow https: URLs if the http: URL for the same domain has been approved (PITS:01431).
  • Update documentation.

Version 2.3.27 (2023-10-23)

  • When merging last edit, if there is no change summary, reuse the last one.
  • Keep unknown date/time formats for undefined timezone (PITS:01495).
  • DiffRenderSource() fix for PHP 8, keep ins/del tags on the same line.
  • The ".diffmarkup" element now has the style "white-space: pre-wrap".
  • Add new keyword shortcuts Ctrl+B (bold), Ctrl+I (italic), Ctrl+K (link/unlink).
  • Update documentation.

Version 2.3.26 (2023-09-28)

Version 2.3.25 (2023-07-29)

  • Updates for PHP 8.2.
  • Fix pagelist when 2+ directives on the same line, reported by Simon.
  • Fix possible bug with internal group(header|footer) directives caused by PRR().
  • Update documentation.

Version 2.3.24 (2023-06-06)

  • Add $EnableUploadMimeMatch.
  • Add $EnableMergeLastMinorEdit, edit functions MergeLastMinorEdit (based on Cookbook:FuseEdit), SaveChangeSummary (refactored out of HandleEdit).
  • Fix LogoutCookies() doesn't use a $pagename argument.
  • PmForm add condition 'validemail' for use in template require.
  • Add $PmCryptAlgo, pmcrypt() to call password_verify() if it exists.
  • Refactor HandleDownload() split ServeDownload($filepath, $upname).
  • Add InsertEditFunction($newfn, $where='<PostPage').
  • Add $AuthFormRespCode.
  • Add $EnableDownloadRanges, default 1.
  • When the token is expired, reopen edit form rather than abort.
  • LocalTimes add $EnableRCListLastEdit.
  • Update documentation.

Version 2.3.23 (2023-05-03)

  • Refactor pmtoken() to use session tokens, enable for core actions.
  • Add (:input pmtoken:) helper.
  • PmForm add $PmFormEnablePmToken.
  • Refactor HandleLogoutA() split LogoutCookies().
  • Fix PRCB() for PHP < 7.4.
  • Update documentation.

Version 2.3.22 (2023-04-06)

  • Add scripts/pmform.php, Site.PmFormTemplates.
  • FmtDateTimeZ() can now accept Unix timestamps.
  • Pagelists fix bug with multiple category=+A,+B entries.
  • Update for PHP 8.1 (PITS:01488).
  • MarkupDirectiveFunctions will now cast numeric arguments to floats.
  • Prevent errors in custom PageVariables from generating internal server errors (PITS:01489).
  • Improve inline diff for rare cases (end of page).
  • Forms/buttons with data-pmconfirm="Question" will ask the question before they are submitted.
  • Update documentation.

Version 2.3.21 (2023-03-06)

  • Add $IsPmArchive, $PmArchiveDir.
  • Sortable tables with <time datetime=""> elements can be sorted by the datetime attribute. Fix for tables with preexisting <thead> element.
  • Updates for PHP8.
  • Add CSV upload extension.
  • LocalTimes add mode=3 to show old dates as MM'YY.
  • Fix bug with multiline $MarkupDirectiveFunctions, reported by Antti Tikanmäki.
  • Add $EnableCopyCode and Copy code button to <pre> blocks, suggested by Alex Doré.
  • Update PmTOC to work better with Cookbook:SectionEdit.
  • Update documentation.

Version 2.3.20 (2023-02-12)

  • Fix undefined variable warning, reported by Gregor Klarič.

Version 2.3.19 (2023-02-11)

  • Only set cookie params if headers not sent.
  • Update for PHP8.2, reported by Dfaure. PageVar() update for PHP 8.
  • Add variable $DiffPrepareInlineFunction.
  • PageListCache() remove unused global $PageIndexFile.
  • Add configurable $LocalCSSDir, $LocalCSSDirUrl.
  • DownloadUrl() add $FmtV['$LinkDownload'] with current or future download link.
  • Add pm_recode() helper function (based on PageStore::recodefn), check for more transcode options.
  • HandleBrowse() add $FmtV['$PageSourceText'].
  • Add helper function KeepBlock().
  • Add $FarmPubDirPrefix, pm_servefile(), $ServeFileExts.
  • Update documentation.

Version 2.3.18 (2023-01-15)

  • Refactor scripts/utils.php, add pm_json_encode() (PITS:01486).
  • EditAutoText() fix for lines ending with multiple backslashes.
  • PmSyntax optimize/refactor for large pages (cont.), fix inline escaped texts could ignore line markups, add EnableStopwatch.
  • Notify fix typo in regular expression.
  • Add $EnableUploadVersions >=10 to rename base.ext to base-1.ext, base-2.ext,... Redesigned in 2.3.31
  • CondAuth() fix bug with global $AuthList.
  • Add helper function PRCB() for simpler preg_replace_callback passing variables.
  • Update scripts/refcount.php for PHP 8, reported by George Murray.
  • Add PageVariable $PageLogoUrl (PITS:01297).
  • Update documentation.

Version 2.3.17 (2022-12-17)

  • WikiStyles trim class names (PITS:01485).
  • 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.
  • Skip upgrade check if $EnableReadOnly.
  • Fix bug with multiple $MarkupDirectiveFunctions.
  • Add $EnableBaseNameConfig.
  • PmSyntax optimize for larger pages (cont.).
  • Input password add class "inputbox" like the other fields.
  • CondAuth() added way to check for usergroup permissions.
  • Update in pagelist.php for PHP 8.
  • Documentation update.

Version 2.3.16 (2022-11-28)

  • Class PPRC add generic callbacks.
  • IncludeText() update for PHP 8, reported by V.Krishn.
  • WikiStyle add 'overflow', 'notoc'.
  • Add PmNonce().
  • PmTOC update indented link style->classname.
  • Responsive skin: replace [[<<]] with <br class='clearboth' />, update PmTOC styles.
  • $EnableListIncludedPages use class name instead of style.
  • guiedit.js remove unneeded style.
  • PmSyntax realign font for nested programming languages in the edit form, optimize for large pages.
  • Only call session_status() if function exists.
  • Edit form remove unsafe-inline script.
  • Revert WikiStyleToClassName(), PrePrintFmt() -- need more work (PITS:01484).
  • Documentation update.

Version 2.3.15 (2022-11-21)

  • CSS pre, code relative/scalable font-size (pmwiki-responsive skin).
  • PmSyntax add variable --pmsyntax-fontsize-editform and split from --pmsyntax-fontsize [1].
  • PmSyntax fix [[Highlight]] label font size and family (reported by Hans).
  • Add variable $CookieSameSite default to 'Lax'
  • Add argument $samesite to pmsetcookie(), default to $CookieSameSite, refactor for old and new PHP versions.
  • Add function pm_session_start() respecting local configuration.
  • CSP header add base-uri=self; object-src 'none'.
  • Add $HTTPHeaders['XSSP'] = 'X-XSS-Protection: 1; mode=block'.
  • Rewrite GUIButtons logic to avoid unsafe-inline JavaScript.
  • Refactor WikiStyles, replace inline styles with class names to avoid unsafe-inline CSS.
  • Refactor PQA(), tables, cells, to replace inline style="..." with class names to avoid unsafe-inline CSS.
  • Add PrePrintFmt(), refactor PrintFmt(), PrintSkin() to process wiki pages, skin parts, and skin functions to HTML before outputting headers.
  • Fix XSS vulnerability.
  • Documentation update.

Version 2.3.14 (2022-11-03)

  • Searchbox also escape custom field names.
  • Prevent double-encoded entities in searchbox (reported by Simon).
  • Trim $Author (PITS:01208).
  • 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)

Version 2.3.12 (2022-09-25)

  • Stripmagic() cast null to "" and other fixes for PHP 8.
  • Fix parse error for complex conditionals with empty variables (PITS:01480).
  • PSFT() and MarkupExpression ftime add %L as human readable local timestamp.
  • MarkupRestore() fix wrong cast to empty string of false-ish values.
  • PrintAuthForm() split from PmWikiAuth().
  • Fix warning for unneeded session_regenerate_id() (reported by George Murray).
  • Update documentation.

Version 2.3.11 (2022-08-30)

  • Add PageVariables {$GroupHomePage}, {$GroupHomePageName}, {$GroupHomePageTitle}, {$GroupHomePageTitlespaced}.
  • Add $MarkupDirectiveFunctions.
  • Fix stripmagic() for arrays recently broke after PHP8 update.
  • Update documentation.

Version 2.3.10 (2022-08-20)

  • Update for PHP 8.1 (reported by Armin Bühler).
  • Forms will now prefill wildcard variables from $DefaultUnsetPageTextVars or $DefaultEmptyPageTextVars.
  • $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.
  • Update documentation.

Version 2.3.9 (2022-08-18)

  • Add non-wildcard $DefaultUnsetPageTextVars to (:input default:) (reported by Johnny).
  • PmSyntax handles new selectors pre.pmhlt, code.pmhlt.
  • Update for PHP 8 (PITS:01478).
  • Update documentation.

Version 2.3.8 (2022-07-22)

  • PmSyntax fix for 2 different %hlt% on the same line (reported by Simon).
  • Fix broken include when the first page doesn't exist.
  • Update documentation.

Version 2.3.7 (2022-06-28)

  • $HTTPHeaders add X-Frame-Options (suggested by Imagine Dragon) and Content-Security-Policy to disallow embedding in external websites by default.
  • $EnableHighlight will now remember any links to PmWiki variables and restore them after the highlighting, see thread.
  • $EnablePmSyntax will now process %hlt pmwiki% in addition to %pmhlt% blocks, and escaped markup after it will be tentatively highlighted.
  • Update documentation.

Version 2.3.6 (2022-06-19)

  • Fixes for PHP 8.
  • Add form attribute "lang".
  • Sortable tables allow for table headers to have markup such as bold (except links). It will now use a case-insensitive natural ordering.
  • Allow for $UploadVerifyFunction to modify $upname.
  • Add variable $PageIndexTermsFunction.
  • Searchbox allow for removal of submit button if label=""; add default placeholder="$[Search]".
  • Fix author.php may be included before some variables are defined, reported by Said Achmiz.
  • $EnableHighlight convert code blocks to plain text, see thread.
  • Documentation update.

Version 2.3.5 (2022-05-23)

  • Fix broken list=grouphomes (PITS:01477).
  • Add DisableSkinParts() helper function for recipes.
  • HandlePostUpload: add $FmtV["$filepath"] and $FmtV["$upurl"] with the file path and direct URL to the newly uploaded file.
  • In pmwiki-utils.js, replace forgotten let with var (suggested by SteP).
  • Update for PHP 8.1.
  • Update documentation.

Version 2.3.4 (2022-04-22)

  • Fixes for PHP 8 warnings, reported by Siegfried Seibert.
  • Update documentation.

Version 2.3.3 (2022-03-26)

  • Fix for PHP 8 warnings, reported by Jean-Patrick Charrey, Dominique Faure and Siegfried Seibert.
  • Update README.txt and docs/ files, suggested by Simon Davis.
  • Update documentation.

Version 2.3.2 (2022-02-09)

  • Allow for $EnableLocalTimes to define custom duration of the pulled page history.
  • Rename variable $EnableIncludedPages to $EnableListIncludedPages (avoid ambiguity).
  • Remove $LinkAlt when an embedded picture without an alternative text fails to load.
  • PmSyntax:
    • Allow for line breaks \\ inside headings, tables, list items (like the core).
    • Parallel processing of multiple blocks.
  • Add scripts/utils.php; move loading of pmwiki-utils.js and PmSyntax to scripts/utils.js.
    • Add $EnablePmUtils, default enabled.
    • Parallel processing of the pmwiki-utils.js utility functions.
    • Move pmwiki-utils.js move to $HTMLHeaderFmt (often prevents page redraw with the TOC/PmToggle/LocalTimes).
  • Fix bug causing invalid page name when the name is "Group.0".
  • Fix PHP 8.1.2 warnings, reported by Jürgen Godau and Dominique Faure.
  • LocaltTimes fix "rcnew" classes for wikis with the older format.
  • Update documentation.

Version 2.3.1 (2022-01-15)

  • Fix the release script which broke the $VersionNum variable and the [[#anchor]] markup with the PmWiki-responsive skin.

Version 2.3.0 (2022-01-15)

  • Add PmSyntax, $EnablePmSyntax, $CustomSyntax, {$EnabledIMap}, see Cookbook:PmSyntax, Cookbook:CustomSyntax.
  • (: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.
  • Add $EnableRecentUploads (only Site.AllRecentChanges, only if $RecentUploadsFmt not defined).
  • 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.
  • Responsive skin details>summary:hover {color:navy, cursor: pointer;}.
  • PrintDiff() add classes for the delay between edits: diffday, diffweek, diffmonth, diffyear.
  • Add helper function DownloadUrl($pagename, $path) moved from LinkUpload().
  • Add $[ULby] i18n string 'uploaded by'.
  • Update documentation.

Older versions

ChangeLog Archive - changes prior to version 2.3.0.


This page may have a more recent version on pmwiki.org: PmWiki:ChangeLog, and a talk page: PmWiki:ChangeLog-Talk.