<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us">
  <title type="text">Tiki RSS feed for the wiki pages</title>
  <subtitle type="text">Latest wiki page changes.</subtitle>
  <logo>https://dev.tiki.org/dl652</logo>
  <updated>2026-09-06T04:17:45+00:00</updated>
  <generator uri="https://getlaminas.org" version="2">Laminas_Feed_Writer</generator>
  <link rel="alternate" type="text/html" href="https://dev.tiki.org/"/>
  <link rel="self" type="application/atom+xml" href="https://dev.tiki.org/tiki-wiki_rss.php"/>
  <id>https://dev.tiki.org/</id>
  <entry>
    <title type="html"><![CDATA[Where to commit]]></title>
    <summary type="html"><![CDATA[<blockquote>- &lt;div id=&quot;wpfancytable<del class="diffchar deleted"><strong>2</strong></del>-div&quot; class=&quot;table-responsive ts-wrapperdiv &quot;&gt;	&lt;table class=&quot;table table-striped table-hover  normal&quot; id=&quot;wpfancytable<del class="diffchar deleted"><strong>2</strong></del>&quot;&gt;	&lt;thead class=&quot;&quot;&gt;		&lt;tr&gt;			&lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt; &lt;/th&gt;			&lt;th&gt;&lt;strong&gt;Currently this is git branch&lt;/strong&gt;&lt;/th&gt;			&lt;th&gt; &lt;strong&gt;What is allowed in this branch&lt;/strong&gt; &lt;/th&gt;			&lt;th&gt; &lt;strong&gt;Before commiting here, first commit to&lt;/strong&gt;&lt;/th&gt;		&lt;/tr&gt;	&lt;/thead&gt;	&lt;tbody&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Dev&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/commits/master&quot; rel=&quot;external&quot;&gt;&lt;strong&gt;master&lt;/strong&gt; (trunk)&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt; (future 31x) &lt;/td&gt;			&lt;td&gt; Functional [ENH]ancements and new features &lt;br /&gt;  [FIX]es and [TRA]nslations &lt;br /&gt; Most development (new features) happens here &lt;br /&gt; This is the place for [REF]actoring or cosmetic changes. &lt;br /&gt;  Features must be functional but don’t have to be fully complete. &lt;br /&gt; In theory, should be releasable at any time.  Also: &lt;a id=&quot;mo<del class="diffchar deleted"><strong>2</strong></del>-link&quot; href=&quot;javascript:void(<br>)&quot; class=&quot;plugin-mouseover-anchor&quot;&gt;Update language strings&lt;/a&gt;&lt;span id=&quot;mo<del class="diffchar deleted"><strong>2</strong></del>&quot; class=&quot;plugin-mouseover&quot; style=&quot;display: none; position: absolute; width: 4<br><br>px; height: 2<br><br>px;    pointer-events: none;&quot;&gt;If you must change the English version (but are not changing the meaning and so the translations are still valid, please use &lt;a href=&quot;Mass-spelling-correction&quot; title=&quot;Mass spelling correction&quot; class=&quot;wiki wiki_page&quot;&gt;mass spelling correction&lt;/a&gt;. If you can&#039;t use that, just add to pending text corrections.&lt;/span&gt;. If you commit to master, and after you want to commit to a stable branch, please see how to &lt;a href=&quot;Git-cherry-pick&quot; title=&quot;Git cherry-pick&quot; class=&quot;wiki wiki_page&quot;&gt;git cherry-pick&lt;/a&gt;. &lt;/td&gt;			&lt;td&gt; This is the first place to propose a merge request (MR)&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Next Stable (branched, unreleased) &lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; <del class="diffchar deleted"><strong> &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.c</strong></del>o<del class="diffchar deleted"><strong>m/tikiwiki/tiki/-/tree/3<br>.x&quot; rel=&quot;exter</strong></del>n<del class="diffchar deleted"><strong>al&quot;&gt;branch</strong></del>e<del class="diffchar deleted"><strong>s/3<br>.x&lt;/a&gt;&lt;img</strong></del> <del class="diffchar deleted"><strong>src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt;</strong></del> &lt;/td&gt;			&lt;td&gt; Exists only between the time Dev has been branched into the next stable, and the next stable .<br> release has been released. Bug fixes and Translations only &lt;/td&gt;			&lt;td&gt; Dev&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Current Stable (released)&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt;  &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/-/tree/<del class="diffchar deleted"><strong>29</strong></del>.x&quot; rel=&quot;external&quot;&gt;branches/<del class="diffchar deleted"><strong>29</strong></del>.x&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt;   &lt;/td&gt;			&lt;td&gt; Bug fixes and minor safe enhancements &lt;/td&gt;			&lt;td&gt; Dev, Next Stable (if any)&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Previous Stable&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; None &lt;/td&gt;			&lt;td&gt; Exists only until .1 release of Current Stable has been released. Then EoL or becomes the Previous Stable LTS &lt;/td&gt;			&lt;td&gt; Dev, Current Stable&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Previous Stable LTS&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/-/tree/27.x&quot; rel=&quot;external&quot;&gt;branches/27.x&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt; &lt;/td&gt;			&lt;td&gt; Minor safe enhancements, fixes and translations backported from Current Stable or Next Stable &lt;/td&gt;			&lt;td&gt; Dev, Current Stable or Next Stable&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Security fixes only LTS (previous LTS)&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/-/tree/24.x&quot; rel=&quot;external&quot;&gt;branches/24.x&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt; &lt;/td&gt;			&lt;td&gt; Security fixes only &lt;/td&gt;			&lt;td&gt; Dev, Current Stable or Next Stable, Previous Stable LTS&lt;/td&gt;		&lt;/tr&gt;	&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div id=&quot;wpfancytable<ins class="diffchar inserted"><strong>1</strong></ins>-div&quot; class=&quot;table-responsive ts-wrapperdiv &quot;&gt;	&lt;table class=&quot;table table-striped table-hover  normal&quot; id=&quot;wpfancytable<ins class="diffchar inserted"><strong>1</strong></ins>&quot;&gt;	&lt;thead class=&quot;&quot;&gt;		&lt;tr&gt;			&lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt; &lt;/th&gt;			&lt;th&gt;&lt;strong&gt;Currently this is git branch&lt;/strong&gt;&lt;/th&gt;			&lt;th&gt; &lt;strong&gt;What is allowed in this branch&lt;/strong&gt; &lt;/th&gt;			&lt;th&gt; &lt;strong&gt;Before commiting here, first commit to&lt;/strong&gt;&lt;/th&gt;		&lt;/tr&gt;	&lt;/thead&gt;	&lt;tbody&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Dev&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/commits/master&quot; rel=&quot;external&quot;&gt;&lt;strong&gt;master&lt;/strong&gt; (trunk)&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt; (future 31x) &lt;/td&gt;			&lt;td&gt; Functional [ENH]ancements and new features &lt;br /&gt;  [FIX]es and [TRA]nslations &lt;br /&gt; Most development (new features) happens here &lt;br /&gt; This is the place for [REF]actoring or cosmetic changes. &lt;br /&gt;  Features must be functional but don’t have to be fully complete. &lt;br /&gt; In theory, should be releasable at any time.  Also: &lt;a id=&quot;mo<ins class="diffchar inserted"><strong>1</strong></ins>-link&quot; href=&quot;javascript:void(<br>)&quot; class=&quot;plugin-mouseover-anchor&quot;&gt;Update language strings&lt;/a&gt;&lt;span id=&quot;mo<ins class="diffchar inserted"><strong>1</strong></ins>&quot; class=&quot;plugin-mouseover&quot; style=&quot;display: none; position: absolute; width: 4<br><br>px; height: 2<br><br>px;    pointer-events: none;&quot;&gt;If you must change the English version (but are not changing the meaning and so the translations are still valid, please use &lt;a href=&quot;Mass-spelling-correction&quot; title=&quot;Mass spelling correction&quot; class=&quot;wiki wiki_page&quot;&gt;mass spelling correction&lt;/a&gt;. If you can&#039;t use that, just add to pending text corrections.&lt;/span&gt;. If you commit to master, and after you want to commit to a stable branch, please see how to &lt;a href=&quot;Git-cherry-pick&quot; title=&quot;Git cherry-pick&quot; class=&quot;wiki wiki_page&quot;&gt;git cherry-pick&lt;/a&gt;. &lt;/td&gt;			&lt;td&gt; This is the first place to propose a merge request (MR)&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Next Stable (branched, unreleased) &lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; <ins class="diffchar inserted"><strong>N</strong></ins>one  &lt;/td&gt;			&lt;td&gt; Exists only between the time Dev has been branched into the next stable, and the next stable .<br> release has been released. Bug fixes and Translations only &lt;/td&gt;			&lt;td&gt; Dev&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Current Stable (released)&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt;  &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/-/tree/<ins class="diffchar inserted"><strong>3<br></strong></ins>.x&quot; rel=&quot;external&quot;&gt;branches/<ins class="diffchar inserted"><strong>3<br></strong></ins>.x&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt;   &lt;/td&gt;			&lt;td&gt; Bug fixes and minor safe enhancements &lt;/td&gt;			&lt;td&gt; Dev, Next Stable (if any)&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Previous Stable&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; None &lt;/td&gt;			&lt;td&gt; Exists only until .1 release of Current Stable has been released. Then EoL or becomes the Previous Stable LTS &lt;/td&gt;			&lt;td&gt; Dev, Current Stable&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Previous Stable LTS&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/-/tree/27.x&quot; rel=&quot;external&quot;&gt;branches/27.x&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt; &lt;/td&gt;			&lt;td&gt; Minor safe enhancements, fixes and translations backported from Current Stable or Next Stable &lt;/td&gt;			&lt;td&gt; Dev, Current Stable or Next Stable&lt;/td&gt;		&lt;/tr&gt;		&lt;tr&gt;			&lt;td&gt;&lt;strong&gt;Security fixes only LTS (previous LTS)&lt;/strong&gt; &lt;/td&gt;			&lt;td&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki/-/tree/24.x&quot; rel=&quot;external&quot;&gt;branches/24.x&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt; &lt;/td&gt;			&lt;td&gt; Security fixes only &lt;/td&gt;			&lt;td&gt; Dev, Current Stable or Next Stable, Previous Stable LTS&lt;/td&gt;		&lt;/tr&gt;	&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</blockquote>]]></summary>
    <published>2026-08-25T21:17:13+00:00</published>
    <updated>2026-08-25T21:17:13+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Where+to+commit"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Where+to+commit</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[Major Features Missing In Tiki]]></title>
    <summary type="html"><![CDATA[<blockquote>- &lt;/li&gt;&lt;li&gt; 2<br>24-12 : &lt;a href=&quot;https://doc.tiki.org/Tiki28&quot; class=&quot;wiki ext_page doc&quot;&gt;What&#039;s new in Tiki 28.<br>&lt;/a&gt;<del class="diffchar deleted"><strong> LTS?</strong></del><br>&lt;/li&gt;&lt;li&gt; 2<br>25-<br>9 : &lt;a href=&quot;https://doc.tiki.org/Tiki29&quot; class=&quot;wiki ext_page doc&quot;&gt;What&#039;s new in Tiki 29.<br>&lt;/a&gt;<del class="diffchar deleted"><strong> LTS?</strong></del></blockquote><blockquote>+ &lt;/li&gt;&lt;li&gt; 2<br>24-12 : &lt;a href=&quot;https://doc.tiki.org/Tiki28&quot; class=&quot;wiki ext_page doc&quot;&gt;What&#039;s new in Tiki 28.<br>&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt; 2<br>25-<br>9 : &lt;a href=&quot;https://doc.tiki.org/Tiki29&quot; class=&quot;wiki ext_page doc&quot;&gt;What&#039;s new in Tiki 29.<br>&lt;/a&gt;</blockquote><blockquote>- &lt;div id=&quot;wplist-<del class="diffchar deleted"><strong>2</strong></del>-div&quot; class=&quot;table-responsive ts-wrapperdiv &quot; &gt;<br>    &lt;table id=&quot;wplist-<del class="diffchar deleted"><strong>2</strong></del>&quot; class=&quot;table normal table-hover table-striped&quot; data-count=&quot;11&quot;&gt;</blockquote><blockquote>+ &lt;div id=&quot;wplist-<ins class="diffchar inserted"><strong>1</strong></ins>-div&quot; class=&quot;table-responsive ts-wrapperdiv &quot; &gt;<br>    &lt;table id=&quot;wplist-<ins class="diffchar inserted"><strong>1</strong></ins>&quot; class=&quot;table normal table-hover table-striped&quot; data-count=&quot;11&quot;&gt;</blockquote>]]></summary>
    <published>2026-08-25T20:54:51+00:00</published>
    <updated>2026-08-25T20:54:51+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Major+Features+Missing+In+Tiki"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Major+Features+Missing+In+Tiki</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[Daily Build]]></title>
    <summary type="html"><![CDATA[<blockquote>- &lt;p&gt;&lt;div id=&#039;toc&#039;&gt;&lt;div id=&#039;toctitle&#039;&gt;&lt;h3&gt;Content&lt;/h3&gt;&lt;/div&gt;&lt;ul class=&quot;toc&quot;&gt;&lt;/ul&gt;&lt;!--toc--&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;p&gt;&lt;div id=&#039;toc&#039;&gt;&lt;div id=&#039;toctitle&#039;&gt;&lt;h3&gt;Content&lt;/h3&gt;&lt;/div&gt;&lt;ul class=&quot;toc&quot;<ins class="diffchar inserted"><strong>&gt;&lt;li&gt;&lt;a href=&#039;#Current&#039; class=&#039;link&#039;&gt; Current&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Future&#039; class=&#039;link&#039;&gt; Future&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#End_of_life&#039; class=&#039;link&#039;&gt; End of life&lt;/a&gt;&lt;/li</strong></ins>&gt;&lt;/ul&gt;&lt;!--toc--&gt;&lt;/div&gt;</blockquote><blockquote>- <p></blockquote><blockquote>- </li></ul></p></blockquote><blockquote>- <h2 class="showhide_heading d-flex justify-content-start" id="x"> 29.x<a href="#x" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h2></blockquote><blockquote>- <ul><li> <span class="icon icon-file-download fas fa-file-download "   ></span> <a class="wiki external" target="_blank" title="External link" href="https://tiki.org/tar/lastiki_29-x.zip" rel="external">29.x</a><img src="img/icons/green_question.png" alt="Question" width="16" height="16" name="link-external" title="Question" class="icon" /> &mdash; The <strong>../branches/29.x/..</strong> branch from Git</blockquote><blockquote>- <br /><a class="wiki external" target="_blank" title="External link" href="https://tiki.org/tar/lastiki_29-x.zip.md5" rel="external">MD5</a><img src="img/icons/green_question.png" alt="Question" width="16" height="16" name="link-external" title="Question" class="icon" /></blockquote>]]></summary>
    <published>2026-08-25T20:49:07+00:00</published>
    <updated>2026-08-25T20:49:07+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Daily+Build"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Daily+Build</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[DevMenu]]></title>
    <summary type="html"><![CDATA[<blockquote>- </li><li> <a href="Tiki29" title="Tiki29" class="wiki wiki_page">Tiki29</a></blockquote>]]></summary>
    <published>2026-08-25T20:07:37+00:00</published>
    <updated>2026-08-25T20:07:37+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=DevMenu"/>
    <id>https://dev.tiki.org/tiki-index.php?page=DevMenu</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[How to release]]></title>
    <summary type="html"><![CDATA[<blockquote>- <del class="diffchar deleted"><strong>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Requirements_2&#039; class=&#039;link&#039;&gt;1.2.  Requirements&lt;/a&gt;<br></strong></del>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Release_Steps&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.   Release Steps&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#Checkout_Tiki&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.1.  Checkout Tiki&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Setup.sh&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.2.  Setup.sh&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Update_lib_setup_twversion.class.php&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.3.  Update lib/setup/twversion.class.php&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Run_script&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.4.  Run script&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#Check_the_generated_README_file&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.4.1.  Check the generated README file&lt;/a&gt;<br>&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Test_the_produced_tarballs_and_share_the_testing&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.5.  Test the produced &quot;tarballs&quot; and share the testing&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Upload_tarballs_to_Sourceforge&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.6.  Upload tarballs to Sourceforge&lt;/a&gt;<br>&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#After_Release_Steps&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.  After Release Steps&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#Update_lib_setup_twversion.class.php_2&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.1.  Update lib/setup/twversion.class.php&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Update_show2.t.o_info_Skipped_until_note_is_resolved_&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.  Update show2.t.o info (Skipped until note is resolved)&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#checkout_that_version_in_the_local_cache_folder_of_tiki_in_show2.t.o&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.1.  checkout that version in the local cache folder of tiki in show2.t.o&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#tell_tim_to_manage_also_that_branch_to_update_tiki_from_that_version_also&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.2.  tell tim to manage also that branch to update tiki from that version also&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#make_a_tar.gz_file_from_the_new_branch&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.3.  make a tar.gz file from the new branch&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#update_the_field_in_tracker5_at_dev.t.o_to_allow_users_to_choose_that_version&#039; class=&#039;link&#039;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.4.  update the field in tracker5 at dev.t.o to allow users to choose that version&lt;/a&gt;</blockquote><blockquote>+ &lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Release_Steps&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.   Release Steps&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#Checkout_Tiki&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.1.  Checkout Tiki&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Setup.sh&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.2.  Setup.sh&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Update_lib_setup_twversion.class.php&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.3.  Update lib/setup/twversion.class.php&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Run_script&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.4.  Run script&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#Check_the_generated_README_file&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.4.1.  Check the generated README file&lt;/a&gt;<br>&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Test_the_produced_tarballs_and_share_the_testing&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.5.  Test the produced &quot;tarballs&quot; and share the testing&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Upload_tarballs_to_Sourceforge&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.6.  Upload tarballs to Sourceforge&lt;/a&gt;<br>&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#After_Release_Steps&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.  After Release Steps&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#Update_lib_setup_twversion.class.php_2&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.1.  Update lib/setup/twversion.class.php&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Update_show2.t.o_info_Skipped_until_note_is_resolved_&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.  Update show2.t.o info (Skipped until note is resolved)&lt;/a&gt;<br>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#checkout_that_version_in_the_local_cache_folder_of_tiki_in_show2.t.o&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.1.  checkout that version in the local cache folder of tiki in show2.t.o&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#tell_tim_to_manage_also_that_branch_to_update_tiki_from_that_version_also&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.2.  tell tim to manage also that branch to update tiki from that version also&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#make_a_tar.gz_file_from_the_new_branch&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.3.  make a tar.gz file from the new branch&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#update_the_field_in_tracker5_at_dev.t.o_to_allow_users_to_choose_that_version&#039; class=&#039;link&#039;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.4.  update the field in tracker5 at dev.t.o to allow users to choose that version&lt;/a&gt;</blockquote><blockquote>- <h2 class="showhide_heading d-flex justify-content-start" id="Requirements">1.1.  Requirements<a href="#Requirements" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h2></blockquote><blockquote>- <ol><li> Unix shell environment, Linux or OSX suitable.</blockquote><blockquote>- </li><li> Git</blockquote><blockquote>- </li><li> PHP 7.x or 8.x CLI with MySQL, iconv, DOM and SimpleXML extensions. <strong>Note about php versions:</strong> Use PHP 7.x for Tiki 25.x releases and lower, and PHP 8.x for Tiki 26.x releases and upper.</blockquote><blockquote>- </li><li> PHP configuration must allow running external programs (like shell scripts)</blockquote><blockquote>- </li><li> Starting from Tiki 27.x and later versions release, Node.js and NPM are required for the JavasScript build system(for js and css compilation). Please check the required  the versions in package.json at the root of the project in the "engines" property.</blockquote><blockquote>- </li><li> 7za or 7z needed for creating 7zip archives. (may be installed in OSX through homebrew by typing <code>brew install p7zip</code>)</blockquote><blockquote>- </li><li> Plenty of disk space and memory 😉 - at least 64M of memory for php (in php.ini for php-cli)</blockquote><blockquote>- </li><li> The main packaging script is at <a class="wiki external" target="_blank" title="External link" href="https://sourceforge.net/p/tikiwiki/code/HEAD/tree/trunk/doc/devtools/release.php" rel="external">doc/devtools/release.php</a><img src="img/icons/green_question.png" alt="Question" width="16" height="16" name="link-external" title="Question" class="icon" /> but releasing a Tiki version is a lot more than just running the packaging script 😊</blockquote><blockquote>- </li></ol><hr /></blockquote><blockquote>- &lt;h2 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Requirements<del class="diffchar deleted"><strong>_2</strong></del>&quot;&gt;1.<del class="diffchar deleted"><strong>2</strong></del>.  Requirements&lt;a href=&quot;#Requirements<del class="diffchar deleted"><strong>_2</strong></del>&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;</blockquote><blockquote>+ <ins class="diffchar inserted"><strong>&lt;hr /&gt;<br>&lt;p&gt;<br>&lt;/p&gt;<br></strong></ins>&lt;h2 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Requirements&quot;&gt;1.<ins class="diffchar inserted"><strong>1</strong></ins>.  Requirements&lt;a href=&quot;#Requirements&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;</blockquote><blockquote>- &lt;h2 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Release_Steps&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.   Release&amp;nbsp;Steps&lt;a href=&quot;#Release_Steps&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;<br>&lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Checkout_Tiki&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.1.  Checkout&amp;nbsp;Tiki&lt;a href=&quot;#Checkout_Tiki&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h2 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Release_Steps&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.   Release&amp;nbsp;Steps&lt;a href=&quot;#Release_Steps&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;<br>&lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Checkout_Tiki&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.1.  Checkout&amp;nbsp;Tiki&lt;a href=&quot;#Checkout_Tiki&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;strong&gt;OPTION 1 &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Clone the branch you need to create the release for in a separate folder to separate it with your development instance by doing the following. Note that the bellow command is an example, so replace the branch value with that you want to work on, the reference repository by the path of your development instance to gain time when cloning and the target folder by that you want. Also remember to ensure that the reference repository is up to date and contains the required objects for successful cloning.&lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox1<del class="diffchar deleted"><strong>9</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;default&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox1<del class="diffchar deleted"><strong>9</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;git clone --branch=29.x --shared --reference=./tiki https://gitlab.com/tikiwiki/tiki.git tiki29release&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>+ &lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;strong&gt;OPTION 1 &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Clone the branch you need to create the release for in a separate folder to separate it with your development instance by doing the following. Note that the bellow command is an example, so replace the branch value with that you want to work on, the reference repository by the path of your development instance to gain time when cloning and the target folder by that you want. Also remember to ensure that the reference repository is up to date and contains the required objects for successful cloning.&lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox1&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;default&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox1&quot; &gt;&lt;div class=&quot;code&quot;&gt;git clone --branch=29.x --shared --reference=./tiki https://gitlab.com/tikiwiki/tiki.git tiki29release&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>- &lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;strong&gt;OPTION 2&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;checkout the correct branch, i.e the branch you want to create the release for and make sure your origin is &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki.git&quot; rel=&quot;external&quot;&gt;https://gitlab.com/tikiwiki/tiki.git&lt;/a&gt;. For example, if you want to create the 29.1 release, do&lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox2<del class="diffchar deleted"><strong><br></strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;default&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox2<del class="diffchar deleted"><strong><br></strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;git checkout 29.x&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>+ &lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;strong&gt;OPTION 2&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;checkout the correct branch, i.e the branch you want to create the release for and make sure your origin is &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://gitlab.com/tikiwiki/tiki.git&quot; rel=&quot;external&quot;&gt;https://gitlab.com/tikiwiki/tiki.git&lt;/a&gt;. For example, if you want to create the 29.1 release, do&lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox2&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;default&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox2&quot; &gt;&lt;div class=&quot;code&quot;&gt;git checkout 29.x&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>- &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Setup.sh&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.2.  Setup.sh&lt;a href=&quot;#Setup.sh&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Setup.sh&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.2.  Setup.sh&lt;a href=&quot;#Setup.sh&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>21</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>21</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;sh ./setup.sh&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>3</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>3</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;sh ./setup.sh&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Update_lib_setup_twversion.class.php&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.3.  Update&amp;nbsp;lib/setup/twversion.class.php&lt;a href=&quot;#Update_lib_setup_twversion.class.php&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Update_lib_setup_twversion.class.php&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.3.  Update&amp;nbsp;lib/setup/twversion.class.php&lt;a href=&quot;#Update_lib_setup_twversion.class.php&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>22</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>22</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;function TWVersion()</blockquote><blockquote>+ &lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>4</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>4</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;function TWVersion()</blockquote><blockquote>- &lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>23</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>23</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;// Set everything else, including defaults.</blockquote><blockquote>+ &lt;br /&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>5</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>5</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;// Set everything else, including defaults.</blockquote><blockquote>- &lt;br /&gt; &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>24</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>24</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;[REL] Preparing \$VERSION release&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;br /&gt; &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>6</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>6</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;[REL] Preparing \$VERSION release&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Run_script&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.4.  Run&amp;nbsp;script&lt;a href=&quot;#Run_script&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Run_script&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.4.  Run&amp;nbsp;script&lt;a href=&quot;#Run_script&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;br /&gt;&lt;div class=&quot;codecaption&quot;&gt;Display Basic Help&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>25</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>25</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php doc/devtools/release.php --help&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;  to get the command help and see different options that can be used.</blockquote><blockquote>+ &lt;br /&gt;&lt;div class=&quot;codecaption&quot;&gt;Display Basic Help&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>7</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>7</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php doc/devtools/release.php --help&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;  to get the command help and see different options that can be used.</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>26</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>26</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php8.1 doc/devtools/release.php 29.<br> preRC1  --devmode&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>8</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>8</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php8.1 doc/devtools/release.php 29.<br> preRC1  --devmode&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>27</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>27</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php8.1 doc/devtools/release.php 29.1 pre --devmode&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>9</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>9</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php8.1 doc/devtools/release.php 29.1 pre --devmode&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>28</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>28</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php doc/devtools/release.php 26.1&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>1<br></strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>1<br></strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php doc/devtools/release.php 26.1&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codecaption&quot;&gt;Unnecessary for Tiki31 and later&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>29</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>29</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php -d mysqli.default_host=HOST -d mysqli.default_user=USER -d mysqli.default_pw=PASS doc/devtools/release.php 28.2&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt; (replace the version number with the corresponding release version)</blockquote><blockquote>+ &lt;div class=&quot;codecaption&quot;&gt;Unnecessary for Tiki31 and later&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>11</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>11</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php -d mysqli.default_host=HOST -d mysqli.default_user=USER -d mysqli.default_pw=PASS doc/devtools/release.php 28.2&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt; (replace the version number with the corresponding release version)</blockquote><blockquote>- &lt;div class=&quot;codecaption&quot;&gt;Unnecessary for Tiki31 and later, use simplified command instead&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>3<br></strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>3<br></strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php -d mysqli.default_host=HOST -d mysqli.default_user=USER -d mysqli.default_pw=PASS doc/devtools/release.php 29.<br> RC1&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codecaption&quot;&gt;Unnecessary for Tiki31 and later, use simplified command instead&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>12</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>12</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php -d mysqli.default_host=HOST -d mysqli.default_user=USER -d mysqli.default_pw=PASS doc/devtools/release.php 29.<br> RC1&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codecaption&quot;&gt;Check for changes made by the release script before validating commits&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>3</strong></del>1&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>3</strong></del>1&quot; &gt;&lt;div class=&quot;code&quot;&gt;git  status</blockquote><blockquote>+ &lt;div class=&quot;codecaption&quot;&gt;Check for changes made by the release script before validating commits&lt;/div&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox1<ins class="diffchar inserted"><strong>3</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox1<ins class="diffchar inserted"><strong>3</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;git  status</blockquote><blockquote>- &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Check_the_generated_README_file&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.4.1.  Check the generated README&amp;nbsp;file&lt;a href=&quot;#Check_the_generated_README_file&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>+ &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Check_the_generated_README_file&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.4.1.  Check the generated README&amp;nbsp;file&lt;a href=&quot;#Check_the_generated_README_file&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>- &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Test_the_produced_tarballs_and_share_the_testing&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.5.  Test the produced &quot;tarballs&quot; and share the&amp;nbsp;testing&lt;a href=&quot;#Test_the_produced_tarballs_and_share_the_testing&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Test_the_produced_tarballs_and_share_the_testing&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.5.  Test the produced &quot;tarballs&quot; and share the&amp;nbsp;testing&lt;a href=&quot;#Test_the_produced_tarballs_and_share_the_testing&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Upload_tarballs_to_Sourceforge&quot;&gt;1.<del class="diffchar deleted"><strong>3</strong></del>.6.  Upload tarballs to&amp;nbsp;Sourceforge&lt;a href=&quot;#Upload_tarballs_to_Sourceforge&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Upload_tarballs_to_Sourceforge&quot;&gt;1.<ins class="diffchar inserted"><strong>2</strong></ins>.6.  Upload tarballs to&amp;nbsp;Sourceforge&lt;a href=&quot;#Upload_tarballs_to_Sourceforge&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>32</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>32</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd ~/tikipack/$VERSION</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>14</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>14</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd ~/tikipack/$VERSION</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>33</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>33</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;User jsmith seeks to put tiki-12.1.* .7z .zip .tgz .bz2 to the 12.1 directory of his project, tikiwiki:</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>15</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>15</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;User jsmith seeks to put tiki-12.1.* .7z .zip .tgz .bz2 to the 12.1 directory of his project, tikiwiki:</blockquote><blockquote>- &lt;h2 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;After_Release_Steps&quot;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.  After Release&amp;nbsp;Steps&lt;a href=&quot;#After_Release_Steps&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;</blockquote><blockquote>+ &lt;h2 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;After_Release_Steps&quot;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.  After Release&amp;nbsp;Steps&lt;a href=&quot;#After_Release_Steps&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;</blockquote><blockquote>- &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Update_lib_setup_twversion.class.php_2&quot;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.1.  Update&amp;nbsp;lib/setup/twversion.class.php&lt;a href=&quot;#Update_lib_setup_twversion.class.php_2&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Update_lib_setup_twversion.class.php_2&quot;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.1.  Update&amp;nbsp;lib/setup/twversion.class.php&lt;a href=&quot;#Update_lib_setup_twversion.class.php_2&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>34</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>34</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;[REL]Closing release 12.1beta&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>16</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>16</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;[REL]Closing release 12.1beta&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Update_show2.t.o_info_Skipped_until_note_is_resolved_&quot;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.  Update show2.t.o info (Skipped until note is&amp;nbsp;resolved)&lt;a href=&quot;#Update_show2.t.o_info_Skipped_until_note_is_resolved_&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>+ &lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Update_show2.t.o_info_Skipped_until_note_is_resolved_&quot;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.  Update show2.t.o info (Skipped until note is&amp;nbsp;resolved)&lt;a href=&quot;#Update_show2.t.o_info_Skipped_until_note_is_resolved_&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;</blockquote><blockquote>- &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;checkout_that_version_in_the_local_cache_folder_of_tiki_in_show2.t.o&quot;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.1.  checkout that version in the local cache folder of tiki in&amp;nbsp;show2.t.o&lt;a href=&quot;#checkout_that_version_in_the_local_cache_folder_of_tiki_in_show2.t.o&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>+ &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;checkout_that_version_in_the_local_cache_folder_of_tiki_in_show2.t.o&quot;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.1.  checkout that version in the local cache folder of tiki in&amp;nbsp;show2.t.o&lt;a href=&quot;#checkout_that_version_in_the_local_cache_folder_of_tiki_in_show2.t.o&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>- &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;tell_tim_to_manage_also_that_branch_to_update_tiki_from_that_version_also&quot;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.2.  tell tim to manage also that branch to update tiki from that version&amp;nbsp;also&lt;a href=&quot;#tell_tim_to_manage_also_that_branch_to_update_tiki_from_that_version_also&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>+ &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;tell_tim_to_manage_also_that_branch_to_update_tiki_from_that_version_also&quot;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.2.  tell tim to manage also that branch to update tiki from that version&amp;nbsp;also&lt;a href=&quot;#tell_tim_to_manage_also_that_branch_to_update_tiki_from_that_version_also&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>35</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>35</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;BRANCHES=&amp;quot;trunk 23.x 22.x 21.x 2<br>.x 19.x 18.x&amp;quot;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>17</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>17</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;BRANCHES=&amp;quot;trunk 23.x 22.x 21.x 2<br>.x 19.x 18.x&amp;quot;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;make_a_tar.gz_file_from_the_new_branch&quot;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.3.  make a tar.gz file from the new&amp;nbsp;branch&lt;a href=&quot;#make_a_tar.gz_file_from_the_new_branch&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>+ &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;make_a_tar.gz_file_from_the_new_branch&quot;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.3.  make a tar.gz file from the new&amp;nbsp;branch&lt;a href=&quot;#make_a_tar.gz_file_from_the_new_branch&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>36</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-line-numbers=&quot;1&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>36</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd /usr/local/src/tiki/</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>18</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;shell&quot;  data-line-numbers=&quot;1&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>18</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd /usr/local/src/tiki/</blockquote><blockquote>- &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;update_the_field_in_tracker5_at_dev.t.o_to_allow_users_to_choose_that_version&quot;&gt;1.<del class="diffchar deleted"><strong>4</strong></del>.2.4.  update the field in tracker5 at dev.t.o to allow users to choose that&amp;nbsp;version&lt;a href=&quot;#update_the_field_in_tracker5_at_dev.t.o_to_allow_users_to_choose_that_version&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote><blockquote>+ &lt;h4 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;update_the_field_in_tracker5_at_dev.t.o_to_allow_users_to_choose_that_version&quot;&gt;1.<ins class="diffchar inserted"><strong>3</strong></ins>.2.4.  update the field in tracker5 at dev.t.o to allow users to choose that&amp;nbsp;version&lt;a href=&quot;#update_the_field_in_tracker5_at_dev.t.o_to_allow_users_to_choose_that_version&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;</blockquote>]]></summary>
    <published>2026-08-24T22:46:21+00:00</published>
    <updated>2026-08-24T22:46:21+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=How+to+release"/>
    <id>https://dev.tiki.org/tiki-index.php?page=How+to+release</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[Tiki-End-to-End-Testing]]></title>
    <summary type="html"><![CDATA[<blockquote>- &lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Test_suites&#039; class=&#039;link&#039;&gt; Test suites&lt;/a&gt;</blockquote><blockquote>+ <ins class="diffchar inserted"><strong>&lt;ul&gt;&lt;li&gt;&lt;a href=&#039;#The_bootstrap&#039; class=&#039;link&#039;&gt; The bootstrap&lt;/a&gt;<br>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Wiring_a_fixture_to_a_spec&#039; class=&#039;link&#039;&gt; Wiring a fixture to a spec&lt;/a&gt;<br>&lt;/li&gt;&lt;/ul&gt;</strong></ins>&lt;/li&gt;&lt;li&gt;&lt;a href=&#039;#Test_suites&#039; class=&#039;link&#039;&gt; Test suites&lt;/a&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>5</strong></del>3&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>5</strong></del>3&quot; &gt;&lt;div class=&quot;code&quot;&gt;tests/e2e/bin/e2e-setup.sh          # setup + smoke run</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox3<ins class="diffchar inserted"><strong>7</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox3<ins class="diffchar inserted"><strong>7</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;tests/e2e/bin/e2e-setup.sh          # setup + smoke run</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>54</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>54</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;npm install                    # @playwright/test is a root devDependency</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>38</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>38</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;npm install                    # @playwright/test is a root devDependency</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>55</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>55</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cp tests/e2e/.env.template tests/e2e/.env&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>39</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>39</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cp tests/e2e/.env.template tests/e2e/.env&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>56</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>56</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php tests/e2e/fixtures/create_test_users.php&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>4<br></strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>4<br></strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php tests/e2e/fixtures/<ins class="diffchar inserted"><strong>bootstrap.php </strong></ins>create_test_users.php&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;br /&gt;Adapt the PHP invocation to your environment: &lt;code&gt;ddev exec php&lt;/code&gt;, &lt;code&gt;docker exec&lt;/code&gt;, or plain &lt;code&gt;php&lt;/code&gt;.</blockquote><blockquote>+ &lt;br /&gt;<ins class="diffchar inserted"><strong>Every PHP fixture is run this way: &lt;code&gt;bootstrap.php&lt;/code&gt; first, then the script path relative to &lt;code&gt;tests/e2e/fixtures/&lt;/code&gt;. </strong></ins>Adapt the PHP invocation to your environment: &lt;code&gt;ddev exec php&lt;/code&gt;, &lt;code&gt;docker exec&lt;/code&gt;, or plain &lt;code&gt;php&lt;/code&gt;.</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>57</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>57</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;npm run test:e2e         # all suites</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>41</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>41</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;npm run test:e2e         # all suites</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>58</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>58</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd tests/e2e</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>42</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>42</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd tests/e2e</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>59</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>59</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;# Open Playwright UI: browse, filter, and re-run tests interactively</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>43</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>43</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;# Open Playwright UI: browse, filter, and re-run tests interactively</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>6<br></strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>6<br></strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd tests/e2e</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>44</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>44</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;cd tests/e2e</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>61</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>61</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;npx playwright test --reporter=list   # terminal only</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>45</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>45</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;npx playwright test --reporter=list   # terminal only</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox6<del class="diffchar deleted"><strong>2</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox6<del class="diffchar deleted"><strong>2</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;tests/e2e/</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>4</strong></ins>6&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>4</strong></ins>6&quot; &gt;&lt;div class=&quot;code&quot;&gt;tests/e2e/</blockquote><blockquote>+ │   ├── bootstrap.php          Runs every fixture: CLI guard, Tiki + admin, JSON in/out</blockquote><blockquote>- &lt;/li&gt;&lt;li&gt; If PHP fixtures are needed, add a &lt;code&gt;fixtures/&amp;lt;domain-name&amp;gt;/&lt;/code&gt; subfolder.</blockquote><blockquote>+ &lt;/li&gt;&lt;li&gt; If PHP fixtures are needed, add a &lt;code&gt;fixtures/&amp;lt;domain-name&amp;gt;/&lt;/code&gt; subfolder<ins class="diffchar inserted"><strong> and write each script to the fixture contract below: a &lt;code&gt;return function (array $input): array { ... }&lt;/code&gt;, with no bootstrap code of its own</strong></ins>.</blockquote><blockquote>- &lt;<del class="diffchar deleted"><strong>p&gt;Per-test</strong></del>case f<del class="diffchar deleted"><strong>i</strong></del>x<del class="diffchar deleted"><strong>t</strong></del>u<del class="diffchar deleted"><strong>r</strong></del>es<del class="diffchar deleted"><strong> </strong></del>ar<del class="diffchar deleted"><strong>e</strong></del> <del class="diffchar deleted"><strong>w</strong></del>ire<del class="diffchar deleted"><strong>d</strong></del> <del class="diffchar deleted"><strong>&lt;</strong></del>strong<del class="diffchar deleted"><strong>&gt;</strong></del>b<del class="diffchar deleted"><strong>y</strong></del> na<del class="diffchar deleted"><strong>m</strong></del>in<del class="diffchar deleted"><strong>g</strong></del> con<del class="diffchar deleted"><strong>ve</strong></del>n<del class="diffchar deleted"><strong>t</strong></del>i<del class="diffchar deleted"><strong>o</strong></del>n&lt;/stro<del class="diffchar deleted"><strong>ng&gt;</strong></del>. <del class="diffchar deleted"><strong>A</strong></del> spec never writes <del class="diffchar deleted"><strong>i</strong></del>ts o<del class="diffchar deleted"><strong>w</strong></del>n &lt;code&gt;<del class="diffchar deleted"><strong>b</strong></del>e<del class="diffchar deleted"><strong>f</strong></del>o<del class="diffchar deleted"><strong>r</strong></del>e<del class="diffchar deleted"><strong>Al</strong></del>l&lt;/code&gt;<del class="diffchar deleted"><strong> /</strong></del> &lt;code&gt;<del class="diffchar deleted"><strong>af</strong></del>t<del class="diffchar deleted"><strong>e</strong></del>r<del class="diffchar deleted"><strong>All</strong></del>&lt;/code&gt; p<del class="diffchar deleted"><strong>l</strong></del>um<del class="diffchar deleted"><strong>b</strong></del>ing<del class="diffchar deleted"><strong>;</strong></del> <del class="diffchar deleted"><strong>i</strong></del>t a<del class="diffchar deleted"><strong>dd</strong></del>s on<del class="diffchar deleted"><strong>e</strong></del> <del class="diffchar deleted"><strong>l</strong></del>in<del class="diffchar deleted"><strong>e</strong></del> a<del class="diffchar deleted"><strong>t</strong></del> the to<del class="diffchar deleted"><strong>p:</strong></del></blockquote><blockquote>+ &lt;<ins class="diffchar inserted"><strong>h3 </strong></ins>c<ins class="diffchar inserted"><strong>l</strong></ins>as<ins class="diffchar inserted"><strong>s=&quot;showhid</strong></ins>e<ins class="diffchar inserted"><strong>_heading</strong></ins> <ins class="diffchar inserted"><strong>d-</strong></ins>f<ins class="diffchar inserted"><strong>le</strong></ins>x<ins class="diffchar inserted"><strong> j</strong></ins>u<ins class="diffchar inserted"><strong>stify-cont</strong></ins>e<ins class="diffchar inserted"><strong>nt-</strong></ins>s<ins class="diffchar inserted"><strong>t</strong></ins>ar<ins class="diffchar inserted"><strong>t&quot;</strong></ins> i<ins class="diffchar inserted"><strong>d=&quot;The_bootst</strong></ins>r<ins class="diffchar inserted"><strong>ap&quot;&gt; Th</strong></ins>e <ins class="diffchar inserted"><strong>boot</strong></ins>str<ins class="diffchar inserted"><strong>ap&lt;a href=&quot;#The_b</strong></ins>o<ins class="diffchar inserted"><strong>otstrap&quot; class=&quot;headi</strong></ins>ng<ins class="diffchar inserted"><strong>-link&quot; aria-la</strong></ins>b<ins class="diffchar inserted"><strong>el=&quot;heading</strong></ins> <ins class="diffchar inserted"><strong>li</strong></ins>n<ins class="diffchar inserted"><strong>k&quot;&gt;&lt;sp</strong></ins>a<ins class="diffchar inserted"><strong>n class=&quot;</strong></ins>i<ins class="diffchar inserted"><strong>co</strong></ins>n <ins class="diffchar inserted"><strong>i</strong></ins>con<ins class="diffchar inserted"><strong>-li</strong></ins>n<ins class="diffchar inserted"><strong>k fas fa-l</strong></ins>in<ins class="diffchar inserted"><strong>k &quot;   &gt;</strong></ins>&lt;/s<ins class="diffchar inserted"><strong>pan&gt;&lt;/a&gt;&lt;/h3&gt;<br>&lt;p&gt;<br>&lt;br /&gt;No fix</strong></ins>t<ins class="diffchar inserted"><strong>u</strong></ins>r<ins class="diffchar inserted"><strong>e script b</strong></ins>o<ins class="diffchar inserted"><strong>otstraps itself</strong></ins>. <ins class="diffchar inserted"><strong>They</strong></ins> <ins class="diffchar inserted"><strong>all run through &lt;code&gt;fixture</strong></ins>s<ins class="diffchar inserted"><strong>/bootstra</strong></ins>p<ins class="diffchar inserted"><strong>.php&lt;/cod</strong></ins>e<ins class="diffchar inserted"><strong>&gt;, whi</strong></ins>c<ins class="diffchar inserted"><strong>h</strong></ins> <ins class="diffchar inserted"><strong>ow</strong></ins>n<ins class="diffchar inserted"><strong>s </strong></ins>ever<ins class="diffchar inserted"><strong>y step they</strong></ins> w<ins class="diffchar inserted"><strong>ould othe</strong></ins>r<ins class="diffchar inserted"><strong>w</strong></ins>i<ins class="diffchar inserted"><strong>se repea</strong></ins>t<ins class="diffchar inserted"><strong>: routing </strong></ins>e<ins class="diffchar inserted"><strong>rror</strong></ins>s t<ins class="diffchar inserted"><strong>o </strong></ins>s<ins class="diffchar inserted"><strong>tderr,</strong></ins> <ins class="diffchar inserted"><strong>the CLI-</strong></ins>on<ins class="diffchar inserted"><strong>ly guard,</strong></ins> &lt;code&gt;<ins class="diffchar inserted"><strong>tiki-s</strong></ins>e<ins class="diffchar inserted"><strong>tup.php&lt;/c</strong></ins>o<ins class="diffchar inserted"><strong>de&gt; and &lt;code&gt;h</strong></ins>el<ins class="diffchar inserted"><strong>pers.php</strong></ins>&lt;/code&gt;<ins class="diffchar inserted"><strong>,</strong></ins> &lt;code&gt;<ins class="diffchar inserted"><strong>boots</strong></ins>tr<ins class="diffchar inserted"><strong>ap_admin()</strong></ins>&lt;/code&gt;<ins class="diffchar inserted"><strong>,</strong></ins> <ins class="diffchar inserted"><strong>decoding the in</strong></ins>p<ins class="diffchar inserted"><strong>ut arg</strong></ins>um<ins class="diffchar inserted"><strong>ent, print</strong></ins>ing <ins class="diffchar inserted"><strong>the resul</strong></ins>t as<ins class="diffchar inserted"><strong> JSON</strong></ins> on <ins class="diffchar inserted"><strong>stdout, and turn</strong></ins>in<ins class="diffchar inserted"><strong>g</strong></ins> a th<ins class="diffchar inserted"><strong>rown </strong></ins>e<ins class="diffchar inserted"><strong>xception</strong></ins> <ins class="diffchar inserted"><strong>in</strong></ins>to<ins class="diffchar inserted"><strong> a stderr message and a non-zero exit.</strong></ins></blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox6<del class="diffchar deleted"><strong>3</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;typescript&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>6</strong></del>3&quot; &gt;&lt;div class=&quot;code&quot;&gt;import { useSuiteFixtures } from &amp;quot;../../common/fixtures&amp;quot;;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>47&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox47&quot; &gt;&lt;div class=&quot;code&quot;&gt;php tests/e2e/fixtures/bootstrap.php &amp;lt;script&amp;gt; [base</strong></ins>6<ins class="diffchar inserted"><strong>4(JSON input)]&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;<br>&lt;p&gt;<br>&lt;br /&gt;The script path is relative to &lt;code&gt;fixtures/&lt;/code&gt;, so no caller has to know where the Tiki root sits inside a container. A fixture therefore contains only its own logic. It returns a callable:<br>&lt;/p&gt;<br><br>&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox48</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;<ins class="diffchar inserted"><strong>php&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  s</strong></ins>ty<ins class="diffchar inserted"><strong>le=&quot;white-s</strong></ins>p<ins class="diffchar inserted"><strong>ac</strong></ins>e<ins class="diffchar inserted"><strong>:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox48&quot; &gt;&lt;div cla</strong></ins>s<ins class="diffchar inserted"><strong>s=&quot;code&quot;&gt;&amp;lt;?php<br><br>// TC-11 setup: </strong></ins>cr<ins class="diffchar inserted"><strong>eates an encrypt</strong></ins>i<ins class="diffchar inserted"><strong>on key assigned to Test1.<br><br>return function (array $in</strong></ins>p<ins class="diffchar inserted"><strong>u</strong></ins>t<ins class="diffchar inserted"><strong>): array {<br>    delete_keys_by_name(&amp;#<br>39;TC11-EncKey&amp;#<br>39;);<br><br>    $key = create_encryption_key(&amp;#<br>39;TC11-EncKey&amp;#<br>39;, &amp;#<br>39;Test1&amp;#<br>39;);<br><br>    return [&amp;#<br>39;keyId&amp;#<br>39; =&amp;gt; $key[&amp;#<br>39;keyId&amp;#<br>39;], &amp;#<br>39;share&amp;#<br>39; =&amp;gt; $key[&amp;#<br>39;shares&amp;#<br>39;][<br>]];<br>};&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;<br>&lt;p&gt;<br>&lt;br /&gt;The returned array is printed as JSON on stdout, the only thing ever written there. &lt;code&gt;$input&lt;/code&gt; is the decoded argument: for a &lt;code&gt;tcNN_teardown.php&lt;/code&gt; that is whatever &lt;code&gt;tcNN_setup.php&lt;/code&gt; printed. Failures throw, and &lt;code&gt;common/fixtures.ts&lt;/code&gt; surfaces the message and skips the suite.<br>&lt;/p&gt;<br><br>&lt;p&gt;A fixture that needs a different environment says so instead of hand-rolling one:<br>&lt;/p&gt;<br><br>&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox49&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;php</strong></ins>&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>49&quot; &gt;&lt;div class=&quot;code&quot;&gt;return [<br>    &amp;#<br></strong></ins>3<ins class="diffchar inserted"><strong>9;tiki&amp;#<br>39;  =&amp;gt; false,   // skip tiki-setup.php, raw PDO access only<br>    &amp;#<br>39;admin&amp;#<br>39; =&amp;gt; false,   // skip bootstrap_admin(), defaults to the &amp;#<br>39;tiki&amp;#<br>39; value<br>    &amp;#<br>39;run&amp;#<br>39;   =&amp;gt; function (array $input): array { ... },<br>];&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;<br>&lt;p&gt;<br>&lt;/p&gt;<br>&lt;h3 class=&quot;showhide_heading d-flex justify-content-start&quot; id=&quot;Wiring_a_fixture_to_a_spec&quot;&gt; Wiring a fixture to a&amp;nbsp;spec&lt;a href=&quot;#Wiring_a_fixture_to_a_spec&quot; class=&quot;heading-link&quot; aria-label=&quot;heading link&quot;&gt;&lt;span class=&quot;icon icon-link fas fa-link &quot;   &gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;<br>&lt;p&gt;<br>&lt;br /&gt;Per-testcase fixtures are wired &lt;strong&gt;by naming convention&lt;/strong&gt;. A spec never writes its own &lt;code&gt;beforeAll&lt;/code&gt; / &lt;code&gt;afterAll&lt;/code&gt; plumbing; it adds one line at the top:<br>&lt;/p&gt;<br><br>&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox5<br>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;typescript&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox5<br></strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;import { useSuiteFixtures } from &amp;quot;../../common/fixtures&amp;quot;;</blockquote><blockquote>- &lt;/li&gt;&lt;li&gt; &lt;strong&gt;teardown&lt;/strong&gt; runs in &lt;code&gt;afterAll&lt;/code&gt; and receives th<del class="diffchar deleted"><strong>e</strong></del> se<del class="diffchar deleted"><strong>tup&#039;s</strong></del> JSON o<del class="diffchar deleted"><strong>ut</strong></del>put<del class="diffchar deleted"><strong> </strong></del>&lt;<del class="diffchar deleted"><strong>str</strong></del>o<del class="diffchar deleted"><strong>ng</strong></del>&gt;base64-encoded <del class="diffchar deleted"><strong>a</strong></del>s it<del class="diffchar deleted"><strong>s first CLI argument&lt;/strong&gt;, which</strong></del> is shell-safe through &lt;code&gt;ddev exec&lt;/code&gt;, Docker or plain PHP, <del class="diffchar deleted"><strong>so it</strong></del> can read back the IDs setup created.</blockquote><blockquote>+ &lt;/li&gt;&lt;li&gt; &lt;strong&gt;teardown&lt;/strong&gt; runs in &lt;code&gt;afterAll&lt;/code&gt; and receives th<ins class="diffchar inserted"><strong>at</strong></ins> s<ins class="diffchar inserted"><strong>am</strong></ins>e JSON <ins class="diffchar inserted"><strong>as its &lt;c</strong></ins>o<ins class="diffchar inserted"><strong>de&gt;$in</strong></ins>put&lt;<ins class="diffchar inserted"><strong>/c</strong></ins>o<ins class="diffchar inserted"><strong>de</strong></ins>&gt;<ins class="diffchar inserted"><strong>, handed over </strong></ins>base64-encoded s<ins class="diffchar inserted"><strong>o</strong></ins> it is shell-safe through &lt;code&gt;ddev exec&lt;/code&gt;, Docker or plain PHP, <ins class="diffchar inserted"><strong>and</strong></ins> can read back the IDs setup created.</blockquote><blockquote>- &lt;/li&gt;&lt;/ul&gt;&lt;<del class="diffchar deleted"><strong>br </strong></del>/<del class="diffchar deleted"><strong>&gt;Most scri</strong></del>p<del class="diffchar deleted"><strong>ts &lt;code</strong></del>&gt;<del class="diffchar deleted"><strong>require_once&lt;/code&gt; &lt;code&gt;tiki-setup.php&lt;/code&gt; and must be invoked with the Tiki web root as the working directory. The exception is &lt;code&gt;create_test_users.php&lt;/code&gt;, which connects to the database through PDO directly using &lt;code&gt;db/local.php&lt;/code&gt;. It needs no Tiki bootstrap and works with plain PHP CLI.<br>&lt;/p&gt;<br></strong></del><br>&lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Script&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Used by&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;create_test_users.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Global setup&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Ensure Test1/Test2 exist with known passwords&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;enable_encryption.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Global setup&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Persist &lt;code&gt;feature_user_encryption=&#039;y&#039;&lt;/code&gt; in the DB, idempotent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;clean_baseline.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Maintenance&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Wipe all TC-prefixed keys and trackers from the DB, for recovery after a killed run in existing-instance mode&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;provision_admin.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Provisioning&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Set admin password and &lt;code&gt;pass_confirm&lt;/code&gt; on a fresh install, called by &lt;code&gt;e2e-provision.sh&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;provision_defaults.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Provisioning&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Test-friendly prefs on a fresh install, for example no admin wizard, called by &lt;code&gt;e2e-provision.sh&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>4_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create tracker, encrypted field and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>4_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-<br>4 tracker and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>6_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create tracker and key, return Test1 share string&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>6_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-<br>6 tracker and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc1<br>_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create tracker and key with share string&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc1<br>_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-1<br> tracker and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc11_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create key for the regeneration test&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc11_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-11 key&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>+ &lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;<br>&lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Script&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Used by&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Purpose&lt;/strong&gt;<ins class="diffchar inserted"><strong>&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;bootstrap.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Every fixture&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Runs a fixture script: CLI guard, Tiki bootstrap, admin permissions, JSON in and out</strong></ins>&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;create_test_users.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Global setup&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Ensure Test1/Test2 exist with known passwords&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;enable_encryption.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Global setup&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Persist &lt;code&gt;feature_user_encryption=&#039;y&#039;&lt;/code&gt; in the DB, idempotent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;clean_baseline.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Maintenance&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Wipe all TC-prefixed keys and trackers from the DB, for recovery after a killed run in existing-instance mode&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;provision_admin.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Provisioning&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Set admin password and &lt;code&gt;pass_confirm&lt;/code&gt; on a fresh install, called by &lt;code&gt;e2e-provision.sh&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;provision_defaults.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Provisioning&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Test-friendly prefs on a fresh install, for example no admin wizard, called by &lt;code&gt;e2e-provision.sh&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>4_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create tracker, encrypted field and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>4_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-<br>4 tracker and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>6_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create tracker and key, return Test1 share string&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc<br>6_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-<br>6 tracker and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc1<br>_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create tracker and key with share string&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc1<br>_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-1<br> tracker and key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc11_setup.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Create key for the regeneration test&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;shared-secrets/tc11_teardown.php&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;shared-secrets&lt;/td&gt;&lt;td class=&quot;wikicell&quot; &gt;Remove TC-11 key&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>64</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>64</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;# 1. Provision once (writes db/local.php, installs the schema, sets the admin password).</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>51</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-syntax=&quot;bash&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>51</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;# 1. Provision once (writes db/local.php, installs the schema, sets the admin password).</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>6</strong></del>5&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>6</strong></del>5&quot; &gt;&lt;div class=&quot;code&quot;&gt;https://gitlab.com/tikiwiki/tiki/-/jobs/&amp;lt;job-id&amp;gt;/artifacts/file/tests/e2e/playwright-report/index.html&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox5<ins class="diffchar inserted"><strong>2</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox5<ins class="diffchar inserted"><strong>2</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;https://gitlab.com/tikiwiki/tiki/-/jobs/&amp;lt;job-id&amp;gt;/artifacts/file/tests/e2e/playwright-report/index.html&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Symptom&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;&lt;strong&gt;Likely cause and fix&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Global setup warns that fixtures could not run&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt; &lt;code&gt;TIKI_FIXTURE_CMD&lt;/code&gt; does not match your environment. Set it to &lt;code&gt;php&lt;/code&gt;, &lt;code&gt;ddev exec php&lt;/code&gt;, or your Docker equivalent.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;A spec file is skipped with a fixture warning&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;Its &lt;code&gt;tcNN_setup.php&lt;/code&gt; failed. Run <del class="diffchar deleted"><strong>th</strong></del>e s<del class="diffchar deleted"><strong>cr</strong></del>i<del class="diffchar deleted"><strong>p</strong></del>t<del class="diffchar deleted"><strong> man</strong></del>ual<del class="diffchar deleted"><strong>ly</strong></del> from the Tiki root to see the PHP error.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Tabs or modals time out&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;The frontend bundles are missing. Run &lt;code&gt;npm run build&lt;/code&gt; so &lt;code&gt;public/generated/&lt;/code&gt; exists, otherwise Bootstrap JS never loads.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Key creation fails with a math error&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt; &lt;code&gt;bcmath&lt;/code&gt; is not installed. The Shamir secret-sharing library behind shared secrets requires it.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Leftover TC-prefixed keys or trackers after a killed run&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;Run &lt;code&gt;php tests/e2e/fixtures/clean_baseline.php&lt;/code&gt; from the Tiki root, in existing-instance mode only.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;e2e-provision.sh&lt;/code&gt; refuses to run&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;A &lt;code&gt;db/local.php&lt;/code&gt; already exists. Use a fresh checkout or worktree, or pass &lt;code&gt;--force&lt;/code&gt; to reset.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>+ &lt;table class=&quot;wikitable table table-striped table-hover&quot;&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;&lt;strong&gt;Symptom&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;&lt;strong&gt;Likely cause and fix&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Global setup warns that fixtures could not run&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt; &lt;code&gt;TIKI_FIXTURE_CMD&lt;/code&gt; does not match your environment. Set it to &lt;code&gt;php&lt;/code&gt;, &lt;code&gt;ddev exec php&lt;/code&gt;, or your Docker equivalent.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;A spec file is skipped with a fixture warning&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;Its &lt;code&gt;tcNN_setup.php&lt;/code&gt; failed. Run <ins class="diffchar inserted"><strong>&lt;cod</strong></ins>e<ins class="diffchar inserted"><strong>&gt;php</strong></ins> <ins class="diffchar inserted"><strong>te</strong></ins>s<ins class="diffchar inserted"><strong>ts/e2e/f</strong></ins>i<ins class="diffchar inserted"><strong>x</strong></ins>tu<ins class="diffchar inserted"><strong>res/bootstr</strong></ins>a<ins class="diffchar inserted"><strong>p.php &amp;</strong></ins>l<ins class="diffchar inserted"><strong>t;suite&amp;gt;/tcNN_setup.php&lt;/code&gt;</strong></ins> from the Tiki root to see the PHP error.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Tabs or modals time out&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;The frontend bundles are missing. Run &lt;code&gt;npm run build&lt;/code&gt; so &lt;code&gt;public/generated/&lt;/code&gt; exists, otherwise Bootstrap JS never loads.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Key creation fails with a math error&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt; &lt;code&gt;bcmath&lt;/code&gt; is not installed. The Shamir secret-sharing library behind shared secrets requires it.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt;Leftover TC-prefixed keys or trackers after a killed run&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;Run &lt;code&gt;php tests/e2e/fixtures/<ins class="diffchar inserted"><strong>bootstrap.php </strong></ins>clean_baseline.php&lt;/code&gt; from the Tiki root, in existing-instance mode only.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;wikicell&quot; &gt; &lt;code&gt;e2e-provision.sh&lt;/code&gt; refuses to run&lt;/td&gt;&lt;td class=&quot;wikicell&quot;  colspan=&quot;2&quot;&gt;A &lt;code&gt;db/local.php&lt;/code&gt; already exists. Use a fresh checkout or worktree, or pass &lt;code&gt;--force&lt;/code&gt; to reset.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</blockquote><blockquote>- &lt;/li&gt;&lt;li&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://playwright.dev/docs/intro&quot; rel=&quot;external&quot;&gt;Playwright documentation&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt;<del class="diffchar deleted"><strong><br>&lt;p&gt;&lt;/p&gt;<br></strong></del>&lt;/li&gt;&lt;/ul&gt;</blockquote><blockquote>+ &lt;/li&gt;&lt;li&gt; &lt;a class=&quot;wiki external&quot; target=&quot;_blank&quot; title=&quot;External link&quot; href=&quot;https://playwright.dev/docs/intro&quot; rel=&quot;external&quot;&gt;Playwright documentation&lt;/a&gt;&lt;img src=&quot;img/icons/green_question.png&quot; alt=&quot;Question&quot; width=&quot;16&quot; height=&quot;16&quot; name=&quot;link-external&quot; title=&quot;Question&quot; class=&quot;icon&quot; /&gt;&lt;/li&gt;&lt;/ul&gt;</blockquote>]]></summary>
    <published>2026-08-21T20:32:47+00:00</published>
    <updated>2026-08-21T20:32:47+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Tiki-End-to-End-Testing"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Tiki-End-to-End-Testing</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[Testing Checklist]]></title>
    <summary type="html"><![CDATA[<blockquote>- &lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Log in&lt;/li&gt;</blockquote><blockquote>+ &lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&gt; Log <ins class="diffchar inserted"><strong>in&lt;br/&gt;<br>** Local login&lt;br/&gt;<br>** Logout&lt;br/&gt;<br>** Password reset&lt;br/&gt;<br>** Failed-login/lockout&lt;br/&gt;<br>** 2FA&lt;br/&gt;<br>** Remember-me/session&lt;br/&gt;<br>** Permissions after log</strong></ins>in&lt;/li&gt;</blockquote>]]></summary>
    <published>2026-08-18T19:25:42+00:00</published>
    <updated>2026-08-18T19:25:42+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Testing+Checklist"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Testing+Checklist</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[Decision Analysis for Image Editing Library in Tiki]]></title>
    <summary type="html"><![CDATA[<blockquote>+ <h1 class="showhide_heading d-flex justify-content-start" id="Status"> Status<a href="#Status" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h1></blockquote><blockquote>+ <p></blockquote><blockquote>+ <br />This comparison is still a draft. The Cropper.js version in merge request !10413 is part of this evaluation, not a final decision.</blockquote><blockquote>+ </p></blockquote><blockquote>+ </blockquote><blockquote>+ <p>Related links:</blockquote><blockquote>+ </p></blockquote><blockquote>+ <ul><li> <a class="wiki external" target="_blank" title="External link" href="https://dev.tiki.org/item1767-Image-Manipulation-image-cropping-color-changing-etc" rel="external">Image manipulation request:https://dev.tiki.org/item1767</a><img src="img/icons/green_question.png" alt="Question" width="16" height="16" name="link-external" title="Question" class="icon" /></blockquote><blockquote>+ </li><li> <a class="wiki external" target="_blank" title="External link" href="https://gitlab.com/tikiwiki/tiki/-/merge_requests/10413" rel="external">Merge request !10413</a><img src="img/icons/green_question.png" alt="Question" width="16" height="16" name="link-external" title="Question" class="icon" /></blockquote><blockquote>+ </li><li> <a class="wiki external" target="_blank" title="External link" href="https://dev.tiki.org/How-to-pick-a-software-library" rel="external">How to pick a software library</a><img src="img/icons/green_question.png" alt="Question" width="16" height="16" name="link-external" title="Question" class="icon" /></blockquote><blockquote>+ <p></blockquote><blockquote>+ </li></ul></p></blockquote><blockquote>+ <h1 class="showhide_heading d-flex justify-content-start" id="What_we_need"> 1. What we&nbsp;need<a href="#What_we_need" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h1></blockquote><blockquote>+ <p></blockquote><blockquote>+ <br />The goal is to let someone make basic changes to an image before uploading it to a Tiki File Gallery.</blockquote><blockquote>+ </p></blockquote><blockquote>+ </blockquote><blockquote>+ <p>The first version should:</blockquote><blockquote>+ </p></blockquote><blockquote>+ <ul><li> work with JPEG, PNG, and WebP files;</blockquote><blockquote>+ </li><li> crop, rotate, and flip images, with a few basic effects;</blockquote><blockquote>+ </li><li> work inside the existing Vue uploader and Bootstrap interface;</blockquote><blockquote>+ </li><li> return a normal <em>File</em> to the current upload process;</blockquote><blockquote>+ </li><li> keep useful image quality and resolution;</blockquote><blockquote>+ </li><li> be usable on desktop and mobile; and</blockquote><blockquote>+ </li><li> use a Tiki-compatible license and be reasonably maintainable.</blockquote><blockquote>+ <p></blockquote><blockquote>+ </li></ul></p></blockquote><blockquote>+ <h1 class="showhide_heading d-flex justify-content-start" id="What_to_compare"> 2. What to&nbsp;compare<a href="#What_to_compare" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h1></blockquote><blockquote>+ <p></blockquote><blockquote>+ <br />The main points are the license, project activity, bundle size, browser and mobile support, accessibility, Vue compatibility, image quality, integration effort, and long-term maintenance. Existing use in Tiki or WikiSuite should also count in an option's favor.</blockquote><blockquote>+ </p></blockquote><blockquote>+ </blockquote><blockquote>+ <h1 class="showhide_heading d-flex justify-content-start" id="Options"> 3. Options<a href="#Options" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h1></blockquote><blockquote>+ <p></blockquote><blockquote>+ </p></blockquote><blockquote>+ <h2 class="showhide_heading d-flex justify-content-start" id="Cropper.js_2.1.1"> Cropper.js 2.1.1<a href="#Cropper.js_2.1.1" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h2></blockquote><blockquote>+ <p></blockquote><blockquote>+ <br />Cropper.js is focused on cropping and image transforms. It handles the difficult selection and transform logic, works independently of a particular framework, and is MIT licensed. The current MR shows that it can be integrated with the File Gallery uploader.</blockquote><blockquote>+ </p></blockquote><blockquote>+ </blockquote><blockquote>+ <p>The tradeoff is that it would be a new Tiki dependency. Tiki still needs to provide the modal, controls, mobile layout, accessibility, effects, and upload integration. Canvas is also still used to render the final image and turn it back into a file.</blockquote><blockquote>+ </p></blockquote><blockquote>+ </blockquote><blockquote>+ <h2 class="showhide_heading d-flex justify-content-start" id="Tiki_s_H5P_image_editor"> Tiki's H5P image&nbsp;editor<a href="#Tiki_s_H5P_image_editor" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h2></blockquote><blockquote>+ <p></blockquote><blockquote>+ <br />The H5P integration already ships image-editing code based on Darkroom.js and Fabric.js. However, that code expects the H5P editor environment and its globals and assets. It is not a standalone component that the Vue uploader can import directly, so reusing it would require separating and maintaining the H5P-specific parts.</blockquote><blockquote>+ </p></blockquote><blockquote>+ </blockquote><blockquote>+ <h2 class="showhide_heading d-flex justify-content-start" id="Native_Canvas"> Native Canvas<a href="#Native_Canvas" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h2></blockquote><blockquote>+ <p></blockquote><blockquote>+ <br />Canvas works well for effects and for exporting the edited image, and it does not add a dependency. The downside is that Tiki would have to maintain all crop selection, transform, mouse, touch, and preview behavior itself. That is much more custom code than using Canvas only for final rendering.</blockquote><blockquote>+ </p></blockquote><blockquote>+ </blockquote><blockquote>+ <p></blockquote><blockquote>+ </p></blockquote><blockquote>+ <h1 class="showhide_heading d-flex justify-content-start" id="Current_view"> 4. Current&nbsp;view<a href="#Current_view" class="heading-link" aria-label="heading link"><span class="icon icon-link fas fa-link "   ></span></a></h1></blockquote><blockquote>+ <p></blockquote><blockquote>+ <br />Cropper.js looks like the strongest option so far. It removes most of the custom crop logic and is easier to reuse here than the H5P editor. This remains a preliminary view until the remaining alternatives and bundle impact are checked and the Tiki developer community has had a chance to comment.</p></blockquote><blockquote>+ </blockquote>]]></summary>
    <published>2026-08-17T10:22:42+00:00</published>
    <updated>2026-08-17T10:22:42+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Decision+Analysis+for+Image+Editing+Library+in+Tiki"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Decision+Analysis+for+Image+Editing+Library+in+Tiki</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[Creating or maintaining translations]]></title>
    <summary type="html"><![CDATA[<blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>74</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>74</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --lang=fr --skip-remove&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>66</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>66</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --lang=fr --skip-remove&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox7<del class="diffchar deleted"><strong>5</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox7<del class="diffchar deleted"><strong>5</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;// &amp;quot;Save&amp;quot; =&amp;gt; &amp;quot;Save&amp;quot;,&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>6</strong></ins>7&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>6</strong></ins>7&quot; &gt;&lt;div class=&quot;code&quot;&gt;// &amp;quot;Save&amp;quot; =&amp;gt; &amp;quot;Save&amp;quot;,&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>7</strong></del>6&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>7</strong></del>6&quot; &gt;&lt;div class=&quot;code&quot;&gt;&amp;quot;Save&amp;quot; =&amp;gt; &amp;quot;Enregistrer&amp;quot;,&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox6<ins class="diffchar inserted"><strong>8</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox6<ins class="diffchar inserted"><strong>8</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;&amp;quot;Save&amp;quot; =&amp;gt; &amp;quot;Enregistrer&amp;quot;,&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>77</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>77</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --lang=fr&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>69</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>69</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --lang=fr&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox7<del class="diffchar deleted"><strong>8</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox7<del class="diffchar deleted"><strong>8</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --lang=fr --skip-remove</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox7<ins class="diffchar inserted"><strong><br></strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox7<ins class="diffchar inserted"><strong><br></strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --lang=fr --skip-remove</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox7<del class="diffchar deleted"><strong>9</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox7<del class="diffchar deleted"><strong>9</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --custom --lang=fr --skip-remove&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox7<ins class="diffchar inserted"><strong>1</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox7<ins class="diffchar inserted"><strong>1</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings --custom --lang=fr --skip-remove&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>8<br></strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>8<br></strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;&amp;lt;?php</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>72</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>72</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;&amp;lt;?php</blockquote><blockquote>- &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<del class="diffchar deleted"><strong>81</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<del class="diffchar deleted"><strong>81</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings [options]&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox<ins class="diffchar inserted"><strong>73</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox<ins class="diffchar inserted"><strong>73</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php translation:getstrings [options]&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>- <br /><a href="tiki-editpage.php?page=_custom" title="Create page: _custom" class="wiki wikinew text-danger tips">_custom</a></blockquote>]]></summary>
    <published>2026-08-09T19:58:34+00:00</published>
    <updated>2026-08-09T19:58:34+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Creating+or+maintaining+translations"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Creating+or+maintaining+translations</id>
  </entry>
  <entry>
    <title type="html"><![CDATA[Endangered features]]></title>
    <summary type="html"><![CDATA[<blockquote>- &lt;div&gt;	&lt;span class=&quot;wpfade-span-plain&quot;&gt;		&lt;a id=&quot;wpfade-<del class="diffchar deleted"><strong>3</strong></del>-link&quot; class=&gt;			Details		&lt;/a&gt;	&lt;/span&gt;	&lt;div id=&quot;wpfade-<del class="diffchar deleted"><strong>3</strong></del>&quot; class=&quot;wpfade-div-plain&quot;&gt;			&lt;ul&gt;&lt;ul&gt;&lt;li&gt; &lt;a href=&quot;Council-of-Europe#File_galleries_and_image_galleries_merging&quot; title=&quot;Description of our dev-related activities&quot; class=&quot;wiki wiki_page&quot;&gt;&quot;The idea is to make the image galleries redundant, then obsolete, then nonexistant.&quot;&lt;/a&gt;<br>&lt;br /&gt;&lt;div id=&#039;wpfade-<del class="diffchar deleted"><strong>4</strong></del>-outer&#039; class=&#039;card &#039;&gt;&lt;div class=&#039;card-header&#039;&gt;&lt;a data-bs-toggle=&#039;collapse&#039; class=&#039;d-block&#039; href=&#039;#wpfade-<del class="diffchar deleted"><strong>4</strong></del>-inner&#039;&gt;What is missing in File galleries?&lt;span class=&#039;icon icon-menu-extra fas fa-chevron-down fa-fw&#039; style=&#039;float:right&#039;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div id=&#039;wpfade-<del class="diffchar deleted"><strong>4</strong></del>-inner&#039; class=&#039;panel-collapse collapse&#039;&gt;&lt;div class=&#039;card-body&#039;&gt;&lt;p&gt;Following the 2<br>14-11-<br>6 BBB meeting, Jyhem did a search of everything Image Galleries offer which is not in File Galleries.</blockquote><blockquote>+ &lt;div&gt;	&lt;span class=&quot;wpfade-span-plain&quot;&gt;		&lt;a id=&quot;wpfade-<ins class="diffchar inserted"><strong>1</strong></ins>-link&quot; class=&gt;			Details		&lt;/a&gt;	&lt;/span&gt;	&lt;div id=&quot;wpfade-<ins class="diffchar inserted"><strong>1</strong></ins>&quot; class=&quot;wpfade-div-plain&quot;&gt;			&lt;ul&gt;&lt;ul&gt;&lt;li&gt; &lt;a href=&quot;Council-of-Europe#File_galleries_and_image_galleries_merging&quot; title=&quot;Description of our dev-related activities&quot; class=&quot;wiki wiki_page&quot;&gt;&quot;The idea is to make the image galleries redundant, then obsolete, then nonexistant.&quot;&lt;/a&gt;<br>&lt;br /&gt;&lt;div id=&#039;wpfade-<ins class="diffchar inserted"><strong>2</strong></ins>-outer&#039; class=&#039;card &#039;&gt;&lt;div class=&#039;card-header&#039;&gt;&lt;a data-bs-toggle=&#039;collapse&#039; class=&#039;d-block&#039; href=&#039;#wpfade-<ins class="diffchar inserted"><strong>2</strong></ins>-inner&#039;&gt;What is missing in File galleries?&lt;span class=&#039;icon icon-menu-extra fas fa-chevron-down fa-fw&#039; style=&#039;float:right&#039;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div id=&#039;wpfade-<ins class="diffchar inserted"><strong>2</strong></ins>-inner&#039; class=&#039;panel-collapse collapse&#039;&gt;&lt;div class=&#039;card-body&#039;&gt;&lt;p&gt;Following the 2<br>14-11-<br>6 BBB meeting, Jyhem did a search of everything Image Galleries offer which is not in File Galleries.</blockquote><blockquote>- &lt;/li&gt;&lt;li&gt; &lt;span style=&quot;color:#<del class="diffchar deleted"><strong>5</strong></del><br><del class="diffchar deleted"><strong>e3c2</strong></del>&quot;&gt;-1 I find the legacy (tabbed) insertion screen faster to use and appreciate being able to switch back and forth between tabs in some cases. The larger size for the form is also useful sometimes.&lt;/span&gt; &lt;span class=&#039;sign&#039; data-animation=&#039;true&#039; data-bs-toggle=&#039;tooltip&#039; data-bs-html=&#039;true&#039; data-bs-placement=&#039;auto&#039; title=&#039;    &lt;a title=&quot;User Information&quot; href=&quot;user342&quot; class=&quot;link ajaxtips geolocated&quot; data-ajaxtips=&quot;tiki-user-info?username=chibaguy&quot; data-geo-lat=&quot;156<br>5745.2572629<br>6&quot; data-geo-lon=&quot;42581<br>4.<br>1636<br><br>97&quot; data-geo-zoom=&quot;18&quot;&gt;Gary Cunningham-Lee&lt;/a&gt;</blockquote><blockquote>+ &lt;/li&gt;&lt;li&gt; &lt;span style=&quot;color:#<br><ins class="diffchar inserted"><strong><br>CC<br><br></strong></ins>&quot;&gt;-1 I find the legacy (tabbed) insertion screen faster to use and appreciate being able to switch back and forth between tabs in some cases. The larger size for the form is also useful sometimes.&lt;/span&gt; &lt;span class=&#039;sign&#039; data-animation=&#039;true&#039; data-bs-toggle=&#039;tooltip&#039; data-bs-html=&#039;true&#039; data-bs-placement=&#039;auto&#039; title=&#039;    &lt;a title=&quot;User Information&quot; href=&quot;user342&quot; class=&quot;link ajaxtips geolocated&quot; data-ajaxtips=&quot;tiki-user-info?username=chibaguy&quot; data-geo-lat=&quot;156<br>5745.2572629<br>6&quot; data-geo-lon=&quot;42581<br>4.<br>1636<br><br>97&quot; data-geo-zoom=&quot;18&quot;&gt;Gary Cunningham-Lee&lt;/a&gt;</blockquote><blockquote>- &lt;/li&gt;&lt;li&gt; &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox8<del class="diffchar deleted"><strong>4</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox8<del class="diffchar deleted"><strong>4</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php notification:digest&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;<br>&lt;/li&gt;&lt;li&gt; &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox8<del class="diffchar deleted"><strong>5</strong></del>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox8<del class="diffchar deleted"><strong>5</strong></del>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php daily-report:send&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote><blockquote>+ &lt;/li&gt;&lt;li&gt; &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox8<ins class="diffchar inserted"><strong>2</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox8<ins class="diffchar inserted"><strong>2</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php notification:digest&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;<br>&lt;/li&gt;&lt;li&gt; &lt;div class=&quot;codelisting_container&quot;&gt;&lt;div class=&quot;icon_copy_code far fa-clipboard&quot; tabindex=&quot;<br>&quot;  data-clipboard-target=&quot;#codebox8<ins class="diffchar inserted"><strong>3</strong></ins>&quot; &gt;&lt;span class=&quot;copy_code_tooltiptext&quot;&gt;Copy to clipboard&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;codelisting&quot;  data-theme=&quot;off&quot;  data-wrap=&quot;1&quot;  dir=&quot;ltr&quot;  style=&quot;white-space:pre-wrap; overflow-wrap: break-word; word-wrap: break-word;&quot; id=&quot;codebox8<ins class="diffchar inserted"><strong>3</strong></ins>&quot; &gt;&lt;div class=&quot;code&quot;&gt;php console.php daily-report:send&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</blockquote>]]></summary>
    <published>2026-08-07T13:02:16+00:00</published>
    <updated>2026-08-07T13:02:16+00:00</updated>
    <link rel="alternate" type="text/html" href="https://dev.tiki.org/tiki-index.php?page=Endangered+features"/>
    <id>https://dev.tiki.org/tiki-index.php?page=Endangered+features</id>
  </entry>
</feed>
