=== Creaholik Stackwise - Conflicts, Compatibility & Speed Audit ===
Contributors: creaholik
Tags: performance, compatibility, conflict, debug, plugins
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.6.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Find out which of your plugins are fighting each other, duplicating code, or quietly slowing your site down.

== Description ==

Nobody can see what their plugins are doing to each other. Two of them ship different copies of the same library. Three register the same background job. One was abandoned in 2021 and costs 340 milliseconds on every page load. Nothing warns you, because from WordPress's point of view nothing is wrong.

Stackwise reads every plugin on your site and checks it against every other one — and against your PHP version and the WordPress you are running.

**What it finds**

* Two plugins declaring the same function or class, and whether that will white-screen your site or merely make one of them stop working.
* The same library bundled several times over, and which copy actually runs.
* Script and style handles two plugins are fighting over — the usual reason a colour picker or a date field silently stops working.
* Plugins that quietly depend on other plugins, so you know what breaks *before* you deactivate something.
* Scheduled jobs left behind by plugins that were deleted years ago.
* Plugins nobody has updated in years, which is the commonest way a working site becomes an unsafe one.

**What each plugin actually costs**

Stackwise loads your own front page once per plugin, each time with that one plugin switched off, and times the difference. That is a measurement, not an estimate from file sizes — and it changes nothing for your visitors.

**It tells you what to do about it**

Findings are sorted into what is urgent, what is worth doing, and what is fine. Updates come first, because most conflicts are just old versions and updating clears them for free. Every finding that needs a person is written out in plain language, with the actual steps.

**What it will not do**

Stackwise never edits another plugin's files. It reads. Nothing here expires, degrades into a nag, or turns off after a trial — every finding on this page is yours permanently and in full.

**Writing the fix**

Some conflicts can be corrected from outside the plugin, without touching it. Doing that means generating a small PHP file and putting it on your site, which the WordPress.org directory does not allow a hosted plugin to do — so that half of Stackwise is a separate download from creaholik.com. This plugin will tell you which of your findings could be fixed that way. It is information you should have either way.

== External services ==

Stackwise talks to one external service, and only after you connect an account.

**Stackwise Control** — https://creaholik.com

This is our own service. It is what an account, a plan and a generated fix are
administered by. Creating an account is free and optional: everything Stackwise
finds, measures and explains works without one, permanently.

* **Creating an account or signing in.** Your email address and password are
  sent to creaholik.com over an encrypted connection. The password is never
  stored on your site. If you choose Google or GitHub instead, a browser tab
  opens at that provider and no password reaches this site or ours at all.
* **Connecting this site.** Your site address and the Stackwise version are sent,
  so the site can claim one of the seats on your plan. Your site is given a
  token of its own, which works nowhere else and can be revoked on its own.
* **Checking your plan.** Your site address and the plugin version, at most once
  an hour and when you open the Licence tab. The answer is which plan you are
  on and what is left of this month's allowance.
* **Pressing "Write the fix" or "Write my report".** The finding, the names of
  the plugins involved, and a bounded window of the source code around the lines
  in question. That source belongs to publicly distributed plugins. Your
  database, your uploads, your wp-config.php, your posts and your visitors'
  data are never sent.
* **Paying.** Checkout, changing plan and cancelling all happen on Stripe's own
  pages. No card details are entered on your site or ours.

**Helping Stackwise get better (optional, off by default)**

If you switch it on in the Licence tab, Stackwise reports what it found and what
it did, so the same conflict is recognised on the next site rather than worked
out again. Nothing is sent until you do. This
is: which plugins are installed and at what version, the conflicts found between
them, and what Stackwise did about them — fixes written, features switched off,
updates taken or held back.

It never includes your posts, your users, your settings, your uploads or your
own theme or plugin code. It can be switched off again at any time, and a site
that has not connected an account sends nothing at all — not a ping, not a
version, not a count.

Terms: https://creaholik.com/terms — Privacy: https://creaholik.com/privacy-policy

Stackwise also asks WordPress.org for plugin update information through
WordPress's own update APIs, and loads your own site over HTTP to time it. That
loopback request goes to your site and nowhere else.

== Changelog ==

= 1.6.0 =
* New: "What your fixes have done" shows where the site stood when you
  wrote your first fix and where it stands now.
* Scheduled jobs waiting to be cleaned up are now named, with how often
  they run, on the Overview as well as under Plugin tools.

= 1.5.0 =
* Duplicate declarations between plugins are no longer reported as
  critical emergencies. If your site is running, they are not colliding
  today — they are noted quietly, with what they would mean if they ever
  did, and nothing is coloured red that nobody can act on.
* Plugins from the same author that share code are recognised as a set
  and described that way, instead of being reported as fighting.
* "Needs a person" now also appears on the Overview, under Generated
  files.
* Scheduled jobs about to be cleaned up now show how often they run and
  when they were next due, so you can see what you are agreeing to.

= 1.4.0 =
* Serious findings that Stackwise cannot fix for you now have their own
  section, "Needs a person", with what each one is and what to do. They
  were previously listed under a heading that said nothing was wrong.
* Fewer false alarms: classes bundled inside a plugin's own vendor folder
  are no longer reported as fatal duplicates. A loader picks one copy, so
  they were never going to collide.

= 1.3.2 =
* Writing a fix now shows a moving progress bar while it works, and is
  replaced by the result — what was written and what is left of your
  allowance — instead of a bar that sat there after it had finished.
* Your allowance updates the moment a fix is written.
* The counts on the Overview now come down as you fix things, and say how
  many findings your fixes have already answered.

= 1.3.1 =
* Fixed the real cause of a fix switching itself off: with two visitors
  at once, one request mistook another request's work in progress for a
  crash. Busy sites were affected most.

= 1.3.0 =
* A generated fix is now only switched off after failing twice, so a
  busy moment on the server no longer turns off a working fix.

= 1.2.9 =
* Fixed: a generated fix could switch itself off straight after being
  switched on. Any request that ended early — an execution limit, a
  visitor navigating away, a busy server — was being read as the fix
  crashing the site. Only a real error does that now.
* The note explaining why a fix was switched off is no longer lost on
  the next page load.

= 1.2.8 =
* Fixed: a plugin with more than one conflict could only hold one
  generated fix. Writing a second silently replaced the first, so the
  file never appeared to arrive and the Fixes count never fell. Each
  fix now has its own folder and they no longer overwrite each other.

= 1.2.7 =
* Writing a fix no longer asks you to confirm first. What it costs is
  already printed under the button, and a failed attempt still costs
  nothing.

= 1.2.6 =
* Fixed: measuring plugin cost could leave plugins switched off. A
  measurement hides one plugin for the length of a single request, and
  that hidden list could be saved as the real one. It can no longer be
  written at all.
* The probe and loader files in mu-plugins are now replaced when a new
  version ships them, instead of keeping whichever copy installed first.
* Turning the learning offer on or off updates your allowance
  immediately rather than at the next check-in.

= 1.2.5 =
* Paid plans can now earn 20% more generated fixes and reports each month
  by letting Stackwise learn from the fixes it writes on their sites.
* A fix already worked out for the same conflict on another site is now
  reused instead of written again — instantly, and without spending any
  of your allowance on the waiting.
* When a fix cannot be tested because the server has no free PHP worker,
  Stackwise now says so and what to ask the host for, instead of
  reporting an unexplained network error.

= 1.2.4 =
* A finding that already has a generated fix no longer offers to write
  another, and can no longer be charged for twice.
* The Fixes count now falls when a fix is written, including one the
  loader has switched off.
* Weight and speed bars draw their value even when the page was opened in
  a background tab, instead of staying empty grey rails.
* Scheduled jobs are now told apart properly: residue you can clear,
  jobs belonging to plugins you still have, and jobs running right now.

= 1.2.3 =
* Generated fixes no longer reach for a constant the safety gate always
  refuses — the instructions and the gate now agree.
* A fix that is discarded by a safety check no longer counts against your
  monthly allowance. It never should have.

= 1.2.2 =
* Fixes and reports no longer ask for a key to be pasted. Connecting your
  account is all that was ever needed — the site is issued its own token
  and uses it automatically.

= 1.2.1 =
* The Upgrade buttons now open the plugin's own Licence tab, where the
  checkout that knows your site lives, instead of the public website.
* Returning from a payment is now confirmed with Stripe, so a plan takes
  effect even if a notification goes astray.

= 1.2.0 =
* Every stored name the plugin uses — settings, scheduled events, the
  overlay directory and its loader — now carries the plugin's own prefix.
  Existing installs are brought across automatically on the first load
  after updating; nothing is lost and nothing needs to be re-entered.

= 1.1.3 =
* Internal class and constant names now match the plugin's own name. Nothing
  a site stores changes, and no setting is lost.
* A plan change that leaves more sites connected than it covers no longer
  switches anything off on the day: you get fourteen days and a picker on the
  Licence tab. If you would rather not choose, the sites you have had longest
  are kept. A site the plan no longer covers keeps everything already written
  to it and carries on scanning.

= 1.1.2 =
* Every translated string carries the plugin's own text domain.

= 1.1.1 =
* The deactivation guard, the orphaned scheduled-job cleanup and guided updates
  are free, in every build.
* Reporting what Stackwise finds is off until you switch it on.

= 1.1.0 =
* The dashboard opens with what to do next, not with a list of findings.
* Nothing reloads the page any more; actions redraw the part they changed.
* Trim, Optimize, the removal check, generated files and cleanup are one tab.
* Accounts: sign in with an email address, Google or GitHub, from the Licence
  tab. Each site holds its own token — there is no licence key to carry around.
* Plans, allowances and feature gates are answered by the service, so an
  upgrade reaches every connected site by itself.
* Every control that spends part of your allowance now says so before you press
  it, including switching a plugin feature off — which always did, silently.
* Optional reporting of what Stackwise finds and does, off unless you connect.

= 0.1.0 =
* First release: symbol collision engine, removal ledger, measured plugin cost.
