=== Private Audiobook Beta ===
Contributors: MatthewxMurphy.com, Taylor Quinn
Requires at least: 6.5
Requires PHP: 8.1
Stable tag: 2026.10.11.006

Developer and copyright: Matthew X Murphy, https://MatthewxMurphy.com.
Product attribution: https://builtnotbegged.com. Release owner: Taylor Quinn.
License: GPL-2.0-or-later (full text in LICENSE).

Private audiobook testing inside WordPress, with a theme-compatible player,
scoped expiring invitations, timestamped audio feedback, and a protected
Audiobook Beta administration screen. Use [taylor_audio_beta] on a WordPress
page or in an Elementor/WPBakery shortcode element.

Each independent report is preserved. The administration screen highlights
repeated reports and separate tester invitations by recording version and
five-second playback window, and keeps every individual submission.

The native REST namespace remains tq-audio-beta/v1. New installations use a
site-local WordPress database and protected encrypted MP3 storage; no Ryzen,
external configuration file, SDK or commercial plugin is required. Add a book,
upload chapters and create expiring invitations in Audiobook Beta. MP3 inspection
uses WordPress's existing getID3 library; it verifies format and duration, not a
complete frame decode or the narrator's correctness. PHP OpenSSL AES-256-GCM is
required for protected WordPress storage. Hosting/PHP upload and storage limits
apply; this provider consumes hosting disk space.

Existing explicit private configurations keep their catalog, hashed service
credentials and optional signed Ryzen gateway. Installation does not migrate
listener state or audio between providers. The same plugin/UI can be configured
independently per website. Beta grants create no WordPress accounts or admin rights.

New native installs can create one-time scoped agent keys in the protected admin
screen. Only assigned listen, feedback, review, manage_grants, manage_catalog or
notifications rights apply. Store keys privately and send Authorization: Bearer
headers, never query URLs. Existing operator-managed keys remain read only here.

Deactivation preserves private feedback, grants and recordings.

The player can be installed as a phone Home Screen app. iPhone users open the
player in Safari, choose Share > Add to Home Screen and keep Open as Web App
enabled where available. An installed app retains the same invitation rules;
if it asks for access, use the registered email and original private invitation.
The app streams chapters online and caches only a public offline explanation
and install icons.
Private library/API responses and MP3s are not saved for offline playback.
See PWA.md for installation, app-context access, verification and rollback.

Administrators can upload and replace protected WordPress chapters through the
admin screen or multipart POST /catalog/sources plus the guarded catalog API.
The optional Ryzen provider keeps its verified path/hash replacement workflow.
Eligible unreferenced old managed audio is retired after publication. Earlier
reports retain their original version, hash and timestamp metadata.

Invited testers register their email against a valid private invitation.
No email or one-time code is sent. A matching protected browser credential
allows same-email return to a 24-hour session while the original granted
access remains eligible; a new device uses its eligible private invitation. An optional explicitly pinned FluentCRM beta tag can organize testers without
subscribing them to marketing. Native installs default to CRM disabled; listening
works without FluentCRM. Return access rechecks the
original book rights and expiry and restores privately saved chapter/time
and playback speed. CRM membership alone never grants access.

The public branding option is site, taylor or matthew. Generic installs inherit
the active WordPress site's public name, font, site icon and readable accent;
Taylor uses TQ/purple and Matthew uses its own site icon/red. A site with no valid
local site icon uses neutral headphones. Branding grants no rights and selects
no private configuration. Historical TQ icon bytes remain unchanged on Taylor.

The player footer includes an optional Powered by BuiltNotBegged.com text link, enabled by
default. Administrators can turn it off under Audiobook Beta > Site appearance.
Off hides the credit span using the native hidden attribute and scoped CSS.
The complete link, text and URL remain in the page HTML and plugin source.
The requested rel="follow
index" tokens are not recognized crawling/indexing directives; the private
player keeps its existing noindex/nofollow protections. This option changes only
public presentation and gives no listening, publishing or API rights.

Public listening is optional and off by default. Each MP3 can be public or private.
Visitors can request selected private tracks with an email; administrators approve
manually or explicitly enable automatic approval. Coupons/updates consent is a
separate optional unchecked choice and never required for listening. No campaign
or approval email is sent. Automatic approval does not verify mailbox ownership.
Custom accent/background/text colors are available under Site appearance while
Light/Dark/System and the owning site identity remain intact.

== Changelog ==

= 2026.10.11.006 =
Public/private MP3 choices, default-off public master, track-scoped email access
requests with manual/automatic approval and independent coupons/updates consent.
Custom player colors with validated readable Light/Dark text pairs. Existing
recordings remain private, historical artifacts and protected state are preserved.

= 2026.10.11.005 =
Use Powered by BuiltNotBegged.com for the optional player-footer link. Turning
the display off hides the credit with a native hidden ancestor and scoped CSS,
while its complete link remains in page HTML and maintained source. Existing
settings and private access stay intact.

= 2026.10.11.004 =
Default-on optional Built Not Begged footer credit with a nonce-protected
administrator visibility control. Off omits the public anchor while preserving
the source attribution. Preserve private listening and earlier release artifacts.

= 2026.10.11.003 =
Correct the listening footer to use the selected site recipient. Verify the
complete rendered Taylor, Matthew and generic player labels. Preserve private
access, storage, recordings and historical artifacts.

= 2026.10.11.002 =
Portable native setup, scoped one-time agent keys, encrypted WordPress MP3
uploads/replacements and site-specific brand defaults. Preserve legacy private
configuration, listener rights, progress, reports and optional Ryzen streaming.


= 2026.10.11.001 =
Add allowlisted public Taylor/Matthew profiles and site-bound private helpers.
Allow only exact site origin and pinned beta-only CRM ID/title combinations.
Retain historical API, private authorization, duplicates, progress and TQ icons.
Adopt the shared engineering SOP prospectively in America/Chicago.


= 2026.10.09.002 =
Replace the Appearance dropdown with a visible three-way Light / Dark / System
switch, selected-state highlighting and full-width phone touch targets. Preserve
the existing saved preference, private access and playback.

= 2026.10.09.001 =
Installable private audio PWA with Taylor TQ icons, scoped public-only worker,
Dark/Light/System appearance, iPhone install/access help, invitation paste for a new app context, Media
Session controls and friendly offline reconnect. Existing access, source
streaming, progress, replacement and duplicate-feedback behavior preserved.
Historical 1.2.0 changes continue under canonical calendar revisions.
