Full Changelog Starting from Version 3.6.6 and Above
| Name | Description |
|---|---|
| Version Code | 3.6.7 |
| Version Name | Hermes |
| Published | 2024-08-05 09:33:59 |
| Updated | 2025-08-05 09:33:59 |
Luminova 3.6.6+ Update Overview
Version 3.6.6 includes major performance improvements and new features focused on background task processing and webhook support.
New Features
Added in Version 3.6.7
Core Application abstract Class
Introduced a new static method: onShutdown().This method acts as a hook that runs when the application terminates due to a fatal error or explicit shutdown. It allows the application to inspect the error and choose to:
- Return
falseto suppress default framework handling. - Return
trueto let the framework handle the error normally.
Example:
// /app/Application.php
namespace App;
use Luminova\Core\CoreApplication;
class Application extends CoreApplication
{
public static function onShutdown(array $error): bool
{
return true;
// Or handle shutdown and return false
}
}This gives developers more control over graceful shutdowns in critical situations.
Added in Version 3.6.6
Background Task Queue System
A built-in system for running tasks in the background. This helps improve app responsiveness by offloading heavy tasks to a queue.
Highlights:
- Queue Execution: Tasks can be executed in the background using CLI commands.
- Command Support: Manage and run tasks with
php novakit task:*commands.
Included Classes and Helpers:
Luminova\Models\TaskTask model class used to define task details when managing task responses.App\Tasks\TaskQueueDefault task queue controller located at/app/Tasks/TaskQueue.php.Luminova\Interface\QueueableInterfaceOptional interface for queueable tasks. Supports invokable style (__invokemethod).novakitCLI SupportIncludes CLI commands for listing, running, or managing tasks.Example:php novakit task:list
Webhook Helper Class
A utility class for sending and receiving webhook requests.
Key Features:
- Send payloads with optional signature verification.
- Receive incoming webhook requests.
- Automatically verify and decode received payloads.
Changes
Improvements in Version 3.6.6
Global Functions Now Namespaced
Global helper functions are now moved under the Luminova\Funcs\* namespace. This change helps avoid naming conflicts with core PHP functions and improves performance by removing the need for function_exists checks.
How to Use:
You can now call global functions in two ways:
// Option 1: Import multiple functions from the namespace
use function Luminova\Funcs\{response, root};
response(...)->json(...);
root('path', 'to/text.txt');
// Option 2: Use fully qualified names
Luminova\Funcs\response(...)->json(...);
Luminova\Funcs\root('path', 'to/text.txt');Affected Functions by Category
Core App & Environment
appbrowserconfigsfactoryimportimport_libis_commandis_dev_serverlanglocaleloggerremove_servicerequestresponserootserviceshareduuidip_addresscookiesessionwhich_phpstatus_codehttp_status_header
Utility & Logic Helpers
camel_caseclass_exists_cachedfunction_exists_cachedget_class_namehas_uppercaseis_associativeis_blobis_emptyis_listis_nestedis_platformis_toris_utf8kebab_casepascal_casestring_lengthuppercase_wordsvalidate
URL & Routing Helpers
Data Helpers
get_columnobject_columnto_arrayto_objectarray_extend_defaultarray_merge_recursive_distinctarray_merge_recursive_replacearray_merge_resultlist_in_arraylist_to_array
File & Content Helpers
Template & Text Helpers
Optimization
Optimized in Version 3.6.7
Global Helper Functions
Improved performance and flexibility of global functions.
import()now supports resolving virtual paths using predefined URI-style schemes. This simplifies file inclusion across common system directories.
Examples:
import('app:Config/settings.php');
import('view:layouts/header.php');
import('package:brick/math/src/BigNumber.php');Supported Schemes:
| Scheme | Resolves To |
|---|---|
app | root/app/* |
package | root/system/plugins/* |
system | root/system/* |
view | root/resources/Views/* |
public | root/public/* |
writeable | root/writeable/* |
libraries | root/libraries/* |
resources | root/resources/* |
routes | root/routes/* |
bootstrap | root/bootstrap/* |
bin | root/bin/* |
node | root/node/* |
This update enhances code readability and keeps file paths consistent across modules.You can still pass a full file path if preferred. The scheme prefix is entirely optional.
Optimized in Version 3.6.6
Novakit Command Line Improvements
The Novakit CLI tool has been optimized for better usability and flexibility.
Affected Commands:
helpsCommandImproved how help information is displayed.You can now view help for grouped commands:php novakit task -h– shows help for alltaskgroup commands.php novakit task:run -h– shows help specifically for thetask:runcommand.
listCommandNow supports optional filtering using:--command=task-c=taskThese options limit the output to commands related to the specified group.
Additional Optimizations
rootNow supports a second parameter$filenameto build a full path.Example:
root('/public/', 'robots.txt'); // Returns: /path/to/project/public/robots.txtimportAdded support for extra options:$throw– whether to throw an exception if the file isn't found.
$once– use_oncevariants likeinclude_onceorrequire_once.
$require– switch betweenincludeandrequire.
This gives you full control over how files are included.
get_columnWhen working with objects, this function now returns an object instead of an array, making it easier to chain or access directly.
Fixes
Deprecated Fixes in Version 3.6.6
Command Handler (Terminal)
tableFixed an issue where passing0as the column value caused blank output. Building table in CLI now properly handles zero values.
Removed
Legacy Methods Removed in Version 3.6.6
The following previously deprecated methods have now been removed:
Luminova\Command\Terminal::explain()Deprecated since version 3.5.6.Use:perse()instead.Luminova\Database\Builder->caching()Deprecated since version 3.5.6.Use:cacheable()instead.
ToDo
Applies from Version 3.6.6+
All references to global functions should now use their new namespaced versions.
Update Example:
Before:
root(...);After:
use function Luminova\Funcs\root;
root(...);
// OR
Luminova\Funcs\root(...);If you’re calling multiple functions, you can import them like this:
use function Luminova\Funcs\{root, response, uuid};