=== Harmony 3.0 ===
Contributors: blacktieproductions
Tags: chatbot, lead capture, event pricing, openai, event services
Requires at least: 6.4
Requires PHP: 7.4
Stable tag: 3.64
License: GPLv2 or later

The current Black Tie Productions Event Hero concierge, pricing flow, customer support assistant, and conversation-capture plugin.

== Description ==

Harmony 3.0 preserves the existing Harmony plugin folder and settings while replacing the operating logic with the current rules.

Core features:

* Four opening paths: Get Instant Pricing, Already a Customer, Just Have Questions, and Schedule a Meeting.
* Required pricing intake order: first and last name, cell, email, clickable services, event date, referral source, venue name and city, then event type.
* No guest-count question in the standard flow.
* Deterministic wedding and four-hour social-event pricing. AI cannot alter prices.
* Approved wedding bundle handling and office review for unapproved combinations.
* Custom-pricing routing for schools, corporate events, fundraisers, community events, festivals, public events, unusual productions, and travel outside the regular area.
* Current sold-out-date handling without claiming unverified availability.
* Current ceremony-sound, retainer, balance, travel, access, power, setup, teardown, and service rules.
* Existing-client answers for Client Hideout, planning forms, payments, and final planning meetings.
* Retired 360 Photo Booth handling and alternatives.
* Office email delivery, optional customer email, optional OpenAI answers, optional Twilio, and webhook support.
* WordPress conversation storage, export, privacy export and erasure, retention cleanup, page mode, and desktop launcher mode.
* Legacy [btp_harmony_chat] shortcode compatibility.
* Guided venue suggestions with owner-editable names, cities, and aliases while preserving free typing and the existing service-area engine.

== Installation ==

1. Back up WordPress before replacing a production plugin.
2. In WordPress, open Plugins > Add New > Upload Plugin.
3. Upload harmony-mobile-3_44.zip.
4. Approve replacing the existing Harmony plugin when WordPress asks.
5. Activate Harmony 3.0 if WordPress does not leave it active.
6. Open Harmony 3.0 > Settings and confirm the office email and integrations.
7. Clear WordPress, cache-plugin, CDN, and browser caches.
8. Test one wedding quote, one social quote, one custom-pricing event, and one existing-customer question.

== Shortcodes ==

[harmony_chat]
Full-page Harmony experience.

[harmony_chat mode="floating"]
Floating panel mode.

[harmony_chat title="Get Your Price"]
Custom header title.

[btp_harmony_chat]
Legacy shortcode alias for existing pages.

== Upgrade Notice ==

= 3.0.0 =
Replaces Harmony 2.5.1 logic with the current Harmony 3.0 rules while preserving the existing plugin slug and stored settings.

== Changelog ==

= 3.64 =
* Added an administrator-only one-click office SMS diagnostic under Integrations > Twilio SMS.
* The test uses the same Twilio sender and resolved office alert destination as abandonment and Help Needed office alerts.
* The Twilio settings screen now shows the resolved office alert destination so the live target can be verified before testing.

= 3.63 =
* Mobile calendar year selector is widened so all four year digits remain visible beside the dropdown arrow.
* Completed mobile quotes show a compact “Scroll down for full price details & options” cue directly under the quote heading.
* Mobile event-date placeholder is shortened to `MM/DD/YYYY` while desktop keeps the full example and flexible natural date parsing remains unchanged.
* Venue guidance now makes it explicit that visitors may type any venue name or city, and that city alone is enough for a private residence.
* Venue input placeholder is shortened to `Venue name or city` for better mobile fit.

= 3.62 =
* Fixed city-only venue loops, including Carleton, without making Private Residence the default path.
* Recognized Michigan city entries now lead to the venue-name question; `I Don't Know Yet` and `Private Residence` remain secondary choices.
* Added generic future-proof location recovery for explicit `City MI` entries and repeated city names, plus a one-clarification Help Needed rescue instead of repeated city questions.
* Help Needed rescue sends customer reassurance and office email/SMS, then cancels abandonment.
* Abandonment now waits five minutes of true inactivity and uses a throttled browser activity heartbeat while the visitor is typing, using the calendar, or clicking inside Harmony.
* Office receives both abandonment email and abandonment SMS; customer abandonment SMS remains active, with per-channel retry protection.
* Enabled Month and Year dropdown choices now use solid black text while unavailable past months remain gray.
* Built from Harmony v3.61 with existing pricing, launcher, Back navigation, Admin Test, DJEP/webhook, progress, resume, and quote completion preserved.

= 3.45 =
* Event-date input now shows `MM/DD/YYYY • Example: 07/31/2027` as helpful guidance.
* Natural month-name dates remain accepted, including `July 31 2027` and short-year `July 31 27`.
* The date hint does not force a single format or change quote, pricing, notification, venue, or mobile behavior.

= 3.44 =
* Desktop/laptop blue answer buttons and visitor reply bubbles now use a deeper blue for stronger white-text contrast.
* The new desktop blue is scoped above 700px and excludes Harmony mobile mode.
* Header, progress bar, yellow controls, mobile colors, pricing, quote logic, and notification behavior remain unchanged.

= 3.43 =
* Desktop/laptop readability pass for chat bubbles and input placeholder.
* Mobile typography and layout remain unchanged.

= 3.42 =
* Smarter natural venue/city parsing, including Bridgeport and saved-venue matching without requiring a dropdown click.
* Venue corrections replace unresolved location text instead of appending conflicting city fragments.
* Post-quote FAQ answers immediately restore the active quote instead of leaving the visitor in a question-only loop.
* Known service pricing questions use the deterministic quote engine for instant standalone and bundle totals.
* Wedding DJ customers asking about Photo Booth now receive the current $795 Photo Booth rate, $1,995 DJ + Photo Booth bundle total, and $600 add-on difference, with a one-click Add Photo Booth action.
* Removed duplicate post-quote ending prompts while preserving the quote card and normal completion flow.
= 3.40 =
* Adds administrator-only Quick Test controls on the Harmony quote page.
* Generates sequential two-word names such as Harmony Test23 and routes customer communication to Craig at 810-691-0583 and craig@blacktieproductions.com.
* Quick Fill stops at the final send step; Full DJEP Test completes the normal Harmony delivery and integration process.
* Adds row checkboxes, Select All, Delete Selected, Print Selected, and individual Print controls to Conversation History.
* Changes automatic submission retention to 60 days.
* Preserves pricing, venue search, quote flow, customer messaging, abandonment, and integration behavior.

= 3.39 =
* Enlarges all standard blue answer-button labels to 15px with heavier 950 weight on desktop and laptop screens.
* Applies the improvement beyond referral choices while leaving yellow action buttons and instructional hints unchanged.
* Raises standard desktop answer buttons to a 40px minimum height with roomier padding and line height.
* Leaves every mobile font size, layout, wrapping, keyboard behavior, and viewport rule unchanged.
* Preserves venue search, venue-ID handling, progress, pricing, quote logic, notifications, abandonment, and completion behavior.

= 3.38 =
* Improves referral-source button readability on desktop and laptop screens only.
* Increases desktop referral labels to 13px with slightly taller tap targets and roomier padding.
* Leaves all mobile font sizes, columns, spacing, keyboard behavior, and viewport rules unchanged.
* Preserves venue search, progress, pricing, quote logic, notifications, abandonment, and completion behavior.

= 3.37 =
* Carries DJEP venue IDs from the copied Ready to Book venue list through Harmony venue selection, session state, saved leads, and completed webhook payloads.
* Sends the exact DJEP fields event_location_id, event_location_name, event_location_city, and event_location_state while keeping manual venues at ID 0.
* Adds server-side venue/ID verification so browser-supplied IDs cannot be paired with a different venue.
* Shows the number of saved venues that include DJEP IDs in Harmony settings.
* Preserves the independent venue copy, progress bar, pricing, quote flow, notifications, abandonment, and completion behavior.

= 3.36 =
* Rebuilt venue search using a Harmony-owned copy of the Ready to Book venue directory.
* Copies current Ready to Book venues once during the update, with no public runtime link, page scraping, or automatic synchronization.
* Replaces the failed four-entry demo directory while preserving substantial owner-edited Harmony directories.
* Adds a manual “Copy Current Ready to Book Venues” button in Harmony settings.
* Includes the complete 48-entry Ready to Book 1.8.30 fallback directory.
* City searches such as LAPEER now show compact matching venues; no-match searches disappear quietly and still allow manual entry.
* Preserves pricing, progress, quote logic, service-area handling, notifications, abandonment, and DJEP behavior.

= 3.33 =
* Added more visual separation between the final quote action buttons and the message composer on desktop and mobile.
* Added an accessible searchable venue picker inside Harmony's existing venue-and-city question.
* Selecting a saved venue submits its official venue name and city through Harmony's existing parser and service-area review.
* Visitors can still type any venue, private residence, city, general area, or undecided response when no saved venue matches.
* Added an owner-editable venue directory in Harmony settings using venue name, city, and optional aliases.
* Added responsive keyboard navigation, touch selection, no-match guidance, reduced-motion handling, and high-contrast support.
* Preserved the quote engine, pricing, notifications, abandonment behavior, completion behavior, and progress milestones.

= 3.32 =
* Added an accessible milestone progress indicator inside the active Harmony conversation.
* Added conditional-path progress for quote, ceremony, sold-out, travel-review, office-quote, existing-customer, meeting, and human-handoff routes.
* Progress is held at 99 percent until the normal server-confirmed completion action succeeds.
* Restart resets progress; resumed browser and server sessions restore the saved high-water mark.
* Migrates unfinished browser sessions from the approved 3.31 baseline key.
* Preserved the mobile grid slot formerly occupied by the thin strip so questions and buttons retain their existing layout.
* Corrected Holiday events to use the existing office-quote event family, matching the required custom-event path.

= 3.0.23 =
* DJ meeting questions now answer timing or scheduling instructions before displaying the DJ calendar buttons.
* Final meetings are described as usually 7 to 12 days before the event, with scheduling available up to 30 days beforehand.


= 3.0.22 =
* Fixed iPhone keyboard viewport shifting that could hide Harmony's header, current question, or input area.
* Expanded mobile option trays so available choices are not clipped when screen space is available.
* Ceremony questions can interrupt quote intake, collect the ceremony location, and resume the exact unfinished step.
* Ceremony additions return the complete updated price quote and normal quote actions.

= 3.0.18 =
* Removed customer-facing office-confirmation language from multi-service quote cards, texts, and emails.
* Added regression protection for wedding and social multi-service quotes.

= 3.0.17 =
* Availability confirmation now repeats the full formatted event date, including weekday, month, day, and year.
* Approved venues pass silently to the event-type question without announcing internal service-area status.
* Removed the customer-facing office-confirmation boilerplate from instant quotes and customer texts.
* Customer quote texts now include the configured Meet & Greet scheduling link.

= 3.0.16 =
* Restored venue name and city as a required quote field.
* Restored service-area validation before instant pricing.
* Date availability appears after the referral answer, then Harmony asks for venue and city.
* Inside-area locations continue to event type and pricing. Outside or unconfirmed locations receive travel review.
* Added regression tests that prevent location from being removed again.

= 3.0.15 =
* Preserves enabled Twilio settings during plugin upgrades.
* Repairs the accidental 3.0.14 Twilio shutoff when complete saved credentials are present.
* Keeps completed-quote and incomplete-quote customer follow-up texts connected.
* Confirms on the quote card that the quote will also be texted when Twilio is enabled.
* Restored the approved quote intake order: name, cell, email, clickable service choice, date, referral source, event type.
* Removed venue and city from the customer-facing instant quote path.
* Announces date availability after the referral answer.
* Adds a three-second thinking message and a 3.5-second calculation pause before the quote appears.
* Continues to skip fields already provided by the visitor.

= 3.0.12 =
* Vague starters such as “I have questions” now ask for the actual question instead of prematurely handing the visitor to the office.
* Added contextual follow-up prompts for vague DJ, Photo Booth, music, and planning questions.
* Improved statement-style question detection for phrases such as “I want to know” and “I was wondering.”
* Renamed admin-facing lead terminology to Harmony Conversations, Non-Quote Chat, Incomplete Quote, Customer Support Chat, and Meeting Chat where appropriate.

= 3.0.11 =
* Locked special-dance and special-song guidance to the correct Client Hideout planning-form fields.
* Clarified that clients type song titles and artists and may paste YouTube links, but never upload music files.
* Locked music requests to Must Play, Possible Play, Do Not Play, and spot-list fields in Client Hideout.
* Prohibited separate music lists by email, text, handwritten notes, or uploaded files.

= 3.0.7 =
* Meeting buttons now appear only when relevant instead of after every answer.
* The unknown-DJ path now directs customers to Client Hideout and includes a clickable office phone button.

= 3.0.6 =
* Every generic Schedule a Meeting button now opens Office Crew or My Assigned DJ choices.
* The same chooser works from the opening screen, question mode, customer support, and after a quote.

= 3.0.5 =
* Existing customers can choose Office Crew or My Assigned DJ when scheduling a meeting.
* Added editable personal Calendly links for the current DJ roster.
* Added a Not sure / DJ not listed office fallback.
* Updated the office meeting URL to the main Calendly page.

= 3.0.4 =
* Removed the four shortcut buttons after Already a Customer is selected.
* Existing clients can type their question immediately.

= 3.0.3 =
* Renamed Schedule a Quick Chat to Schedule a Meeting.

= 3.0.2 =
* Locked the outdoor-generator policy into deterministic FAQ routing.
* Clarified that venue power is not required when Black Tie Productions is told in advance to bring its generator.
* Prevented generator questions from falling through to AI-generated answers.

= 3.0.1 =
* Fixed FAQ routing so questions such as “How much space does the DJ need?” are answered instead of starting pricing intake.
* Made support and known operational questions take priority over broad pricing keywords.
* Added service-specific space answers for DJ and Photo Booth questions.

= 3.0.0 =
* Rebuilt the intake, pricing, support, knowledge, notification, and quote-display logic around the current Harmony rules.
* Added the current opening menu and exact intake order.
* Removed guest count from the lead model and pricing flow.
* Restored current four-hour social pricing and restricted unapproved bundle totals.
* Added safe custom pricing, travel, short-notice, and agreement routing.
* Updated known sold-out dates and retired-service handling.
* Added current venue space, setup, teardown, access, power, and planning guidance.
* Disabled abandoned-quote SMS while Twilio is disabled.
* Preserved existing settings, lead storage, integrations, shortcodes, and WordPress update compatibility.

= 3.0.11 =
* Added optional non-quote transcript email reports and unified Conversation History.
* Office Calendly opens in the current page.
* Improved Photo Booth meeting routing and replaced office scheduling with a direct call option.
