<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in dokuwiki</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>7686f2030b19f948d2e50df1613ef6592fa44b46 - Fix syntax plugin rendering</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#7686f2030b19f948d2e50df1613ef6592fa44b46</link>
        <description>Fix syntax plugin renderingReverse the order in which core modes and plugin modes are handled by the \dokuwiki\Parsing\Handler.Otherwise only the handle() method of the plugin is called, which is fine for core modes. Syntax plugins need to go through plugin() to actually add their own calls.

            List of files:
            /dokuwiki/inc/Parsing/Handler.php</description>
        <pubDate>Tue, 12 May 2026 17:00:00 +0000</pubDate>
        <dc:creator>Anna Dabrowska &lt;dabrowska@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>dd9e8e5ea54469964faab99223a61bd48146ac42 - fix EXIF-rotated images shown cropped in previews, closes #4482</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#dd9e8e5ea54469964faab99223a61bd48146ac42</link>
        <description>fix EXIF-rotated images shown cropped in previews, closes #4482JPEGs with EXIF orientation 5/6/7/8 were rendered cropped in themediamanager detail view, the image diff view and the fullscreendetail page: getimagesize() / JpegMeta report raw (rotation-unaware)pixel dimensions, and passing both w and h to fetch.php defaults tocenter-crop.- Bump splitbrain/slika to 1.1, which ships ImageInfo: a rotation-  aware, metadata-only dimension simulator mirroring Adapter&apos;s  fluent API (autorotate/resize/crop).- Add fit=1 to fetch.php: when both w and h are given, route to  media_resize_image() (bbox fit) instead of media_crop_image().  Token hashes only (id, w, h) so existing tokens stay valid.- Add MediaFile::getDisplayDimensions($w, $h, $crop) which delegates  to ImageInfo and returns the dims fetch.php would produce.- Add Display::getDetailHtml() and retire media_preview() / the old  media_image_preview_size() helper. media_tab_view and MediaDiff  now share the Display-based renderer.- Rewrite tpl_img() (lib/tpl/*/detail.php) to use MediaFile dims +  fit=1 URL; drops the manual ratio math.- Tests: MediaFileTest covers the dims math, DisplayTest covers the  detail-view HTML (rotated dims, rev-vs-timestamp URL selection,  structure), fetch_imagetoken gains a fit-token compat test.  Fixture _test/data/media/wiki/exif-orient-6.jpg: 20x30 JPEG with  EXIF orientation 6.

            List of files:
            /dokuwiki/inc/Ui/Media/Display.php/dokuwiki/inc/Ui/MediaDiff.php/dokuwiki/lib/exe/fetch.php/dokuwiki/vendor/splitbrain/slika/README.md/dokuwiki/vendor/splitbrain/slika/src/GdAdapter.php/dokuwiki/vendor/splitbrain/slika/src/ImageInfo.php</description>
        <pubDate>Thu, 23 Apr 2026 18:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>9369b4a991666bc911474806b106d8958e79f4c1 - SearchIndex: rector, phpcs, type hint fixes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#9369b4a991666bc911474806b106d8958e79f4c1</link>
        <description>SearchIndex: rector, phpcs, type hint fixes

            List of files:
            /dokuwiki/inc/Search/Index/TupleOps.php/dokuwiki/inc/Search/Query/QueryEvaluator.php/dokuwiki/inc/Search/Query/QueryParser.php/dokuwiki/inc/Search/Tokenizer.php</description>
        <pubDate>Wed, 08 Apr 2026 18:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>9db5ea067c49c3843cc06fe5bf42e182fa36fe16 - Merge branch &apos;parser-work&apos;</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#9db5ea067c49c3843cc06fe5bf42e182fa36fe16</link>
        <description>Merge branch &apos;parser-work&apos;* parser-work:  use new ModeRegistry constant in info plugin  keep historic typo in value but not in constant  remove unused rewriteBlocks property from Handler  supress code sniffer warning on deprecation wrapper  migrate parser tests to modern namespaced classes  clean up Acronym and Preformatted  move handler methods into ParserMode classes and rename Handler  decouple hardcoded mode names in Eol and Preformatted  add unit tests for ModeRegistry  split Formatting into individual classes per formatting type  introduce ModeRegistry to encapsulate parser mode categories  deduplicate finalise() across rewriter subclasses  remove unused Doku_Handler::fetch() method  remove dead ParallelRegex::apply() method  replace magic strings with class constants in Lexer

            List of files:
            /dokuwiki/inc/deprecated.php/dokuwiki/inc/load.php</description>
        <pubDate>Wed, 06 May 2026 19:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>e7ebba474029bebf1e29d921e34f1550f1e08753 - updated phpseclib dependency</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#e7ebba474029bebf1e29d921e34f1550f1e08753</link>
        <description>updated phpseclib dependency

            List of files:
            /dokuwiki/vendor/composer/installed.json/dokuwiki/vendor/composer/installed.php/dokuwiki/vendor/phpseclib/phpseclib/phpseclib/Crypt/Common/Formats/Keys/OpenSSH.php/dokuwiki/vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php/dokuwiki/vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php</description>
        <pubDate>Wed, 06 May 2026 19:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>71d1aa000928e9ee40ec367aeaa1eb5956340f2c - Merge pull request #4626 from dokuwiki/flakytest</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#71d1aa000928e9ee40ec367aeaa1eb5956340f2c</link>
        <description>Merge pull request #4626 from dokuwiki/flakytestrefactor(changelog): persist external-edit detection on first read

            List of files:
            /dokuwiki/inc/common.php</description>
        <pubDate>Wed, 06 May 2026 19:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>56c730b56ef2746acf3b1a27c69bada1239535bd - keep historic typo in value but not in constant</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#56c730b56ef2746acf3b1a27c69bada1239535bd</link>
        <description>keep historic typo in value but not in constantWe need to keep the historic typo in the value (&quot;substition&quot;), but thereis no reason to keep it in the constant.

            List of files:
            /dokuwiki/inc/Parsing/ParserMode/Table.php</description>
        <pubDate>Wed, 06 May 2026 19:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>47b5aa0a2d64724f000136286959edb39a008380 - Merge pull request #4624 from dokuwiki/mediasizes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#47b5aa0a2d64724f000136286959edb39a008380</link>
        <description>Merge pull request #4624 from dokuwiki/mediasizesfix EXIF-rotated images shown cropped in previews, closes #4482

            List of files:
            /dokuwiki/inc/media.php/dokuwiki/inc/template.php</description>
        <pubDate>Wed, 06 May 2026 19:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>8788dbbd585b42284320d64cc932f3c875eab6b2 - &#55358;&#56598; Rector and PHPCS fixes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#8788dbbd585b42284320d64cc932f3c875eab6b2</link>
        <description>&#55358;&#56598; Rector and PHPCS fixes

            List of files:
            /dokuwiki/inc/Sitemap/Mapper.php/dokuwiki/inc/TaskRunner.php/dokuwiki/inc/Ui/Backlinks.php/dokuwiki/inc/Ui/Search.php/dokuwiki/inc/Ui/SearchState.php/dokuwiki/inc/html.php/dokuwiki/inc/infoutils.php/dokuwiki/inc/search.php/dokuwiki/lib/plugins/info/syntax.php</description>
        <pubDate>Wed, 06 May 2026 19:00:00 +0000</pubDate>
        <dc:creator>splitbrain &lt;86426+splitbrain@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>71096e46fcbfaeaa808667aba794e77fe2780169 - move handler methods into ParserMode classes and rename Handler</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#71096e46fcbfaeaa808667aba794e77fe2780169</link>
        <description>move handler methods into ParserMode classes and rename HandlerEach ParserMode class now implements handle() from ModeInterface,containing the token handling logic that previously lived as individualmethods on Doku_Handler.The Handler class (formerly Doku_Handler) is the single dispatch point:Lexer passes tokens to Handler::handleToken() which routes to modeobjects, plugins, or returns false. The Lexer only tokenizes andresolves mapHandler aliases.Key changes:- Add handle() to ModeInterface, implemented by all mode classes- Move Doku_Handler to dokuwiki\Parsing\Handler namespace- File extends Code (shared parsing via $type property)- Quotes uses mapHandler() + Handler::getModeName() for sub-modes- Media::parseMedia() replaces Doku_Handler_Parse_Media()- Code::parseHighlightOptions() replaces parse_highlight_options()- Per-parse state (footnote, doublequote) stays on Handler- Deprecated wrappers kept for base/header/internallink/media- Class alias and rector rules added for backward compatibility

            List of files:
            /dokuwiki/inc/Parsing/Handler/CallWriter.php/dokuwiki/inc/Parsing/ParserMode/Internallink.php/dokuwiki/inc/Parsing/ParserMode/Nocache.php/dokuwiki/inc/legacy.php/dokuwiki/inc/parserutils.php</description>
        <pubDate>Sat, 18 Apr 2026 15:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>bfc167db63967f8c872b3d797ca81138b9011ef4 - Limit namespace depth in io_createNamespace() #4613</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#bfc167db63967f8c872b3d797ca81138b9011ef4</link>
        <description>Limit namespace depth in io_createNamespace() #4613Throw a RuntimeException when the given ID contains 128 or morecolon-separated segments, preventing creation of excessively deepdirectory hierarchies.

            List of files:
            /dokuwiki/inc/io.php</description>
        <pubDate>Sat, 11 Apr 2026 20:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>74a9499c430c8eb951a7f342930fc060dbac2cf2 - SearchIndex: remove legacy intermediate classes from PR #2943</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#74a9499c430c8eb951a7f342930fc060dbac2cf2</link>
        <description>SearchIndex: remove legacy intermediate classes from PR #2943Remove FulltextIndex, MetadataIndex, and the old AbstractIndex whichwere introduced as a stepping stone in #2943. All callers now use theCollection/Index architecture directly.Also fix a bug in detail.php where mediause() was called withignore_perms=true, leaking references from hidden/protected pagesto unprivileged users. This bug existed on master as well.Old test files replaced by their modernized equivalents in tests/Search/.

            List of files:
            /dokuwiki/lib/tpl/dokuwiki/detail.php</description>
        <pubDate>Tue, 07 Apr 2026 16:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>0b1bbbbb7d4e3c531cd255dbf878ce27d5967a0c - SearchIndex: rewrite FulltextSearch to use FrequencyCollectionSearch</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#0b1bbbbb7d4e3c531cd255dbf878ce27d5967a0c</link>
        <description>SearchIndex: rewrite FulltextSearch to use FrequencyCollectionSearchReplace FulltextIndex-&gt;lookupWords() with FrequencyCollectionSearch whichcorrectly handles the compact tuple format written by the new Indexer.Introduce QueryEvaluator with typed stack entries (PageSet,NamespacePredicate, NegatedEntry) for RPN query evaluation. NOT wrapsits operand instead of computing a universe complement, so AND with anegated operand becomes efficient set subtraction. The full page indexis only loaded for standalone negative or namespace-only queries.Move QueryParser and QueryEvaluator into the new Search\Query namespacealong with the stack entry types.Simplify FulltextSearch to orchestration: parse query, look up words,evaluate, filter, sort. Replace FT_SNIPPET_NUMBER constant withmaxSnippets property. Combine ACL/existence/time filtering into asingle pass.

            List of files:
            /dokuwiki/inc/Search/Query/StackEntry.php</description>
        <pubDate>Mon, 06 Apr 2026 16:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>8c5fa126085435ef6364c915a0913746da94e66a - deduplicate finalise() across rewriter subclasses</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/#8c5fa126085435ef6364c915a0913746da94e66a</link>
        <description>deduplicate finalise() across rewriter subclassesMove the identical finalise() logic into AbstractRewriter with anabstract getClosingCall() method. Lists, Quote, Table, Preformattedand Nest each provide their closing call name instead of duplicatingthe full method.

            List of files:
            /dokuwiki/inc/Parsing/Handler/Lists.php</description>
        <pubDate>Thu, 16 Apr 2026 14:00:00 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
</channel>
</rss>
