This file contains old changelogs and it's refreshed periodically.

==================================================== VERSION 8 ====================================================

= 8.0.15 =

* [Fixed] Comment merge tags rendering empty values.
* [Changed] Development dependencies got some security patches.
* [Changed] `notification/merge_tag/value/resolve` now accepts unsanitized value.

= 8.0.14 =

* [Fixed] Outdated dochoooks compatibility file, causing a fatal error while adding new post in some environments.

= 8.0.13 =

* [Fixed] Regression with REST API check.
* [Changed] `repeater_api` internal runtime component to `api`.
* [Added] `get_endpoint` method to the API class.

= 8.0.12 =

* [Changed] Logic of assigning property name is moved to Abstract Merge Tag Class.
* [Added] Property names to Term Merge Tags.
* [Added] 6h cache expire to the user queries.
* [Added] Email / Merge tag recipient now can also be separated with semicolon.
* [Added] Endpoint to check whether the REST api is enabled.

= 8.0.11 =

* [Changed] Add php_xml to required php extensions.
* [Changed] Background processing cache is being stored in transient instead of an option.
* [Fixed] PHP 8.0 and 8.1 compatibility.
* [Fixed] Improper caching expiration times.
* [Fixed] Trigger keeping state between subsequent action runs.
* [Fixed] Password reset trigger is not processed on user registration anymore.
* [Added] Trigger `resume()` method to reset the stopped state.

= 8.0.10 =

* [Fixed] User logout trigger. In WordPress 5.5 the context is set properly.
* [Fixed] Issue with persistent Trigger state if two or more actions assigned to the same trigger were called.
* [Changed] Carrier's recipients field is now returned with resolved data if available.
* [Added] Post Published privately trigger.

= 8.0.9 =

* [Fixed] Merge Tags resolver problem caused by overriding the processed trigger instance.
* [Changed] `notification/should_send` filter is now executed when the queue is processed, not before the notification is added to the queue.
* [Added] New queue methods: `remove()` and `clear()`.

= 8.0.8 =

* [Fixed] Two or more same triggers processed in the same request overwriting each other data.

= 8.0.7 =

* [Fixed] Shortcode stripping regex that was matching JSON arrays.
* [Changed] Extensions are now reporting updates even if they are not activated.
* [Changed] Updated EDD Updater class.
* [Added] Webhook warning logging when response is not valid.

= 8.0.6 =

* [Fixed] Extension activation notice link.
* [Fixed] Extension activation process.
* [Fixed] Incorrect empty merge tag cleaning which was misreading JSON format.

= 8.0.5 =

* [Changed] Updated PHP dependencies.

= 8.0.4 =

* [Changed] Updated PHP dependencies.
* [Changed] Extension license notice is now printed once and covers all the plugins.
* [Changed] Some of the core fields like Import/Export now have own setting classes.
* [Fixed] Remaining template variable escaping.
* [Removed] HTML Settings field, introduced in v8.0.3. Now it's required to create purpose-specific field classes.

= 8.0.3 =

* [Added] HTML Settings field.
* [Added] Notification hash column in the Notification table.
* [Changed] Some of the Settings to HTML field instead of the Message field.
* [Fixed] Broken Import/Export sections.
* [Fixed] Notifications cache is now cleared when creating notification via wizard.

= 8.0.2 =

* [Added] HTML escaping and nonce verifications.
* [Changed] Notification file syncing is now using Filesystem methods.
* [Changed] Internal cache classes with `micropackage/cache`.
* [Changed] Menu icon.
* [Changed] Vue is now loaded from within the plugin instead of CDN.
* [Removed] Internal cache classes `Bracketspace\Notification\Utils\Cache` and `Bracketspace\Notification\Utils\Interfaces` namespaces.
* [Removed] Settings internal caching that couldn't wait for all the fields to be registered. Now we're relying on the get_option() core function caching.

= 8.0.1 =

* [Changed] Field and Merge Tag description field is now escaped and cannot contain any HTML tags.
* [Fixed] Recipients parser which didn't resolved Email Merge Tags.

= 8.0.0 =

**Compatibility Breaking Changes**

1. Runtime `get_filesystems()` method has been changed to `get_filesystem()` and now only root file system is defined.
2. Trigger `action()` method has been renamed to `context()`.
3. Trigger doesn't have the postponing feature anymore, as processing is happening on the `shutdown` action.
4. Trigger is now only a description object, all the processing is handled by the Runner class.
5. `notification/carrier/sent` action doesn't have the Notification context anymore, so there's no 3rd parameter.
6. Store classes now live under `BracketSpace\Notification\Store` namespace rather than `BracketSpace\Notification\Defaults\Store`.
7. Plugin doesn't cache anything anymore, the loading process is more streamlined and things like Post Types are lazy loaded when needed
8. Registration functions has been replaced with `Register` class and its static methods.
9. Multiple functions has been replaced with their static method equivalents.
10. `notification/elements` action has been deprecated, use `notification/init` instead.
11. `NOTIFICATION_VERSION` constant has been removed, use `Notification::version()` instead.
12. `BracketSpace\Notification\Vendor` namespace is replaced with `BracketSpace\Notification\Dependencies`.

Removed deprecated hooks:
- `notification/notification/pre-send`, use `notification/carrier/pre-send`
- `notificaiton/notification/field/resolving`, use `notification/carrier/field/resolving`
- `notification/value/strip_empty_mergetags`, use `notification/resolve/strip_empty_mergetags`
- `notification/value/strip_shortcodes`, use `notification/carrier/field/value/strip_shortcodes`
- `notificaiton/notification/field/resolved`, use `notification/carrier/field/value/resolved`
- `notificaiton/merge_tag/value/resolved`, use `notification/merge_tag/value/resolved`
- `notification/webhook/remote_args/{$method}`, use `notification/carrier/webhook/remote_args/{$method}`
- `notification/webhook/called/{$method}`, use `notification/carrier/webhook/called/{$method}`
- `notification/boot/initial`, use `notification/init`
- `notification/boot`, use `notification/init`

**Full changelog**

* [Fixed] Code issues from not using static analysis.
* [Fixed] WordPress' balanceTags filter which was breaking the Notification content.
* [Fixed] Notification importing.
* [Fixed] Setting fields escaping.
* [Fixed] Post Updated Trigger which failed for updating pending posts, that doesn't have the slug yet.
* [Changed] Always return the single root filesystem in Runtime.
* [Changed] Stores with plugin objects, now they are much simpler and don't use WP filters.
* [Changed] Plugin loading stack, [see docs](https://docs.bracketspace.com/notification/developer/general/plugin-loading-chain) for more details.
* [Changed] Plugin settings now are initialized on `notification/init 5` action.
* [Changed] Recipients now can be loaded anytime, not only before Carriers get registered.
* [Changed] PHP Dependency handling, now all the PHP dependencies lives in src/Dependencies dir.
* [Removed] `Common` Abstract that has been replaced by HasName and HasSlug Traits.
* [Removed] Cache class and all caching mechanism for post types, taxonomies and comment types.
* [Removed] Trait Users. This is replaced with `BracketSpace\Notification\Queries\UserQueries` class.
* [Removed] Deprecated hooks for actions and filters.
* [Removed] Carrier helper functions: `notification_register_carrier`, `notification_get_carriers`, `notification_get_carrier`.
* [Removed] Recipient helper functions: `notification_register_recipient`, `notification_get_recipients`, `notification_get_carrier_recipients`, `notification_get_recipient`, `notification_parse_recipient`.
* [Removed] Resolver helper functions: `notification_register_resolver`, `notification_resolve`, `notification_clear_tags`.
* [Removed] Trigger helper functions: `notification_register_trigger`, `notification_get_triggers`, `notification_get_trigger`, `notification_get_triggers_grouped`.
* [Removed] GLobal Merge Tags helper functions: `notification_add_global_merge_tag`, `notification_get_global_merge_tags`.
* [Removed] Misc functions: `notification_display_wizard`, `notification_ajax_handler`, `notification_filesystem`.
* [Removed] Template functions: `notification_template`, `notification_get_template`.
* [Removed] Notification post functions: `notification_get_posts`, `notification_get_post_by_hash`, `notification_post_is_new`.
* [Removed] Syncing functions: `notification_sync`, `notification_get_sync_path`, `notification_is_syncing`.
* [Removed] Whitelabeling functions: `notification_whitelabel`, `notification_is_whitelabeled`.
* [Removed] Editor and Code Editor fields sanitizers to allow for HTML usage, ie. email templates.
* [Removed] `notification/elements` action hoook.
* [Removed] NOTIFICATION_VERSION constant.
* [Added] Runner class that processes the Triggers.
* [Added] ErrorHandler class that helps handle errors. It can throw an exception when NOTIFICATION_DEBUG is enabled or save a warning to error_log when it's disabled.
* [Added] Plugin settings value lazy loading.
* [Added] Email error catcher.
* [Added] Free and Premium extensions upselling.
* [Added] `Notification::fs()` helper that returns plugin filesystem.
* [Added] Core\Templates wrapper for Templates provider.

==================================================== VERSION 7 ====================================================

= 7.2.4 =
* [Fixed] Fix Post published trigger which was triggered even if the post was just updated.

= 7.2.3 =
* [Fixed] Merge Tag cleaning regex which could lead in some cases to wiping entire Carrier field.
* [Fixed] Parent Comment ID Merge Tag returning reply ID not the parent.
* [Changed] A check for activation nag if the user can manage options. Otherwise the useless notice is printed when a paid extension is not activated with license key, thanks to @mircobabini.
* [Changed] Post published action to generic "publish_{post_type}" action which allows to trigger the notification when publishing from custom statuses.
* [Changed] Import process which now allows to import singular notification instead of always requiring a collection.
* [Added] [Filter for Background Processing](https://docs.bracketspace.com/notification/developer/snippets/general/background-processing-filter) which can be used to enable or disable particular trigger queueing.

= 7.2.2 =
* [Fixed] Wrong implementation of permission_callback while defining REST endpoints, thanks to @jphorn.
* [Fixed] REST endpoints authentication.
* [Fixed] PHP 8 compatibility, thanks to @g-kanoufi.

= 7.2.1 =
* [Fixed] Composer dev dependency causing platform requirements to go up all the way to PHP 7.3, thanks to @saowp.

= 7.2.0 =
* [Fixed] DB Upgrade running on every admin request, thanks to @pewu-dev.
* [Fixed] Missing permission_callback argument in REST endpoints.
* [Fixed] UserPasswordResetLink Merge Tag property names, thanks to @mircobabini.
* [Fixed] Uninstall process.
* [Fixed] TinyMCE plugin error.
* [Fixed] Notice when Suppressing is active and Debug log is inactive.
* [Fixed] Cache refreshing while running under WP CLI, thanks to @mircobabini.
* [Added] User avatar url to comment trigger and comment replied trigger.
* [Added] Privacy Triggers for User erase/export data request and user erased/exported data.
* [Added] User email change request Trigger.
* [Added] Admin email change request Trigger.

= 7.1.1 =
* [Fixed] License keys not being passed to the Updater class.
* [Fixed] Cache refreshing on front-end.
* [Fixed] `{comment_datetime}` merge tag being not rendered, thanks to @jphorn.
* [Fixed] Repeater field values being incorrectly parsed.
* [Changed] Non-public Post Types are cached too in case someone want's to unlock them.
* [Changed] Plugin settings are registered on front-end as well to ensure enough data is provided for the cache.
* [Added] Option in the Settings to log the Notification and still send it. Previously it was always suppressed.
* [Added] User role merge tag to all the Post triggers, thanks to Steven N.

= 7.1.0 =
* [Fixed] Carrier Recipients using the explicit slug, now it's configurable.
* [Added] Field class property multiple_section.
* [Added] Post approved Trigger.
* [Added] Revision link for updated post.
* [Added] Enable/Disable bulk actions for Notifications.
* [Changed] Fields usage validation in Section Repeater Vue component now checks Field properties to determine if field can be used in the same row.
* [Changed] Repeater/Recipients Carrier field based on Vue now displays an error when REST API endpoint is not reachable.

= 7.0.4 =
* [Fixed] Cache refresh process causing no Triggers and Carriers to display.
* [Added] Webhook error logging, thanks to @callum-veloxcommerce.
* [Added] Fallback for PRO extensions having a version number in the directory name. They are now properly recognized.
* [Changed] The Filesystem method is now set to `direct` when using this plugin.

= 7.0.3 =
* [Fixed] Wizard notifications trigger slugs.
* [Fixed] Logging dates, now the notification and error log displays the dates properly and respects the timezone.
* [Fixed] Logger now displays the extras key properly.
* [Fixed] Notification bulk delete confirmation message.
* [Fixed] Uninstallation process not fireing.

= 7.0.2 =
* [Fixed] Extensions screen error with premium extension.

= 7.0.1 =
* [Fixed] Param accessor causing PHP notices.
* [Fixed] TinyMCE error when using unfiltered HTML email body.
* [Changed] Updated Composer and NPM dependencies.
* [Changed] When using unfiltered HTML email body, the field is now an HTML editor.

= 7.0.0 =

**Breaking changes**

1. All trigger's slugs has been changed to unify them. Compare the [old slugs](https://docs.bracketspace.com/notification/v/6/developer/triggers/default-triggers) and [new slugs](https://docs.bracketspace.com/notification/v/7/developer/triggers/default-triggers).
2. Settings section `notifications` has been changed to `carriers`. Pay attention while registering the Carrier settings and update all `notification_get_setting( 'notifications/{$group}/{$option}' )` to `notification_get_setting( 'carriers/{$group}/{$option}' )`
3. Changed the plugin file structure and many internal classes which might be used by other plugins.
4. The plugin initializes now on `init 5` action and no functions/classes are available until then. You may use `notifiation/init` action to init the extensions and `notification/elements` to register custom Triggers and Carriers.
5. The Date and Time Merge Tags now require the Unix timestamp which shouldn't have the timezone offset. Use GMT timezone.
6. The `notification_runtime` function has been deprecated in favor of new `\Notification` static class.
7. Repeater and recipients fields on the front-end has been rewritten to use vue.js. Hooks for actions in js scripts for this fields provide now access to vue.js instance. Each repeater and recipient field, are now separate vue.js instances.

**Full changelog**

* [Changed] Added PUT, PATCH, DELETE http request methods to Webhook. Combined all http requests methods into one class method.
* [Changed] Webhook class methods http_request and parse_args move to trait.
* [Changed] Requirements utility to `micropackage/requirements`.
* [Changed] DocHooks utility to `micropackage/dochooks`.
* [Changed] Files utility to `micropackage/filesystem`. Now the plugin has few filesystems which can be accessed easily from outside the plugin.
* [Changed] View utility to `micropackage/templates`.
* [Changed] Ajax utility to `micropackage/ajax`.
* [Changed] Loading stack, now the plugin initializes on init 5 (or 4 if bundled).
* [Changed] Merge Tags don't need the requirements now and throwable resolver errors are caught and changed to notices.
* [Changed] Date and Time Merge Tags now expect Unix timestamps (GMT) without offset.
* [Changed] All Trigger's slugs.
* [Changed] Settings section `notifications` to proper `carriers` to follow the standard established in version 6.
* [Changed] Repeater and recipient fields are now using vue.js on the front-end.
* [Changed] Pretty select fields in the repeater and recipient fields are now handled by vue.js lifecycle hooks.
* [Changed] `NOTIFICATION_VERSION` constant to `\Notification::version()` method.
* [Changed] User ID Email recipient now support the comma-separated value, thanks to Robert P.
* [Changed] The Recipients section in Carrier box now displays Type column even if a single recipient type is registered.
* [Added] Webhook and Cache trait.
* [Added] Webhook JSON Carrier with plain JSON input code field.
* [Added] Composer imposter package to avoid package conflicts.
* [Added] `notification_filesystem` function to get plugin filesystem(s).
* [Added] Scheduling user Merge Tags for Post Scheduled trigger.
* [Added] Last updated by user Merge Tags for Post triggers.
* [Added] Image field for settings page.
* [Added] Notification runtime cache with `notification_cache()` function wrapper.
* [Added] Two Factor plugin integration.
* [Added] Possibility to nest one level repeater field in another repeater field. Nested repeater field must have `nested_repeater` name.
* [Added] Rest API class to handle internal requests.
* [Added] `notification/settings/saved` action.
* [Fixed] Merge Tag used as anchor href now is not prefixed with protocol while adding the link.
* [Fixed] Selectize script breaking description field in select input.
* [Fixed] Bulk removing Notifications.
* [Removed] `NOTIFICATION_DIR` and `NOTIFICATION_URL` constants.
* [Removed] Ajax action `ajax_get_recipient_input`









==================================================== VERSION 6 ====================================================

= 6.3.2 =
* [Fixed] Wrong caching usage of the trigger args.

= 6.3.1 =
* [Fixed] Trigger action being postponed when using quick edit action.
* [Fixed] Too few argument passed to the trigger action, due to the argument caching.
* [Fixed] Disable password reset email filters preventing the password reset from wp-admin.
* [Changed] Webhook body value now can have the line breaks and tabs.
* [Removed] Obsolete option to disable password reset request email to admin.
* [Added] `notification/sent` action which is executed when all carriers are sent.
* [Added] `allow_linebreaks` option for Input Field.

= 6.3.0 =
* [Fixed] Notification losing hash sync between JSON config and post name.
* [Fixed] Namespace error in Abstracts/Trigger class.
* [Fixed] Namespace error in EDDUpdater class when no cache is available.
* [Changed] Added Trigger, Carrier, Recipient Store.
* [Changed] ACF integration acf/save_post action priority from 10 to 1000.
* [Changed] Updated EDD updater class for premium extensions.
* [Added] User Avatar merge tags.
* [Added] Trigger cache engine for cache processing.
* [Added] Email recipient type accepts 'filter-id:' to specify recipients via custom WP filter.
* [Added] User ID recipient with free-type input.
* [Added] Featured image ID merge tag.

= 6.2.0 =
* [Fixed] Checkbox in plugin settings now can specify true-ish default value.
* [Fixed] Trigger select box margins.
* [Fixed] Role recipient for Email picking wrong roles with LIKE statement.
* [Changed] Input field sanitizer for Carriers, allowing for some HTML tags.
* [Added] Background processing feature, which load the actions into WP Cron.
* [Added] Comment published trigger.
* [Added] Post publication date and time merge tag.

= 6.1.6 =
* [Fixed] Notification duplication feature, thanks to Erik West.

= 6.1.5 =
* [Fixed] Error when a new user was added by logged in user, the password reset notification was sent.

= 6.1.4 =
* [Fixed] Adding the same Notification twice from the Wizard. Now Notification hash is regenerated.
* [Changed] Post triggers now setup properties after checking all the conditions. This way second action call with wrong params won't change the trigger state. Thanks to Tom Angell.

= 6.1.3 =
* [Fixed] Password reset link fatal error when default WordPress notification was disabled.

= 6.1.2 =
* [Fixed] Carrier adding section being booted too early and being broken with other extensions.

= 6.1.1 =
* [Fixed] The Gutenberg integration causing an error for triggers other than related to post types.

= 6.1.0 =
* [Fixed] File mtime method now checks if file exists.
* [Fixed] Cache is now cleared after saving the notification.
* [Fixed] Uninstallation process.
* [Fixed] License deactivation.
* [Fixed] Issue with overlooping notifications when more than one action was called in the same request.
* [Added] Ability to define email headers.
* [Added] Webhook args and headers can be now not included if value is empty.
* [Added] `notification/debug/suppress` filter to disable suppression of notifications when debug log is activated.
* [Added] Confirmation before deleting the notification.
* [Added] Default WordPress emails disabler.
* [Added] `notification/integration/gutenberg` filter to disable Gutenberg support for specific post types. Useful when the post is in REST but no Gutenberg is used.
* [Added] Wizard.
* [Changed] Internationalization for JS files.
* [Changed] Notification repeater field is now by default sortable.
* [Changed] Carrier textarea field now can be unfiltered, so no HTML will be stripped.
* [Changed] Webpack for assets processing instead of Gulp.
* [Changed] OP Cache is no longer a requirement, instead hooks compatibility file is loaded when OP Cache config is incompatible.
* [Changed] Better Carriers management, now Carrier can be added and enabled independently.
* [Removed] Freemius.
* [Removed] The story screen.
* [Removed] Plugin internationalization files as all the translations comes from wp.org.

= 6.0.4 =
* [Fixed] Webhook warning using empty header values.
* [Fixed] Quick switch in Notifications table.
* [Fixed] Catching Notifications.
* [Added] Basic Gutenberg compatibility, post triggers are now postponed to `rest_after_insert_{$post_type}` action.

= 6.0.3 =
* [Fixed] On/off switch in notifications table.
* [Fixed] Duplicate feature.
* [Fixed] Licensing.
* [Changed] Notification trash link wording.

= 6.0.2 =
* [Fixed] Error in admin notice while manipulating extension license.
* [Fixed] Scripts and styles conditional loading.

= 6.0.1 =
* [Changed] Added soft-fail for not valid JSON configuration for Notifications. This is most likely caused by updating from a very old version.

= 6.0.0 =
* [Fixed] Theme Update trigger errors on update.
* [Added] Notification object as a wrapper for Notification Post.
* [Added] `notification_create_view` function for seamless view creation.
* [Added] `notification/post/column/main` action for notification edit screen addons.
* [Added] `notification_get_posts` function.
* [Added] Import and Export feature using JSON files.
* [Added] Composer support with unified testing.
* [Added] Merge Tags groups.
* [Added] Notification Adapters - WordPress and JSON.
* [Added] `notification_ajax_handler` function.
* [Added] Ability to define Notifications programmatically.
* [Added] JSON synchronization feature.
* [Added] `add_quick_merge_tag` Trigger method.
* [Added] Collapse option for plugin settings groups.
* [Added] Common error log for all extensions, you can use `notification_log` function.
* [Added] Post thumbnail URL and featured imager URL Merge Tags.
* [Added] Comment content HTML merge tag.
* [Added] Resolver API which allows to register more Merge Tag resolvers.
* [Added] `notification/should_send` filter to hold off the whole Notification.
* [Removed] Trigger usage tracking.
* [Changed] PostData class has been removed in favor of Notification object and procedural functions.
* [Changed] Admin Classes: MergeTags, Notifications, PostData, Recipients, Triggers has been removed and their content included in the Admin/PostType class.
* [Changed] Notification data is now using single nonce field and additional data should be saved with `notification/data/save` action.
* [Changed] Namespaces of Cron, Internationalization, License and Whitelabel classes.
* [Changed] Native class autoloader to Composer autoloader.
* [Changed] User recipients optimization with direct database calls.
* [Changed] Notification (in "type" context) has been renamed to Carrier.
* [Changed] The View object is not injected anymore to any Class, all use the `notification_create_view` function.
* [Changed] ScreenHelp class has been renamed to Screen and render methods from PostType class has been moved to this new class.
* [Changed] Notifications are now loaded on every page load and the Trigger action is not executing at all if no Notification is using it.
* [Changed] Notifications doesn't have the trash anymore, the items are removed right away.
* [Changed] On notification edit screen the editor styles are no longer applied.
* [Changed] Carriers now have two step status - they can be either added to a Notification and be disabled at the same time.
* [Changed] strip_shortcodes function to custom preg_replace for better stripping.
* [Changed] Trigger storage now contains whole Notifications instead of just Carriers.


= Compatibility breaking changes =

*Hooks* - Some of the hooks names has been renamed for better consistency across the plugin. List of all changes:

* notification/notification/pre-send -> notification/carrier/pre-send
* notification/notification/sent -> notification/carrier/sent
* notificaiton/notification/field/resolving -> notification/carrier/field/resolving
* notification/value/strip_empty_mergetags -> notification/resolve/strip_empty_mergetags
* notification/value/strip_shortcodes -> notification/carrier/field/value/strip_shortcodes
* notificaiton/notification/field/resolved -> notification/carrier/field/value/resolved
* notificaiton/merge_tag/value/resolved -> notification/merge_tag/value/resolved
* notitication/admin/notifications/pre -> notification/admin/carriers/pre
* notitication/admin/notifications -> notification/admin/carriers
* notification/webhook/called/get -> notification/carrier/webhook/called/get
* notification/webhook/called/post -> notification/carrier/webhook/called/post
* notification/notification/box/pre -> notification/carrier/box/pre
* notification/notification/box/post -> notification/carrier/box/post
* notification/notification/box/field/pre -> notification/carrier/box/field/pre
* notification/notification/box/field/post -> notification/carrier/box/field/post
* notification/notification/form_fields/values -> notification/carrier/fields/values
* notification/email/use_html_mime -> notification/carrier/email/use_html_mime
* notification/email/recipients -> notification/carrier/email/recipients
* notification/email/subject -> notification/carrier/email/subject
* notification/email/message/pre -> notification/carrier/email/message/pre
* notification/email/message/use_autop -> notification/carrier/email/message/use_autop
* notification/email/message -> notification/carrier/email/message
* notification/email/headers -> notification/carrier/email/headers
* notification/email/attachments -> notification/carrier/email/attachments
* notification/webhook/args -> notification/carrier/webhook/args
* notification/webhook/args/$type -> notification/carrier/webhook/args/$type
* notification/webhook/remote_args/get -> notification/carrier/webhook/remote_args/get
* notification/webhook/remote_args/post -> notification/carrier/webhook/remote_args/post

*Classes* - Some of the classes or namespaces has been renamed or removed. List of all changes:

* BracketSpace\Notification\Admin\MergeTags - removed
* BracketSpace\Notification\Admin\Notifications - removed
* BracketSpace\Notification\Admin\PostData - removed
* BracketSpace\Notification\Admin\Recipients - removed
* BracketSpace\Notification\Admin\Triggers - removed
* BracketSpace\Notification\Admin\PostData - removed
* BracketSpace\Notification\Tracking - removed
* BracketSpace\Notification\Admin\BoxRenderer - removed
* BracketSpace\Notification\Admin\FormRenderer - removed
* BracketSpace\Notification\Admin\ScreenHelp - removed
* BracketSpace\Notification\Admin\FieldsResolver - removed
* BracketSpace\Notification\Abstracts\Notification -> BracketSpace\Notification\Abstracts\Carrier
* BracketSpace\Notification\Defaults\Notification -> BracketSpace\Notification\Defaults\Carrier
* BracketSpace\Notification\Admin\Cron -> BracketSpace\Notification\Core\Cron
* BracketSpace\Notification\Internationalization -> BracketSpace\Notification\Core\Internationalization
* BracketSpace\Notification\License -> BracketSpace\Notification\Core\License
* BracketSpace\Notification\Whitelabel -> BracketSpace\Notification\Core\Whitelabel

*Functions* - Some of the functions has been renamed for better consistency across the plugin. List of all changes:

* notification_is_new_notification -> notification_post_is_new
* register_notification -> notification_register_carrier
* notification_get_notifications -> notification_get_carriers
* notification_get_single_notification -> notification_get_carrier
* register_trigger -> notification_register_trigger
* notification_get_single_recipient -> notification_get_recipient
* notification_get_notification_recipients -> notification_get_carrier_recipients
* notification_get_single_trigger -> notification_get_trigger
* register_recipient -> notification_register_recipient










==================================================== VERSION 5 ====================================================

= 5.3.2 =
* [Fixed] Double post notification called for post revisions.
* [Fixed] Wrong `wordpress` setting slug caused the option to not be saved.
* [Added] `NOTIFICATION_VERSION` constant.
* [Added] `remove_merge_tag` trigger method.

= 5.3.1 =
* [Added] Initial unit tests.
* [Fixed] Comment replied trigger not called from wp-admin.

= 5.3.0 =
* [Changed] Added parent class for user triggers.
* [Changed] Added parent class for media triggers.
* [Changed] PHP requirement to 5.6.
* [Changed] Freemius updated to version 2.1.3.
* [Changed] Uninstallation logic moved to the Freemius handler.
* [Changed] Merge Tag validation now accepts empty values.
* [Changed] Post Trigger postponing to avoid looping.
* [Changed] Custom Fields postponing causing the loops, now it's in a separate integration class.
* [Changed] Minimum WordPress version to 4.9.
* [Changed] Plugin autoload function.
* [Added] Global date, time and datetime merge tags for trigger execution date.
* [Added] `notification/scripts/allowed_hooks` filter to control where the scripts are loaded.
* [Added] Color Picker field.
* [Added] Image field.
* [Added] User role changed trigger.
* [Added] Post scheduled trigger.
* [Added] `notification/scripts` action.
* [Added] Comment datetime merge tag.
* [Added] Debug log.
* [Added] Plugin triggers.
* [Added] Theme triggers.
* [Added] `notification/data/save` action.
* [Added] Usage tracking. No data is tracked unless allowed.
* [Fixed] Comment type check causing the comment triggers failing.
* [Fixed] Postponing looping over itself.
* [Fixed] Fatal error with Triggers select on certain conditions.
* [Fixed] Date and Time merge tags giving values of 0.
* [Fixed] User password reset request being called upon registration.
* [Fixed] Timezone being ignored in some merge tags.

= 5.2.4 =
* [Fixed] When `Strip all shortcodes` setting is disabled, the shortcodes are rendered.
* [Fixed] Coding Standards.
* [Fixed] Gutenberg JS Hooks conflict.
* [Fixed] Bug when recipient types has been changed.
* [Fixed] Every comment type being targeted in Comment trigger.
* [Fixed] Used failed login datetime merge tag.
* [Added] `remove_action` method in Trigger class.
* [Added] Option to allow unfiltered HTML in Email body, thanks to @martinellimarco.
* [Added] Post content HTML tag, for unfiltered output.
* [Added] Better JSON support for webhooks, if webhook is sent as JSON the default Content-Type header is added.
* [Added] Support for merge tags and shortcodes in Webhook recipient field.
* [Added] Disabled OP Cache requirement.

= 5.2.3 =
* [Fixed] Duplicated meta for active notification type.
* [Fixed] Post Title merge tag HTML entities, thanks to @freshjustin.
* [Fixed] Problem with disabling active notification types when switching notification status, thanks to @freshjustin.
* [Added] Notification duplicator to easily duplicate notifications.
* [Added] `notification/trigger/action/did` action in Trigger class.
* [Added] `get_post_type` method for PostTrigger.
* [Added] `notification/load/default/priority` filter for registering default things.
* [Added] `user_IP` Merge Tag for User logged in Trigger.
* [Changed] Plugin initializes the default things on `plugins_loaded` action.

= 5.2.2 =
* [Fixed] Post Updated Trigger postponing.
* [Added] `notificaiton/merge_tag/value/resolved` filter.
* [Added] `post_sticky` status Merge Tag only for Post.
* [Added] Email From Name and From Email settings.
* [Added] The story screen.
* [Changed] Merge Tag resolver is now set via `set_resolver` method.
* [Changed] PHP version requirement to 5.3.9.

= 5.2.1 =
* [Fixed] Not existing post type.
* [Fixed] Merge tag values are cleaned when Trigger is executed second time in the same run.
* [Added] Post saved as a draft trigger.
* [Added] `notification_add_doc_hooks` function for creating doc hooks handlers.
* [Added] Classes to Settings sections.
* [Added] Taxonomy term created trigger
* [Added] Taxonomy term updated trigger
* [Added] Taxonomy term deleted trigger
* [Added] User login failed trigger.
* [Added] User password reset request trigger.
* [Added] User password change trigger.

= 5.2.0 =
* [Fixed] User ID assignment in User deleted trigger, thanks to @Matthewnie.
* [Fixed] ACF postponed action bail.
* [Fixed] Field value filter name.
* [Fixed] Notices.
* [Fixed] Empty email body not being sent.
* [Fixed] Notification form attributes escaping.
* [Changed] Trigger `action` methods has been unified with callback method parameters.
* [Changed] The Merge Tags are now resolved only while they are used.
* [Changed] Post Pending trigger to not send multiple emails when pending post is updated, thanks to @jdaniel.
* [Added] Dynamic property setting for Attachment merge tags.
* [Added] Better post updated messages while saving the Notification.
* [Added] Option to change Email MIME Type, now you can send HTML or Plain text.
* [Added] Filter for post statuses which controls when the "Updated" notification should be send.
* [Added] Notification Form fields value filter.
* [Added] Notification Form row class.
* [Added] Doc Hooks class for better actions and filters definitions.

= 5.1.7 =
* [Fixed] Post Terms merge tags not rendering the values, thanks to @stocker.
* [Changed] register_new_user action for User registered trigger to user_register.
* [Added] new_to_publish action for Post published trigger, thanks to @JBCSU.
* [Added] Post Added trigger.
* [Added] Comment replied trigger.

= 5.1.6 =
* [Fixed] Notice from PostTerms merge tags and from empty result.
* [Fixed] Cloning Notification object which used the same fields instances, thanks to @JohanHjalmarsson.

= 5.1.5 =
* [Fixed] Comment author display name bug, thanks to Aga Bury.
* [Fixed] Post Published and Post Pending trigger fired twice.
* [Fixed] Assets modification time as a cache buster.
* [Fixed] Missing translations.
* [Fixed] Notice thrown while saving email administrator recipient.
* [Added] Comment Post Type merge tag for Comment triggers.
* [Added] Comment moderation links for Comment triggers.
* [Added] HtmlTag merge tag type.
* [Added] WordPress updates available trigger.
* [Added] Post Type merge tag.
* [Added] More merge tags for comment triggers.

= 5.1.4 =
* [Fixed] Object class name error on PHP 7.2 when using paid extension.
* [Added] User password setup link for User registered trigger.
* [Added] Ability to encode Webhook args as a JSON
* [Added] Post status merge tag for Post triggers.
* [Changed] Recipient Free type email field now supports comma separated emails.
* [Changed] ACF integration postponed action for Post triggers has been changed to `save_post` which makes it more universal.

= 5.1.3 =
* [Fixed] Pretty select in repeater is now rendered correctly while adding new row.
* [Fixed] User Registration Trigger action.
* [Fixed] ACF Postponing when there's no data from ACF to save.
* [Fixed] Post object property name for Custom Post Types.
* [Added] Global Merge Tags which can be used in any Trigger. This includes Site title, Trigger name etc.
* [Added] Screen help.
* [Added] User Display Name Merge Tag.
* [Added] Post Terms Merge Tags.

= 5.1.2 =
* [Added] Ability to suppress the Notification just before it's send.
* [Added] Freemius integration to better understand the users.
* [Added] Current Notification post ID property for Notification object.

= 5.1.1 =
* [Fixed] Postponed action callback.
* [Added] Support for NOTIFICATION_DEBUG constant. If it's defined the cache for extensions is not applied.
* [Added] notificaiton/notification/field/resolving filter before any value is resolved with merge tags.

= 5.1.0 =
* [Fixed] The Email notification it not enabled anymore for already saved notifications
* [Fixed] New Notification post is not automatically saved as an Auto Draft anymore
* [Fixed] Enabled switch state in Save metabox
* [Changed] Documentation link in Own Extension promo link
* [Changed] Extensions in Extension directory are now loaded from remote API
* [Added] TextareaField field
* [Added] License handler for premium extensions

= 5.0.0 =
* WARNING! This version is not compatible with previous version. No core notifications nor custom triggers will be transferred to the new version because of too many changes in the plugin. Consider updating the plugin in a safe, not-production environment.
* Plugin has been redesigned from ground up
* The only thing which is not available in new version is disabling the notifications












==================================================== VERSION 3 ====================================================

= 3.1.1 =
* [Fixed] Bug with directories/files names, thanks to Gregory Rick

= 3.1 =
* [Added] `notification/notify` filter which control if notification should be sent or not
* [Added] `notification/settings` action which accepts Settings API class as a parameter
* [Added] `post_author_email` merge tag for all comment types triggers, thanks to Wayne Davies
* [Added] Ongoing check of PHP and WP version, thanks to Max (@max-kk)
* [Added] Option to strip shortcodes from Notification subject and content, thanks to @Laracy
* [Added] Notification : Signature extension to extension directory
* [Changed] Settings and Singleton are now loaded from Composer libraries
* [Changed] Gulp default task to build, and added watch task which boots up BS
* [Changed] Action priority when default recipients and triggers are registered from 50 to 9
* [Changed] Action priority when settings are initialized from 15 to 8
* [Changed] Updated Composer libraries
* [Changed] Values for default trigger options from strings/arrays to null
* [Fixed] Bug when Text editor was active and the trigger was changed
* [Fixed] Post Visibility setting on other post types than Notification
* [Fixed] Default recipient merge_tag value. All recipient inputs are now dynamically refreshed
* [Fixed] Not cached exception in plugin's table when requiring this plugin from inside of another plugin or theme, thanks to Max (@max-kk)

= 3.0 =
* [Fixed] Ignore tags which has been passed to `notification` but hasn't be registered in the trigger
* [Fixed] Conflict with Advanced Custom Fields
* [Added] Filters for post and comment types to output disable metabox. `notification/disable/post_types_allowed` and `notification/disable/comment_types_allowed`, default to saved general settings
* [Added] Extensions screen
* [Added] While registering triggers you can now provide a default title and recipients
* [Changed] bbPress post types are no longer available in the settings. Triggers for bbPress are provided by addon https://github.com/Kubitomakita/notification-bbpress
* [Changed] Place where merge tags metabox actions are executed
* [Changed] Chosen to Selectize.js

= 2.4 =
* [Fixed] Bug with "Can't use method return value in write context" in Settings class, thanks to @rozv
* [Fixed] Settings priorities, now every CPT registered not later than init 15 will be caught by the plugin, thanks to @rozv
* [Fixed] Double protocol in links added via TinyMCE insert link feature, thanks to Jozsef
* [Fixed] Notices in Notification validation method
* [Fixed] Empty Recipient value, ie. Administrator
* [Added] Post type triggers can be disabled for an user
* [Added] Database Upgrader
* [Added] User triggers - registered, profile updated, logged in, deleted
* [Added] Taxonomies merge tags for post types
* [Added] Media triggers - added, updated, deleted
* [Changed] Post updated notification is now triggered only if the post has been published before, suggested by nepali65
* [Changed] Content Type triggers setting has been changed to Enabled triggers

= 2.3.1 =
* [Fixed] Bug with not activated "Disable" option

= 2.3 =
* [Changed] Removed unused default post controls
* [Changed] Better error handling, plugin will not die now unless WP_DEBUG is active
* [Changed] Role class parse_value() method now must define 3rd parameter $human_readable
* [Added] Role recipient
* [Added] Option to disable notification for specific post (and in future for user or comment), thanks to Jeff Lehman
* [Changed] string, integer and float merge tags used in the message subject are now rendered

= 2.2 =
* [Added] `notification/metabox/trigger/tags/before` and `notification/metabox/trigger/tags/after` actions to merge tags metabox
* [Added] `notification/metabox/recipients/before` and `notification/metabox/recipients/after` actions to recipients metabox
* [Added] `notification/metabox/trigger/before` and `notification/metabox/trigger/after` actions to trigger metabox
* [Fixed] Settings register action priority
* [Fixed] Post type trashed template
* [Changed] Gulpfile to not include any browser
* [Fixed] Comment type added template
* [Changed] Comment added trigger now is Akismet compatible, thanks to Nels Johnson
* [Changed] Core triggers current type global to anonymous functions, thanks to Bartosz Romanowski @toszcze

= 2.1 =
* [Fixed] Warning when no post or comment type are selected in the settings. Thanks to JoeHana
* [Fixed] post published trigger
* [Changed] Post type name in trigger title is now singular
* [Added] {author_login} merge tag to each post trigger
* [Added] Promo video: https://www.youtube.com/watch?v=usdBMPjdiuw

= 2.0.1 =
* [Fixed] Issue with not sent emails because of wrong current post type while registering notification action. Thanks to Karl Camenzuli

= 2.0 =
* [Fixed]: Correct choice selected for WP User recipient after saving notification. Thanks to whitwye
* [Added]: Settings API
* [Added]: Setting - what to remove upon plugin removal
* [Added]: Plugin cleanup procedure
* [Added]: Plugin deactivation feedback popup
* [Added]: Conditional tag `is_notification_defined()` to check if notification will be send
* [Added]: Post permalink to comment triggers
* [Changed]: Notifications class is now singleton and partially moved to Admin class
* [Changed]: Notification trigger metabox is now under the subject
* [Changed]: On the single Notification edit screen there are only allowed metaboxes displayed
* [Changed]: You can now control what post types and comment types trigger use via plugin Settings

= 1.4 =
* [Fixed]: Missing 3rd argument on page publish
* [Fixed]: Namespace issue for PHP < 5.3
* [Fixed]: Constant notification on post edit. Thanks to @pehbeh
* [Changed]: Allow for merge tags empty values. Thanks to kokoq
* [Added]: Admin notice: beg for a review. It will display only if there's at least one notification set, on the Notification plugin screens and can be dismissed easily.

= 1.3.1 =
* [Fixed]: Error with "Can't use function return value in write context" in empty() function. Thanks to Błażej Zabłotny

= 1.3 =
* [Added]: PHP version check
* [Changed]: Typos in readme.txt file thanks to justyn-clark (https://github.com/Kubitomakita/Notification/pull/1)

= 1.2 =
* [Added]: New User recipient (takes WordPress users)
* [Added]: Post/Page updated trigger
* [Added]: Template for triggers. You can now load default template for user
* [Changed]: Default post published trigger for posts and pages - it was triggered every time post was updated
* [Changed]: In Notifications table values are now parsed before displaying
* [Changed]: Readme file

= 1.1.2 =
* Changed priority for main init action from 10 to 5
* Added 'notification/cpt/capability_type' filter for capability mapping

= 1.1 =
* Added ability to distribute in any plugin or theme

= 1.0 =
* Release
