=== ScopeBill ===
Contributors: getupsolutions
Tags: quotation, invoice, client approval, payments, service business
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 0.6.0-alpha.13.13.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A focused quotation, approval, invoice, and payment workflow for service businesses.

== Description ==

ScopeBill is being developed as a standalone WordPress plugin for service businesses.

This Quote Core Alpha includes:

* Versioned plugin bootstrap and internal autoloading
* Fourteen dedicated transactional database tables
* Migration locking and schema-version tracking
* Granular ScopeBill roles and capabilities
* Protected REST API namespace
* Admin navigation and foundation diagnostics
* Non-destructive deactivation and uninstall-by-explicit-consent
* Resumable seven-step setup wizard
* Business, document, payment, and email defaults
* Client create, edit, search, view, archive, and restore workflows
* Duplicate-email warning and server-side validation
* Protected settings and clients REST endpoints
* Debounced live client search with pagination and standard-search fallback
* Debounced live quotation search with status preservation, pagination, and standard-search fallback
* Draft quotation list, editor, detail view, line items and exact server calculations
* Drag-and-drop and keyboard-accessible quotation item ordering
* Sticky real-time quotation document preview with debounced server-confirmed totals
* Optimistic locking and transactional quote persistence
* Explicit quotation issuance with atomic numbering and immutable snapshots
* Rate-limited client Approve/Reject flow with typed-name evidence
* One terminal response per immutable revision with idempotent retry handling
* Admin response evidence and post-response business/client notifications
* Transactional Approved Quotation to Draft Invoice conversion
* Immutable source references, copied commercial snapshots and copied line items
* Duplicate conversion prevention with invoice list and detail screens

Quotation delivery/approval, the converted-invoice workflow, manual full/partial payments, payment confirmations, manual invoice reminders and the local License entitlement preview are available for controlled testing. Automatic reminders, real store activation and automatic update delivery are not enabled in this alpha. Client Portal is deferred to the post-beta backlog.

This alpha is for controlled development testing only. Do not use it for production billing.

== Installation ==

V1 is self-hosted only, English-only at launch, and distributed as a downloadable ZIP. Cloud and WordPress Multisite are outside scope. A dedicated single-site WordPress installation such as billing.company.com is recommended but not mandatory.

ScopeBill Core includes a Free Starter allowance. ScopeBill Pro supplies paid entitlement separately while Core continues to own every business record and the lifetime usage ledger. Commercial plan details are managed through the ScopeBill account and are not hard-coded into the plugin. Licence or payment changes never delete or conceal existing records. This alpha includes local entitlement previews; live FluentCart activation requires the separately configured Pro add-on.

1. Upload the plugin ZIP from Plugins > Add New > Upload Plugin.
2. Activate ScopeBill.
3. Open ScopeBill in the WordPress admin menu.
4. Complete the setup wizard and add a test client.

== Frequently Asked Questions ==

= Does this alpha send quotations or invoices? =

It can send sealed quotations and invoices through the configured WordPress mail transport. Each email attaches the immutable PDF for the sealed revision and includes a secure document-view link.

= Does deactivation remove data? =

No. Deactivation never removes ScopeBill records, tables, roles, or settings.

= Can an archived client be restored? =

Yes. Restore returns the client to active workflows with historical records intact. If another active client uses the same email, ScopeBill warns and requires explicit confirmation.

= Does uninstall remove data? =

Not by default. Permanent removal runs only when the saved `scopebill_delete_data_on_uninstall` option is explicitly set to `yes` before uninstalling.

== Changelog ==

= 0.6.0-alpha.13.13.2 =
* Restored equal-width Cancel and Save draft buttons while keeping the unsaved indicator above Save draft.

= 0.6.0-alpha.13.13.1 =
* Corrected the unsaved-changes dialog hierarchy and action alignment.
* Kept the Cancel button at its normal height when the unsaved indicator appears.

= 0.6.0-alpha.13.13.0 =
* Warn before leaving a quotation or invoice editor with unsaved changes.
* Added an Unsaved changes indicator beside Save draft.
* Protected ScopeBill links, WordPress navigation, browser refresh, Back and tab closure while edits remain unsaved.

= 0.6.0-alpha.13.12.2 =
* Ensured the payment status and Download receipt action remain side by side.

= 0.6.0-alpha.13.12.1 =
* Replaced receipt-number-only actions with a clear, compact Download receipt button.
* Aligned the receipt action beside the payment status in invoice Payment history.

= 0.6.0-alpha.13.12.0 =
* Added an automatic numbered receipt for every recorded payment.
* Added receipt PDF downloads from Payments and invoice payment history without email delivery.
* Preserved the payment-time client, business and balance context, including downloadable void receipts.

= 0.6.0-alpha.13.11.6 =
* Added clear subscription states for reactivation, payment grace, pause and paid-period completion.
* Kept paid-through access through the final day and returned ended subscriptions safely to Free Starter.
* Replaced instalment-specific payment wording with subscription-aware recovery guidance.

= 0.6.0-alpha.13.11.5 =
* Display cancelled subscriptions as ending at the paid-through date instead of awaiting another payment.
* Keep Pro use active through the final paid day, then return safely to Free Starter.

= 0.6.0-alpha.13.11.4 =
* Removed the separate RM90 support-renewal warning from monthly and yearly subscriptions.
* Kept support reminders available for one-time and instalment plans only.

= 0.6.0-alpha.13.11.3 =
* Added normalized monthly and yearly subscription intervals.
* Displayed the active subscription interval on the License screen.
* Preserved every record when a subscription returns to Free Starter.

= 0.6.0-alpha.13.11.2 =
* Kept lifetime updates visually separate from time-limited standard support.
* Added a 30-day support-expiry reminder and clear post-expiry guidance.
* Confirmed that support expiry does not affect ScopeBill, business data or lifetime updates.

= 0.6.0-alpha.13.11.1 =
* Hid the alpha entitlement preview from normal packaged builds while retaining an explicit developer filter.
* Displayed Lifetime for perpetual update and support eligibility without an end date.

= 0.6.0-alpha.13.11.0 =
* Added normalized subscription entitlement and payment types for ScopeBill Pro.
* Removed obsolete hard-coded prices from the License screen.
* Kept Core workflows on cached entitlement so licence-service requests never sit on the business-record path.

= 0.6.0-alpha.13.10.1 =
* Kept the Business document logo optional when no logo is selected.
* Cleared stale Media Library logo references instead of blocking unrelated Business setting changes.

= 0.6.0-alpha.13.10.0 =
* Added a formal entitlement extension contract for the separate ScopeBill Pro add-on.
* Kept lifetime usage history, limits and every business record owned by Core when Pro is activated or removed.
* Added a normalized Pro entitlement source so Core safely returns to Free Starter when the add-on is inactive.

= 0.6.0-alpha.13.9.2 =
* Removed the purple accent border from the Dashboard Needs attention card.

= 0.6.0-alpha.13.9.1 =
* Replaced the full-width Dashboard plan card with a compact plan badge and on-demand usage popover.
* Show a compact Free Starter warning only when an allowance reaches four of five or its limit.

= 0.6.0-alpha.13.9.0 =
* Enforced the Free Starter allowance of five active clients, five lifetime issued quotations and five lifetime issued invoices.
* Kept drafts, existing records, quotation revisions, PDFs, secure links, email delivery and payments available after an allowance is used.
* Added clear in-product allowance messages with a route to ScopeBill Pro while keeping Pro and demo installations unlimited.

= 0.6.0-alpha.13.8.0 =
* Added a Core-owned lifetime issuance ledger with safe backfill for existing numbered quotations and invoices.
* Added a Dashboard plan-usage card before enforcement was activated.

= 0.6.0-alpha.13.5.0 =
* Added stable All, Active and Archived totals to the Clients tabs.
* Added server-side client sorting by updated time or name, preserved across tabs and searches.

= 0.6.0-alpha.13.4.3 =
* Keep the demo banner in one shared location during loading, React and recovery.
* Stabilize list column widths and reserve table/footer space during loading.

= 0.6.0-alpha.13.4.2 =
* Associate quotation and invoice editor labels with controls using unique IDs; name library-item dropdowns for assistive technology.

= 0.6.0-alpha.13.4.1 =
* Fix invoice secure-link error browser title and heading to display Invoice unavailable.

= 0.6.0-alpha.13.4 =
* Add ScopeBill Demo User role with focused menus, login routing, minimal toolbar and server-side admin/REST restrictions.

= 0.6.0-alpha.13.3.1 =
* Fix new quotation detail refresh after issue, send and PDF generation to retain the saved document ID.

= 0.6.0-alpha.13.3 =
* Demo reset recovery: expiring owned lock, truthful incomplete status and shared-demo guidance.

= 0.6.0-alpha.13.2.2 =
* Move demo checklist into a lightweight bottom-right guide bubble across admin screens.
* Sample quotation completion offers Dashboard return and permission-aware invoice creation.


= 0.6.0-alpha.13.2.1 =
* Make demo secure-preview access an explicit Open sample quotation button in React and PHP recovery.


= 0.6.0-alpha.13.2 =
* Guided demo: four invoice scenarios, fictional payments and a sealed quotation with a secure client preview.
* Dashboard checklist uses existing workflows; demo banner explicitly confirms no real emails are sent.
* Prepare/Reset restores the scenarios only on explicitly enabled demo installations.


= 0.6.0-alpha.13.2.1 =
* Show document Issue date and Due/Expiry date separately from Last edited in Dashboard draft shortcuts.
* Add a native accessible expandable explanation of Needs attention priority, thresholds and draft exclusions.
* Preserve actual audit timestamps, backdated document dates, overdue rules and the existing six-read snapshot.

= 0.6.0-alpha.13.1 =
* Added a five-record Needs attention queue ordered by overdue invoices, failed document delivery, older awaiting quotations and stale drafts.
* Added compact pipeline counts and proposed-work/balance values with contextual financial cards.
* Moved primary actions beside the Dashboard heading; reduced Recent activity to five events and Draft work to three records.
* Combined adjacent issue/send activity within one minute without changing stored audit events.
* Reused the shared responsive UI Kit; no polling, chart dependency, email sends or record mutations.
* Added Dashboard regression coverage for bounded reads, financial exclusions, timezone ages, empty data and event compaction.

= 0.6.0-alpha.13 =

* Added an explicit, dedicated-installation demo mode with a persistent interface banner.
* Simulated every outbound email in demo mode without calling the WordPress mail transport.
* Locked Settings, Setup, License, Starter Data management and Client import mutations while demo mode is active.
* Added capability- and nonce-protected manual reset plus an optional second-flag scheduled reset, restoring fictional starter records without changing WordPress content or ScopeBill configuration.

= 0.6.0-alpha.12.12.1 =

* Displayed the current Client email in Quotation and Invoice send/resend confirmation dialogs.
* Updated Invoice reminder confirmation to use the same current recipient instead of the sealed snapshot address.
* Added Bank, Account holder, Account number and Methods labels to secure Invoice payment details, matching the PDF.

= 0.6.0-alpha.12.12 =

* Added Duplicate quotation to the compact quotation action menu and PHP recovery interface.
* Created an independent editable draft from the source's current revision with fresh configured dates and linked audit provenance.
* Excluded numbering, approval evidence, PDFs, secure links, delivery state and email history from the copy.
* Added request-level idempotency so repeated submissions return the same new draft.

= 0.6.0-alpha.12.11.4.1 =

* Resolved every new quotation, invoice, reminder and payment-confirmation recipient from the latest saved Client email.
* Kept sealed document snapshots and generated PDFs unchanged while recording the actual recipient on each new Email Log attempt.
* Added clear validation when the current Client email is missing or invalid.

= 0.6.0-alpha.12.11.4 =

* Applied the shared two-column action treatment to draft Quotation and Invoice Live Summary cards.
* Added a consistent dropdown chevron to Client, Item Library and other select fields across React and PHP recovery views.
* Preserved native keyboard behavior and restored the platform selector in forced-colour mode.

= 0.6.0-alpha.12.11.3 =

* Applied the compact status-aware action hierarchy to Quotation Summary cards.
* Prioritized Issue, Send or Convert according to quotation status while keeping PDF access visible.
* Moved Resend quotation and Create revision into the shared keyboard-accessible More actions control when eligible.

= 0.6.0-alpha.12.11.2 =

* Reorganized Invoice Summary actions around the most relevant action for each Invoice status.
* Kept PDF access visible and moved resend, reminder, eligible payment and cancellation actions into a compact accessible menu.
* Reduced button wrapping on narrow summary cards while preserving keyboard focus and destructive confirmation dialogs.

= 0.6.0-alpha.12.11.1 =

* Corrected Cancel/Restore dialog spacing by placing the reason field inside the standard padded dialog body.
* Preserved responsive dialog scrolling, footer separation and keyboard accessibility.

= 0.6.0-alpha.12.11 =

* Added reason-required cancellation for Issued and Sent Invoices without recorded payments.
* Added controlled restoration to the status held before cancellation.
* Blocked cancellation during an in-flight email attempt and retained existing payment, send and reminder guards while Cancelled.
* Preserved sealed Invoice content and immutable PDF artifacts while showing a clear Cancelled state in admin and secure client views.
* Added optimistic locking, audit events, React dialogs, PHP fallback forms and lifecycle regression coverage.

= 0.6.0-alpha.12.10 =

* Added standalone draft Invoice creation from the Invoice list and Dashboard.
* Reused active clients, Item Library entries and configured currency, tax, due-date, notes and terms defaults.
* Kept new drafts unnumbered and unsent until the existing Issue and Send actions are used.
* Preserved React and functional PHP fallback creation paths with server-authoritative totals and audit history.

= 0.6.0-alpha.12.9 =

* Added manual payment reminders for Sent and Partially Paid invoices with an outstanding balance.
* Included due date, Paid, Outstanding, secure Invoice link and immutable PDF attachment in each reminder.
* Recorded reminder outcomes in Email Log and audit history, prevented same-day duplicates and allowed failed attempts to retry safely.
* Deferred Client Portal to the post-beta backlog while retaining secure email links as the current client access path.

= 0.6.0-alpha.12.8.1.1 =

* Added comfortable top spacing inside the Document History scroll region.
* Widened and separated status and amount columns on desktop.
* Limited document links to the visible quotation or invoice number.

= 0.6.0-alpha.12.8.1 =

* Rebalanced Client details into an identity column and a compact address/notes stack.
* Expanded Document History to full width with a keyboard-accessible internal scroll area.
* Matched the refined layout in the PHP recovery interface and retained mobile stacking.

= 0.6.0-alpha.12.8 =

* Connected each client profile to its current quotations and invoices in one latest-first history.
* Added All, Quotations and Invoices filters, bounded pagination and direct document links.
* Included invoice Paid and Outstanding values with capability-aware access and responsive layouts.

= 0.6.0-alpha.12.7.1.1 =

* Removed the remaining 1100px width cap from the React Settings form.
* Let Settings cards and its sticky save bar fill the shared centered container.
* Matched the Settings PHP fallback width while preserving responsive form stacking.

= 0.6.0-alpha.12.7.1 =

* Centered React-managed admin pages in a shared responsive 1440px container.
* Applied the same width to loading skeletons and PHP recovery fallbacks to prevent horizontal movement.
* Preserved full-width narrow layouts, internal left alignment, existing grids, sticky summaries and table behavior.

= 0.6.0-alpha.12.7 =

* Added secure UTF-8 CSV export for active, archived, all or currently filtered clients.
* Added a three-step client import with column mapping, preview, validation report and explicit commit.
* Added skip/update duplicate-email handling that preserves existing values when CSV cells are empty.
* Added user-bound import tokens, idempotent commits, size/row limits, spreadsheet formula protection and audit events.

= 0.6.0-alpha.12.6.2 =

* Removed hover underlines from Recent activity and Draft work links.
* Added consistent keyboard focus rings to both linked row patterns.

= 0.6.0-alpha.12.6.1 =

* Aligned Dashboard attention cards with the compact System Status summary-card design.
* Kept semantic icon colours while removing inherited hover underlines.
* Preserved a visible keyboard focus ring and restrained card-border hover state.

= 0.6.0-alpha.12.6 =

* Reworked Dashboard around quotations awaiting response, overdue invoices, outstanding balance and payments received this month.
* Added limited recent activity and draft-work lists with direct record links.
* Added a contextual Record payment action while keeping the screen to one request, small result limits and no chart library or polling.

= 0.6.0-alpha.12.5.4.2 =

* Added lightweight dashboard, list and workspace loading skeleton variants.
* Rendered only the matching variant for each request to keep markup and runtime work small.
* Reduced layout shift while retaining timeout, error and no-JavaScript PHP fallback recovery.

= 0.6.0-alpha.12.5.4.1 =

* Replaced the legacy PHP-layout flash with a lightweight React loading skeleton.
* Added ten-second timeout, initialization-error and runtime-render fallback recovery.
* Preserved the functional PHP interface when JavaScript is disabled.
* Added accessible loading and recovery announcements, responsive sizing and reduced-motion support.
* Kept the React stylesheet in the document head and marked the footer bundle for deferred execution.

= 0.6.0-alpha.12.5.4 =

* Completed the React-admin accessibility and resilience readiness pass.
* Added keyboard navigation and explicit accessibility relationships to tabs and dialogs.
* Improved toast announcements, action reading time and translated dismissal labels.
* Preserved the PHP fallback when the React screen cannot render.
* Prevented busy Starter Data dialogs from closing during a request.
* Improved reduced-motion and mobile viewport handling.

= 0.6.0-alpha.12.5.3.1 =
* Corrected the ZIP root directory so WordPress replaces the existing scopebill plugin instead of installing a second copy.

= 0.6.0-alpha.12.5.3 =
* Added optional Starter Data during Setup and from relevant empty states.
* Creates fictional clients, reusable items and unnumbered draft quotations without invoices, payments or email activity.
* Added idempotent import, safe removal preview, modified/reference retention and audit events.

= 0.6.0-alpha.12.5.2.1 =
* Added current Paid and Outstanding totals to downloaded Invoice PDFs.
* Rendered admin and secure-link downloads from the current payment ledger while retaining the immutable issue-time artifact.

= 0.6.0-alpha.12.5.2 =
* Added optional payment confirmation email after a manual payment commits successfully.
* Included payment amount, date, method, reference, current outstanding balance and a secure Invoice link.
* Logged confirmation delivery and prevented repeated sends for the same payment; email failure does not undo the payment.

= 0.6.0-alpha.12.5.1.1 =
* Opened Record Payment directly inside Invoice detail instead of navigating through the Payments page.
* Reloaded Invoice totals, status and payment history after a successful record.

= 0.6.0-alpha.12.5.1 =
* Added a responsive manual-payment ledger with Invoice preselection and live balance preview.
* Added transactional full/partial payment recording, overpayment protection and Invoice status updates.
* Added reason-required Void corrections, retained audit history and Invoice payment history.

= 0.6.0-alpha.12.4.2.6 =
* Removed unnecessary desktop horizontal scrolling from Quotation and Invoice detail item tables.
* Shifted Qty, Unit price and Amount left while retaining readable numeric columns.

= 0.6.0-alpha.12.4.2.5 =
* Matched Quotation and Invoice detail Summary width to their editor Live Summary.
* Increased stable desktop space for Summary actions while retaining responsive stacking.

= 0.6.0-alpha.12.4.2.4 =
* Preserved user-authored blank lines and paragraph spacing in secure Invoice multiline content.

= 0.6.0-alpha.12.4.2.3 =
* Fixed doubled line spacing in the secure Invoice view's Introduction, Payment details, Notes and Terms & Conditions.

= 0.6.0-alpha.12.4.2.2 =
* Restored the shared right-side success toast on Invoice Send and Resend.
* Added a secure View invoice action to sent Invoice emails.
* Added a token-protected, read-only Invoice page with protected PDF download.

= 0.6.0-alpha.12.4.2.1 =
* Restored ScopeBill design tokens on standalone transaction screens.
* Restored Invoice document and Summary card boundaries, table dividers and primary-button contrast.
* Improved source quotation, sealed-state and latest-email spacing.

= 0.6.0-alpha.12.4.2 =
* Migrated Draft Invoice editing and Invoice detail into one responsive transaction workspace.
* Added server-confirmed live totals, Item Library insertion and accessible item ordering to Draft Invoices.
* Added dialog-protected Issue and Send/Resend actions with immutable PDF generation and protected download.
* Preserved source quotation context, optimistic locking, payment balances, capability checks and PHP fallbacks.

= 0.6.0-alpha.12.4.1.3 =
* Added consistent semantic colours for quotation, invoice, delivery, email and revision statuses.
* Distinguished Draft, Issued, Sent, Viewed, Approved, Converted, Expired, Rejected, Sealed and Superseded states at a glance.

= 0.6.0-alpha.12.4.1.2 =
* Fixed the React Quotation PDF download URL so WordPress receives the quote ID and nonce correctly.

= 0.6.0-alpha.12.4.1.1 =
* Fixed clipped Client, Item Library and discount dropdown text on Windows browsers.
* Increased Quotation document table spacing and restored clear numeric-column alignment.
* Kept the Related Invoice action on one line.
* Increased Revision History row spacing and assigned stable column widths while preserving internal scrolling.

= 0.6.0-alpha.12.4.1 =
* Migrated Quotation create, edit and detail into one responsive transaction workspace.
* Added server-confirmed live totals, Item Library insertion and accessible item ordering.
* Added dialog-protected issue, send, revision and approved-quotation conversion actions.
* Retained immutable PDF download, approval evidence, Related Invoice and bounded revision history.
* Preserved optimistic locking, capability checks and the complete PHP fallback.

= 0.6.0-alpha.12.3.7.2 =
* Matched License icons to the System Status icon-tile treatment.
* Kept Refresh status and Deactivate or transfer fully inside the payment card.

= 0.6.0-alpha.12.3.7.1 =
* Fixed the License workspace composition so all entitlement panels appear in every relevant state.
* Added a visible loading height while the entitlement snapshot is requested.

= 0.6.0-alpha.12.3.7 =
* Added a responsive License workspace with separate activation, use, update, support, payment and connectivity states.
* Added protected activate, refresh and deactivate/transfer REST flows behind an isolated FluentCart adapter boundary.
* Added alpha-only entitlement previews for one-time, instalment, grace, overdue, expiry, outage and staging scenarios.
* Preserved installed workflows and records in every commercial state and masked licence keys in UI/API responses.

= 0.6.0-alpha.12.3.6.1 =
* Replaced the misleading Configure email redirect with an in-context Email setup guide.
* Added FluentSMTP as the recommended optional WordPress mail transport.
* Detects FluentSMTP not-installed, inactive, needs-configuration and configured states.
* Provides permission-aware Install, Activate, Configure or Open actions.
* Keeps other WordPress SMTP and transactional email plugins fully supported.

= 0.6.0-alpha.12.3.6 =
* Split System Status into Foundation Health and Operational Readiness.
* Added database-engine, required PHP-extension and writable document-storage checks.
* Added HTTPS, verified email delivery and ScopeBill Cron heartbeat states.
* Added an authenticated Send test email action with truthful accepted/failed status.
* Preserved a server-rendered System Status fallback.

= 0.6.0-alpha.12.3.5 =
* Migrated the seven-step Setup Wizard to the lightweight ScopeBill UI Kit.
* Added responsive step navigation, saved progress, inline validation, success toasts and unsaved-change protection.
* Added an authenticated step-specific Setup REST flow that safely merges shared Document settings.
* Added a final settings review and retained WordPress Media Library logo selection.
* Retained the complete PHP Setup Wizard as a no-JavaScript fallback.

= 0.6.0-alpha.12.3.4 =
* Migrated Business, Documents, Payments and Email settings to the lightweight ScopeBill UI Kit.
* Added section-specific saves, sticky unsaved changes controls and discard confirmation.
* Preserved WordPress Media Library logo selection and server-side image validation.
* Returned effective quote/invoice sequence values through the Settings REST API.
* Retained the complete PHP Settings screen as a fallback.

= 0.6.0-alpha.12.3.3 =
* Migrated Item Library detail and edit to the lightweight ScopeBill UI Kit.
* Reused the compact popup dialog for both creating and editing library items.
* Added focused archive/restore confirmation, archived-state guidance and success toasts.
* Retained authenticated REST permissions, document-owned copies and the PHP fallback.

= 0.6.0-alpha.12.3.2 =
* Moved Client duplicate-email review from the page flow into a focused popup dialog.
* Preserved form input while reviewing the matching client in a separate tab.
* Applied the same dialog pattern to duplicate checks during Client restore.

= 0.6.0-alpha.12.3.1 =
* Migrated Client create, edit and detail screens to the lightweight ScopeBill UI Kit.
* Added responsive identity, contact, billing address, notes and document-history cards.
* Preserved duplicate-email review and explicit save/restore confirmation.
* Added accessible archive/restore confirmation dialogs and success toasts without changing server permissions or data retention.
* Retained the existing PHP Client screens as a no-JavaScript fallback.

= 0.6.0-alpha.12.2.3 =

* Replaced the Item Library side drawer with a compact centered dialog.
* Added smooth open/close animation, focus containment, Escape and overlay dismissal.
* Retained inline validation, create-another behavior and success toast after saving.

= 0.6.0-alpha.12.2.2 =

* Replaced the experimental shadcn/Tailwind stack with the lightweight ScopeBill UI Kit.
* Removed duplicate horizontal navigation and retained the WordPress ScopeBill sidebar.
* Returned Client creation to its full page and kept a compact Item Library drawer.
* Preserved current REST, table, search, pagination, alert, skeleton and toast behavior.

= 0.6.0-alpha.12.2.1 =

* Added a FluentCRM-inspired ScopeBill application shell with horizontal module navigation and a soft-grey workspace.
* Refined list screens with underline tabs, an integrated search/table panel and pagination summary footer.
* Added right-side create drawers for Clients and Item Library, including inline validation and create-another flow.
* Retained ScopeBill branding, permissions, REST validation and direct PHP form fallbacks.

= 0.6.0-alpha.12.2 =

* Corrected the vertical spacing inside the three System Status summary cards.
* Migrated Dashboard, Clients, Item Library, Quotations, Invoices and Email Log list screens to the shared React/shadcn system.
* Added consistent status tabs, live search, tables, loading states and pagination with URL-preserved state.
* Kept PHP-rendered fallbacks and the first-time setup continuation path.

= 0.6.0-alpha.12.1 =

* Added the shared shadcn interaction kit for forms, feedback, overlays, menus and navigation.
* Added responsive Table, server-side DataTable, FilterBar and Pagination compositions.
* Added Radix-powered Select, Checkbox, Radio Group, Tabs, Dropdown, Tooltip, Dialog and Alert Dialog primitives.
* Added mobile Drawer and Sonner toast infrastructure.
* Upgraded System Status loading and error states to the shared Skeleton and Alert components.

= 0.6.0-alpha.12 =

* Added the reproducible React and shadcn/ui admin foundation using WordPress-provided runtime packages.
* Migrated System Status as the first React screen with REST loading, error/retry states and a PHP fallback.
* Added ScopeBill-owned Button, Card and Badge primitives and Lucide status icons.
* Scoped and prefixed compiled Tailwind output under ScopeBill admin with preflight disabled.

= 0.6.0-alpha.11.4 =

* Kept Item Library live-search results inside the normal five-column table width.
* Truncated long descriptions with an ellipsis so Unit, Default price and Updated remain visible.

= 0.6.0-alpha.11.3 =

* Moved database, capability, REST and Foundation Health diagnostics from Dashboard to System Status.
* Refocused Dashboard on linked active-client, draft-quotation and draft-invoice counts with quick actions.

= 0.6.0-alpha.11.2 =

* Added debounced live search and live pagination to the Item Library list.
* Preserved the selected Active/Archived status and standard Search fallback.

= 0.6.0-alpha.11.1 =

* Added a reusable Item Library with name, description, unit and default price.
* Added searchable library insertion to Quotation and Draft Invoice editors.
* Library insertion copies values into each document, preserving historical independence when a library item changes or is archived.

= 0.6.0-alpha.11 =

* Moved Issued, Due/Valid until and Reference into a compact right-aligned stack below the purple document number in Invoice and Quotation PDFs.
* Stabilized the PDF header columns for long business names and logo-based headers.

= 0.6.0-alpha.10 =

* Fixed Invoice issue recalculation for whole-number quantities loaded from WordPress database DECIMAL columns, such as `1.000000`.
* Continued to reject genuinely fractional quantities such as `1.500000`.

= 0.6.0-alpha.9 =

* Added atomic Draft Invoice issue and number allocation with immutable business, payment and client snapshots.
* Added consistent immutable Invoice PDF generation and protected download.
* Added Invoice Send/Resend with PDF attachment, delivery status and email logging.
* Added authenticated Invoice issue, PDF and send REST routes.
* Kept issued and sent invoice content read-only.

= 0.6.0-alpha.8 =

* Added an editable Draft Invoice workspace with the shared live document preview.
* Added server-authoritative invoice validation and recalculation using the invoice's stored currency precision.
* Saved draft changes transactionally with optimistic locking, refreshed client snapshot, ordered items and an audit event.
* Added authenticated Invoice calculate and update REST routes.
* Kept non-draft invoices read-only and preserved the approved source quotation.

= 0.6.0-alpha.7 =

* Isolated the Revision History table in its own scroll viewport to prevent sticky-header overlap.
* Kept the Revision History section title outside the scrolling area.
* Moved Related Invoice into the sticky Summary column as a compact full-width action.

= 0.6.0-alpha.6 =

* Added debounced live Invoice search with request cancellation, live result counts and pagination.
* Kept standard form search as the fallback when live requests fail.
* Compacted Approval Evidence and Related Invoice into a balanced desktop row that stacks responsively.
* Limited Revision History height with internal scrolling and a sticky table header.

= 0.6.0-alpha.5 =

* Completed shared quotation/invoice item styling with multiline quotation descriptions, notes, terms and a visible discount summary.
* Preserved the quotation's stored currency precision when company defaults change.
* Aligned quotation expiry and generated document dates with the WordPress site timezone.
* Updated the self-hosted business model documentation; licensing remains outside core workflows.
* Added date-boundary and quotation-view regression fixtures.


= 0.6.0-alpha.4 =

* Standardized quotation and invoice detail screens on one shared document-first layout.
* Applied the same 75/25 desktop ratio and sticky Summary behavior to quotations.
* Kept the shared responsive layout stacked at smaller widths.

= 0.6.0-alpha.3 =

* Fixed the generic detail-grid rule overriding the invoice-specific column ratio.
* Enforced a document-first 75/25 desktop split with matching responsive specificity.
* Preserved the working sticky summary behavior.

= 0.6.0-alpha.2 =

* Expanded invoice detail to use the available WordPress admin width.
* Rebalanced the document and summary columns to approximately 75/25 for long invoices.
* Added predictable invoice item column widths and right-aligned numeric values.
* Made the compact invoice summary sticky on desktop and stacked it below the document on smaller screens.

= 0.6.0-alpha.1 =

* Added transactional conversion from the current approved quotation revision to a draft invoice.
* Copied client/business snapshots, commercial values and ordered line items without mutating the quotation.
* Stored source quotation and source revision identifiers on the invoice.
* Prevented duplicate conversion under repeat or concurrent requests and added conversion audit events.
* Added invoice list, search, source-aware detail and Total/Paid/Outstanding summaries.
* Added Convert to invoice and View invoice actions to quotation detail.

= 0.5.0-alpha.3 =

* Added responsive public Approve and Reject interactions with required typed name and optional rejection comment.
* Added a rate-limited public response endpoint authorized by the secure quotation token.
* Added transactional one-response enforcement, expiry checks and idempotent identical retries.
* Recorded response revision, UTC time, packed IP address, user agent and access-token identifier.
* Added approved/rejected confirmation states and an admin evidence panel with restricted technical details.
* Added logged business notification and client confirmation email attempts after a successful response.

= 0.5.0-alpha.2 =

* Added debounced live quotation search while typing.
* Preserved the selected quotation status filter and reset new searches to page one.
* Added cancellable REST requests, live result counts, accessible loading state, and live pagination.
* Kept Search-button submission as a fallback when JavaScript or the REST request fails.

= 0.5.0-alpha.1 =

* Added quotation Send and Resend actions for sealed revisions.
* Attached the exact immutable PDF artifact through the WordPress mail layer.
* Added hashed, expiring quotation-view tokens and a responsive public quotation page.
* Added token-authorized public PDF downloads and automatic Sent/Viewed transitions.
* Added pending, accepted, and failed email-attempt logging with an Email Log screen.
* Added safe temporary attachment cleanup and actionable delivery-state feedback.

= 0.4.0-alpha.10 =

* Replaced ignored table-cell padding with a rendered non-empty spacer line between item titles and descriptions.
* Limited the spacer to items that contain descriptions.

= 0.4.0-alpha.9 =

* Replaced the PDF item-description top margin with conditional title padding that mPDF renders reliably inside table cells.
* Kept items without descriptions free from unnecessary trailing spacing.

= 0.4.0-alpha.8 =

* Added a dedicated center gutter between the From and To party columns.
* Reduced party labels, names, and contact details further for a visibly lighter hierarchy.
* Added clear vertical spacing between every line-item title and description.
* Matched party and item spacing in the live quotation preview.

= 0.4.0-alpha.7 =

* Made the complete From/To group visibly more compact in generated PDFs.
* Matched the live quotation preview to the smaller party-name and contact typography.
* Bumped the document-template signature so newly generated artifacts use the revised layout.

= 0.4.0-alpha.6 =

* Anchored quotation subtotal, discount, tax, and total to the document's right edge.
* Reduced From/To typography and tightened its line height for long business and client details.
* Kept the live quotation preview typography aligned with the generated PDF.

= 0.4.0-alpha.5 =

* Fixed the document-logo button by loading WordPress Media Library before the ScopeBill admin script.
* Changed logo selection/removal to delegated click handling so initialization timing cannot leave the button inactive.
* Added a visible recovery message if the Media Library API is unavailable.

= 0.4.0-alpha.4 =

* Added a PNG/JPEG business-logo picker to Business Settings and onboarding.
* Added fixed proportional bounds for horizontal and square document logos.
* Simplified the top-left document header to logo-only, with Display Name fallback when no logo is configured.
* Embedded a validated immutable logo copy in each newly sealed quotation revision.
* Updated live quotation preview to match the logo-or-name header rule.

= 0.4.0-alpha.3 =

* Refined the quotation PDF into a compact Bloom-inspired document layout.
* Preserved every user-entered item-description line break with escaped explicit break tags.
* Reduced document typography and replaced boxed sections with lighter spacing and rules.
* Consolidated item pricing into Bloom-style Item, Qty, and Amount columns.
* Added page-break protection for individual item rows and multiline fixture coverage.

= 0.4.0-alpha.2 =

* Bundled mPDF 8.3.1 and runtime dependencies under an isolated ScopeBill vendor namespace.
* Bundled a curated DejaVu Sans font family for deterministic offline PDF output.
* Qualified one-page and 100-item quotation fixtures on PHP 8.3 with a 128 MB memory limit.
* Added PDF signature, multi-page, Unicode, page-number and dependency-isolation smoke checks.
* Added third-party dependency and license notices.

= 0.4.0-alpha.1 =

* Added the mPDF renderer adapter and explicit renderer readiness diagnostics.
* Added a conservative A4 quotation PDF template based only on sealed snapshots.
* Added private immutable database artifacts with SHA-256, size limit and renderer version.
* Added nonce/capability-protected Generate PDF and Download PDF admin actions.
* Added protected PDF generation/metadata REST endpoints without exposing artifact payloads.
* Added artifact count and storage size to System Status.

= 0.3.0-alpha.5 =

* Added safe quotation revision creation under the existing document number.
* Added immutable superseded revisions, fresh approval boundaries and old-token revocation.
* Added optional revision reasons, revision history and a protected REST revision endpoint.
* Added issuing support for numbered draft revisions without consuming a new sequence number.

= 0.3.0-alpha.4 =

* Added explicit Issue quotation action without email delivery.
* Added atomic quote sequence allocation and unique formatted numbers.
* Added immutable sealed revisions with business/client snapshots and content hashes.
* Added issued status filtering, concurrency guards and protected REST issue endpoint.

= 0.3.0-alpha.3 =

* Changed quotation quantity controls to positive whole-number increments.
* Added server-side rejection of fractional quantities for form and REST requests.

= 0.3.0-alpha.2 =

* Added drag-and-drop quotation item ordering with persisted positions.
* Added keyboard Move up and Move down ordering controls.
* Added a sticky right-side live quotation preview that stacks on smaller screens.
* Added debounced server confirmation for preview line totals and document totals.

= 0.3.0-alpha.1 =

* Added quotation draft create, view and update workflows.
* Added minor-unit calculation engine for quantity, fixed/percentage discount and tax.
* Added dynamic line-item editor with browser preview and authoritative server totals.
* Added optimistic locking, transactions, quote activities and protected REST endpoints.

= 0.2.0-alpha.3 =

* Added live server-side client filtering while typing.
* Added 300 ms debounce, superseded-request cancellation, loading and no-results states.
* Added live pagination, URL state, ARIA announcements and standard GET fallback.

= 0.2.0-alpha.2 =

* Added safe restoration of archived clients.
* Added active duplicate-email warning and explicit confirmation before restore.
* Added archive/restore audit events and protected restore REST endpoint.

= 0.2.0-alpha.1 =

* Added resumable setup wizard and structured settings.
* Added production client management screens and REST endpoints.
* Added M0 settings migration, validation, duplicate warning, and safe client archive.

= 0.1.0-alpha.1 =

* Added plugin bootstrap, autoloader, service container, and requirement checks.
* Added the initial thirteen-table schema and guarded migrations.
* Added roles, capabilities, admin shell, system status endpoint, and safe lifecycle handling.
