First Class TrackActive plugin release
First Class Track Change Log
V1.0-B3 - 2026-09-13 - Public/non-logged-in Tracking Report now shows how many whole USPS business days have already elapsed for the shipment. - Reuses the existing FCT_USPS_Full_Business_Day_Calculator, including the existing USPS weekend/holiday rules. - Elapsed-day display intentionally excludes future Estimated Delivery Date time so the customer sees days already passed as of now. - If USPS has not produced a parseable scan event yet, the same calculator falls back to the label/batch date so zero-scan shipments still receive an elapsed-business-day count. - Public reminder states: USPS First Class takes 6–8 business days for delivery. - Logged-in Tracking Dashboard behavior is unchanged. No database schema change. V1.0-B02ae - 2026-09-10 - Customer Communications: removed the keyword-gated eBay media repair that skipped image-bearing messages whose authored text did not literally say picture/photo/image/attachment. - Exact media recovery now scans every local Inbox/Sent bubble with a numeric My Messages MessageID and zero stored media, then writes returned MessageMedia to that exact DB record by MessageID. - A media-version bump now reopens the full configured eBay lookback instead of only the normal one-day sync overlap, so older image-bearing messages are actually revisited after upgrade. - Exact repair prefers XML MessageMedia and falls back to HTML image extraction only when XML is empty, preventing duplicate $_1/$_0 variants of the same eBay image from rendering twice. - Thread #18 case: MessageID 211872392066 / DB 170 is now eligible for repair even though its text does not contain a media keyword; the recovered eBay image is rendered by the existing thread-bubble image renderer. - No database schema change. V1.0-B02ad - 2026-09-09 - Customer Communications: repaired the B02ac Media Diagnostic layout where stripped eBay HTML indentation was preserved as hundreds of blank lines, making the actual exact-message probes effectively unreachable. - Diagnostic message bodies are now whitespace-compacted and height-bounded; priority zero-media turns whose text mentions a picture/photo/image/attachment are surfaced at the top with jump links to their exact MessageID probe. - Exact GetMyMessages HTML media extraction now accepts a direct EPS/image HREF even when eBay renders it as a text filmstrip link with no nested IMG element. - Media replay marker bumped to message-media-v6-exact-html-href so the corrected extraction path is forced once after upgrade. - Preserves exact MessageID-to-DB-record attachment routing; no database schema change. V1.0-B02ac - 2026-09-09 - Customer Communications: fixed the remaining eBay picture-recovery blind spot exposed by thread #18 / faunaf0. - Exact media repair now probes the visible My Messages MessageID with GetMyMessages DetailLevel=ReturnMessages before using GetMemberMessages as an ASQ fallback. - Existing known MessageIDs can no longer be skipped during the B02ac media repair pass; media marker bumped to message-media-v5-exact-my-message-id to force one corrected full-detail replay. - Missing-media candidate repair maps returned MessageMedia directly back to the exact DB record instead of guessing the seller response from exchange LastModifiedDate. - Media Diagnostic now traces every visible bubble through local DB state, exact GetMyMessages ReturnMessages, XML MessageMedia, embedded HTML image candidates, normalizer output, raw message XML, intended DB/renderer state, and GetMemberMessages fallback. - No database schema change. V1.0-B02ab - 2026-09-09 - Customer Communications: fixed exact eBay media recovery dropping buyer Question.MessageMedia while looking only at seller response_media. - Exact media repair now routes buyer Question media to incoming turns and seller Response media to outgoing turns. - eBay exchange parser now preserves per-Response media plus image URLs embedded in question/response HTML. - Added read-only per-thread eBay Media Diagnostic modal with local transcript IDs/media, live exact GetMemberMessages results, buyer/seller media separation, and Copy Diagnostic. - Bumped media replay marker to message-media-v4-bidirectional-exact-thread. - No database schema change. V1.0-B02z - Customer Communications database-native eBay thread union and embedded picture recovery V1.0-B02y - Customer Communications eBay Sent-thread binding and seller media recovery - Rebinds Sent-folder replies that older builds placed in seller-only threads back into the buyer/item conversation. - Persists and matches GetMyMessages ExternalMessageID as the eBay conversation key. - Adds multi-source buyer inference for Sent rows: SendToName, RecipientUserID, Dear wrapper, subject hint, external conversation key, and existing incoming context. - Replays known Inbox/Sent details once, repairs existing thread_id/buyer/item/order context, and deletes empty orphan thread shells. - Merges message media during enrichment and uses documented GetMemberMessages Response values only as de-duplicated gap-fill seller turns. - No database schema change. V1.0-B02x - Customer Communications eBay thread reconstruction and message-media recovery - Removes B02w synthetic duplicate buyer rows. - Recovers missing seller history from full GetMyMessages thread snapshots. - Keeps GetMemberMessages as media/metadata only and no longer uses it as a seller-reply source. - Restores exchange-level eBay message pictures even when no standalone Response node is available. - No database schema change. V1.0-B02v - 2026-09-08 - Fixed Customer Communications Sync Messages HTTP 404 by routing the no-reload sync through a dedicated wp_ajax_fct_cc_sync_now_ajax handler instead of AJAX-posting the redirect-based admin-post.php form. - Added sync progress state/spinner and preserved B02s/B02u stable-position and persistent sizing behavior. - Kept admin-post.php sync as the normal no-JavaScript fallback. - No database schema change. V1.0-B02u - 2026-09-08 - Customer Communications: added persistent 9–20px message font sizing with compact A−/slider/A+ control. - Added mouse/pointer draggable folder/thread panel dividers with per-user persistent widths. - UI preferences are stored in WordPress user meta with localStorage instant restore; AJAX screen updates preserve the chosen geometry. - No database schema change. V1.0-B02t - 2026-09-08 - Repaired eBay conversation-turn parsing so each Inbox/Sent MessageID stands on its own bubble. - Hard-stop quoted eBay history at Dear <member>, Previous message, attribution, reply, original/forwarded-message, order-status and item-ID boundaries. - Added protection for quote markers collapsed onto the end of an authored line (for example "Tim Dear skibe-38,"). - Existing stored eBay messages are cleaned at render time; new imports are cleaned before storage/deduplication. - Preserves B02s no-reload Customer Communications workspace and B02q full Inbox/Sent pagination. V1.0-B02s - 2026-09-08 - Customer Communications: rebuilt the message-list row around a master checkbox + per-thread checkbox column with bright blue unread indicators. - Checkboxes use blue selected boxes with white checkmarks; the master checkbox controls every visible row and shows an indeterminate state for partial selection. - Thread thumbnails are rounded squares, open the live eBay item in a new tab, and carry a lower-right Seller Hub edit shortcut that also opens in a new tab. - Replaced the old Re:/message-subject line in the thread list with the actual local eBay order item title, with a clean subject fallback when no order title is available. - Added no-reload AJAX navigation for folders, thread selection, search, Sync Messages, replies, settings saves, and Gmail disconnect while preserving page position, pane scroll positions, workspace dimensions, and checkbox selection. - No database schema change; stable First Class Track/ folder and all B02r sync/conversation repairs are preserved. V1.0-B02r - 2026-09-08 - Customer Communications: normalize each eBay GetMyMessages row to one current conversation turn instead of rendering the quoted full thread inside one bubble. - Strip Dear/member duplicate blocks, Your previous message/history, member IDs, feedback counts, and other eBay wrapper chrome. - Apply cleanup at display time to existing records and before storage/deduplication for new eBay imports. - No database schema change. V1.0-B02q - 2026-09-08 - Customer Communications: fixed missed eBay messages on high-volume accounts by removing the one-page / newest-100 GetMyMessages collection ceiling. - eBay Inbox and Sent now paginate all headers in the configured lookback window using PaginationResult. - Added one-time full Inbox + Sent paginated history backfill for existing installs and automatic re-backfill when lookback days increase. - Existing stored eBay IDs skip redundant body retrieval; detail-batch failures no longer silently advance sync history. - No database schema change. V1.0-B02p - 2026-09-08 - Customer Communications: fixed eBay wrapper metadata leaking into message bubbles when feedback counts contain thousands separators such as (1,149). - Customer Communications: added cleanup for member-on-marker-line + score-on-next-line wrapper variant. - No database schema change. V1.0-B02m - eBay Inbox + Sent synchronization repair * Fetch FolderID 0 and FolderID 1 independently using the existing two-pass GetMyMessages implementation. * One-time Sent backfill for existing B02 installations. * Preserve eBay folder provenance in source_reference. * Avoid duplicate FCT outbound messages when their Sent-folder copy is later returned by eBay. First Class Track V1.0-B02l - Customer Communications now suppresses unrelated WordPress, plugin, theme, updater, telemetry and recommendation admin notices on that page only. - The suppression runs at the end of admin_head and clears admin_notices, all_admin_notices, network_admin_notices and user_admin_notices callbacks for the Customer Communications request. - Added a CSS fallback for standard notice containers that are printed directly instead of through WordPress notice hooks. - FCT Customer Communications own contextual success/error notice remains visible inside the messaging workspace. - No database schema change; stable First Class Track/ folder and B02k activation repair are preserved. First Class Track V1.0-B02k - Fixed stable-folder activation so an existing B02 database is adopted instead of being sent through the heavy historical migration path. - Removed the pre-init dependency on fct_cc_threads_table()/fct_cc_messages_table() from activation and plugins_loaded schema checks; this was capable of being caught as a misleading database migration failure during activation. - Extended current-schema legacy recognition through B02j. - Added a metadata-only B02 installation detector for folder-identity migrations. - Existing B02 activation updates only the schema/release markers; clean installs retain full schema creation and safety verification. - Package root remains permanently First Class Track/. First Class Track V1.0-B02j - Customer Communications now uses a three-pane native messaging workspace: folder/source navigation, searchable thread list, and active conversation. - Added compact product/avatar thread rows, latest-message previews, source/order context, and persistent unread/Needs Reply state. - Added eBay/Gmail/Fahmah/General source navigation plus Sent and Archive views. - eBay notification-wrapper HTML is minimized to the actual customer text when confidently detected. - Preserves B02h fast boot and all prior behavior; no database schema bump. First Class Track V1.0-B02h - Decoupled plugin version from database schema version so ordinary ZIP replacements do not replay the full migration/audit path. - B02-series installs bootstrap the schema marker with a lightweight structural check; full migrations run only when actually required. - Clean installs skip the redundant full per-column definition sweep after dbDelta. - Removed invalid settings-table indexes that referenced nonexistent imbDigitString/order_id columns. - Delayed the first five-minute cron run until five minutes after activation to keep activation responsive. - Added schema boot timing to the FCT trace log. - Preserves B02g and all prior behavior. First Class Track V1.0-B02g - Customer Communications transcript now uses a minimalist left/right chat bubble layout instead of stacked email-style cards. - Incoming messages show a customer initial avatar; outgoing Tim/FCT messages align right. - Per-message source remains explicit but is reduced to a small transport label beside the compact local time. - Added Today/Yesterday/date separators and automatic scroll-to-latest on conversation open. - Reply composer is compact and messaging-style while preserving the existing send routes and thread logic. - Preserves B02f and all prior behavior. First Class Track V1.0-B02f - Shipping-label PDF popups now use a new unique browser window for every print job instead of the reusable "Printing Labels" target. - eBay Orders and manual address printing pre-open the label window during the user's click, preserving browser popup permission across asynchronous PDF generation. - Stale/unfinished placeholder windows are closed before a new job; completed older PDF windows are never reused by later jobs. - If a browser still blocks the PDF popup, the affected row receives a direct clickable shipping-label PDF link instead of silently requiring DevTools. - Legacy upload printing uses the same print-window manager when available, and packing-slip windows also receive unique names. - Preserves V1.0-B02e and all prior behavior. First Class Track V1.0-B02e - Puerto Rico Economy/First-Class imports are no longer rejected solely because order/physical-shipment value exceeds $25. - Added authoritative PR destination helper to the platform import API. - Per-order and combined-shipment $25 checks retain existing behavior for non-PR destinations. - Preserves V1.0-B02d and prior behavior.