Release 1.25 - Layout all the way!



The release 1.25 is a big release that brings theming and slot management.

You should read carefully the below actions before upgrading.

If you get any trouble, don't hesitate to contact me.

Actions before upgrading

Breaking: We don't support PHP 7.2 and 7.3

Due to a bug in our dependencies, we have upgraded them, and they are only available from 7.4.

Because 7.2 and 7.3 are already end of life, we have taken the decision to upgrade and not support them anymore.

Choose the Dokuwiki template

The strap template has been deprecated. Combo uses its internal template system called theme.

In the configuration, you should then select the default DokuWiki template.

If you have already upgraded Combo, and have template problems, you need to delete the below line in the file DOKUWIKI_HOME/conf/local.php on the server

$conf['template'] = 'strap';

Migrate your configuration

Because Strap is now incorporated into the combo plugin, you need to migrate your configurations if you have changed the default one.

  • The slot header name combo-conf-008,
  • The slot footer name combo-conf-009
  • The font size Rem configuration
  • The minimum size to embed inline combo-conf-003 (includes all resources svg, Javascript, Css, Code)
  • The svgUploadGroupName configuration has been replaced by a designer group. You should migrate the name of the group of your privileged users in the configuration combo-conf-006.
  • If you were using in-article Ads, they have now a configuration to enable or disable them. You need to enable them specifically.

Choose the DokuWiki Renderer

Because Strap is now incorporated into the combo plugin, the rplus renderer has been deprecated and you should set the renderer back to the default DokuWiki renderer.

Web Component Syntax

Due to performance enhancement, all Web Component syntax is now captured once.

It means that:

  • you should escape the XML syntax.
<!-- if you want to write in your page -->
<!-- you should write it -->
  • All empty tags should be closed.
<hr> should be written <hr/>
<search> should be written <search/>
<icon> should be written <icon/>
<breadcrumb> should be written <breadcrumb/>
<page-image> should be written <page-image/>
<related> should be written <related/>

Variable Syntax

A page is now a complete template and accepts all variables. We capture all $name or ${name} variables.

It means that all $ signs should be escaped if you don't want to see a warning message.


  • If you used the mermaid tag, you should change replace it by webcode. A bug has been introduced with the mermaid release. The mermaid tag was never intended to be used.

Content Header Slot

With the theme feature, the content header slot is now responsible for the heading.

If you add set only the breadcrumb.


you should now change it to add at minimum your heading.


<heading h1>$title</heading>
<text lead display="none-if-empty">$lead</text>
<page-image featured height="250" ratio="21:9" linking="default" default="icon|ancestor|logo" lazy="none"/>

Click on the slot manager, choose the content header, and modify it.

Follow the default update procedure

From there, you should follow the default update procedure.

Because now, Combo is too big for the update DokuWiki Script, you should not click the Update button. How to resolve the memory error when updating?

For any problem, don't hesitate to contact us.



  • The strap template has been deprecated.
  • The txt mime is now authorized by default.
  • In a grid, a cell now supports the clickable attribute
  • A grid is now supported in a iterator.
  • The Table Of Content is no more attached to the renderer and can now be placed inside the page via the toc component.
  • The slot manager was added in the railbar to help create and localize slots.
  • The toggle functionality has been rewritten. The toggle element is new and allows to set the a different control if the target is expanded or collapsed.
  • The Identity form code is now ready for the new DokuWiki version.
  • A default layout container is now used to set:
    • the whole template layout horizontal alignment
    • the default value of container aware component such as Menubar
  • The Page explorer component will collapse on small device due to the default toggle-state value.
  • The informational messages are now toast located in the center of the page.
  • The Hero attribute that permits to create easily an hero unit style content.
  • The row component accepts:
    • conditional ratio unit (percentage and fraction) as width length on its cells.
    • conditional number of cells by line
  • The width can now be defined conditionally based on the screen size.
  • Variable can now be used directly. The template component has been deprecated.
  • The Side Slot component are by default collapsed until the medium screen by setting the toggle attribute to collapsed expanded-md
  • Added the HealthICons library in the Icon component
  • The publication date default value is also searched in the prefix of the path last name.
  • The hierarchical breadcrumb has now a new type: typography. It permits to output the page category in a iterator fragment for instance.
  • The page category can now be printed with the help of the typographical breadcrumb
  • The page image has now more option such as:
  • The edittable plugin is now supported
  • The outline follows the section / header HTML convention.
    • The styling is then:
      • compatible with css grid for page layout .
      • easier for the edit button because they are inside a section and not after.
    • The page are easier to scan by search engine to discover the outline
  • The page keywords has variables.
  • The messages are shown via toaster.
  • The event system deletes duplicate events.
  • The meta mutation system is now on document level and takes into account backlink (ie reference mutation)
  • Page Sql allows now a random order.
  • The lead (tagline) and the label (short description) metadata have been added
  • The webcode component supports now code injection for designer.


Because of too much confusion, the following name has been renamed:

The lazy method is now html and no more lozad because scripts are not automatically taken into account in template

The Row component is now called a grid because:

  • the children may be laid out on more than one line
  • you can define gutter between the children

The layout metadata has been renamed to template.


  • The suffix for the class is now cs for combostrap. It's smaller than combo and uses the same convention than bootstrap with bs.
  • We support only php 7.4 (due to our dependencies), up to 8 (due to dokuwiki). More information, in the requirement page
  • The empty tag should be close (ie <hr> should be written <hr/>, ie the HTML format has been deprecated for the XML format)
  • strftime has been deprecated by php (not our decision). The only alternative with local is format
  • If you have a xml like syntax in a list, it will break. We can't really do anything about it because the list is a dokuwiki component. what you can do is list them with the following bash.
grep 'The display of the call with the mode (list' /dokuwiki_home/data/cache/debug.log | awk '{print $NF}' | awk '!a[$0]++' | sort

Deprecation removed

  • The old deprecated organization LdJson tag has been removed.


  • When preserve style is set on svg, the svg is shown as an img to avoid style conflict.
  • The big svg image served via an image tag can now be defined in other unit than px.
  • Best end page name: when two pages with the same score are found, the page with the highest number of backlinks is returned.
  • In a brand with icon, label and link widget, the icon does not participate in the link to not have a visual line caused by the underline style between the text and the icon.
  • The Link Wizard was modified to show only pages. It will not group pages by namespace as dokuwiki does by default.
  • The prism components (console, file, code) load their stylesheet with the page and no more via javascript leading to the suppression of a layout shift and to a faster page load.
  • Added dependatbot. issues 28
  • The media manager styling has been improved (the select file is now a button and the file has been renamed from file uploader to media manager)
    • was causing a small layout shift that has been corrected.
    • uses another method (scroll-margin-top) to shift the location of the heading text when navigating/scrolling
  • The railbar when overflowing was not giving the possibility to scroll the items.
  • If a page was copied with a frontmatter without deleting the page id, the page would have become a duplicate in the database.
  • The edit/preview styling has been revamped
    • the textarea was not a fixed pitch font making the calculation of space difficult to spot.
    • button have been made bootstrap flat style
    • bottom margin has been added between the line of component
  • Javascript improvement:
    • browser test have been added
    • the package version range allows now the minor upgrade to get the security update
  • The webcode component loads now its javascript and stylesheet with the Infinite Static Cache.
  • The Webcode component overwrites the console in the head, overwriting also the console script in the HTML content.
  • The external links in a Menubar are styled correctly now.
  • The class loader now uses the autoloader features of composer.
  • The search box suggestion list is now cleared when the search box or a suggestion list items loose focus. The code is modular and tested.
  • The button of the edit toolbar in the edit form are now styled
  • With the new theme, it's now possible to customize the component stylesheet.



  • The Internal Search Engine result was not going away if the escape click reaches no element.
  • When the Front End Optimization was on, the Internal Search Engine was no more working because DOKU_BASE was no more present.
  • Template version was not checked when the class was already loaded via php-fpm. When upgrading combostrap, due to version conflict, the upgrade would crash. The documentation was change and there is now a check each time.
  • The page sql backlink did not add a dependency on the requested page.
  • When used in a slot, the snippet of the carrousel could be missing. The bug was that the snippets were stored by slot and not by rendered page. As a carrousel can show a grid or a carrousel that depends on the number of items, the last page rendered was overwriting the snippets. If a page rendered add few backlinks, the carrousel was a grid and the carrousel glide javascript was no more present for the other page from the cache. The snippets cache now should have the same key cache than the rendered slot.
  • The redirection message was printed at the end of the page. We test now that it's the first child of the main content.
  • The first image was not updated correctly. A bad condition mades the first image to stay for the first svg found.
  • Two markdown highlights on the same line would highlight also the content in-between.
  • The Best End Page Name Algorithm was not returning the best page but the first one with a score of 1. There was therefore no permanent redirect.
  • The prism component (code, console, file) didn't have the copy button. The migration to a new version has forgotten the copy plugin and there was a version mismatch between the plugin and prism. This is corrected.
  • The Inote was not wrapping, making the width of windows overflowing.
  • The requested path was not always correct when a permanent page url was used because the first event of dokuwiki (load lang) was checking the last name of the url path and not the last part of the name
  • admin page were having no toc. Why ? because the admin page may have a toc defined by the plugin. Strap template uses now the default dokuwiki function to render admin page being completely compatible.
  • the dropdown component was broken in Bootstrap 5 because it didn't had the bootstrap prefix. Error was the here doc was using the javascript notation and not the php notation.
Task Runner