Tahhan Conflict Detective

Changelog

2.6.1

  • Updated: Tested up to WordPress 7.0.

2.6.0

  • New: Performance Monitor tab — tracks per-plugin load time, memory delta, and DB query count during page load; color-coded Fast / Slow / Heavy badges; Refresh Data button.
  • New: Cron Monitor tab — lists all scheduled WP-Cron events with next run time and overdue detection; “Run Now” button per event; overdue count summary badge at top.
  • New: AJAX / REST Monitor tab — logs slow AJAX and REST API calls (>500 ms) to a dedicated DB table; filter bar for All / AJAX / REST / Slow views.
  • New: Plugin Interaction Map tab — visualises plugin dependency clusters (WooCommerce, Elementor, Yoast, Jetpack, ACF, etc.) and standalone plugins with active/inactive state.
  • Security: cron “Run Now” AJAX handler now validates the hook against the live WP-Cron schedule before execution.
  • Security: AJAX monitor REST timing now reads from $_SERVER directly (was using non-standard $GLOBALS[‘_SERVER’]).
  • Security: AJAX log get_entries() now selects only required columns instead of SELECT *.
  • DB: new {prefix}cd_ajax_log table (schema version 3).

2.5.1

  • Fixed: uninstall routine now correctly deletes tahcd_prev_version_* options (was using the stale pcd_prev_version_ prefix, leaving orphaned rows in wp_options).
  • Fixed: Safe Mode plugin list no longer shows Conflict Detective itself (self-exclusion filter used the old slug conflict-detective/conflict-detective.php).
  • Docs: readme.txt changelog updated with entries for v2.2.0 through v2.5.0.

2.5.0

  • All plugin-specific prefixes standardised to tahcd_ / TAHCD_ to satisfy WordPress.org uniqueness requirements (constants, AJAX actions, nonce, user meta, cookie, option keys, script handle, JS data object).

2.4.0

  • Plugin renamed to Tahhan Conflict Detective (slug: tahhan-conflict-detective) for WordPress.org compliance. Namespace changed to TahhanConflictDetective. Text domain changed to tahhan-conflict-detective.
  • Debug log clear handler now uses WP_Filesystem::put_contents() instead of file_put_contents().

2.3.1

  • Fixed critical infinite recursion crash: maybe_filter_active_plugins() called get_option(‘active_plugins’) which re-triggered the same filter, causing a stack overflow. Fixed by reading directly from $wpdb.

2.3.0

  • CI action SHA pinning for security hardening. Code cleanup in class-dashboard.php and class-error-log.php.

2.2.0

  • Safe Mode tab fully functional: Start/Stop button now triggers AJAX and reloads on success.
  • Architecture fix: Safe_Mode::init() and Database::maybe_upgrade() moved to file-load time.

2.1.4

  • Fixed critical bug: Safe_Mode::init() and Database::maybe_upgrade() were registered inside Plugin::init() on plugins_loaded priority 5, meaning they were never called (priority 1 and 0 already fired). Both are now wired up directly at file load time, outside the Plugin class.
  • Safe Mode tab fully redesigned: inactive state shows a card with instructions and a Start button; active state shows an amber banner with plugin count and a Stop button above the plugin toggle list.
  • JavaScript Safe Mode toggle now uses delegated event binding ($(document).on) so it works regardless of DOM load order, and reloads the page on success to reflect the new state.
  • Added safeModeLoading and safeModeStop localised strings for button feedback during AJAX calls.
  • Added CSS for .pcd-safe-mode-banner, .pcd-btn-stop, .pcd-safe-mode-steps, and .pcd-safe-mode-count.

2.1.3

  • Added Safe Mode tab UI (render_safe_mode placeholder).

2.1.1

  • Security: plugin slug from AJAX request now validated against the installed plugins list before being stored in user meta
  • All JavaScript UI strings are now translatable via wp_localize_script — no hardcoded English in JS
  • Replaced last remaining emoji with a Dashicon in the Conflict Wizard
  • Fixed menu position conflict with WordPress core Plugins menu (changed from 65 to 65.1)
  • Added languages/ directory to match the Domain Path declaration in the plugin header
  • Fixed navigation instructions in documentation (plugin is a top-level menu, not under Tools)
  • LICENSE updated to full GPL-2.0-or-later text including the “or any later version” clause

2.0.0

  • Added Conflict Scanner with confidence percentage
  • Added Safe Testing Mode (admin-only plugin toggle, visitors unaffected)
  • Added Conflict Wizard with 7 symptom categories and automatic analysis
  • New database table for storing scanner results

1.0.0

  • Initial release — Dashboard, Error Log Viewer, Plugin Change History, Health Scan

Plugin Website
Visit website

Version:
2.6.1
Last Updated
June 16, 2026
Requires
WordPress 5.8
Tested Up To
WordPress 7.0
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.