# All-in-One Communication System V15.2

V15.2 keeps the V15 commercial-grade campaign upgrades, the browser-based update flow from V15.1, and adds a cleaner contacts workspace with stronger duplicate prevention.

## 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

## 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
- `app/models/Contact.php`
- `app/models/ContactList.php`
- `app/controllers/ContactsController.php`
- `app/views/contacts/index.php`
- `public/assets/css/style.css`
- `public/assets/js/app.js`
- `public/install.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.2 changes included in this package
- Duplicate prevention is app-level and covers manual adds plus both CSV import flows
- Existing saved lists can still be reused directly from the Add Contact form
