diff --git a/CHANGELOG.md b/CHANGELOG.md
index c5a4a75f6689559d74f9bc204b127a9b48d2958f..4ecda19f6caf6c8cff34df58765b0e5be4d1636e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -36,6 +36,23 @@ Features
 Bug Fixes
 ^^^^^^^^^
 
+Version 20.4.1
+--------------
+
+Date: 30.04.2020
+
+Notes
+^^^^^
+
+* Developer: update local npm/font awesome packages via `make bootstrap`.
+
+Features
+^^^^^^^^
+
+* #10433 / Update to Font Awesome 5.0
+* #10379 / Stored Procedure: SLUGIFY()
+* Manual.rst: Example Report 'render'. Update several places to fit latest ReST layout rules.
+
 Version 20.4.0
 --------------
 
@@ -44,32 +61,31 @@ Date: 05.04.2020
 Notes
 ^^^^^
 
- * New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>` - extend regular input with multiple values via typeAhead. _
- * MySQL StoredProcedure:
+* New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>`_ - extend regular input with multiple values via typeAhead. _
+* MySQL StoredProcedure:
 
-   * strip_tags() - Simple strip html tags.
-   * QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'.
+  * strip_tags() - Simple strip html tags.
+  * QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'.
 
 Features
 ^^^^^^^^
 
- * #9686 / Download: sanitize output filename.
- * #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite.
- * #9517, #10145, #10177, #10117 / typeAheadTag.
- * #10152 / QCC() - Stored Procedure to escape colon / coma.
- * #10115 / TypeAhead: static list.
- * FabricJS: replaced glyphicons with font awesome.
- * Rename config.qfq.example.php config-example.qfq.php.
+* #9686 / Download: sanitize output filename.
+* #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite.
+* #9517, #10145, #10177, #10117 / typeAheadTag.
+* #10152 / QCC() - Stored Procedure to escape colon / coma.
+* FabricJS: replaced glyphicons with font awesome.
+* Rename config.qfq.example.php config-example.qfq.php.
 
 Bug Fixes
 ^^^^^^^^^
 
- * #6798 / Close didn't worked with r=0.
- * #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'.
- * #10173 / Dynamic Update: Readonly element can't be activated via dynamic update.
- * Fix broken default value for Form.forwardMode.
- * Fix problem with reporting broken TG-FormElements.
- * Add error message if primary table does not exist.
+* #6798 / Close didn't worked with r=0.
+* #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'.
+* #10173 / Dynamic Update: Readonly element can't be activated via dynamic update.
+* Fix broken default value for Form.forwardMode.
+* Fix problem with reporting broken TG-FormElements.
+* Add error message if primary table does not exist.
 
 Version 20.2.0
 --------------
@@ -199,7 +215,7 @@ Bug Fixes
 * #9691 / Checkbox: dynamic update > readonly. HTML ID for checkbox elements. Dynamic update switch 'readonly' for 'checkbox plain multi' and 'radio plain multi'.
 * #9692 / Keyboard Select Checkbox.
 * #9720 / Checkbox: Various setups with dynamic update.
-* #9733 / Identiy different tabs. Record lock for same tab will always be granted.
+* #9733 / Identify different tabs. Record lock for same tab will always be granted.
 * #9734 / Fix 'dirty lock release' - leaving a dirty form without closing, leaves a stale lock record. Added a releaselock() before window.unload. Dirty remove on goBack.
 * #9735 / File Delete: no dirty trigger.
 
@@ -221,12 +237,12 @@ Features
 * #9655 / Checkboxes and radios now defined with a min-width in horizontal plain mode.
 * #9617 / formModeGlobal:
 
- * Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'.
- * 'requiredOffButMark':
+  * Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'.
+  * 'requiredOffButMark':
 
-   * Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'.
-   * Keep required marks after save.
-   * Stop hiding helpblocks per default, set with class qfq-only-active-error.
+    * Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'.
+    * Keep required marks after save.
+    * Stop hiding helpblocks per default, set with class qfq-only-active-error.
 
 * Radio: new class 'qfq-disabled' if readonly is set. Softer blue. Mark disabled - changed hover. Text in darker orange.
   Simple-error renamed to qfq-notify - removed box around error.
@@ -241,11 +257,11 @@ Bug Fixes
 * #3995 / Implemented partly: CheckBox and Radio can now be locked.
 * #8091 / Checkbox required:
 
- * If radio or checkbox is required and empty on submit, form save brings the element to front.
- * Fix radio plain vertical.
- * Fix label2 not to be bold.
- * Checkbox Plain Vertical: forces 'font-weight: 400;'.
- * Updated colors for checkboxes/radios.
+  * If radio or checkbox is required and empty on submit, form save brings the element to front.
+  * Fix radio plain vertical.
+  * Fix label2 not to be bold.
+  * Checkbox Plain Vertical: forces 'font-weight: 400;'.
+  * Updated colors for checkboxes/radios.
 
 * #9638 / Textarea Sizing: Now also listens for paste.
 * #7891 / Added missing 'type="button"' to button element.
@@ -282,12 +298,12 @@ Bug Fixes
 
 * #7639 / subrecord drag n drop:
 
- * `orderInterval` has not been respected.
- * Update Manual.rst.
- * Fake STORE_SIP so it can be used during processing sql1.
- * The record, currently loaded into form, is available via STORE_RECORD.
- * Check for id/_id and ord/_ord.
- * Throw meaningful exception if missing 'id' or 'ord'.
+  * `orderInterval` has not been respected.
+  * Update Manual.rst.
+  * Fake STORE_SIP so it can be used during processing sql1.
+  * The record, currently loaded into form, is available via STORE_RECORD.
+  * Check for id/_id and ord/_ord.
+  * Throw meaningful exception if missing 'id' or 'ord'.
 
 * Fixes bug that no mime_type_content is called if there is on file.
 * Fix broken regex101 url.
@@ -300,7 +316,7 @@ Date: 11.11.2019
 Bug Fixes
 ^^^^^^^^^
 
- * #9532 / 'Advanced Upload' broken -  slaveId/sqlUpdate/... have been processed two times, after multiform code changes.
+* #9532 / 'Advanced Upload' broken -  slaveId/sqlUpdate/... have been processed two times, after multiform code changes.
 
 Version 19.11.0
 ---------------
@@ -456,11 +472,11 @@ Features
 
 * Manual.rst:
 
-   * Update tablesorter `class="sorter-false"`.
-   * Add note to include font-awesome.
-   * QFQ_LOG documentation.
-   * Enhance wkhtml debug info.
-   * Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/
+  * Update tablesorter `class="sorter-false"`.
+  * Add note to include font-awesome.
+  * QFQ_LOG documentation.
+  * Enhance wkhtml debug info.
+  * Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/
 
 * Increase Length of column Form.forwardPage limit from 255 to 511.
 * Index.rst: Add Rafi, Elias, Nicola as further contributors.
@@ -498,9 +514,9 @@ Features
 
 * TWIG:
 
-    * Add Twig Extension to parse QFQ Links
-    * Pass assoc-array of query result as context
-    * allow to pass template as string
+  * Add Twig Extension to parse QFQ Links
+  * Pass assoc-array of query result as context
+  * allow to pass template as string
 
 * Database.php: extend function sql error message
 * #8179 / extraButtonLock and extraButtonPassword might be specified without a value or with 0 or with 1.
@@ -743,8 +759,8 @@ Date: 15.03.2019
 Bug Fixes
 ^^^^^^^^^
 
- * 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm().
- * 8048 / A retype FE should not be checked for 'required' during save.
+* 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm().
+* 8048 / A retype FE should not be checked for 'required' during save.
 
 
 Version 19.3.0
@@ -1239,13 +1255,13 @@ Notes
   'jquery.tablesorter.pager.min.js', 'widget-columnSelector.min.js' in your Typo3 template record.
   See https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#setup-css-js
 
-    * *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors
-      seen on the console) your installation, if it isn't included!
+  * *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors
+    seen on the console) your installation, if it isn't included!
 
-    * If you use the extension 'UZH Corporate Design Template':
+  * If you use the extension 'UZH Corporate Design Template':
 
-      * Update to the latest version 18.9.0.
-      * Add constants in the Typo3 template record 'ext: main': ::
+    * Update to the latest version 18.9.0.
+    * Add constants in the Typo3 template record 'ext: main': ::
 
             cd.extra.css.file5 = typo3conf/ext/qfq/Resources/Public/Css/tablesorter-bootstrap.css
 
@@ -1452,8 +1468,8 @@ Notes
 * NEW: Drag and drop to sort elements! Check the Manual.
 * `URL forwardMode`
 
-  * `client` renamed to `auto`.
-  * `close` added.
+ * `client` renamed to `auto`.
+ * `close` added.
 
 Features
 ^^^^^^^^
@@ -2583,47 +2599,47 @@ Version 0.15
 Changes
 ^^^^^^^
 
- * Play formEditor.sql.
+* Play formEditor.sql.
 
-   * Form 'FormElement' failed to display the formtitle of the current form in case of a new FE.
-   * Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql.
+* Form 'FormElement' failed to display the formtitle of the current form in case of a new FE.
+* Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql.
 
-   *  #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.::
+*  #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.::
 
-        UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf')
+     UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf')
 
-   * Size 'placeholder' increased::
+* Size 'placeholder' increased::
 
-        ALTER TABLE  `FormElement` CHANGE  `placeholder`  `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
+     ALTER TABLE  `FormElement` CHANGE  `placeholder`  `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
 
 Features
 ^^^^^^^^
 
- * Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form
-   will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient.
- * Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed.
- * #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername
-   'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname
-   is not necessary anoymore.
+* Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form
+  will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient.
+* Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed.
+* #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername
+  'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname
+  is not necessary anoymore.
 
 
 
 Bug Fixes
 ^^^^^^^^^
 
- * #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly.
-   Detection of missing LIMIT implemented.
- * #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces
-   Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces'
-   Support.php: new funtion handleEscapeSpaceComment().
- * Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'.
- * Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any
-   extension like recordId. Unessary and broken decoding removed.
- * #3426 / Dynamic Update: Inputs loose the new content and shows the old value.
- * Through fix #2064 the FE.checkType has not been used anymore. This is fixed now.
- * #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty
-   fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values
-   will be expanded with the empty fake templateGroup FormElements and such empty values will be saved.
+* #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly.
+  Detection of missing LIMIT implemented.
+* #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces
+  Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces'
+  Support.php: new funtion handleEscapeSpaceComment().
+* Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'.
+* Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any
+  extension like recordId. Unessary and broken decoding removed.
+* #3426 / Dynamic Update: Inputs loose the new content and shows the old value.
+* Through fix #2064 the FE.checkType has not been used anymore. This is fixed now.
+* #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty
+  fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values
+  will be expanded with the empty fake templateGroup FormElements and such empty values will be saved.
 
 
 Version 0.14
@@ -2632,47 +2648,47 @@ Version 0.14
 Changes
 ^^^^^^^
 
- * Play formEditor.sql.
+* Play formEditor.sql.
 
-   * All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value.
-   * Drop-down list of container assignment:
+* All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value.
+* Drop-down list of container assignment:
 
-     * Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container').
-     * Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which
-       is nowhere else used than in that drop-down.
+* Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container').
+* Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which
+  is nowhere else used than in that drop-down.
 
-   * FormElement.placeholder colum width extended to 512:
+* FormElement.placeholder colum width extended to 512:
 
-     ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''
+         ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''
 
- * New class Ldap.php.
+* New class Ldap.php.
 
 Features
 ^^^^^^^^
 
- * Typeahead for SQL and LDAP Datasources implemented.
- * formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'.
- * Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
- * Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
- * Manual.rst: add some example for TypeAhead and for saving LDAP value.
- * Load foreign values in templatGroups - saving is not implemented yet.
- * Manual: Added howto prevent <p>-wrap in TinyMCE.
- * TemplateGroup: Add button now disabled if max. number of copies reached.
- * #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
+* Typeahead for SQL and LDAP Datasources implemented.
+* formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'.
+* Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
+* Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
+* Manual.rst: add some example for TypeAhead and for saving LDAP value.
+* Load foreign values in templatGroups - saving is not implemented yet.
+* Manual: Added howto prevent <p>-wrap in TinyMCE.
+* TemplateGroup: Add button now disabled if max. number of copies reached.
+* #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
 
 Bug Fixes
 ^^^^^^^^^
 
- * Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine.
- * qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed
-   Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background.
- * AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute.
- * BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
- * typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
-   moment this is the only way to transmit any error messages.
- * formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
- * Save button becomes active if a templateGroup copy is removed.
- * #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
+* Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine.
+* qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed
+  Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background.
+* AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute.
+* BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
+* typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
+  moment this is the only way to transmit any error messages.
+* formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
+* Save button becomes active if a templateGroup copy is removed.
+* #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
 
 
 Version 0.13
@@ -2681,55 +2697,55 @@ Version 0.13
 Changes
 ^^^^^^^
 
- * Play formEditor.sql.
- * formEditor.sql:
+* Play formEditor.sql.
+* formEditor.sql:
 
-   * Checktype of `Form.name` restricted to `alnumx` (prior `all`).
-   * Changed `access` for Form `form` & '`ormElement` from `always` to `sip`.
+  * Checktype of `Form.name` restricted to `alnumx` (prior `all`).
+  * Changed `access` for Form `form` & '`ormElement` from `always` to `sip`.
 
- * Table `FormElement`:
+* Table `FormElement`:
 
-   * Modified column: `checkType` - new value `numerical`.
+  * Modified column: `checkType` - new value `numerical`.
 
      ALTER TABLE FormElement MODIFY COLUMN checkType ENUM('alnumx','digit','numerical','email','min|max','min|max date',
        'pattern','allbut','all') NOT NULL DEFAULT 'alnumx'
 
- * Example Report for `forms` extended by a delete button per row.
+* Example Report for `forms` extended by a delete button per row.
 
 Features
 ^^^^^^^^
 
- * print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent).
+* print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent).
 
-   * Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/).
-   * In config.qfq.ini setup:
+  * Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/).
+  * In config.qfq.ini setup:
 
         BASE_URL_PRINT=http://www.../
         WKHTMLTOPDF=/opt/wkhtmltox/bin/wkhtmltopdf
 
- * Check and error report if 'php_intl' is missing.
- * New Checktype 'allow numerical'.
- * Documentation: example for 'radio' with no pre selection.
- * #3063 / Radios and checkboxes optional rendered in Bootstrap layout.
- * Added 'help-box with-errors'-DIV after radios and checkboxes.
- * Respect attribute `data-class-on-change` on save buttons.
+* Check and error report if 'php_intl' is missing.
+* New Checktype 'allow numerical'.
+* Documentation: example for 'radio' with no pre selection.
+* #3063 / Radios and checkboxes optional rendered in Bootstrap layout.
+* Added 'help-box with-errors'-DIV after radios and checkboxes.
+* Respect attribute `data-class-on-change` on save buttons.
 
 
 Bug Fixes
 ^^^^^^^^^
 
- * #2138 / digit sanitize: new class 'numerical' implemented.
- * Fixed recursive thrown exception.
- * #2064 / search of a default value for a non existing tablecolumn returns 'false'.
+* #2138 / digit sanitize: new class 'numerical' implemented.
+* Fixed recursive thrown exception.
+* #2064 / search of a default value for a non existing tablecolumn returns 'false'.
 
-   * Fixed setting of STORE_SYSTEM / showDebugInfo during API call.
+  * Fixed setting of STORE_SYSTEM / showDebugInfo during API call.
 
- * #2081, #3180 / Form: Label & note - update via `DynamicUpdate`.
- * #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS.
- * qfq-bs.css:
+* #2081, #3180 / Form: Label & note - update via `DynamicUpdate`.
+* #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS.
+* qfq-bs.css:
 
-   * Alignment of checkboxes and radios optimized.
-   * CSS class 'qfq-note' for 'notes' (third column in a form).
+  * Alignment of checkboxes and radios optimized.
+  * CSS class 'qfq-note' for 'notes' (third column in a form).
 
 
 Version 0.12
@@ -2738,101 +2754,103 @@ Version 0.12
 Changes
 ^^^^^^^
 
- * Table 'FormElement'
-   * New column: rowLabelInputNote:
+* Table 'FormElement'
+  * New column: rowLabelInputNote:
 
       ALTER TABLE  `FormElement` ADD `rowLabelInputNote` set('row','label','/label','input','/input','note','/note','/row')
       NOT NULL DEFAULT 'row,label,/label,input,/input,note,/note,/row' AFTER  `bsNoteColumns` ;
 
-   * Modified column: 'type' - new value 'templateGroup':
+  * Modified column: 'type' - new value 'templateGroup':
 
       ALTER TABLE  `FormElement` CHANGE  `type`  `type` ENUM(  'checkbox',  'date',  'datetime',  'dateJQW',  'datetimeJQW',  'extra',
       'gridJQW',  'text',  'editor',  'time',  'note',  'password',  'radio',  'select',  'subrecord',  'upload',  'fieldset', 'pill',
       'templateGroup',  'beforeLoad',  'beforeSave',  'beforeInsert',  'beforeUpdate',  'beforeDelete',  'afterLoad',  'afterSave',
       'afterInsert',  'afterUpdate',  'afterDelete',  'sendMail' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  'text'
 
- * formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns.
+* formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns.
 
-   * PLAY 'formEditor.sql'.
+  * PLAY 'formEditor.sql'.
 
- * User Input will be UTF8 normalized.
+* User Input will be UTF8 normalized.
 
-   * INSTALL 'php5-intl' or 'php7.0-intl' on Webserver.
+  * INSTALL 'php5-intl' or 'php7.0-intl' on Webserver.
 
- * Add globalize.js to be included. Needed by jqx-all.js.
+* Add globalize.js to be included. Needed by jqx-all.js.
 
-   * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
+  * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
 
- * Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'.
+* Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'.
 
-   * UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename")
+  * UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename")
 
 
 Features
 ^^^^^^^^
 
- * User input will be UTF8 normalized.
- * config.qfq-ini:
+* User input will be UTF8 normalized.
+* config.qfq-ini:
 
-   * New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS.
-   * Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY
+  * New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS.
+  * Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY
      (=parameter is set and will not be overwritten by internal default), not UNDEFINED (overwritten by internal default).
 
- * FileUpload:
+* FileUpload:
 
-   * Implemented new Formelement.parameter: fileReplace=always - will replace existing files.
-   * Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete.
+  * Implemented new Formelement.parameter: fileReplace=always - will replace existing files.
+  * Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete.
 
- * FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements.
- * STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified.
- * STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement.
- * Default store priority list changed. Old: 'FSRD', New: 'FSRVD'.
- * CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering).
- * User manual:
+* FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements.
+* STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified.
+* STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement.
+* Default store priority list changed. Old: 'FSRD', New: 'FSRVD'.
+* CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering).
+* User manual:
 
-   * Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn.
-   * Update 'file-upload' doc.
-   * Described 3 examples for upload forms.
+  * Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn.
+  * Update 'file-upload' doc.
+  * Described 3 examples for upload forms.
 
- * Administrator manual:
+* Administrator manual:
 
-   * Add description page.meta...
+  * Add description page.meta...
 
- * New FormElement (type= 'container') added: 'templateGroup'.
+* New FormElement (type= 'container') added: 'templateGroup'.
 
-   * FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass.
-   * FormElement.maxSize: max number of duplicates.
-   * #3230 / templateGroup: margin between copies. 'tgClass' implemented.
+  * FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass.
+  * FormElement.maxSize: max number of duplicates.
+  * #3230 / templateGroup: margin between copies. 'tgClass' implemented.
 
- * Native FormElements:
+* Native FormElements:
 
-   * FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping).
-   * #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter.
-   * FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted.
-   * FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item.
-   * FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items.
+  * FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping).
+  * #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter.
+  * FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted.
+  * FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item.
+  * FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items.
 
- * #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=...
- * Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed.
+* #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=...
+* Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed.
 
 Bug fixes
 ^^^^^^^^^
 
- * User manual:
-   * Fixed double include of validator.js in T3 Typoscript template example.
-   * Fixed wrong store name SYSTEM: S > Y.
-   * Fixed wrong STORE_FORM variable names.
-   * Reformat FormElement.parameter description.
-   * Styling errors fixed.
- * Use of 'decryptCurlyBraces()' to get better error messages.
- * Skip unwanted parameter expansion during save.
- * Fixed bug with uninitialized FE_SLAVE_ID.
- * formEditor.sql:
-   * The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted.
-   * Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms.
- * #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error).
- * Labels are skipped, if FormElement.bsLabelColumns=0.
- * Respect attribute `data-class-on-change` on save buttons.
+* User manual:
+
+  * Fixed double include of validator.js in T3 Typoscript template example.
+  * Fixed wrong store name SYSTEM: S > Y.
+  * Fixed wrong STORE_FORM variable names.
+  * Reformat FormElement.parameter description.
+  * Styling errors fixed.
+
+* Use of 'decryptCurlyBraces()' to get better error messages.
+* Skip unwanted parameter expansion during save.
+* Fixed bug with uninitialized FE_SLAVE_ID.
+* formEditor.sql:
+  * The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted.
+  * Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms.
+* #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error).
+* Labels are skipped, if FormElement.bsLabelColumns=0.
+* Respect attribute `data-class-on-change` on save buttons.
 
 Version 0.11
 ------------
@@ -2840,21 +2858,21 @@ Version 0.11
 Features
 ^^^^^^^^
 
- * Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action.
- * Added 'best practice' for defining and using of 'Central configure values' in UserManual.
- * Added accent characters to sanatize class 'alnumx', #3183.
- * Set default all QFQ send mails to 'auto-submit'.
- * Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error',
-   'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement.
- * *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1.
- * Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized.
- * Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles.
+* Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action.
+* Added 'best practice' for defining and using of 'Central configure values' in UserManual.
+* Added accent characters to sanatize class 'alnumx', #3183.
+* Set default all QFQ send mails to 'auto-submit'.
+* Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error',
+  'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement.
+* *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1.
+* Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized.
+* Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles.
 
 Bug fixes
 ^^^^^^^^^
 
- * Fixed missing docutmentation for FormElement 'note'.
- * Failed SQL queries will now always be logged, even if they do not modify some data.
+* Fixed missing docutmentation for FormElement 'note'.
+* Failed SQL queries will now always be logged, even if they do not modify some data.
 
 Version 0.10
 ------------
@@ -2862,14 +2880,14 @@ Version 0.10
 Features
 ^^^^^^^^
 
- * Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc.
+* Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc.
 
 Bug fixes
 ^^^^^^^^^
 
- * Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied.
- * In case of broken SQL queries, print them in ajax error message.
- * Remove parameter 'table' from Delete SIP URLs. ToolTip updated.
+* Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied.
+* In case of broken SQL queries, print them in ajax error message.
+* Remove parameter 'table' from Delete SIP URLs. ToolTip updated.
 
 Version 0.9
 -----------
@@ -2877,43 +2895,43 @@ Version 0.9
 Features
 ^^^^^^^^
 
- * FormEditor:
-   * design update - new default background color: grey.
-   * per form configureable background colors.
-   * Optional right align of all form element labels.
-   * Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER.
+* FormEditor:
+  * design update - new default background color: grey.
+  * per form configureable background colors.
+  * Optional right align of all form element labels.
+  * Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER.
 
 Bug fixes
 ^^^^^^^^^
 
- * BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class.
-   Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'.
- * QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY.
- * formEditor.sql: New default background color for formElements is blue.
- * qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right.
- * Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody.
-   Rewrote form.paramter.class.
- * QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form.
- * UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'.
- * QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record
-   again, after 'action'-elements has been processed.
- * UsersManual/index.rst: Startet FAQ section.
- * config.qfq.example.ini: Added comment where to save config.qfq.ini.
- * UsersManual/index.rst: Rewrite of 'action'-FormElement definition.
- * #2739 / beforeDelete / afterDelete.
- * PROTOCOL.md: update 'delete' description.
- * delete.php: fixed unwanted loose of MSG_CONTENT.
- * Report.php: Fixed double '&&' in building UrlParam.
- * FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted.
- * Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP.
- * #3001 / Report: delete implementieren.
- * Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be
-   'form' (instead of '_form') due to many used places already.
- * Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links.
- * Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links.
- * Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination.
- * Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now
-   supports delete links.
- * QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these
-   parameters typically filled in newly created records.
- * #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich.
+* BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class.
+  Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'.
+* QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY.
+* formEditor.sql: New default background color for formElements is blue.
+* qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right.
+* Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody.
+  Rewrote form.paramter.class.
+* QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form.
+* UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'.
+* QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record
+  again, after 'action'-elements has been processed.
+* UsersManual/index.rst: Startet FAQ section.
+* config.qfq.example.ini: Added comment where to save config.qfq.ini.
+* UsersManual/index.rst: Rewrite of 'action'-FormElement definition.
+* #2739 / beforeDelete / afterDelete.
+* PROTOCOL.md: update 'delete' description.
+* delete.php: fixed unwanted loose of MSG_CONTENT.
+* Report.php: Fixed double '&&' in building UrlParam.
+* FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted.
+* Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP.
+* #3001 / Report: delete implementieren.
+* Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be
+  'form' (instead of '_form') due to many used places already.
+* Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links.
+* Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links.
+* Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination.
+* Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now
+  supports delete links.
+* QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these
+  parameters typically filled in newly created records.
+* #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich.
diff --git a/Documentation-develop/NewVersion.md b/Documentation-develop/NewVersion.md
index dfa23ed9e83bdac434132a070a5e1f473de716da..54eb2f1e4cd54e614d68b2be70b59f4fb32be459 100644
--- a/Documentation-develop/NewVersion.md
+++ b/Documentation-develop/NewVersion.md
@@ -44,7 +44,7 @@ Neue Versionsnummer
 
    **Achtung**: die Release Minor darf KEINE fuehrenden Nullen enthalten!!! Ansonsten funktioniert die Verteilung vie TER nicht.
 
-   **Auto**: ./setVersion.sh 20.4.0
+   **Auto**: ./setVersion.sh 20.4.1
 
    Manuell:
      * extension/Documentation/_make/conf.py: release, version-
@@ -60,12 +60,12 @@ Neue Versionsnummer
    * Update the version number in this document (topic 6)
    * Commit & Push new version changes to master branch:
 
-      New version 20.4.0
+      New version 20.4.1
 
 7) **New Tag**:
 
-   git tag v20.4.0
-   git push -u origin v20.4.0
+   git tag v20.4.1
+   git push -u origin v20.4.1
 
 8) **Merge 'master' into 'develop'**
 
diff --git a/Documentation/Release.rst b/Documentation/Release.rst
index 76d4e71d0102ef0b9d72540874022c11b7b7cc4e..4ecda19f6caf6c8cff34df58765b0e5be4d1636e 100644
--- a/Documentation/Release.rst
+++ b/Documentation/Release.rst
@@ -36,6 +36,23 @@ Features
 Bug Fixes
 ^^^^^^^^^
 
+Version 20.4.1
+--------------
+
+Date: 30.04.2020
+
+Notes
+^^^^^
+
+* Developer: update local npm/font awesome packages via `make bootstrap`.
+
+Features
+^^^^^^^^
+
+* #10433 / Update to Font Awesome 5.0
+* #10379 / Stored Procedure: SLUGIFY()
+* Manual.rst: Example Report 'render'. Update several places to fit latest ReST layout rules.
+
 Version 20.4.0
 --------------
 
diff --git a/Documentation/Settings.cfg b/Documentation/Settings.cfg
index a91ff2d34a62d6a55b65a6396044a207cd53dbe1..894b0091cadee49d97e9ff6a902ba2f6c1b8c39d 100644
--- a/Documentation/Settings.cfg
+++ b/Documentation/Settings.cfg
@@ -22,7 +22,7 @@
 
 project = QFQ - Quick Form Query
 version = 20.4
-release = 20.4.0
+release = 20.4.1
 t3author = Carsten Rose
 copyright = since 2017 by the author
 
diff --git a/extension/RELEASE.txt b/extension/RELEASE.txt
index c5a4a75f6689559d74f9bc204b127a9b48d2958f..4ecda19f6caf6c8cff34df58765b0e5be4d1636e 100644
--- a/extension/RELEASE.txt
+++ b/extension/RELEASE.txt
@@ -36,6 +36,23 @@ Features
 Bug Fixes
 ^^^^^^^^^
 
+Version 20.4.1
+--------------
+
+Date: 30.04.2020
+
+Notes
+^^^^^
+
+* Developer: update local npm/font awesome packages via `make bootstrap`.
+
+Features
+^^^^^^^^
+
+* #10433 / Update to Font Awesome 5.0
+* #10379 / Stored Procedure: SLUGIFY()
+* Manual.rst: Example Report 'render'. Update several places to fit latest ReST layout rules.
+
 Version 20.4.0
 --------------
 
@@ -44,32 +61,31 @@ Date: 05.04.2020
 Notes
 ^^^^^
 
- * New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>` - extend regular input with multiple values via typeAhead. _
- * MySQL StoredProcedure:
+* New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>`_ - extend regular input with multiple values via typeAhead. _
+* MySQL StoredProcedure:
 
-   * strip_tags() - Simple strip html tags.
-   * QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'.
+  * strip_tags() - Simple strip html tags.
+  * QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'.
 
 Features
 ^^^^^^^^
 
- * #9686 / Download: sanitize output filename.
- * #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite.
- * #9517, #10145, #10177, #10117 / typeAheadTag.
- * #10152 / QCC() - Stored Procedure to escape colon / coma.
- * #10115 / TypeAhead: static list.
- * FabricJS: replaced glyphicons with font awesome.
- * Rename config.qfq.example.php config-example.qfq.php.
+* #9686 / Download: sanitize output filename.
+* #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite.
+* #9517, #10145, #10177, #10117 / typeAheadTag.
+* #10152 / QCC() - Stored Procedure to escape colon / coma.
+* FabricJS: replaced glyphicons with font awesome.
+* Rename config.qfq.example.php config-example.qfq.php.
 
 Bug Fixes
 ^^^^^^^^^
 
- * #6798 / Close didn't worked with r=0.
- * #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'.
- * #10173 / Dynamic Update: Readonly element can't be activated via dynamic update.
- * Fix broken default value for Form.forwardMode.
- * Fix problem with reporting broken TG-FormElements.
- * Add error message if primary table does not exist.
+* #6798 / Close didn't worked with r=0.
+* #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'.
+* #10173 / Dynamic Update: Readonly element can't be activated via dynamic update.
+* Fix broken default value for Form.forwardMode.
+* Fix problem with reporting broken TG-FormElements.
+* Add error message if primary table does not exist.
 
 Version 20.2.0
 --------------
@@ -199,7 +215,7 @@ Bug Fixes
 * #9691 / Checkbox: dynamic update > readonly. HTML ID for checkbox elements. Dynamic update switch 'readonly' for 'checkbox plain multi' and 'radio plain multi'.
 * #9692 / Keyboard Select Checkbox.
 * #9720 / Checkbox: Various setups with dynamic update.
-* #9733 / Identiy different tabs. Record lock for same tab will always be granted.
+* #9733 / Identify different tabs. Record lock for same tab will always be granted.
 * #9734 / Fix 'dirty lock release' - leaving a dirty form without closing, leaves a stale lock record. Added a releaselock() before window.unload. Dirty remove on goBack.
 * #9735 / File Delete: no dirty trigger.
 
@@ -221,12 +237,12 @@ Features
 * #9655 / Checkboxes and radios now defined with a min-width in horizontal plain mode.
 * #9617 / formModeGlobal:
 
- * Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'.
- * 'requiredOffButMark':
+  * Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'.
+  * 'requiredOffButMark':
 
-   * Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'.
-   * Keep required marks after save.
-   * Stop hiding helpblocks per default, set with class qfq-only-active-error.
+    * Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'.
+    * Keep required marks after save.
+    * Stop hiding helpblocks per default, set with class qfq-only-active-error.
 
 * Radio: new class 'qfq-disabled' if readonly is set. Softer blue. Mark disabled - changed hover. Text in darker orange.
   Simple-error renamed to qfq-notify - removed box around error.
@@ -241,11 +257,11 @@ Bug Fixes
 * #3995 / Implemented partly: CheckBox and Radio can now be locked.
 * #8091 / Checkbox required:
 
- * If radio or checkbox is required and empty on submit, form save brings the element to front.
- * Fix radio plain vertical.
- * Fix label2 not to be bold.
- * Checkbox Plain Vertical: forces 'font-weight: 400;'.
- * Updated colors for checkboxes/radios.
+  * If radio or checkbox is required and empty on submit, form save brings the element to front.
+  * Fix radio plain vertical.
+  * Fix label2 not to be bold.
+  * Checkbox Plain Vertical: forces 'font-weight: 400;'.
+  * Updated colors for checkboxes/radios.
 
 * #9638 / Textarea Sizing: Now also listens for paste.
 * #7891 / Added missing 'type="button"' to button element.
@@ -282,12 +298,12 @@ Bug Fixes
 
 * #7639 / subrecord drag n drop:
 
- * `orderInterval` has not been respected.
- * Update Manual.rst.
- * Fake STORE_SIP so it can be used during processing sql1.
- * The record, currently loaded into form, is available via STORE_RECORD.
- * Check for id/_id and ord/_ord.
- * Throw meaningful exception if missing 'id' or 'ord'.
+  * `orderInterval` has not been respected.
+  * Update Manual.rst.
+  * Fake STORE_SIP so it can be used during processing sql1.
+  * The record, currently loaded into form, is available via STORE_RECORD.
+  * Check for id/_id and ord/_ord.
+  * Throw meaningful exception if missing 'id' or 'ord'.
 
 * Fixes bug that no mime_type_content is called if there is on file.
 * Fix broken regex101 url.
@@ -300,7 +316,7 @@ Date: 11.11.2019
 Bug Fixes
 ^^^^^^^^^
 
- * #9532 / 'Advanced Upload' broken -  slaveId/sqlUpdate/... have been processed two times, after multiform code changes.
+* #9532 / 'Advanced Upload' broken -  slaveId/sqlUpdate/... have been processed two times, after multiform code changes.
 
 Version 19.11.0
 ---------------
@@ -456,11 +472,11 @@ Features
 
 * Manual.rst:
 
-   * Update tablesorter `class="sorter-false"`.
-   * Add note to include font-awesome.
-   * QFQ_LOG documentation.
-   * Enhance wkhtml debug info.
-   * Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/
+  * Update tablesorter `class="sorter-false"`.
+  * Add note to include font-awesome.
+  * QFQ_LOG documentation.
+  * Enhance wkhtml debug info.
+  * Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/
 
 * Increase Length of column Form.forwardPage limit from 255 to 511.
 * Index.rst: Add Rafi, Elias, Nicola as further contributors.
@@ -498,9 +514,9 @@ Features
 
 * TWIG:
 
-    * Add Twig Extension to parse QFQ Links
-    * Pass assoc-array of query result as context
-    * allow to pass template as string
+  * Add Twig Extension to parse QFQ Links
+  * Pass assoc-array of query result as context
+  * allow to pass template as string
 
 * Database.php: extend function sql error message
 * #8179 / extraButtonLock and extraButtonPassword might be specified without a value or with 0 or with 1.
@@ -743,8 +759,8 @@ Date: 15.03.2019
 Bug Fixes
 ^^^^^^^^^
 
- * 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm().
- * 8048 / A retype FE should not be checked for 'required' during save.
+* 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm().
+* 8048 / A retype FE should not be checked for 'required' during save.
 
 
 Version 19.3.0
@@ -1239,13 +1255,13 @@ Notes
   'jquery.tablesorter.pager.min.js', 'widget-columnSelector.min.js' in your Typo3 template record.
   See https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#setup-css-js
 
-    * *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors
-      seen on the console) your installation, if it isn't included!
+  * *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors
+    seen on the console) your installation, if it isn't included!
 
-    * If you use the extension 'UZH Corporate Design Template':
+  * If you use the extension 'UZH Corporate Design Template':
 
-      * Update to the latest version 18.9.0.
-      * Add constants in the Typo3 template record 'ext: main': ::
+    * Update to the latest version 18.9.0.
+    * Add constants in the Typo3 template record 'ext: main': ::
 
             cd.extra.css.file5 = typo3conf/ext/qfq/Resources/Public/Css/tablesorter-bootstrap.css
 
@@ -1452,8 +1468,8 @@ Notes
 * NEW: Drag and drop to sort elements! Check the Manual.
 * `URL forwardMode`
 
-  * `client` renamed to `auto`.
-  * `close` added.
+ * `client` renamed to `auto`.
+ * `close` added.
 
 Features
 ^^^^^^^^
@@ -2583,47 +2599,47 @@ Version 0.15
 Changes
 ^^^^^^^
 
- * Play formEditor.sql.
+* Play formEditor.sql.
 
-   * Form 'FormElement' failed to display the formtitle of the current form in case of a new FE.
-   * Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql.
+* Form 'FormElement' failed to display the formtitle of the current form in case of a new FE.
+* Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql.
 
-   *  #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.::
+*  #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.::
 
-        UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf')
+     UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf')
 
-   * Size 'placeholder' increased::
+* Size 'placeholder' increased::
 
-        ALTER TABLE  `FormElement` CHANGE  `placeholder`  `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
+     ALTER TABLE  `FormElement` CHANGE  `placeholder`  `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
 
 Features
 ^^^^^^^^
 
- * Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form
-   will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient.
- * Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed.
- * #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername
-   'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname
-   is not necessary anoymore.
+* Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form
+  will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient.
+* Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed.
+* #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername
+  'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname
+  is not necessary anoymore.
 
 
 
 Bug Fixes
 ^^^^^^^^^
 
- * #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly.
-   Detection of missing LIMIT implemented.
- * #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces
-   Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces'
-   Support.php: new funtion handleEscapeSpaceComment().
- * Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'.
- * Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any
-   extension like recordId. Unessary and broken decoding removed.
- * #3426 / Dynamic Update: Inputs loose the new content and shows the old value.
- * Through fix #2064 the FE.checkType has not been used anymore. This is fixed now.
- * #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty
-   fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values
-   will be expanded with the empty fake templateGroup FormElements and such empty values will be saved.
+* #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly.
+  Detection of missing LIMIT implemented.
+* #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces
+  Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces'
+  Support.php: new funtion handleEscapeSpaceComment().
+* Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'.
+* Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any
+  extension like recordId. Unessary and broken decoding removed.
+* #3426 / Dynamic Update: Inputs loose the new content and shows the old value.
+* Through fix #2064 the FE.checkType has not been used anymore. This is fixed now.
+* #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty
+  fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values
+  will be expanded with the empty fake templateGroup FormElements and such empty values will be saved.
 
 
 Version 0.14
@@ -2632,47 +2648,47 @@ Version 0.14
 Changes
 ^^^^^^^
 
- * Play formEditor.sql.
+* Play formEditor.sql.
 
-   * All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value.
-   * Drop-down list of container assignment:
+* All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value.
+* Drop-down list of container assignment:
 
-     * Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container').
-     * Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which
-       is nowhere else used than in that drop-down.
+* Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container').
+* Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which
+  is nowhere else used than in that drop-down.
 
-   * FormElement.placeholder colum width extended to 512:
+* FormElement.placeholder colum width extended to 512:
 
-     ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''
+         ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''
 
- * New class Ldap.php.
+* New class Ldap.php.
 
 Features
 ^^^^^^^^
 
- * Typeahead for SQL and LDAP Datasources implemented.
- * formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'.
- * Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
- * Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
- * Manual.rst: add some example for TypeAhead and for saving LDAP value.
- * Load foreign values in templatGroups - saving is not implemented yet.
- * Manual: Added howto prevent <p>-wrap in TinyMCE.
- * TemplateGroup: Add button now disabled if max. number of copies reached.
- * #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
+* Typeahead for SQL and LDAP Datasources implemented.
+* formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'.
+* Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
+* Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
+* Manual.rst: add some example for TypeAhead and for saving LDAP value.
+* Load foreign values in templatGroups - saving is not implemented yet.
+* Manual: Added howto prevent <p>-wrap in TinyMCE.
+* TemplateGroup: Add button now disabled if max. number of copies reached.
+* #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
 
 Bug Fixes
 ^^^^^^^^^
 
- * Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine.
- * qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed
-   Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background.
- * AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute.
- * BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
- * typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
-   moment this is the only way to transmit any error messages.
- * formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
- * Save button becomes active if a templateGroup copy is removed.
- * #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
+* Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine.
+* qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed
+  Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background.
+* AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute.
+* BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
+* typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
+  moment this is the only way to transmit any error messages.
+* formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
+* Save button becomes active if a templateGroup copy is removed.
+* #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
 
 
 Version 0.13
@@ -2681,55 +2697,55 @@ Version 0.13
 Changes
 ^^^^^^^
 
- * Play formEditor.sql.
- * formEditor.sql:
+* Play formEditor.sql.
+* formEditor.sql:
 
-   * Checktype of `Form.name` restricted to `alnumx` (prior `all`).
-   * Changed `access` for Form `form` & '`ormElement` from `always` to `sip`.
+  * Checktype of `Form.name` restricted to `alnumx` (prior `all`).
+  * Changed `access` for Form `form` & '`ormElement` from `always` to `sip`.
 
- * Table `FormElement`:
+* Table `FormElement`:
 
-   * Modified column: `checkType` - new value `numerical`.
+  * Modified column: `checkType` - new value `numerical`.
 
      ALTER TABLE FormElement MODIFY COLUMN checkType ENUM('alnumx','digit','numerical','email','min|max','min|max date',
        'pattern','allbut','all') NOT NULL DEFAULT 'alnumx'
 
- * Example Report for `forms` extended by a delete button per row.
+* Example Report for `forms` extended by a delete button per row.
 
 Features
 ^^^^^^^^
 
- * print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent).
+* print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent).
 
-   * Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/).
-   * In config.qfq.ini setup:
+  * Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/).
+  * In config.qfq.ini setup:
 
         BASE_URL_PRINT=http://www.../
         WKHTMLTOPDF=/opt/wkhtmltox/bin/wkhtmltopdf
 
- * Check and error report if 'php_intl' is missing.
- * New Checktype 'allow numerical'.
- * Documentation: example for 'radio' with no pre selection.
- * #3063 / Radios and checkboxes optional rendered in Bootstrap layout.
- * Added 'help-box with-errors'-DIV after radios and checkboxes.
- * Respect attribute `data-class-on-change` on save buttons.
+* Check and error report if 'php_intl' is missing.
+* New Checktype 'allow numerical'.
+* Documentation: example for 'radio' with no pre selection.
+* #3063 / Radios and checkboxes optional rendered in Bootstrap layout.
+* Added 'help-box with-errors'-DIV after radios and checkboxes.
+* Respect attribute `data-class-on-change` on save buttons.
 
 
 Bug Fixes
 ^^^^^^^^^
 
- * #2138 / digit sanitize: new class 'numerical' implemented.
- * Fixed recursive thrown exception.
- * #2064 / search of a default value for a non existing tablecolumn returns 'false'.
+* #2138 / digit sanitize: new class 'numerical' implemented.
+* Fixed recursive thrown exception.
+* #2064 / search of a default value for a non existing tablecolumn returns 'false'.
 
-   * Fixed setting of STORE_SYSTEM / showDebugInfo during API call.
+  * Fixed setting of STORE_SYSTEM / showDebugInfo during API call.
 
- * #2081, #3180 / Form: Label & note - update via `DynamicUpdate`.
- * #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS.
- * qfq-bs.css:
+* #2081, #3180 / Form: Label & note - update via `DynamicUpdate`.
+* #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS.
+* qfq-bs.css:
 
-   * Alignment of checkboxes and radios optimized.
-   * CSS class 'qfq-note' for 'notes' (third column in a form).
+  * Alignment of checkboxes and radios optimized.
+  * CSS class 'qfq-note' for 'notes' (third column in a form).
 
 
 Version 0.12
@@ -2738,101 +2754,103 @@ Version 0.12
 Changes
 ^^^^^^^
 
- * Table 'FormElement'
-   * New column: rowLabelInputNote:
+* Table 'FormElement'
+  * New column: rowLabelInputNote:
 
       ALTER TABLE  `FormElement` ADD `rowLabelInputNote` set('row','label','/label','input','/input','note','/note','/row')
       NOT NULL DEFAULT 'row,label,/label,input,/input,note,/note,/row' AFTER  `bsNoteColumns` ;
 
-   * Modified column: 'type' - new value 'templateGroup':
+  * Modified column: 'type' - new value 'templateGroup':
 
       ALTER TABLE  `FormElement` CHANGE  `type`  `type` ENUM(  'checkbox',  'date',  'datetime',  'dateJQW',  'datetimeJQW',  'extra',
       'gridJQW',  'text',  'editor',  'time',  'note',  'password',  'radio',  'select',  'subrecord',  'upload',  'fieldset', 'pill',
       'templateGroup',  'beforeLoad',  'beforeSave',  'beforeInsert',  'beforeUpdate',  'beforeDelete',  'afterLoad',  'afterSave',
       'afterInsert',  'afterUpdate',  'afterDelete',  'sendMail' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  'text'
 
- * formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns.
+* formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns.
 
-   * PLAY 'formEditor.sql'.
+  * PLAY 'formEditor.sql'.
 
- * User Input will be UTF8 normalized.
+* User Input will be UTF8 normalized.
 
-   * INSTALL 'php5-intl' or 'php7.0-intl' on Webserver.
+  * INSTALL 'php5-intl' or 'php7.0-intl' on Webserver.
 
- * Add globalize.js to be included. Needed by jqx-all.js.
+* Add globalize.js to be included. Needed by jqx-all.js.
 
-   * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
+  * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
 
- * Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'.
+* Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'.
 
-   * UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename")
+  * UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename")
 
 
 Features
 ^^^^^^^^
 
- * User input will be UTF8 normalized.
- * config.qfq-ini:
+* User input will be UTF8 normalized.
+* config.qfq-ini:
 
-   * New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS.
-   * Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY
+  * New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS.
+  * Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY
      (=parameter is set and will not be overwritten by internal default), not UNDEFINED (overwritten by internal default).
 
- * FileUpload:
+* FileUpload:
 
-   * Implemented new Formelement.parameter: fileReplace=always - will replace existing files.
-   * Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete.
+  * Implemented new Formelement.parameter: fileReplace=always - will replace existing files.
+  * Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete.
 
- * FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements.
- * STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified.
- * STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement.
- * Default store priority list changed. Old: 'FSRD', New: 'FSRVD'.
- * CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering).
- * User manual:
+* FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements.
+* STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified.
+* STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement.
+* Default store priority list changed. Old: 'FSRD', New: 'FSRVD'.
+* CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering).
+* User manual:
 
-   * Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn.
-   * Update 'file-upload' doc.
-   * Described 3 examples for upload forms.
+  * Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn.
+  * Update 'file-upload' doc.
+  * Described 3 examples for upload forms.
 
- * Administrator manual:
+* Administrator manual:
 
-   * Add description page.meta...
+  * Add description page.meta...
 
- * New FormElement (type= 'container') added: 'templateGroup'.
+* New FormElement (type= 'container') added: 'templateGroup'.
 
-   * FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass.
-   * FormElement.maxSize: max number of duplicates.
-   * #3230 / templateGroup: margin between copies. 'tgClass' implemented.
+  * FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass.
+  * FormElement.maxSize: max number of duplicates.
+  * #3230 / templateGroup: margin between copies. 'tgClass' implemented.
 
- * Native FormElements:
+* Native FormElements:
 
-   * FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping).
-   * #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter.
-   * FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted.
-   * FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item.
-   * FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items.
+  * FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping).
+  * #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter.
+  * FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted.
+  * FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item.
+  * FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items.
 
- * #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=...
- * Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed.
+* #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=...
+* Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed.
 
 Bug fixes
 ^^^^^^^^^
 
- * User manual:
-   * Fixed double include of validator.js in T3 Typoscript template example.
-   * Fixed wrong store name SYSTEM: S > Y.
-   * Fixed wrong STORE_FORM variable names.
-   * Reformat FormElement.parameter description.
-   * Styling errors fixed.
- * Use of 'decryptCurlyBraces()' to get better error messages.
- * Skip unwanted parameter expansion during save.
- * Fixed bug with uninitialized FE_SLAVE_ID.
- * formEditor.sql:
-   * The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted.
-   * Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms.
- * #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error).
- * Labels are skipped, if FormElement.bsLabelColumns=0.
- * Respect attribute `data-class-on-change` on save buttons.
+* User manual:
+
+  * Fixed double include of validator.js in T3 Typoscript template example.
+  * Fixed wrong store name SYSTEM: S > Y.
+  * Fixed wrong STORE_FORM variable names.
+  * Reformat FormElement.parameter description.
+  * Styling errors fixed.
+
+* Use of 'decryptCurlyBraces()' to get better error messages.
+* Skip unwanted parameter expansion during save.
+* Fixed bug with uninitialized FE_SLAVE_ID.
+* formEditor.sql:
+  * The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted.
+  * Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms.
+* #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error).
+* Labels are skipped, if FormElement.bsLabelColumns=0.
+* Respect attribute `data-class-on-change` on save buttons.
 
 Version 0.11
 ------------
@@ -2840,21 +2858,21 @@ Version 0.11
 Features
 ^^^^^^^^
 
- * Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action.
- * Added 'best practice' for defining and using of 'Central configure values' in UserManual.
- * Added accent characters to sanatize class 'alnumx', #3183.
- * Set default all QFQ send mails to 'auto-submit'.
- * Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error',
-   'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement.
- * *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1.
- * Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized.
- * Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles.
+* Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action.
+* Added 'best practice' for defining and using of 'Central configure values' in UserManual.
+* Added accent characters to sanatize class 'alnumx', #3183.
+* Set default all QFQ send mails to 'auto-submit'.
+* Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error',
+  'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement.
+* *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1.
+* Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized.
+* Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles.
 
 Bug fixes
 ^^^^^^^^^
 
- * Fixed missing docutmentation for FormElement 'note'.
- * Failed SQL queries will now always be logged, even if they do not modify some data.
+* Fixed missing docutmentation for FormElement 'note'.
+* Failed SQL queries will now always be logged, even if they do not modify some data.
 
 Version 0.10
 ------------
@@ -2862,14 +2880,14 @@ Version 0.10
 Features
 ^^^^^^^^
 
- * Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc.
+* Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc.
 
 Bug fixes
 ^^^^^^^^^
 
- * Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied.
- * In case of broken SQL queries, print them in ajax error message.
- * Remove parameter 'table' from Delete SIP URLs. ToolTip updated.
+* Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied.
+* In case of broken SQL queries, print them in ajax error message.
+* Remove parameter 'table' from Delete SIP URLs. ToolTip updated.
 
 Version 0.9
 -----------
@@ -2877,43 +2895,43 @@ Version 0.9
 Features
 ^^^^^^^^
 
- * FormEditor:
-   * design update - new default background color: grey.
-   * per form configureable background colors.
-   * Optional right align of all form element labels.
-   * Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER.
+* FormEditor:
+  * design update - new default background color: grey.
+  * per form configureable background colors.
+  * Optional right align of all form element labels.
+  * Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER.
 
 Bug fixes
 ^^^^^^^^^
 
- * BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class.
-   Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'.
- * QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY.
- * formEditor.sql: New default background color for formElements is blue.
- * qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right.
- * Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody.
-   Rewrote form.paramter.class.
- * QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form.
- * UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'.
- * QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record
-   again, after 'action'-elements has been processed.
- * UsersManual/index.rst: Startet FAQ section.
- * config.qfq.example.ini: Added comment where to save config.qfq.ini.
- * UsersManual/index.rst: Rewrite of 'action'-FormElement definition.
- * #2739 / beforeDelete / afterDelete.
- * PROTOCOL.md: update 'delete' description.
- * delete.php: fixed unwanted loose of MSG_CONTENT.
- * Report.php: Fixed double '&&' in building UrlParam.
- * FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted.
- * Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP.
- * #3001 / Report: delete implementieren.
- * Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be
-   'form' (instead of '_form') due to many used places already.
- * Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links.
- * Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links.
- * Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination.
- * Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now
-   supports delete links.
- * QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these
-   parameters typically filled in newly created records.
- * #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich.
+* BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class.
+  Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'.
+* QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY.
+* formEditor.sql: New default background color for formElements is blue.
+* qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right.
+* Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody.
+  Rewrote form.paramter.class.
+* QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form.
+* UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'.
+* QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record
+  again, after 'action'-elements has been processed.
+* UsersManual/index.rst: Startet FAQ section.
+* config.qfq.example.ini: Added comment where to save config.qfq.ini.
+* UsersManual/index.rst: Rewrite of 'action'-FormElement definition.
+* #2739 / beforeDelete / afterDelete.
+* PROTOCOL.md: update 'delete' description.
+* delete.php: fixed unwanted loose of MSG_CONTENT.
+* Report.php: Fixed double '&&' in building UrlParam.
+* FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted.
+* Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP.
+* #3001 / Report: delete implementieren.
+* Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be
+  'form' (instead of '_form') due to many used places already.
+* Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links.
+* Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links.
+* Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination.
+* Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now
+  supports delete links.
+* QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these
+  parameters typically filled in newly created records.
+* #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich.
diff --git a/extension/ext_emconf.php b/extension/ext_emconf.php
index fc6e425c1f5e76afd7d9b475804f7da91822e862..d1c5b53c01872599db0543ce500025bcb14b7d9b 100644
--- a/extension/ext_emconf.php
+++ b/extension/ext_emconf.php
@@ -12,7 +12,7 @@ $EM_CONF[$_EXTKEY] = array(
     'dependencies' => 'fluid,extbase',
     'clearcacheonload' => true,
     'state' => 'stable',
-    'version' => '20.4.0',
+    'version' => '20.4.1',
     'constraints' => [
         'depends' => [
             'typo3' => '7.0.0-9.2.99',
diff --git a/version b/version
index bd45cd74a27b54ce581f30534f80b08c4962fa5d..1b0aa9924446eff02d77703617de73456b8bfaa9 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-20.4.0
+20.4.1