add option to set font root size (small – standard – big) (0.875rem -> 1rem -> 1.25rem)
What makes this so ambivalent is that we all use different devices with various resolutions and may also adjust the viewport (e.g. scaling to 125% in the desktop environment or the browser).
designer control / user agency
1.3. Core
check: when it writes a page it no longer seems to delete the cached version of this page (fix if so – or is this a web proxy issue?)
Mitigate PHP Fatal error: Uncaught Error: Undefined constant “MYSQLI_REPORT_OFF” in /wiki/class/dbmysqli.php:19 – can happen when user switching stack with existing config -> Show : The MySQLi extension is missing or disabled.
reoccurring ERR_HTTP2_PROTOCOL_ERROR
What is causing the browser to show ERR_HTTP2_PROTOCOL_ERROR before it finally loads the site correctly and how it can be fixed?
$utc_time = DateTimeImmutable::now('UTC');
$now = new DateTimeImmutable('now', new DateTimeZone('UTC'));
check: installer / upgrade sets empty bookmark for 'Changes'
make the installer password protection mandatory DONE
change the message sets and documentation accordingly (SQLite requires no password)
another password, not pretty, a necessity to prevent unauthorized setups with SQLite
sql_mode 'session strict' lets installer stall with MariaDB (debug!), going back and changing it to 'server (default)' and it works
language selection is behind authorization, it always defaults to English if you do a new installation, except you change the 'language' => 'de' in the config_defaults.php file
set language via user_agent_language()?
commented out auto-creation of empty help, terms and privacy page – needs FEEDBACK
make creation optional, the default theme shows the links when set in the config
either the user defines them individually in the admin panel or sets an additional option in the installer to create them
user pages: only the user should be able to write and create sub-pages by default in his namespace
validate username
use dbal also for installer: $db->sql_query($sql)
raise DB version requirement (there is a technical minimum requirement as well as a end of support) DONE
enforces version for technical requirement
show warning for versions with end of support
show error message if variable $fatal_error is true
set default bookmarks for new languages with multi-language mode after installation / upgrade
if the user adds new langages later by hand or activates it via Admin Panel, the default menu for newly activated languages are then missing
currently the admin can fix this only by manually adding the missing bookmarks with the {{menu system=1}} action or re-runs the upgrade process by setting back the WackoWiki version in the config file
it is possible to move comments to a forum main page and then they become inaccessible for the moderation handler, the only way is then to change to comment_on_id in the database to another accessible forum page – FIXME
the has_access() validation for the lock/unlock feature as well as for the indicator needs a special option for the Admin and the page owner, both have always access, and the handler always assumes only system read & comment defaults, so it won't show the correct indicator and lock/unlock mode
a forum or a topic however allows individual read and comment rights
export.xml: add option for cluster and if the handler should show the xml or offer it for direct download, some browsers modify the XML in presentation mode or show it as feed – however the user needs the original source text including the line feeds!
send notice on comment edit and make change visible in actions like it is done for pages, to not miss possible important content changes
diff: add page title to diff
print: pass arguments? e.g. ?phrase=canonical&lang=&p=2
add feature to move attachments between pages and global, useful for page and content refactoring
rename: cluster
update bookmarks in user session
update link table
1.6. Action
search: improve search, highlighting, ideographic languages
add regex search option and feature (similar to admin_replace)
add more filters
registration: add option to enforce certain user name patterns
blog: improve options, sorting and filtering, add content templates
paragraphs: add option to set permalinks to paragraphs (to page version) for export (PDF) or other external reference
forums: check not only for deleted topic but also for deleted comment in last comment query
gallery: add media query for small displays
add filter like in files action
usersettings: Sessions – [Log Out Everywhere Else] You are only logged in at this location.
search: add help for search syntax, e.g. “exact phrase”, operators (+, -, *), ...
edit and comment: allow inline usage to be included in text without line break, template however is parsed in a way that it always produce line breaks and a new paragraph (evaluate)
1.7. Formatter
Link regexp failed with many punctuation marks at the end
update default settings of options, some options are mostly more annoying than useful, e.g. (c)
turnoff option should also affect all page related comments
interference with other syntax, e.g. striketrough
Unicode context
create test cases
multi-line strikethrough (marker similar) may break correct tag nesting and parsing, how this should work anyways across paragraphs, lists, etc. by only wrapping it via <del> tag
WikiEdit as well the Formatter must recognize a new paragraph, list as terminators to avoid invalid tag nesting!
there is a working patch, however the current workaround for the random <dt> to <dd> tag transition, prevents wiki text formatting
add option to wrap caption around code blocks (DONE) and option to enable / disable <figcaption> like caption=0|1
HTML
<figure><figcaption>Language of code</figcaption><pre><code><!-- your code here --></code></pre></figure>
indenting text in quote breaks page
HTML
<pid="p291-1"class="auto"><br><blockquote>Where authority fails in its duties and indeed betrays the purpose for which it has been established, disobedience is not only lawful but obligatory: non-violent disobedience, at least for now, but determined and courageous.</p><divclass="indent">.</blockquote><pid="p291-2"class="auto"></div>
auto-paragraph did not terminates correctly in indent div having a code wrapper
Pre-MT produces a lot of none-sense which needs to be fixed again by hand, mixed results – depending on target language and context, English as source language with little context is sometimes hard to translate
A small change in an English source file like setting a comma or removing a <tag>, suddenly it discards all existing translations and replaces them with a new auto-translated version – very frustrating
ToDo & Workflow guide
completeness -> proofreading
Crowdin export scheme should mirror original file structure for simple drop-in replacement, but does not -> WHY ???
The large size of grammar files in Phiki is primarily due to the exponential state growth that occurs when compiling complex JSON schemas into finite-state automata, particularly when using nullable types and deep nesting.
Nullable Types Cause Branching: Each type definition that allows null (e.g., ["number", “null”]) compiles into an anyOf branch within the grammar. With multiple nullable fields per object, this creates dozens of branching points that multiply the number of states exponentially.
Lack of Efficient Deduplication: Even when schemas use $ref and $defs to define shared structures, the grammar compiler often expands everything inline rather than reusing grammar rules. This means repeated sub-schemas are duplicated in the compiled output, significantly increasing file size.
Deep Nesting Compounds Complexity: Paths with multiple levels of nested objects (e.g., schema → array → object → fields → constraints) compound the complexity, as each level adds its own set of properties and constraints to the state machine.
These factors mean that moderately complex schemas (e.g., 5 levels deep with 50 properties) can trigger errors like “compiled grammar is too large” because the resulting finite-state automaton becomes too large for efficient performance.
normalize links to other language versions of a page
add table: lang_link[page_id, lang, target_id]
add debug option to send error log into separate file + rotate logs
add IP block to ban bad actors, bots
2.3. M17
open issues (add)
relative linking seems not working for ((../ back to parent page)), it links to root level (?!)
upload of file without extension -> broken
empty body_r after page rename/relocation -> page needs re-rendering
allow multi logins (on/off)
add multi login warning: 'Jemand hat sich bereits an diesem Konto angemeldet'
This account is currently being used in 1 other location at this IP ().
add access throttling feature
limit the number of page requests by a single IP address within a given time interval
add array for 'default' AND 'user' menu so both can used independently (create/edit menu sets)
rewrite_mode setting in AP is pointless if it is overwritten in Setting class
2.4. Fix
check for avoidable SQL roundtrip queries
link() -> default: $anchor_link - should only active inside page_body (?)
additional check if its better to prefix the id="doc.deutsch.konfiguration"
to avoid unintentional mix with CSS settings
set anchor id only where needed, minimizes also size of attributes
broken list in tree action if levels changes not in order - e.g. depth 1.2 -> depth 2.4
show missing levels
search?phrase="sourceforge.net" -> paging fails with "term to search"
bug: news action takes all subpages - is this desired?
improve search (open since ages), add some measures to improve relevance (time, size, user, filter, ...) and provide more and better meta data for search results
add meta handler namespace ['page', 'account', 'file', 'service']
This is the simplest way to standardize document locations and for the language-independent single instances of service pages, like login. Next step is the separated cluster for those pages, linked with prefix, for example, ((service:login)).
this can be easily done with the new URI router
handler/account/
file: apply access restrictions for global files if Wiki is closed -> $
add and enforce global Wiki mode, minimum access rights
route global files only for registered users
2.7. Action
template toc and tree
2.8. Formatter
Search Highlighter
(/Users/WikiAdmin UserSpace | WikiAdmin)) -fails on |
<# #> adds <!--notypo--> on first and <!--/notypo--> on second appearance of double quote like class=""
caused by race condition in wacko_preprocess()
<#<div class="" style="background:transparent; border:.1em solid #F66; border-left:1em solid #F66; box-sizing:border-box; margin:.5em 0; overflow:hidden; padding:.5em; text-align:left; width:auto;">Unter den Btrfs-spezifischen Anpassungen (1, 2) waren einige, die Latenz- und Stabilitäts-Probleme beseitigen, die bei knapp werdendem Speicherplatz auftreten können.</div>#>
2
<#<div class="" style="background:transparent; border:.1em solid #fcfce9; border-left:1em solid #fcfce9; box-sizing:border-box; margin:.5em 0; overflow:hidden; padding:.5em; text-align:left; width:auto;">Unter den Btrfs-spezifischen Anpassungen (1, 2) waren einige, die Latenz- und Stabilitäts-Probleme beseitigen, die bei knapp werdendem Speicherplatz auftreten können.</div>#>
<!--notypo--><div class="<!--notypo--> style="background:transparent; border:.1em solid #F66; border-left:1em solid #F66; box-sizing:border-box; margin:.5em 0; overflow:hidden; padding:.5em; text-align:left; width:auto;">Unter den Btrfs-spezifischen Anpassungen (1, 2) waren einige, die Latenz- und Stabilitäts-Probleme beseitigen, die bei knapp werdendem Speicherplatz auftreten können.</div>#><br />2<br /><#<div class=<!--/notypo-->" style="background:transparent; border:.1em solid #fcfce9; border-left:1em solid #fcfce9; box-sizing:border-box; margin:.5em 0; overflow:hidden; padding:.5em; text-align:left; width:auto;">Unter den Btrfs-spezifischen Anpassungen (1, 2) waren einige, die Latenz- und Stabilitäts-Probleme beseitigen, die bei knapp werdendem Speicherplatz auftreten können.</div><!--/notypo--><br />
Wacko is spamming BRs, in between everything
add option to hide protected links
You must login to see this link. Register now, if you have no user account yet.
Error: Bad value 4 for attribute type on element ol.
see $new_indent_type in wackoformatter -> error prone
1. hallo
5. should not take the number but 1, same for i, I, a, A
allow case insensitive matching of file links, e.g. File:image.jpg
breaks quote
<[http://www.example.com]>
<[ ]> eats blank line in quote, undesired
broken nested quote
<[block
<[nested quote]>
quote
]>
2.9. Admin Panel
upload module
PAY ATTENTION TO SECURITY RISKS
Before adding random file/MIME types: please think about possible security issues.
For example HTML (.htm, .html), JavaScript (.js) and PHP (.php) file are types you’d better avoid as they can be “executed” on your server where you really would not want that to happen. For most of these kind of files, this should not be a problem though as these files are better off being compressed into a ZIP file anyway.
Only add file types that you REALLY need and that you are comfortable with.
add module to filter, moderate and manage pages, comments, (files)
You can use the ‘:focus’ selector on lots of elements, but it’s super handy when used on inputs and textareas to indicate that the field is active. Add CSS styling such as a highlighted border, or a subtle change to the background color.
What you need is a good way for users to flag inappropriate content and a mechanism to deal with it swiftly. One way is to automatically hide/remove content if it's been flagged more than X times.