# All-in-One Communication System V15.3

V15.3 keeps the V15 commercial-grade campaign upgrades, the browser-based update flow from V15.1, the V15.2 contacts workspace improvements, and adds a cleaner split between inbox operations and campaign operations.

## What is new in V15
- Drag-and-drop email builder for campaign composition
- Advanced analytics charts for delivery, opens, clicks, bounces, and channel volume
- System Health + Deliverability Center with provider readiness, queue pressure, bounce watch, suppression trends, and recovery visibility
- Multi-variant testing for control, Variant A, and Variant B campaign comparisons
- Campaign preflight checks to catch provider, audience, subject, content, and list/channel issues before launch
- Manual **Add to List** field under **Add Contact** so a new client can be saved directly into an existing imported list

## New in V15.2
- More spacious, less clustered contact management layout with better section spacing and responsive table wrappers
- Contacts list pagination now uses a compact page slider with Previous/Next controls instead of a long page-number strip
- Duplicate-safe contact creation and CSV import based on existing **email or phone number** matches
- Existing contact records are reused and lightly refreshed with missing details instead of creating duplicates
- List imports now report how many rows were new, reused, or skipped

## New in V15.3
- Fixes the provider test crash shown as:

  `flash(): Argument #2 ($message) must be of type ?string, array given`

  The flash helper now accepts structured payloads, so provider diagnostics no longer break app startup after live connection tests.
- Splits the former **Inbox & Campaigns** navigation into separate menu groups:
  - **Inbox → SMS/MMS** for individual SMS/MMS sending, conversation workflow, threaded view, and canned replies
  - **Inbox → Email** for individual email sending, conversation workflow, threaded view, and canned replies
  - **Campaigns → Campaign Dashboard** for delivery rate, bounce rate, queue backlog, suppressed, System Health + Deliverability Center, deliverability trend, channel volume + failures, campaign comparison, template performance, segment performance, and recent suppression watchlist
  - **Campaigns → Campaign Studio** for designing campaigns
  - **Campaigns → Campaign Reports** for recovery queue, campaign queue, and report access
- Refreshes the sidebar layout so the new routes are clearer and less clustered
- Keeps backward compatibility by redirecting the old `messages/index` entry point into the new dedicated pages

## Import/list fix included
This build keeps the list import SQL fix for:

`SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'email' in WHERE is ambiguous`

The contact and list queries fully qualify joined columns such as `email`, `id`, and `created_at`, which resolves ambiguous-column failures during imports and related contact lookups.

## Key files updated in V15.3
- `app/helpers/functions.php`
- `app/controllers/MessagesController.php`
- `app/views/layouts/header.php`
- `app/views/messages/inbox.php`
- `app/views/messages/campaign_dashboard.php`
- `app/views/messages/campaign_studio.php`
- `app/views/messages/campaign_reports.php`
- `app/views/messages/report.php`
- `public/assets/css/style.css`
- `config/config.example.php`

## Browser-based deployment
- `public/install.php` includes an **Update Center** for admin-run, browser-based update package uploads
- Update packages are applied with automatic file backups under `storage/updates/backups/`
- A standalone browser updater can still be used for one-time deployments when shell access is unavailable

## Notes
- No database schema migration is required for the V15.3 changes included in this package
- Duplicate prevention is still active for manual adds plus both CSV import flows
- Existing saved lists can still be reused directly from the Add Contact form
