Patriot Platform Members 1.08 — Duplicate event

INSTALL
Upload patriot-platform-1.08.zip through Plugins > Add New > Upload Plugin.
Replace the installed plugin. Full package includes all previous releases.
No reactivation or database upgrade required.

HOW TO USE
Open Patriot Platform > Event attendance. Expand Duplicate event beneath an
event's controls, or open its Attendance list and use Duplicate event there.
Enter the new title and a new future date/time, then click Create draft copy.
The date/time uses the source event's timezone, displayed above the form.
The new draft opens in the normal WordPress event editor for review.
Check the description, venue, region, time and capacity before publishing.
A copied description may still mention the original meeting's date or links;
review that text yourself before publishing the new event.

WHAT IS COPIED
Title as entered, description, excerpt, region, venue, timezone and capacity.
A new event ID, current administrator as author, and the chosen future start.
The copy is a draft; registrations are set open for when you publish it.
No publication, invitations, registrations or email sends occur from copying.

WHAT STAYS WITH THE ORIGINAL
Registrations, attendance marks, volunteers, email queues, cancellation state,
notification snapshots, comments and other arbitrary plugin metadata.
The source event and all its existing records are untouched.
Featured images and external plugin fields are not copied in this release.
The new event has its own calendar ID and empty registration list.

PERMISSIONS AND VALIDATION
Administrator-only authenticated POST with a source-event nonce.
Supports published, draft, pending and private source activities, not Trash.
Requires a valid region and timezone, a title up to 200 characters and a valid
future start. Invalid calendar dates and local times skipped by daylight-saving
transitions are refused. During an autumn clock rollback, repeated local times
use PHP's timezone resolution; verify the chosen instant in your calendar.
Audit failure prevents creation. Database insert and metadata problems are
reported. If an incomplete draft was created, the error identifies its ID;
correct that existing draft in Activities rather than making another copy.
This is one copy per submission, not an automatic recurring series. Submitting
again creates another draft; avoid submitting the same request twice.

LOCAL TEST
1. Duplicate a past or cancelled test event with a new future date.
2. Confirm the editor opens a draft with correct content, venue and timezone.
3. Verify that the original still has its registrations and the copy has none.
4. Publish the new event and register a test member independently.
5. Check that its calendar download uses the new date and a separate event ID.
6. Confirm nonadministrators cannot see or use the copy control.

VALIDATION
153 isolated behaviour/render checks passed, including the previous full suite.
New checks cover draft creation, separate identity, no registration copying,
metadata allowlist, permissions, audit/insert/metadata failures, date/time and
UTF-8 title validation. PHP 8.0 syntax parsing and ZIP integrity checked.
Live WordPress editor, database and browser integration still need local tests.
