| 0a5c6ce4 | 19-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
subscriptions: include diff link in plain-text list mails too
Fixes the docblock of lastRevBefore() and extends the diff link added to the HTML list mail to the plain-text variant as well, so both f
subscriptions: include diff link in plain-text list mails too
Fixes the docblock of lastRevBefore() and extends the diff link added to the HTML list mail to the plain-text variant as well, so both formats stay in sync.
show more ...
|
| 8b6706eb | 19-Apr-2026 |
Vyacheslav <bryanskmap@ya.ru> |
Translation update (ru) |
| f0f42d3b | 18-Apr-2026 |
Marek Adamski <fevbew@wp.pl> |
Translation update (pl) |
| 4a909b54 | 18-Apr-2026 |
Eduardo Mozart de Oliveira <eduardomozart182@gmail.com> |
Translation update (pt-br) |
| 90c2f6e3 | 18-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
Clean up stale realip references after client_ip_header rename
Update docblocks in Ip.php and common.php, fix old tests to use the new config key, remove outdated translations, fix method casing in
Clean up stale realip references after client_ip_header rename
Update docblocks in Ip.php and common.php, fix old tests to use the new config key, remove outdated translations, fix method casing in test, and add example to English config description.
show more ...
|
| 59bc5235 | 18-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
fix code copy button copying its own text, closes #4617
Hide the button before reading innerText so the button label is not included in the copied text. |
| 04045fea | 18-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
remove unused rewriteBlocks property from Handler
This flag was added in b7c441b9 (2005) for planned wiki syntax converters but was never set to false anywhere. Remove the dead conditional and alway
remove unused rewriteBlocks property from Handler
This flag was added in b7c441b9 (2005) for planned wiki syntax converters but was never set to false anywhere. Remove the dead conditional and always run Block processing.
show more ...
|
| 3ea3771b | 18-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
supress code sniffer warning on deprecation wrapper
Previously the whole file was excluded. We can now be more precise. |
| 504c13e8 | 18-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
migrate parser tests to modern namespaced classes
Move old-style parser tests from _test/tests/inc/parser/ to namespaced test classes under _test/tests/Parsing/ParserMode/ and _test/tests/Parsing/Le
migrate parser tests to modern namespaced classes
Move old-style parser tests from _test/tests/inc/parser/ to namespaced test classes under _test/tests/Parsing/ParserMode/ and _test/tests/Parsing/Lexer/.
- Add ParserTestBase with assertCalls() helper for comparing handler call sequences with byte index stripping - Split lexer.test.php into ParallelRegexTest, StateStackTest, and LexerTest with a RecordingHandler that extends Handler - Merge handler_parse_highlight_options tests into CodeTest - Add new tests for previously untested modes: Nocache, Notoc, Rss, and all individual formatting modes (Strong, Emphasis, etc.) - Modernize test code: [] syntax, lowercase null, correct assertEquals argument order, replace deprecated withConsecutive and string callables - Renderer tests remain in old location (renderers not yet migrated)
show more ...
|
| 259e91d9 | 18-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
clean up Acronym and Preformatted
- remove stale comment, use closure for array_map, simplify compare with spaceship operator in Acronym - clarify misleading comment in Preformatted |
| 71096e46 | 18-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
move handler methods into ParserMode classes and rename Handler
Each ParserMode class now implements handle() from ModeInterface, containing the token handling logic that previously lived as individ
move handler methods into ParserMode classes and rename Handler
Each ParserMode class now implements handle() from ModeInterface, containing the token handling logic that previously lived as individual methods on Doku_Handler.
The Handler class (formerly Doku_Handler) is the single dispatch point: Lexer passes tokens to Handler::handleToken() which routes to mode objects, plugins, or returns false. The Lexer only tokenizes and resolves 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
show more ...
|
| 7958e698 | 16-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
decouple hardcoded mode names in Eol and Preformatted
Eol.php hardcoded ['listblock', 'table'] as modes to skip, and Preformatted.php hardcoded [\*\-] as a negative lookahead for list markers. Both
decouple hardcoded mode names in Eol and Preformatted
Eol.php hardcoded ['listblock', 'table'] as modes to skip, and Preformatted.php hardcoded [\*\-] as a negative lookahead for list markers. Both embed knowledge that belongs to the respective block modes, not to Eol/Preformatted. Adding a new block mode that handles its own EOL or uses different line start markers would require editing these unrelated files — a hidden coupling.
Listblock and Table now register themselves on ModeRegistry during preConnect(). Eol queries getBlockEolModes() and Preformatted queries getLineStartMarkers() to build its lookahead dynamically. Each mode owns its own data, and new block modes can participate without touching unrelated files.
show more ...
|
| dba14ea3 | 16-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
add unit tests for ModeRegistry |
| 1f443476 | 16-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
split Formatting into individual classes per formatting type
Introduce AbstractFormatting as a base class and seven concrete classes (Strong, Emphasis, Underline, Monospace, Subscript, Superscript,
split Formatting into individual classes per formatting type
Introduce AbstractFormatting as a base class and seven concrete classes (Strong, Emphasis, Underline, Monospace, Subscript, Superscript, Deleted) that each define their own patterns and sort order. Delete the old Formatting class and update tests to use the new classes directly. ModeRegistry now treats formatting modes as regular built-in modes.
show more ...
|
| c8dd1b9d | 16-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
introduce ModeRegistry to encapsulate parser mode categories
Replace the global $PARSER_MODES definition in inc/parser/parser.php with a ModeRegistry singleton that initializes and manages the mode
introduce ModeRegistry to encapsulate parser mode categories
Replace the global $PARSER_MODES definition in inc/parser/parser.php with a ModeRegistry singleton that initializes and manages the mode categories. The global array is still populated for backward compatibility with plugins that access it directly.
Mode constructors now use ModeRegistry::getModesForCategories() instead of accessing the global directly. p_get_parsermodes() and p_sort_modes() are moved to inc/deprecated.php as thin wrappers.
show more ...
|
| 8c5fa126 | 16-Apr-2026 |
Andreas Gohr <gohr@cosmocode.de> |
deduplicate finalise() across rewriter subclasses
Move the identical finalise() logic into AbstractRewriter with an abstract getClosingCall() method. Lists, Quote, Table, Preformatted and Nest each
deduplicate finalise() across rewriter subclasses
Move the identical finalise() logic into AbstractRewriter with an abstract getClosingCall() method. Lists, Quote, Table, Preformatted and Nest each provide their closing call name instead of duplicating the full method.
show more ...
|
| 57d61403 | 16-Apr-2026 |
Andreas Gohr <gohr@cosmocode.de> |
remove unused Doku_Handler::fetch() method
Confirmed zero callers in core and plugin ecosystem. |
| 8ab4ec30 | 16-Apr-2026 |
Andreas Gohr <gohr@cosmocode.de> |
remove dead ParallelRegex::apply() method
Remove apply() which was never called from production code. Rewrite the inherited SimpleTest tests to use split() instead, and add a test for pre/post-match
remove dead ParallelRegex::apply() method
Remove apply() which was never called from production code. Rewrite the inherited SimpleTest tests to use split() instead, and add a test for pre/post-match splitting.
show more ...
|
| f8026da1 | 16-Apr-2026 |
Andreas Gohr <gohr@cosmocode.de> |
replace magic strings with class constants in Lexer
Introduce MODE_EXIT and MODE_SPECIAL_PREFIX constants to replace the undocumented "__exit" and "_" string conventions used for mode transitions. |
| e06577d2 | 15-Apr-2026 |
Andreas Gohr <andi@splitbrain.org> |
better whitespace handling in log viewer |
| b929bbff | 15-Apr-2026 |
Vyacheslav <bryanskmap@ya.ru> |
Translation update (ru) |
| fe6048cc | 14-Apr-2026 |
Alexander Lehmann <alexlehm@gmail.com> |
remove realip option, add default in conf/dokuwiki.php |
| 3f4748e6 | 06-Mar-2026 |
Tobias Bengfort <tobias.bengfort@posteo.de> |
close picker on focusout and escape |
| 2322900d | 06-Mar-2026 |
Tobias Bengfort <tobias.bengfort@posteo.de> |
a11y: rm picker from tab order when hidden
effect on accesskey:
- firefox: works either way - chrome: does not work either way |
| 8ddf96a8 | 06-Mar-2026 |
Tobias Bengfort <tobias.bengfort@posteo.de> |
a11y: tweak picker aria attributes
inspired by https://github.com/twbs/bootstrap/pull/33624 |