File "changelog.md"
Full Path: /home/romayxjt/public_html/wp-content/plugins/vikbooking/libraries/adapter/changelog.md
File size: 25.36 KB
MIME-type: text/plain
Charset: utf-8
# Framework Changelog
### 10.1.63
*Release date - 9 June 2025*
##### ADD
* Added support for off session charge in payment framework.
##### BUG FIXES
* Improved the chosen rendering for the system dropdowns.
* Compatibility improvements for PHP 8.4.
---
### 10.1.62
*Release date - 7 May 2025*
##### BUG FIXES
* Fixed an issue that was no longer setting the SMTP properties of a PHPMailer object.
---
### 10.1.61
*Release date - 3 April 2025*
##### BUG FIXES
* Fixed an issue that was no longer updating the properties of a PHPMailer object.
---
### 10.1.60
*Release date - 24 February 2025*
##### BUG FIXES
* Prevented the fatal error thrown because of a WP error returned by WPML.
---
### 10.1.59
*Release date - 4 December 2024*
##### BUG FIXES
* The site widgets now always use an incremental identifier, since WordPress is no longer able to provide a unique number when publishing them as Gutenberg blocks.
---
### 10.1.58
*Release date - 25 July 2024*
##### ADD
* Implemented the `JDatabaseDriver::getLastError()` method to fetch the last error caught.
* The `JTable` instance is now able to propagate the error message faced during the database insert/update execution.
---
### 10.1.57
*Release date - 12 July 2024*
##### ADD
* Implemented framework to support remote plugins installation.
* Implemented Sodium cipher adapter.
---
### 10.1.56
*Release date - 4 June 2024*
##### BUG FIXES
* Fixed an issue with the usage of custom HTTP request methods, such as DELETE, PUT and TRACE.
* Fixed minor PHP warnings within the `JHttp` class methods.
---
### 10.1.55
*Release date - 7 May 2024*
##### CHANGE
* The internal router is now fully compatible with WPML.
* The system now loads the jQuery UI Draggable add-on from the WP resources.
##### BUG FIXES
* Fixed a PHP warning that could occur while directly instantiating a `JModel` child without the usage of the `getInstance()` method.
* Improved the `JLanguage::getKnownLanguages()` method to prevent errors with third party plugins.
---
### 10.1.54
*Release date - 15 April 2024*
##### CHANGE
* The `languages.site` configuration setting now uses WPML as fallback to fetch the default language of the website.
* The `JModel::getInstance()` method now keeps iterating the registered paths until the matching class is found.
---
### 10.1.53
*Release date - 28 March 2024*
##### CHANGE
* The `JDatabase::getTableColumns()` method does not escape the table name anymore to support SQLite too.
##### BUG FIXES
* Fixed an issue with the Input array filter, which was casting NULL values into arrays.
* Fixed a fatal error when using `JLayoutBase::debug()` on PHP 8 or higher.
* Fixed a PHP warning with `JDatabase::getTableColumns()`.
---
### 10.1.52
*Release date - 30 January 2024*
##### CHANGE
* The `JModuleHelper::getModule()` method is now able to extract the settings also from a Gutenberg block.
---
### 10.1.51
*Release date - 23 January 2024*
##### ADD
* Implemented `JWidget::registerBlockType()` to convert a widget into a native Gutenberg block.
* Implemented `JFormFieldGroupedlist` class.
* Added support to `JDocument::attachToHeadCustomCallback` property to override the handler used to register the assets.
* The system is now able to autoload the native form fields.
##### CHANGE
* The `JFormFieldMenuItem` form field now internally caches the shortcodes to prevent duplicate queries.
* The `JModel::getInstance()` method is now able to resolve conflicts among different files that share the same name.
---
### 10.1.50
*Release date - 21 December 2023*
##### ADD
* Implemented `JUri::setScheme()` method.
---
### 10.1.49
*Release date - 3 November 2023*
##### CHANGE
* Improved the routing system to always remove the **lang** attribute from the query string.
---
### 10.1.48
*Release date - 11 October 2023*
##### ADD
* Implemented `JToolbarHelper::link()` method.
* Implemented `JPagination::getLimitBox()` method.
* Implemented `JDocument::addHeadLink()` method.
##### CHANGE
* The `JPath::clean()` method now throws an `InvalidArgumentException` in case the provided path is invalid.
* The `JHtmlBehavior::component()` method now excludes the colorpicker from being removed.
* It is now possible to create overrides for WordPress-only views.
##### BUG FIXES
* The `JEditor::display()` method is now compatible with the interface used on Joomla (asset and author arguments).
* The **CodeMirror** editor is now able to properly use the `javascript` syntax.
---
### 10.1.47
*Release date - 4 September 2023*
##### CHANGE
* It is now possible to manipulate the `PHPMailer` properties through the setter magic method declared by `JMail`.
---
### 10.1.46
*Release date - 26 July 2023*
##### ADD
* Added support for direct charge in payment framework.
##### CHANGE
* `JLanguage::attachHandler()` now accepts either file paths and `JLanguageHandler` instances.
---
### 10.1.45
*Release date - 22 May 2023*
##### BUG FIXES
* Fixed notices and warnings with PHP 8.2.
---
### 10.1.44
*Release date - 4 April 2023*
##### CHANGE
* The `JPagination` class constructor now accepts a prefix to differentiate different navigations within the same page.
---
### 10.1.43
*Release date - 23 February 2023*
##### CHANGE
* The URL doesn't contain the locale key anymore in case the matching shortcode has been assigned to the same language.
* The `JSessionHandler::isStarted()` method now checks whether the session status is currently active.
---
### 10.1.42
*Release date - 30 January 2023*
##### BUG FIXES
* Fixed a few PHP warnings that could occur in PHP 8 or higher.
---
### 10.1.41
*Release date - 15 November 2022*
##### ADD
* Implemented `JLoader::registerNamespace()` method to support PSR loading.
* Introduced a new auto-loader to support namespaces.
##### CHANGE
* Moved framework auto-loader anonymous function into `JLoader::setup()` method.
* Enhanced table fields caching system.
##### BUG FIXES
* `JController::display()` now configures the layout with the apposite setter instead of passing it to `JView::display()`.
* Fixed an issue in `JView::loadTemplate()` that was not able to properly load a sub-template belonging to a specific file.
---
### 10.1.40
*Release date - 11 July 2022*
##### BUG FIXES
* The application header functions now properly treat the HTTP status code.
* The `JHtmlFormbehavior::chosen` method does not use select2 anymore.
---
### 10.1.39
*Release date - 26 May 2022*
##### ADD
* Implemented `JApplication::setClient()` method.
* Implemented `JUser::getAuthorisedViewLevels()` method.
* Introduced HTTP lookback detection to auto-terminate the PHP session.
---
### 10.1.38
*Release date - 24 February 2022*
##### CHANGE
* The **lang** attribute is always removed from the query string while routing a link.
* It is now possible to specify the dependencies while registering a new style/script.
##### BUG FIXES
* Fixed comparison issue between the user locale and the language assigned to a shortcode.
* Removed string filter from `JUri::current()`, since WP might sanitize encoded characters.
* Fixed errors while editing existing widgets in WordPress 5.9 or higher.
---
### 10.1.37
*Release date - 10 December 2021*
##### ADD
* Implemented `JDatabase::getPrefix()` method.
* Implemented `JDatabase::loadRow()` method.
* Implemented `JDatabase::getTableList()` method.
* Implemented `JDatabase::getTableCreate()` method.
##### CHANGE
* Calling an undefined method of `JDatabase` now throws an exception.
* Editor improvements.
---
### 10.1.36
*Release date - 08 November 2021*
##### ADD
* Added support for `getSelection` and `replaceSelection` callbacks to TinyMCE editor.
* Added support for `getSelection` and `replaceSelection` callbacks to CodeMirror editor.
* Added support for `getSelection` and `replaceSelection` callbacks to None editor.
* Implemented `JFormFieldList::getOptions()` method for a better inheritance.
* Implemented `JToolbar::removeButton()` method to detach any registered button at runtime.
##### CHANGE
* Changed the arguments received by the constructor of `JController`.
* The toolbar buttons now include the selected type within the `class` attribute.
---
### 10.1.35
*Release date - 19 October 2021*
##### ADD
* Implemented `JTable::load()` method.
* Implemented `JTable::getKeyName()` method.
* Implemented `JModel::addTablePath()` method.
* Implemented `JModel::getTable()` method.
* Implemented `JModel::getName()` method.
* Implemented `JDate::toISO8601()` method.
* Implemented `JUri::setHost()` method.
* Implemented `JRegistry::toArray()` method.
* The `JRegistry` class now implements the `ArrayAccess` interface.
* Implemented `JUser::getTimezone()` method.
* Implemented an autoloader to include resources at runtime.
* Added support for "log_path" and "tmp_path" settings in `JConfig`.
##### CHANGE
* Improved the MVC pattern for a better reusability.
* The `JText::plural()` method now uses a plural definition only if exists.
* The `JEditor::display()` and `JEditor::render()` methods now accept an additional argument with custom parameters.
* The "None" editor now supports "readonly" and "disabled" parameters.
* The "CodeMirror" editor now supports "readonly" and "syntax" parameters.
* The `JHtml::calendar()` method now adjusts the times to the local offset when a `JDate` instance is given as value.
* The `JHtml::date()` method now auto-translates the supplied format in case it is equals to an existing key.
* The `JRegistry` class declaration has been moved into a separate file from `JObject`.
* Re-added support for scripts on WP 5.8 widgets block editor.
* Forces a string cast into `JDatabase::quote()`, because `esc_sql()` was not able to escape objects with `__toString()` magic method.
* Displayed backtrace when the controller catches an exception (only with WP_DEBUG on).
* `JPaymentDispatcher::getSupportedDrivers()` now returns a list of names in place of full paths.
* Removed `JModel::getTableName()` method.
* Removed `JModel::getPrimaryKey()` method.
##### BUG FIXES
* Fixed return value of `JLanguage::hasKey()` method.
* The methods of `JFile` and `JFolder` now properly clean the paths.
---
### 10.1.34
*Release date - 21 July 2021*
##### BUG FIXES
* Fixed an issue that was displaying an empty menu item select under the widgets management.
---
### 10.1.33
*Release date - 11 June 2021*
##### ADD
* Added list limit fallback when used in the front-end.
* Implemented methods for headers handling.
* Implemented `JSession::getFormTokenAction()` method.
* Implemented `JComponentHelper::filterText()` method.
##### CHANGE
* The methods used to escape string attributes now use the built-in esc_attr() WP function.
* `JInputFilter` is now able to sanitize the strings by stripping the unsafe HTML tag/attributes.
* Refactored CSRF-proof token handling methods.
* Removed `JSession::getToken()` method.
* `Joomla` JS object is now initialized within the system.js file.
##### BUG FIXES
* Fixed application client detection on WP multi-site instances.
* Fixed session fatal error raised by `JHtmlForm::token()`.
* Fixed escaping issue in `JDocument::setMetaData()`.
* Fixed translation issues that could occur with Polylang.
---
### 10.1.32
*Release date - 27 January 2021*
##### ADD
* Added support for payment refunds.
* Added support for `introtext` and `fulltext` on `JTableContent`.
##### CHANGE
* Implemented direct hooks within `JPayment` class.
* Hooks triggered with the event dispatcher are now refactored for WP standards.
* Added fallback to default.php layout in case the selected override of a widget doesn't exist anymore.
---
### 10.1.31
*Release date - 02 December 2020*
##### ADD
* Implemented `JForm::getFormControl()` and `JForm::setFormControl()` methods.
* Implemented `JFormField::setForm()` method.
* Implemented `JFormField::getName()` and `JFormField::getId()` methods.
* The `before_display` hook now passes the instance of the view (by reference).
* The `after_display` hook now passes the instance of the view as argument.
* Implemented `JApplication::setClient()` method.
* Load jQuery setting is no more visible on widgets configuration.
* Added support for RSS framework.
* Added support for dashboard widgets management.
##### CHANGE
* It is now possible to use control groups to wrap the form inputs.
* The system is now able to use the user locale.
##### FIX
* HTTP requests now properly take the specified timeout.
* Form fields are now able to use the given client while rendering the layout.
* Added support for multi-site networks.
* Fixed issue with `JHtml::loadFile()`, which might not load the correct path in case of conflicts.
---
### 10.1.30
*Release date - 03 November 2020*
##### ADD
* Implemented `JPayment::getOrder()` and `JPayment::getParams()` methods.
* Implemented `JController` redirect methods.
* Implemented `JController::registerTask()` method.
* Implemented `JTable` management methods.
* `JTable` now extends `JObject` to support the errors management.
* Implemented `JDatabaseQuery::selectRowNumber()` method.
* Created `JHtmlContentLanguage` class.
* Implemented `JeventDispatcher::register()` method.
* Added `isset` magic method to `JUser` class.
* Implemented SMS framework.
* Created `JHelperUsergroups` class.
* Implemented `JModuleHelper::getModule()` method.
* Added support for `$module` object while displaying a widget.
* Implemented `VikRequest::setCookie()` method.
##### CHANGE
* `JHtmlFormbehavior::chosen` do not use anymore select2 for dropdowns rendering.
* `JConfig` is now able to recover the list_limit also in case of AJAX requests.
* `JInputCookie::set()` now supports an array of options.
* `JDate` doesn't force the timezone anymore. [REVERTED]
##### FIX
* `JHtml::script()` is now able to load different scripts with the same base name.
* `JHtml::stylesheet()` is now able to load different files with the same base name.
* Fixed wrong class on `JHtml::date()`.
* Fixed ID notation for toolbar buttons.
* Fixed `JHtmlFormBehavior::choosen()` script declaration in case of select with no options.
* `JHtmlBootstrap::tooltip()` now appends by default the tooltip at the end of the body.
* `JDate` now uses the correct localized names of months.
* The input now contains a clean task without the controller after the execution.
* Fixed JS plugins usage after saving a widget.
---
### 10.1.29
*Release date - 15 September 2020*
##### ADD
* Implemented further request methods on `JHttp` class.
* Implemented `JHtml::addIncludePath()` method.
* Added support for `JEvent` abstract class.
* `JEventDispatcher::attach()` method is now able to register the methods of a class as hooks.
##### FIX
* Form fieldsets do not report the title in case it shouldn't be displayed.
* Fixed missing default value when rendering a form.
* The system now automatically generates an ID in case `JFormField` doesn't specify it.
* Added support for text domains that might include hyphens.
* Fixed headers when sending an HTTP request through `JHttp`.
* Scripts declarations are now properly loaded on AJAX requests.
* Fixed URL encoding while creating the query string.
---
### 10.1.28
*Release date - 14 May 2020*
##### ADD
* Implemented `JDate::monthToString()` method.
* Implemented `JLanguage::getFirstDay()` method.
* Implemented `JLanguage::isRtl()` method.
* Added support for `vik_widget_before_dispatch_site` action.
* Added support for `vik_widget_after_dispatch_site` action.
* Added support for `vik_plugin_load_language` filter.
##### FIX
* TinyMCE editor is now able to set/get contents even if not active.
* Popovers always use "body" as container.
* Widgets overrides are now supported also for **Windows** platforms.
* `JDate::format()` is now able to translate days and months.
---
### 10.1.27
*Release date - 20 November 2019*
##### ADD
* Implemented `JForm::bind()` method.
* Added support for options and attributes in `JHtml::stylesheet()`.
##### FIX
* `JRoute` now supports also query string parameters of type `array`.
* Fixed an issue that prevented to display HTML tags within popovers.
* View overrides are now supported also for **Windows** platforms.
* `JObject::get()` now returns the default value also for NULL properties.
* `JInputFilter::clean()` now properly unslashes escaped values from arrays.
---
### 10.1.26
*Release date - 25 October 2019*
##### CHANGE
* `JVersion::getShortVersion()` now tries to extract a short version from any nightlies
* Added support for **joomla.version** classmap within `jimport`
---
### 10.1.25
*Release date - 19 September 2019*
##### ADD
* Added support for `vik_before_include_script` filter
* Added support for `vik_before_include_style` filter
---
### 10.1.24
*Release date - 11 July 2019*
##### ADD
* Implemented `JInput::delete()` method
* Added support for `allowUserRegistration` users setting
* Created `JModelLegacy` alias
* Implemented `JModel::addIncludePath()` method to search models on several directories
* Added support for native `UsersModelRegistration` class/model
* Added support for `groups` property in `JUser` class
##### CHANGE
* Changed the overrides path for the layout files of the plugins
* `JLanguage` is now able to auto-detect the standard languages folder
* All the superglobals are now passed by reference while instantiating `JInput`
---
### 10.1.23
*Release date - 21 June 2019*
##### ADD
* Created `JFilterInput` alias
* Added support for internal list limit (screen options)
* Created `JHttp` class and response adapter
* Implemented `JFile::exists()` method
##### FIX
* Fixed `JDatabaseQuery::clear()` method, which was emptying all in case of unsupported statements
* Fixed `JDocument::setTitle()` method to use the correct WP hook
* Fixed `JEventDispatcher` class to support return values and referenced arguments (apply_filters_ref_array)
---
### 10.1.22
*Release date - 10 June 2019*
##### ADD
* Added support for jQuery in `<head>` every time a widget is instantiated
##### CHANGE
* `JHtmlBehavior::component()` now excludes styles and links from being removed
##### FIX
* Fixed the way the scripts are loaded after adding a new widget
* `JHtml::calendar()` is now able to fetch timestamps with `string` type
---
### 10.1.21
*Release date - 07 June 2019*
##### ADD
* Added support for `vik_date_default_timezone` filter
* `JController` displays a minified error in case of AJAX requests (exceptions component handling)
* `JSession::start()` adds a filter to close the session every time wp_remote_post() is called (Site Health issue)
* Added support for **spacer** form field
##### CHANGE
* `JPagination` is now able to use a default layout in case it was not forced
* `JHtml::script()` now supports jQuery UI Slider addon
* Menu Item field now recovers the shortcode prefix from `modowner` property
* Widget language handlers can be placed also within "languages" folder
* Widgets now support module class suffix parameter
* Widgets now support a default **title** field
* Widgets now support Joomla JS instance
* Widgets now strip HTML tags from the description
* The `JWidget::useScript()` method now loads select2 JS plugin
##### FIX
* Fixed **languages** configuration settings, which were returning an empty string for default locale
---
### 10.1.20
*Release date - 29 May 2019*
##### ADD
* Added `JCryptCipherCrypto` and `JCryptKey` classes
* Added some `JDocument` methods to access HTML properties (dir, charset and lang)
* Implemented `JView::escape()` method
* Editors now support a custom id
##### CHANGE
* Completed `JPathwaySite` implementation
* Changed control "id" attribute into "idfield" (@see `JForm`)
* `JHtml::script()` is now able to include tooltip add-on
##### FIX
* Fixed usage of layouts, which are now compatible with widgets
* Fixed `JForm` to start supporting custom options
---
### 10.1.19
*Release date - 27 May 2019*
##### ADD
* Added `JHtmlDate` helper class for relative dates
* Implemented `JDate::__toString()` magic method
* Implemented `JText::plural()` method for string pluralizations
* Added support for behavior.modal helper
* Bootstrap modals can be closed using ESC button (only if specified)
* Implemented `JMenu` class and its child for site client
* Implemented `JApplication::getMenu()` method
* `JView` now owns the document property
* Added `JTable` class and default children classes
* Implemented `JDatabase::getTableColumns()` method
* Added `JPathway` class and its child for site client
* Implemented `JApplication::getPathway()` method
* Added `JRouter` class and some native classes
* Implemented `JApplication::getRouter()` method
##### CHANGE
* `JHtml::script()` now includes dialog add-on when jQuery UI is called
##### FIX
* Fixed the way `JHtml::script()` generates ID, if not provided
* Fixed `JRoute` to start supporting external routers
* Fixed `JHtmlBehavior::component()` method to exclude `script` tags
---
### 10.1.18
*Release date - 23 May 2019*
##### ADD
* Implemented `JFormFieldMedia`
* Added `JRegistry` proxy
* Added `JPath::find()` method
##### CHANGE
* Changed usage of layouts
##### FIX
* Fixed default style generated by `JHtmlBehavior::renderModal()`
* Fixed `JView` to consider custom layouts properly
---
### 10.1.17
*Release date - 21 May 2019*
##### ADD
* Implemented `JHtmlNumber` class
* Added `JLayoutFile::escape()` method
* System editors are now accessible via javascript
##### CHANGE
* `JHtml::script()` now supports options and attributes
* `JDocument::addScriptDeclaration()` doesn't check anymore if the script has been already used
##### FIX
* Fixed `JHtml::script()` dependencies detection
* Fixed TinyMCE bug while accessing it via AJAX more than once
---
### 10.1.16
*Release date - 16 May 2019*
##### ADD
* Implemented `JVersion` class
* Implemented `JHtmlFormbehavior` class
* Implemented `JHtmlSelect` class
* Implemented `JHtmlBootstrap` class
* Implemented `JHtmlUser` class
* Implemented `JHtmlAccess` class
* Implemented `ArrayHelper` class
* Added `JComponentHelper::getComponent()` method
* Added `JDate::dayToString()` method
* Added support for 2 new events
* `JDatabase` now converts `#__users` columns to WordPress standards
##### FIX
* Fixed `JAccess::checkGroup()` method that didn't adjust caps in case of no asset key
* Fixed `JHtml::calendar()` method to start supporting timestamp and `JDate` arguments
* Fixed `JForm::load()` method to support [addincludepath] attributes based on Joomla paths
* Fixed `JMail::addRecipient()` notice
* Fixed usage of `JInputFiles` and `VikRequest` classes
---
### 10.1.15
*Release date - 07 May 2019*
##### ADD
* Added `JApplication::getUserState()` method
* Added `JApplication::setUserState()` method
* Added `JView::getName()` method
##### FIX
* Fixed how `JDatabase` handles the query limits
---
### 10.1.14
*Release date - 30 April 2019*
* Added support for javascript `JText` class
---
### 10.1.13
*Release date - 18 April 2019*
* Added filters to show/hide/suppress database errors
---
### 10.1.12
*Release date - 08 March 2019*
* Fixed `JText::sprintf()` that was always considering strings for JS purposes
---
### 10.1.11
*Release date - 19 February 2019*
* Added support for `JEventDispatcher` class
---
### 10.1.10
*Release date - 14 February 2019*
* Fixed `JFactory::getMailer()` method
---
### 10.1.9
*Release date - 31 January 2019*
* Implemented language form field
---
### 10.1.8
*Release date - 28 January 2019*
##### ADD
* Added support for empty Itemid
##### FIX
* Fixed router in case of no shortcodes found
---
### 10.1.7
*Release date - 14 January 2019*
* Added getters to `JUri` class
---
### 10.1.6
*Release date - 29 November 2018*
##### ADD
* Added `JMail::useSmtp()` method
* Added setter magic method in `JMail` class
---
### 10.1.5
*Release date - 21 November 2018*
##### ADD
* Added `JApplication::logout()` method
* Added `JDatabase::getNullDate()` method
---
### 10.1.4
*Release date - 09 November 2018*
##### ADD
* Created `JConfig` class, used to wrap the system configuration.
* Implemented `JFactory::getConfig()` method to return a `JConfig` object.
* Added support for sitename setting.
---
### 10.1.3
*Release date - 03 October 2018*
##### ADD
* Implemented `JDate::getDefaultTimezone()` method to keep and get the framework's current timezone.
---
### 10.1.2
*Release date - 15 May 2018*
##### ADD
* Implemented `JView::_getTemplateBasePath()` method to allow the customers
to create their own view overrides to avoid let them being replaced
by the Wordpress updates.
The overrides must be built as `[WP_UPLOAD_DIR]/[PLUGIN_NAME]/[admin|site]/[VIEW_NAME]/[LAYOUT_FILE].php`
##### CHANGE
* Changed `JFormFieldModuleLayout::getInput()` method to scan also the overrides directory.
In this way, the users can select a specific override as layout of the widget.
The overrides must be built as `[WP_UPLOAD_DIR]/[PLUGIN_NAME]/modules/[MODULE_NAME]/[LAYOUT_FILE].php`.
---
### 10.1.1
*Release date - 04 May 2018*
##### ADD
* The method `JPayment::isCaller()` has been
implemented to make sure the caller is the same.
* Added a new filter to change the database prefix before it is used.
##### CHANGE
* `do_action()` functions that required multiple arguments
have been replaced with `do_action_ref_array()`.
##### FIX
* Fixed `JUser::authorise()` method to extend the validation of the capabilities.
---
### 10.1.0
*Release date - 27 April 2018*
##### ADD
* Extendable payment gateways framework.
* A lot of hooks can be used to extend/enhance the payments.
---
### 10.0.1
*Release date - 20 April 2018*
##### CHANGE
* It is no more needed to load the language file (.mo) of the widget
as all the translations are contained within the main language file.
---
### 10.0.0
*Release date - 08 April 2018*
* Initial framework release