6.0 Change Log
6.0
(10.03.2023) a31bc75[link1] -> M37 (Release Notes[link2])1. Configuration
1.1. primary config
- changed
-
'db_charset' => 'utf8mb4',
-
'db_collation' => 'utf8mb4_unicode_520_ci',
-
- renamed
-
database_*
->db_*
-
1.2. secondary config
- new
-
upload_translit
-
source_handler
-
export_handler
-
canonical
-
base_path
-
opensearch
-
enable_counters
-
permissions_policy
-
news_structure
-
xml_sitemap_gz
-
- renamed
-
owners_can_change_categories
->categories_handler
-
- removed
-
antidupe
-
disable_tikilinks
-
outlook_workaround
-
1.3. constants
- new
-
DB_MIN_VERSION
-
- removed
-
TRANSLIT_DONTCHANGE
-
TRANSLIT_LOWERCASE
-
TRANSLIT_LOAD
-
TRANSLIT_DONTLOAD
-
1.4. conf files
- new
- permissions_policy.conf[link3]
- changed
- autoload.conf[link4]
- router.conf[link5]
- csp_custom.conf[link6]
- csp.conf[link7]
2. Core
- converted all PHP files to UTF-8
- set
utf-8
as default encoding - removed unnecessary usage of HTML Unicode entities
- removed all
supertag
usage- with Unicode the supertag is not unique and therefor no longer suited
- removed obsolete translit functions and all related code
- removed depreciated SQL legacy functions
- set the
/u
flag for allpreg_*
regex handling Unicode - replaced all non Unicode safe functions[link8] with their
mb_
equivalent where necessary - added
utf8_
complementary multibyte string functions[link9] at lib/mb_extends/mb_extends.php[link10] - normalizes
file_name
,tag
anduser_name
to Form C (NFC) - new Unicode regex patterns
-
public const PATTERN = [ 'USER_NAME' => '[\p{L}\p{Nd}\.\-]+', 'USER_NAME_P' => '\p{L}\p{Nd}\.\-', 'TAG' => '[\p{L}\p{M}\p{Nd}\.\-\/]', 'TAG_P' => '\p{L}\p{M}\p{Nd}\.\-\/', 'UPPER' => '[\p{Lu}]', 'UPPERNUM' => '[\p{Lu}\p{Nd}]', 'LOWER' => '[\p{Ll}\/]', 'ALPHA' => '[\p{L}\_\-\/]', 'ALPHANUM' => '[\p{L}\p{M}\p{Nd}\_\-\/]', 'ALPHANUM_P' => '\p{L}\p{M}\p{Nd}\_\-\/', ];
- allows now full stop and hyphen-minus as part of the page tag, but only between alphanumeric characters as single character to not mess with the wiki syntax as well as the wiki link path, e.g.
page/sub-page/6.1/details
-
- fixed falsely setting the
description
text in page table to1
- added session heartbeat to edit and comment handler for logged in users
- implemented full support for relative path, e.g.
<a href="/wiki/WikiPage">
- the
link()
function tracks now also external links - added support for optional language tag sub-code, e.g.
en-NZ
oren-GB
- uses
<button>
element for submit, cancel and reset buttons - added option to disable hit counter
- added option for Permissions-Policy HTTP response header
-
Permissions-Policy: camera=(), microphone=(), midi=(), geolocation=(), interest-cohort=()
-
- added option to compress sitemap.xml
- writes
sitemap.xml
now by default into thexml/
folder - disables JavaScript in all SVGs via CSP directive
- COLLATE tag column[link11] case-insensitive for ORDER BY and LIKE
-
ORDER BY tag COLLATE utf8mb4_unicode_520_ci ASC
-
WHERE tag COLLATE utf8mb4_unicode_520_ci LIKE
-
- set missing
context
for comments and news feed - fixed some incompatible backports for PHP 7.3 - 7.4
2.1. Methods
This is only a random selection.- added
-
Ut::normalize()
-
Ut::translit()
-
get_favicon()
-
- modified
-
href($method = '', $tag = '', $params = [], $addpage = false, $anchor = '', $alter = true, $encode = true, , $absolute = false)
- added
$encode
to URL-encode according to RFC 3986 - added
$absolute
to use absolute URL path
- added
-
save_page($tag, $body, $title = '', [...])
- changed order of 2nd and 3rd parameter, now
$body
is in second place
- changed order of 2nd and 3rd parameter, now
-
get_page_path($tag = '', $titles = false, $separator = '/', $linking = true, $root_page = false)
- added
$tag
as first argument, this changes the order of the parameters
- added
-
- renamed
-
slim_url()
->underscore_url()
- it is no longer used for transliteration
-
- removed
-
try_utf_decode()
-
do_unicode_entities()
-
utf8_to_unicode_entities()
-
translit()
-
get_description()
-
2.2. Folders
- renamed folder
wacko
tosrc
3. Database
- dropped support for MyISAM
- DB sessions are not compatible with MyISAM database engine.
- uses
utf8mb4[link12]
as default encoding - removed obsolete
supertag
field from all related tables - changed all lang fields to
VARCHAR(5)
to fit in the new language tag sub-code scheme - set collation for
tag
in page table toutf8mb4_bin
- makes the
tag
accent and case-sensitive[link11]
- makes the
- changed field
-
referrer
toVARCHAR(2083)
in referrer table -
email
toVARCHAR(254)
in user table -
query
toVARCHAR(255)
in cache table
-
- removed obsolete
hits
field from file table- the file hit counter worked only for non-image files in local namespace
Database schema[link13] changes
4. Installer
- adds all base pages now for all languages only once
- sets database collation to
utf8mb4_unicode_520_ci
as default - added localized default
site_name
- fixed wrong version sorting of upgrade array
5. Formatters
- new syntax for auto-generated footnote
[[^ footnote here]]
- moved BBcode formatter[link14] to community repo
- removed obsolete legacy image/ folder look up via
((image.png))
-
file:attachment.jpg
loads now only the local file, usefile:/attachment.jpg
for global attachments- all links to global files must have a slash after the colon
file:/
to work from now on
- all links to global files must have a slash after the colon
- removed support for Tiki-Links, e.g.
Wiki.Word
->Wiki/Word
- allows dot as part of namespace, e.g.
Release/6.0/Upgrade
- allows dot as part of namespace, e.g.
- added id for file backlink to media
- added lazy loading for images, e.g.
loading="lazy"
- fixed broken image resizing from external sources, e.g.
((https://example.com/image.png width=500 align=center))
- added details formatter
-
%%(details title="summary" open=1) Details info. %%
-
Summary
The HTML Details Element (<details>
) creates a disclosure widget in which information is visible only when the widget is toggled into an "open" state. A summary or label can be provided using the<summary>
element.
A disclosure widget is typically presented onscreen using a small triangle which rotates (or twists) to indicate open/closed status, with a label next to the triangle. If the first child of the<details>
element is a<summary>
, the contents of the<summary>
element are used as the label for the disclosure widget.
-
- added info formatter
-
%%(info type="warning" title="Warning") Formatter info.%%
-
Warning
Formatter info.-
type="default | error | example | important | note | question | quote | success | warning"
-
title="Title"
-
icon=1 | 0
-
-
- added chat formatter
- supports various date-username-message chat log formats
-
%%(chat type="[div|table]" user=[0|1]) chat log%%
-
User One Message text by User. 12:04 User Two Message text by Another User. Link in text https://example.com/ 12:05 User Three Message text by Yet Another User.
With
several lines
ot text!12:10
5.1. Wrapper
new arguments:-
wrapper_type="default | error | example | important | note | question | quote | success | warning"
-
wrapper_title="Title"
-
col=1 | 0
box | shade | page | text | |
---|---|---|---|---|
type | + | + | – | - |
title | + | + | – | - |
alignment | + | –1 | –2 | + |
clear | + | + | – | – |
width | + | –1 | + | –3 |
column | – | + | – | + |
frame | + | + | – | – |
automatic line feed | + | + | + | – |
2 Only to the left.
3 If you don't put the line feeds yourself, the block width is fixed by the engine at approximately 90% of the page width.
%%(wacko wrapper="shade" wrapper_type="note" wrapper_title="Columns" col=4) content... %%
Columns
Unicode has the explicit aim of transcending the limitations of traditional character encodings, such as those defined by the ISO 8859 standard, which find wide usage in various countries of the world but remain largely incompatible with each other. Many traditional character encodings share a common problem in that they allow bilingual computer processing (usually using Latin characters and the local script), but not multilingual computer processing (computer processing of arbitrary scripts mixed with each other).
Unicode, in intent, encodes the underlying characters—graphemes and grapheme-like units—rather than the variant glyphs (renderings) for such characters. In the case of Chinese characters, this sometimes leads to controversies over distinguishing the underlying character from its variant glyphs (see Han unification).
In text processing, Unicode takes the role of providing a unique code point—a number, not a glyph—for each character. In other words, Unicode represents a character in an abstract way and leaves the visual rendering (size, shape, font, or style) to other software, such as a web browser or word processor. This simple aim becomes complicated, however, because of concessions made by Unicode's designers in the hope of encouraging a more rapid adoption of Unicode.
The first 256 code points were made identical to the content of ISO-8859-1 so as to make it trivial to convert existing western text. Many essentially identical characters were encoded multiple times at different code points to preserve distinctions used by legacy encodings and therefore, allow conversion from those encodings to Unicode (and back) without losing any information. For example, the "fullwidth forms" section of code points encompasses a full Latin alphabet that is separate from the main Latin alphabet section because in Chinese, Japanese, and Korean (CJK) fonts, these Latin characters are rendered at the same width as CJK characters, rather than at half the width. For other examples, see duplicate characters in Unicode.
Unicode, in intent, encodes the underlying characters—graphemes and grapheme-like units—rather than the variant glyphs (renderings) for such characters. In the case of Chinese characters, this sometimes leads to controversies over distinguishing the underlying character from its variant glyphs (see Han unification).
In text processing, Unicode takes the role of providing a unique code point—a number, not a glyph—for each character. In other words, Unicode represents a character in an abstract way and leaves the visual rendering (size, shape, font, or style) to other software, such as a web browser or word processor. This simple aim becomes complicated, however, because of concessions made by Unicode's designers in the hope of encouraging a more rapid adoption of Unicode.
The first 256 code points were made identical to the content of ISO-8859-1 so as to make it trivial to convert existing western text. Many essentially identical characters were encoded multiple times at different code points to preserve distinctions used by legacy encodings and therefore, allow conversion from those encodings to Unicode (and back) without losing any information. For example, the "fullwidth forms" section of code points encompasses a full Latin alphabet that is separate from the main Latin alphabet section because in Chinese, Japanese, and Korean (CJK) fonts, these Latin characters are rendered at the same width as CJK characters, rather than at half the width. For other examples, see duplicate characters in Unicode.
6. Actions
- admin_utf8[link15] - database UTF-8 conversion script[link16]
- fixed
urls_underscores
option breaks path to local file in various actions -
category
: shows now only categories with assigned records by default -
embed
: added optional parameteralign="left|center|right"
-
whatsnew
: added optional parameterpage="Cluster"
, it does not include files uploaded in global namespace -
feed
: added pagination -
adminupdate
: added option to reset legacy password hashes (only affects inactive legacy accounts used before R5.5) - renamed
-
flash
->embed
-
fileusage
->filelinks
-
- added
-
pagelinks
- the counterpart to backlinks -
blog
- creates a blog in the namespace of your choice
-
7. Handlers
- added option to disable the
source
handler - shows a notice in the
edit
handler, when you create a new page and a similar page already exists -
edit
: fixed selected categories were not saved with new page -
show
: added navigation between revisions -
categories
: removed auto-selection of parent category -
edit
: fixed HTML form nesting issue in preview mode -
diff
: added diff mode Merged - enables doubleclick edit now only in
show
handler -
file
: removed hit counter for local file -
remove
: added ability to remove / hide only certain revisions
8. Themes
- added
<link rel="canonical" href="...">
to common page header - added OpenSearch autodiscovery
- changed default font-size to 14px
- set
viewBox
and removedheight
andwidth
in all SVG files - reset nested list style in comments
-
.visuallyhidden
class hides non-visible form labels -
.no-print
class hides elements in print view
9. WikiEdit
- removed obsolete browser cases
- added button and icon for
<small>
- replaced 'Help' text with icon
- ECMAScript 2015 Migration
- added Unicode support
10. Admin panel
- added option to create user without setting email confirm token
- removed transliterate module
- stores admin panel menu in session
- data synchronization: added option to reparse all pages
- resync: fixed broken setting of resync_limit
- the panel now uses the language of the user account
- users: added option to resend email confirmation code
- backup: added missing column collation to backup script
- sets
DEFAULT
for all fields in backup module script
11. Translations
- all translation files[link17] are now encoded as UTF-8
- updated German, Russian and Spanish
- added support for Chinese, Hindi, Japanese, Korean and Persian
- work in progress, help from native speakers appreciated
12. Packages
updated- Bad Behavior[link18] 2.2.24
- clipboard.js[link19] v2.0.11
- Hashids[link20] 4.1.0 (Changelog[link21])
- php-diff[link22] 2.4.0 (Changelog[link23])
- PHPMailer[link24] 6.6.2 (Changelog[link25])
- PHP Thumb Library[link26] 2.1
- SafeHTML[link27] 1.3.12
- SimplePie[link28] 1.6.0 (Changelog[link29])
- Text_Highlighter 0.8.0
- WikiEdit[link30] 3.21
.
Note that the changelog is usually incomplete, for a complete list of changes that went into R6.0, you can browse the Commit log[link31], the Bug Tracker Log[link32] and ToDo[link33] list.
- [link1] https://bitbucket.org/wackowiki/wackowiki/commits/a31bc75a22e98d32ceb40f9a4cc7af475858b51
- [link2] https://wackowiki.org/doc/Dev/Release/R6.0/ReleaseNotes
- [link3] https://bitbucket.org/wackowiki/wackowiki/src/6.0/src/config/permissions_policy.conf
- [link4] https://bitbucket.org/wackowiki/wackowiki/src/6.0/src/config/autoload.conf
- [link5] https://bitbucket.org/wackowiki/wackowiki/src/6.0/src/config/router.conf
- [link6] https://bitbucket.org/wackowiki/wackowiki/src/6.0/src/config/csp_custom.conf
- [link7] https://bitbucket.org/wackowiki/wackowiki/src/6.0/src/config/csp_.conf
- [link8] https://wackowiki.org/doc/Dev/Guidelines/UnicodeCheatSheet
- [link9] https://wackowiki.org/doc/Dev/Release/R6.0/Unicode/MbExtends
- [link10] https://bitbucket.org/wackowiki/wackowiki/src/6.0/src/lib/mb_extends/mb_extends.php
- [link11] https://wackowiki.org/doc/Dev/Release/R6.0/BinaryTag
- [link12] https://wackowiki.org/doc/Dev/Release/R6.0/Unicode/utf8mb4
- [link13] https://wackowiki.org/doc/Dev/Release/R6.0/Database
- [link14] https://wackowiki.org/doc/Dev/PatchesHacks/BBCode
- [link15] https://bitbucket.org/wackowiki/wackowiki/src/6.0/community/action/admin_utf8.php
- [link16] https://wackowiki.org/doc/Dev/Release/R6.0/Upgrade/DatabaseConversion
- [link17] https://wackowiki.org/doc/Dev/Translations
- [link18] https://github.com/Bad-Behaviour/badbehaviour
- [link19] https://github.com/zenorocha/clipboard.js
- [link20] https://hashids.org/php/
- [link21] https://github.com/ivanakimov/hashids.php/blob/master/CHANGELOG.md
- [link22] https://github.com/JBlond/php-diff
- [link23] https://github.com/JBlond/php-diff/blob/master/changelog.md
- [link24] https://github.com/PHPMailer/PHPMailer
- [link25] https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md
- [link26] https://github.com/PHPThumb/PHPThumb
- [link27] https://wackowiki.org/doc/Dev/Projects/SafeHTML
- [link28] https://simplepie.org/
- [link29] https://github.com/simplepie/simplepie/blob/master/CHANGELOG.md
- [link30] https://wackowiki.org/doc/Dev/Projects/WikiEdit
- [link31] https://bitbucket.org/wackowiki/wackowiki/commits/all
- [link32] https://wackowiki.org/bugs/changelog_page.php
- [link33] https://wackowiki.org/doc/Dev/Release/R6.0/ToDo