Welcome to the GDOv7 changelog + combined roadmap.
The current version, v7.0.3, is quite far and in the finishings.
There is no keeping backwards compat, and the ABI/API might change here and there.
Please read this document upside down, from bottom to top, and sometimes again.
- Support for HTTP2/3.
- Idea: Support for prepared statements, so persistent clients like the websocket server and the gdo dog chatbot.
- Support for GDT_Image with optional Thumbhash.
- Support for CLI image rendering (would be just nice to have).
- The Websocket methods will obey the gdo style better. @TODO auto-generate websocket commands from the normal methods and assign a cmdid logically, maybe just sequentiell. Exclusively use the new WS rendererer.
- Auto Configured Websocket methods, just mark a method as
gdoWebsocket():bool
capable and the protocol will be auto generated as it's the case for CLI and config and settings already. - New Module Geo2City to detect a city by geoposition.
- In CLI render mode,
html()
'd strings will be safer to use - In IRC mode,
html()
will strip colors and text style. - Support for PostGres DBMS
- Created a composer.json for the GDOv7 core. It can be installed with composer require gizmore/phpgdo.
- The gdo_test.sh fuzzer will only fuzz until the first valid value for a parameter. This is faster but misses conjunctured parameter problems.
- New i18n utilites; Check unused lang file entries and report problems in lang files who differ from the englis. Also report untranslated keys in foreign files.
- Make use of faster version of
html()
namedhtm()
, which can only be used inside double quotes. It skips<>'
, down to 2 replacements, and never changes the string length. However, markup can be invalid... length. - New module W3CValidator
- New Debug method: Debug::supressed(callable) - for supressing unit output pollution.
- New admin function to check and fix configurations and settings for a module.
- New Config.php option: GDO_LOG_PROFILE, appending your xdebug trigger to urls generated with
href($methodName, $moduleName, $app='')
. gdo_test.sh
now features several options. Easy to use are--all
,--quick
and--parents
.- Classes marked as 7.0.3 are unit tested in at least fuzzing mode and pass all the GDOv7 Code Guidelines and Inspections in their StormPHP configuration far from it.
- The Module_Docs module is operable and produces usable docs.
- New Website Module Hydra to monitor services.
- Methods and GDT can now be more easily debugged by overriding
Method->isDebugging()
. This triggers breakpoints at important spots. - The fuzzing unit tests do not crash the test application anymore when using
gdo_test.sh --all
. Until recently, most simple things turned the fuzzer quite useless to analyze a problem. - New unit test: assert number of unhandled exceptions is zero :)
- All GDT_Field are now required to have an icon via a new unit test.
- Methods can now have a meta image to display in Chat clients.
- The permission level has been removed from permissions.
- StormPHP support added.
- Almost all, and plenty, unit tests are passing. (in progress)
- SEO URLs now control their rendering mode via a file suffix like
.txt
,.html
,.json
and.xml
. (thx spaceone) - A new Core module DBMS, which is provided by two packages now; phpgdo-mysql and phpgdo-sqlite.
- A new utility in my automated toolchain for productive environments; php-preprocessor. This build step eliminates debug and profiler calls enabled via GDO_PREPROCESSOR for zero cost debugging.
- New method Install.Website to generate configurations for various httpd.
- The use of .htaccess is now discouraged for performance reasons. (untested)
- the defaultName() method has been removed. The way for default names is to use ->name() in the constructor. (TODO)
- Files versioned with 7.0.2 are fully type annotated. (TODO)
- ACL settings for user settings are now stored more efficiently beside the settings data.
- GDOs now feature a "softReplace", which is an INSERT ... ON DUPLICATE KEY UPDATE. This is a phpgdo sofware solution, so it should work on sqlite.
- New LGPL Module_FFMpeg which offers MP3 encoding and ffmpeg wrappers.
- Refurbished Module_Boostrap5 and [Module_Boostrap5Theme](https://github. com/gizmore/phpgdo-bootstrap5-theme). (In progress)
- The automated todo generation is working again. (TODO)
- The only core dependency was htmlpurifier. This has changed by moving it to phpgdo-html, which is a message provider using it. The core now simply htmlspecialchars() the input for the output. All more enhanced message providers, like CKEditor or Markdown, depend on html for security reasons.
- Users may now switch their message editor. Implemented core.health for a phpgdo compatible endpoint that renders a health card. You can see it in action here: html json cli.
- New Website Module KassiererCard - A website about local worker and customer bonus point systems. Demo
-
GDOv7.0.1 will try to convert all worthy gdo6 modules into the GDOv7 API. Quite accomplished now.
-
GDO_Country now tries to render UTF8 country flags in CLI mode.
-
Module_Perf now additionally utilizes PHP getrusage
-
Memcached now does a fallback to filecache API, if config.php GDO_MEMCACHED ist set to 2. GDO_MEMCACHED is now an INT from 0-2.
-
New Account settings with all module settings on one page.
-
New GDT_UserType, "link", to link various input sources together. It will be used to link accounts together.
-
A working website: HTTP/WWW support beside CLI and JSON. Write methods once and use them everywhere!
-
New demo sites, like Fineprint which is a web exploit hacking challenge.
-
Module_DOMPDF replaces Module_TCPDPF (which never got finished). We are now using a HTML to PDF strategy. New GDT render method renderPDF() which defaults renderHTML(). It's the first module to use composer as 3rd party library provider. (STALLED)
-
GDT_ACL is now a core GDT and has been moved to Module_User ... finally :)
-
AutomatedTests now test all GDO to be gdoSaveable() when initial + plugged.
-
AutomatedTests now test all rendering modes on all GDO + GDT automatically. Tests are performed With plugged and unplugged initials.
A fresh restart of the GDO project.
GDOv7.0.0 comes with only the core modules, but all of them cleaned up and now unit tested. The goal for this release is a 100% test pass for the new shiny core.
-
New GDT GDT_Redirect. This makes [../GDO/Core/Website] only responsible for website page metadata.
-
GDO_User->displayNameLabel() and displayName() has both been renamed to renderUserName().
-
GDO->displayName() has been renamed to GDO->renderName().
-
Module_TestMethods has been merged into Module_Tests. This module features automated test case generation.
-
FileUtil is now settled to be in Core, as Module_File is not core anymore. (thx flederohr)
-
[GDO_Module]s(../GDO/Core/GDO_Module.php) can now have "Friendency" modules. Suggestions that would enhance the features of an installed module.
-
These GDTs have been removed: GDT_IconButton, GDT_HTML, GDT_DIV
-
Confusion resolved. RENDER_LIST is for
- and RENDER_OPTION is for .
-
New Domain: phpgdo.com :)
-
New protected/config.php variable. GDO_JSON_DEBUG toggles JSON_PRETTY_PRINT globally. Defaults to false.
-
Filewalker is an own package now, independent from any dependency.
-
Support for the bower package manager has been dropped.
-
GDO_User got these fields moved to separate modules via module setting engine; user_email, user_country, user_credits, user_gender, user_real_name, user_password and more...
-
Module_Tests is now a core module. See Module_TestMethods for auto-generated testing. All test cases now pass for the very core and testing modules.
-
Module_Cronjob is not a core module anymore.
-
Module_File is not a core module anymore. (thx flederohr)
-
Module_CSS is not a core module anymore.
-
Module_Javascript is not a core module anymore.
-
Module_Country is not a core module anymore.
-
Module_Mail is not a core module anymore.
-
Module_Admin is now a core module.
-
I am now making use of type annotations for scalar- and return values.
-
The core has been rewritten with better CLI and Chatbots in mind.
-
A slightly changed bunch of core modules. As their stuff is almost always needed anyway. These do not require an additional module repository.
-
[Module_Websocket](https://github.com/gizmore/phpgdo-websocket/Module Websocket.php) makes now use of the new rendering method
renderBinary
- seems perfect to fuse websocket szenarios with a binary GDT driven protocol. -
There is no more global GDT_Response with hacks and quirks. Methods can return any GDT now. The response code is stored in Application.
-
Module_Mail now takes care of all email setting and configuration stuff. Users can approve emails on their behalf. No more email stuff in Module_Account or elsewhere. Similiar goes for other user settings like password or last activity.
-
Module_Mail now needs a Mailer Provider module to actually send mails. ( TODO). Planned is to use own mailer until i find time to write a better 3rd party module.
-
GDT start completely blank without any attributes now. This is important to be able to serve (P)lain(O)ld(O)bjects.
-
Methods may now return a GDT, a string or null/none.
-
GDO now inherits from GDT. This means you can return it as a result and call rendering on it.
-
New License! GDOv7 is now my exclusive own property. Of course you can still fork, use and enhance GDOv6.
-