=== JJ's Post Scheduler ===
Contributors: hellojjwp
Tags: scheduling, workflow, automation, rollback, audit
Requires at least: 6.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

Schedule verified WordPress post and page changes with private copies, audit, readback, and rollback.

== Description ==

JJ's Post Scheduler schedules verified changes to existing WordPress posts and pages.
It provides private editable copies, field-level conflict checks, queueing,
execution, normalized readback, snapshots, audit, diagnostics, and rollback.

Native post and page support includes title, slug, content, excerpt, status,
publication date, author, featured image, menu order, registered taxonomies,
and explicitly allowlisted registered metadata. Pages also support parent and
page template. Custom post types and plugin-owned fields are not supported
automatically.

Additional target-specific behavior can come from providers and separately
installed extensions as independent plugin artifacts. JJ's Post Scheduler does
not require WooCommerce, and core 1.0.0 ships native post and page scheduling only.

The package includes the source files needed to rebuild the shipped admin and
recording assets.

== Installation ==

1. Upload `jjs-post-scheduler-1.0.0.zip` through **Plugins > Add New > Upload Plugin**.
2. Activate JJ's Post Scheduler.
3. Open **JJ's Post Scheduler > Overview** to review scheduled changes.
4. Use the post or page editor to start a recording.
5. Edit the private copy, then save the recording and schedule it.

== Documentation ==

This package keeps user guidance in this readme and the plugin admin screens.
The JavaScript and CSS source needed to rebuild shipped assets is included.

== Source code and build instructions ==

Human-readable source for the JavaScript and CSS shipped in `assets/build/`
is included in this package under `assets/src/`.

Build metadata is included in `package.json`, `package-lock.json`, and
`webpack.config.js`.

From the plugin directory, run:

1. `npm ci`
2. `npm run build`

PHP production dependencies are installed with Composer. Third-party
dependencies and licenses are listed in `THIRD-PARTY-NOTICES.txt`.

== Privacy ==

JJ's Post Scheduler stores launch plans, provider references, snapshots, audit events,
and recording state in the WordPress database. It does not send site data to external services by default.

Support reports are redacted by default. Review reports and screenshots before
sharing them. Uninstall removes plugin data only when the existing
`scheduled_changes_delete_data_on_uninstall` setting explicitly permits destructive
cleanup.

== Security ==

JJ's Post Scheduler uses WordPress capabilities, nonces, REST permission callbacks,
provider validation, immutable plans, verified readback, and fail-closed
execution. Report security issues privately through https://jjwp.net/.

== Frequently Asked Questions ==

= Does JJ's Post Scheduler require WooCommerce? =

No. JJ's Post Scheduler core activates and runs without WooCommerce. Core 1.0.0
ships native post and page scheduling only; WooCommerce product scheduling is
outside the shipped core package.

= Which WordPress content can core schedule? =

Core schedules existing posts and pages through its certified native provider.
It does not promise automatic support for custom post types, arbitrary post
meta, or fields owned by another plugin.

= How does Record a Target Change work? =

Open an existing post or page and choose Record. JJ's Post Scheduler creates a
private editable copy. Edit that copy normally, then use Save recording to
review and schedule its field-level changes. The source stays unchanged until
execution.

= What happens when a required provider is unavailable? =

Execution is blocked. Plans, recordings, snapshots, and rollback evidence remain
stored so the provider can be restored or support evidence can be reviewed.

= How does JJ's Post Scheduler install its database tables? =

Version 1.0.0 creates the current baseline schema during activation. There is no
public pre-1.0.0 migration path.

= What happens on uninstall? =

Deactivation leaves schedules and data intact. Destructive uninstall occurs only
when the explicit retention setting allows it. Extension-owned data is not deleted
by core.

== Screenshots ==

1. Overview with recent scheduled post and page changes.
2. Scheduled Changes table with status and detail actions.
3. Calendar view listing changes by go-live date.

== Changelog ==

= 1.0.0 =

* Native WordPress post/page scheduling in core.
* Fresh 1.0.0 baseline schema for launches, recordings, queue actions, snapshots, REST routes, CLI commands, and capabilities.
