=== Nota Cleanup – Database & Site Optimizer ===
Contributors: wpnota
Tags: database, cleanup, optimize, revisions, transients
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Timeout-free database cleanup built for shared hosting — clean revisions, transients, orphaned data and spam in safe, resumable batches.

== Description ==

Nota Cleanup scans your database first — read-only, nothing is touched — and
shows you exactly what can be cleaned, category by category, each labeled by
risk level. You choose what to remove; conservative defaults keep risky
categories unchecked, so a single click can never surprise you.

The cleanup engine is built for shared hosting: work runs in small
time-budgeted batches chained in the background, so it never hits your
server's execution time limit, no matter how large your tables are. A stuck
job can always be resumed with one click, and every run is logged.

= What it cleans =

* Expired transients (including site transients)
* Orphaned post meta, comment meta, term relationships and user meta
* Spam and trashed comments, trackbacks and pingbacks
* oEmbed caches
* Post revisions — with a "keep the most recent N" option
* Auto-drafts older than 7 days
* Old Action Scheduler entries (WooCommerce and other background tasks)
* Trashed posts and pages (high risk — never selected by default)

= Autoloaded options report (unique) =

The report most cleaners don't give you: the 10 largest autoloaded options
and the total autoload size — the data loaded into memory on EVERY page
view, the sneakiest performance killer on shared hosting. Report-only by
design: deleting an option can break the plugin that owns it, so we tell you
what to ask your developer instead of handing you a footgun.

= Table health =

A dedicated Tables tab shows the size, storage engine, and overhead of every
table in your database, sorted so the most reclaimable table is always at
the top. Optimize any single table with one click — no bulk "optimize
everything" button, because a large table can briefly lock during an
optimize and that should always be a deliberate, one-table-at-a-time choice.

= Weekly automatic cleanup =

Optionally run the low-risk categories automatically every week. Off by
default — you turn it on only if you want it.

= Honest engineering notes =

* Deletions use direct SQL for speed; other plugins' per-row delete hooks
  are not fired. Linked data (meta, comments, term relationships) is removed
  in the same run, so nothing is left dangling.
* Term relationships are only cleaned for taxonomies registered to post
  types — unknown plugin taxonomies are left alone.
* If your site uses an external object cache (Redis/Memcached), transients
  live there, not in the database; the plugin detects this and tells you,
  instead of silently doing nothing.
* On some MySQL/MariaDB setups, InnoDB reports table overhead as a shared
  figure rather than a true per-table number. When we detect this, the
  Tables tab shows "N/A" instead of a misleading number — Optimize still
  works normally.

= Safety, honestly =

The scan is always read-only. Before any cleanup runs, you see exact row
counts and confirm; high-risk categories are never pre-selected. If you'd
like a safety net first, the confirmation screen offers one-click access to
our free Nota Backup & Restore plugin — no pressure, just a shortcut if you
want it.

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/nota-cleanup`, or install
   it directly through the Plugins screen in your WordPress admin.
2. Activate the plugin through the 'Plugins' screen.
3. Go to **Tools → Nota Cleanup** (or click "Cleanup" under the plugin's own
   row on the Plugins screen) to run your first scan.

== Frequently Asked Questions ==

= Is it safe to use? =

Yes. Scanning never modifies anything. Cleaning shows you exact counts and
requires confirmation; high-risk categories (like trashed posts) are never
pre-selected. Every run is logged with a timestamp, category, and row count
so you can see exactly what happened. We still recommend a backup before any
cleanup — the confirmation dialog offers one-click access to our free Nota
Backup & Restore plugin if you'd like one.

= Will it time out on my cheap shared hosting? =

No — that's the entire point of the plugin. Work happens in small batches
inside a time budget derived from your server's own execution time limit,
chained together in the background. If a batch is somehow interrupted, a
"Resume" option picks up right where it left off.

= Does it delete my trashed posts and pages? =

Only if you explicitly select that category — it is off by default and
clearly marked as high risk, since it's the one category that can't be
undone by rescanning.

= Does it work with an external object cache (Redis, Memcached)? =

Yes, but transients are automatically excluded from the scan on those
setups, since transients live in the object cache rather than the database
there — deleting database rows wouldn't do anything. The plugin detects this
and tells you.

= Does it support multisite? =

The plugin activates and runs per-site, cleaning that site's own tables. It
does not currently offer a network-wide dashboard for cleaning every site at
once.

= Will this conflict with other cleanup or optimization plugins? =

Nota Cleanup only ever touches its own settings, log, and scheduled events on
uninstall — it doesn't modify how other plugins store or cache data. Running
it alongside another cleanup plugin is safe, though you may see overlapping
categories (like transients or revisions) reported by both.

== Screenshots ==

1. Read-only scan with risk-tiered categories — conservative defaults, one
   click to clean the ones you choose.
2. The autoload options report: the largest options loaded into memory on
   every page view.
3. Table health: size, engine, and overhead per table, with one-click
   Optimize.
4. Cleanup history log: every run, what it touched, and when.
5. Settings: weekly automatic low-risk cleanup and revision retention.

== Changelog ==

= 1.0.0 =
* Initial release: risk-tiered scanner, timeout-free chained cleanup engine,
  autoload options report, per-table size/engine/overhead report with
  one-click Optimize, weekly automatic cleanup, and a full cleanup history
  log.
