17 Commits

Author SHA1 Message Date
myron 06260ed192 fix: move loadCustomerEmails to module scope, wire into switchCTab, add emails to tab loop; drop redundant ?: [] in customer-emails.php 2026-06-23 16:35:11 +00:00
myron 145397ab81 sync: updated admin, assets, new images, composer config, customer email API 2026-06-21 03:46:45 +00:00
myron a2bc87e947 Update admin nav logo to new PNG design
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 20:03:24 +00:00
myron b6d0319be7 Fix admin order page blank redirect after status/note update
Missing ob_start() meant HTML was output before POST handler ran,
so header() redirects silently failed after saving changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 20:50:53 +00:00
myron 29656bd4d7 Add product count column to product types admin page
Shows how many active products are linked to each type, linked to the filtered products list.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 19:50:29 +00:00
myron da60888b72 Fix CSV import — convert tags/images to valid JSON before insert (mysql json_valid constraint) 2026-06-14 16:05:42 +00:00
myron 0a6c4508d5 Rebuild product image upload section — fix broken HTML, wrong textarea name, JS quote errors 2026-06-14 15:57:33 +00:00
myron 1609dea8fb Fix product image upload — remove header.php (outputs HTML), auth check directly 2026-06-14 15:48:19 +00:00
myron 5058da704a Fix product image upload — ob_end_clean() before JSON response, fix uploads dir permissions 2026-06-14 15:44:25 +00:00
myron 66cbd3f0d3 Remove prefilled placeholder email from admin login 2026-06-14 15:18:27 +00:00
myron 7eddf9e85d Fix remaining code review findings: email transport errors, metadata payload, from-name, pagination
- Email::send(): add curl_error() check so transport failures (timeout,
  DNS, TLS) return a diagnosable error string instead of Unknown error
- Email::send(): strip metadata key from options before array_merge so
  non-API fields are never sent to CyberMail endpoint
- Email::send() + sendEmail(): include from-name in From field using
  RFC 5322 "Name <email>" format so fromName DB setting takes effect
- email-log.php: replace unbounded page-link loop with a windowed
  paginator (first/last 2 pages + ±2 around current) with ellipsis
  gaps — prevents hundreds of anchors rendering at scale
2026-06-03 06:01:44 +00:00
myron 76bf967bd0 Switch email to CyberMail API; integrations page manages API key via DB 2026-05-29 18:49:15 +00:00
myron 6b71828199 Fix integrations.php: handle POST before HTML output to fix blank screen on save 2026-05-29 18:31:16 +00:00
myron 0d481f8feb Simplify admin login to email/password only; remove Google OAuth 2026-05-29 15:33:16 +00:00
myron e344e52d70 Add Google OAuth admin login; fix header comment; both auth methods active 2026-05-29 15:13:38 +00:00
myron 53f9f3e4da Replace all SendGrid references with CyberMail in admin UI 2026-05-29 15:06:43 +00:00
myron 996ca0d621 Initial commit 2026-05-22 12:52:44 +00:00