# Changelog - Yatoon Restaurant Menu & Online Ordering Pro

## 3.3.0 - 2026-09-03

### Redesigned
- Rebuilt the guest-facing menu around a compact, brand-aware restaurant header, clearer service information, a richer featured-food rail, easier menu scanning, and polished item, cart, checkout, account, and confirmation surfaces.
- Added a cohesive responsive design system with merchant-colour tokens, warm neutral surfaces, clear focus states, larger touch targets, reduced-motion support, and improved mobile category navigation.

### Improved
- Removed the optional account interruption after the first item is added. Sign-in remains available through normal account entry points, while required-login restaurants keep their checkout gate.
- Checkout errors now appear in the visible checkout alert, mark the affected field, move focus to it, and scroll it into view.
- Mobile category headings remain visible so guests keep their place while scrolling a long menu.
- Added dimensions to menu images and priority loading to the first featured dish to reduce layout shift and improve perceived loading speed.
- Added accessible expanded/hidden state synchronization to category controls and the cart drawer.
- Merchant-selected accent and hero colours now receive an automatically readable foreground colour.
- Public menu inputs now opt out of browser/password-manager autofill and clear accidental admin sentinel values.

### Fixed
- Featured Items now falls back to a useful heading when the saved custom label is blank.
- Corrected the readme stable tag so it matches the packaged plugin version.

## 3.2.0 - 2026-07-18

### Added
- Direct Square Web Payments SDK and Payments API checkout for cards and Apple Pay, without WooCommerce.
- Square sandbox/production settings, setup-wizard fields, signed webhook recovery, and payment idempotency.
- Restaurant Manager, Counter Staff, and Kitchen Staff roles with least-privilege operations access.

### Improved
- Shared provider-verified paid-order finalization across payment gateways.
- Added an ISO currency code setting and removed Stripe's hard-coded USD currency.
- Normalized invalid front-end asset encoding to UTF-8.

### Security
- Square totals are recalculated on the server and compared to the amount captured by Square.
- Added buyer verification support and constant-time Square webhook HMAC validation.

### Fixed
- "Track order" no longer opens a blank page showing "0": the link was built with get_permalink() inside an AJAX request (no current-post context, so it silently returned false), which fell back to the raw admin-ajax.php request URL. Order tracking links are now built through one shared helper (yatoon_order_tracking_url()), used by both cash and card-paid orders, with a sane fallback to the ordering page if a dedicated status page was never set up in the wizard.
- Checkout Service/Details/Pay progress pills had off-center text once their height was increased without re-centering; they're also now marked non-interactive since they're a status indicator, not a button.
- Body-scroll locking for the drawer/checkout/item-modal/account panel now uses a stack instead of a single flag, so closing an inner panel (e.g. the item modal opened from within the cart drawer) can no longer strand page scrolling locked by wiping out an outer panel's lock state. Scroll lock is also force-cleared on every fresh page load as a safety net.
- Login/create-account and checkout fields now scroll into view once the mobile keyboard finishes opening, instead of staying hidden behind it.

## 3.1.3 - 2026-07-17

### Security
- Fixed a CSV/formula-injection issue in the Orders CSV export: customer-supplied fields (name, phone, email, notes, delivery address, table label, items) are now neutralized so a crafted order can't execute a formula when the export is opened in Excel, Numbers, or Sheets.
- The PayPal webhook endpoint now verifies PayPal's transmission signature (via a Webhook ID configured in Settings) before acting on an event, instead of trusting any POST sent to the public webhook URL.

### Fixed
- Added the missing Stripe (live + test keys, webhook secret), PayPal (live + sandbox client ID/secret, webhook ID), and Twilio SMS (SID, token, from-number) fields to the Settings screen -- these could be toggled on but had no way to be configured in 3.1.2.
- Updated the bundled Freemius SDK to 2.13.4.
- Resolved all WordPress Plugin Check findings: removed the UTF-8 BOM from the main plugin file, escaped a wp_die() message, added a translators comment, trimmed readme.txt to 5 tags, and annotated a few reviewer false-positives (guarded WP 7.0 AI Client calls, JSON field already sanitized one line down) so they don't reappear as unexplained ignores.

## 3.1.2 - 2026-07-16

### Improved
- Added local cart recovery so customers can refresh or return without losing an in-progress order.
- Streamlined checkout by hiding coupons, tips, and notes behind a compact expandable control.

- Mobile cart bar now sits flush against the bottom edge instead of floating above the menu.
- Polished the customer-facing ordering UI with cleaner menu cards, sticky search/category controls, tighter bottom cart actions, and more native-feeling item and checkout sheets.

- Polished the WordPress admin into a cleaner card-style operations workspace.
- Redesigned the Kitchen Display as an app-style live order board with metrics, lanes, larger tickets, and clearer action buttons.
- Added configurable currency symbol, position, and decimals.

### Fixed
- Coupon entry no longer triggers front-end JavaScript errors when a code is edited or rejected.




## 3.1.0 - 2026-06-13

### Improved
- Category navigation now keeps active labels readable while honoring the saved theme color.
- Category menu opens as a lightweight in-page popover on desktop instead of a blurred full-screen overlay.
- Template colors now apply only when saved from settings, preventing stale industry template colors from overriding manual theme choices.
- Cleaned settings copy and menu layout controls for a tidier admin experience.

## 3.0.9 - 2026-06-13

### Improved
- Polished the customer-facing menu UI with softer search, cleaner AI assistant styling, pill-style category navigation, and more refined item cards.
- Adjusted desktop and mobile spacing, image sizing, category active states, and add-button contrast for a more app-like ordering flow.

## 3.0.6 - 2026-05-23

### Added
- Added AI provider priority and model choices for Google Gemini, OpenAI GPT, and Anthropic Claude.
- Added an editable AI privacy note below the customer AI input.

### Improved
- Gemini Flash is the default first AI choice, with OpenAI and Claude available as preferred providers or fallbacks.

## 2.4.9 - 2026-05-21

### Improved
- Added Stripe Express Checkout support so Apple Pay and Google Pay can appear above the card form when eligible.
- Added clearer wallet checkout layout with an express checkout divider.

## 2.4.8 - 2026-05-21

### Improved
- Replaced browser clear-cart and PayPal error dialogs with app-style in-page feedback.
- Improved cart cleanup behavior so totals, coupon state, and payment elements refresh immediately after clearing.

## 2.4.7 - 2026-05-21

### Improved
- Added clearer checkout and payment error recovery with a visible alert above order details.
- Improved the order confirmation sheet with an order-number summary card.
- Added a test-order readiness step so merchants know to place one order before launch.

## 2.4.6 - 2026-05-20

### Improved
- Added smart prep-time estimates based on cart quantity and different dishes.
- Scheduled-order minimum time now uses the same smart prep estimate.
- Added admin controls for base prep time, different-item increments, and same-item increments.

## 2.4.5 - 2026-05-20

### Improved
- Improved the order success screen with pickup, total, and order tracking details.
- Added Stripe and PayPal tracking links to successful paid orders when an order status page is configured.
- Fixed the Stripe webhook URL shown in admin/setup guidance.
- Shortened the admin launch guidance and added a real-payment test checklist.
- Enabled online tip options for Stripe card, Apple Pay, and Google Pay checkout.

## 2.4.4 - 2026-05-20

### Added
- Added front-end Stripe Payment Element checkout for card payments.
- Added customer-facing Card / Apple Pay / Google Pay payment selection when Stripe is configured.
- Completed paid-order confirmation from Stripe PaymentIntent to Yatoon order records.
- Added clearer wallet messaging for Apple Pay and Google Pay availability.

## 2.4.3 - 2026-05-20

### Improved
- Added mobile app-style polish for product sheets, checkout sheets, bottom cart bar, category pills, and menu item cards.
- Improved mobile touch density, safe-area spacing, and scroll behavior for iPhone-style browsers.
- Tightened mobile modifier typography again so special-request choices feel lighter and more native.

## 2.4.2 - 2026-05-20

### Fixed
- Removed the desktop cart count badge from the template so no black corner dot can appear.
- Further reduced special-request option label and choice typography for a cleaner compact modal.
- Clarified coupon fallback messaging when customers type a coupon that is not applied or invalid.
- Bumped front-end asset versions so stores receive the cart and modifier refinements immediately.

## 2.4.1 - 2026-05-20

### Fixed
- Hid the bottom cart bar on desktop and kept it mobile-only after items are added.
- Added responsive re-checking for resize and orientation changes so the cart bar cannot remain visible when switching from mobile to desktop width.
- Added a compact desktop cart pill with item count and total, while hiding duplicate mobile cart controls.
- Improved the empty cart drawer with a cleaner empty state and removed disabled checkout controls when empty.
- Made industry template selection clearer in admin with current-template guidance and live selected-card highlighting.
- Removed the duplicate desktop cart badge that could appear as a black corner mark.
- Tightened special-request option typography and spacing for a cleaner modal.
- Added checkout AJAX recovery so coupon and order buttons always show feedback and reset after request failures.
- Made coupon handling non-blocking so invalid or un-applied coupon text cannot prevent a valid order from being placed.
- Bumped the plugin version to refresh front-end CSS and JavaScript assets.

## 2.4.0 - 2026-05-19

### Security
- Added Freemius-backed entitlement checks for Pro-only capabilities.
- Locked payment gateways, SMS, customer accounts, loyalty, follow-up campaigns, delivery/dine-in, reports, QR tables, CSV export, and cloud print behind active Pro licensing.
- Added request rate limiting for ordering, cart previews, reservations, OTP, account auth, and payment endpoints.
- Hardened free/pro downgrade behavior so stored premium credentials and settings cannot activate in the wrong edition.

### Fixed
- Removed a duplicate checkout payload function that could trigger customer-name alerts when adding items to the cart.
- Hid SMS phone verification unless SMS is enabled, made email the required contact field, simplified pay-at-pickup wording, reduced the mobile bottom checkout button, and prevented mobile sticky search/category overlap.
- Kept phone number collection available for restaurant follow-up, and changed tips to online-payment-only percentage presets with a custom option.
- Made dashboard readiness tasks clickable, hid single-choice pickup/payment rows, added an Edit Cart action during checkout, and changed single-choice option controls to radio-dot styling.
- Renamed default Spice Level wording to Spicy Level, including existing saved preference display.

### Added
- Added industry storefront templates for Apple Minimal, Sushi Bar, Chinese Takeout, and Cafe & Bakery menu experiences.

## 2.3.10 - 2026-05-19

### Changed
- Refined the front-end ordering UI with a cleaner Apple-style top bar, search, category navigation, item cards, modals, and checkout controls.
- Polished the admin settings, menu item, and orders screens with clearer cards, better form spacing, stronger mobile behavior, and a sticky save action.

## 2.3.9 - 2026-05-19

### Changed
- Upgraded the front-end cart entry into an app-style bottom order bar with cart summary, badge count, total, and direct checkout action.
- Improved mobile cart drawer polish and responsive typography so long menu names and buttons adapt better across screen sizes.

## 2.3.8 - 2026-05-13

### Fixed
- QR table links now persist the table label through checkout, force the order into dine-in mode, and show the table clearly in admin orders and printed tickets.
- PayPal-paid orders now preserve QR table metadata in the saved order record.

## 2.3.7 - 2026-05-13

### Changed
- Favorite hearts now use an icon-only style without the circular background.

## 2.3.6 - 2026-05-13

### Fixed
- Favorite heart buttons are now hidden by default at the CSS layer and only shown after customer sign-in.

## 2.3.5 - 2026-05-13

### Fixed
- Favorite hearts now stay hidden for signed-out visitors and WordPress administrators, and appear only for customer accounts.

## 2.3.4 - 2026-05-13

### Added
- Productized admin launch dashboard with readiness progress, key setup actions, and stronger restaurant-focused positioning.
- Subtle front-end trust badges for direct restaurant ordering, secure payments, and order updates.

### Changed
- Updated readme positioning to better explain Pro value for independent restaurants.

## 2.3.3 - 2026-05-13

### Fixed
- Prevented browser username autofill from appearing in the front-end menu search box.

## 2.3.2 - 2026-05-13

### Changed
- Favorites hearts are now hidden for signed-out visitors and shown only for signed-in customers.

### Fixed
- Favorite button click handling now initializes independently from the account panel so saved items update reliably after login.

## 2.3.1 - 2026-05-12

### Changed
- Replaced text placeholders in the pickup banner and search box with inline SVG icons.
- Refined pickup notice, success confirmation, and mobile cart drawer styling for a cleaner Apple-inspired checkout flow.
- Improved admin Menu Items and Orders screens with card-style tables, tighter spacing, image polish, and clearer action groups.

## 2.3.0 - 2026-05-12

### Added
- Apple-inspired front-end polish with cleaner cards, softer shadows, rounded controls, and mobile cart improvements.
- Operations dashboard cards for today's sales, open orders, ordering status, payments, delivery, kitchen print, and Google Business setup.
- Growth tools for loyalty points, birthday coupon planning, delayed follow-up email campaigns, abandoned-cart campaign planning, and Google Business profile prompts.

### Fixed
- Stripe paid-order finalization now clears slot-capacity cache after `$pickup_time` is defined.
- PayPal paid-order finalization now clears slot-capacity cache and runs shared order follow-up processing.

### Changed
- README and plugin metadata now present PayPal consistently as a Pro payment method.

## 2.2.0 - 2026-05-11

### Added
- **PayPal Checkout** — Full PayPal Orders API v2 integration with Smart Button, sandbox/live credentials, webhook fallback, amount verification, and idempotent order creation. Configured under Settings → PayPal.
- **Modifier Visual Editor** — Admin item edit page replaces the raw pipe-delimited textarea with a drag-friendly group/option builder. Each group supports name, required toggle, max-choices, per-option price add-ons, and add/delete options in-line.
- **QR Code enhancements** — "Print all cards" triggers browser print with print-optimized CSS (3-column layout, other admin UI hidden). "Download all as ZIP" triggers individual PNG downloads per table. Each card also has its own "Download PNG" link.
- **Reorder note** — "Order again" button (already in account dashboard) now correctly reconstructs modifier selections including per-option prices.

## 2.1.0 - 2026-05-11

### Added
- Visual row editors for locations, delivery zones, closed dates, reservation slots, and QR tables.
- Reservation capacity per time slot and location.
- Reservation request, confirmation, and cancellation email templates.
- Optional cloud print webhook for thermal/cloud print bridge integrations.
- WordPress.org listing screenshot asset pack.

### Changed
- Front-end menu now uses a card block layout for easier scanning and selection.

## 2.0.0 - 2026-05-11

### Added
- Table reservation shortcode, reservation table, and admin confirmation workflow.
- Multi-location setup with menu item visibility and front-end location switching.
- Report date filters, daily sales chart, top item revenue, and range-based CSV export.
- Browser auto-print helper for new kitchen tickets.

### Changed
- Refined front-end and admin UI for cleaner restaurant operations.

## 1.9.5 - 2026-05-11

### Added
- Closed dates / holiday controls with custom customer-facing messages.
- CSV export for all orders and last-30-day reports.
- Printable kitchen/order tickets from the Orders screen.

## 1.9.0 - 2026-05-11

### Added
- Delivery zones with address matching, per-zone fee, minimum order checks, and ETA labels.
- QR Tables admin page for printable dine-in cards and table-aware menu links.
- Reports dashboard for 30-day gross sales, order count, average order, fulfillment mix, status counts, and top items.
- Table and delivery zone context on kitchen display cards.

## 1.8.0 - 2026-05-11

### Added
- Setup Wizard for first-run configuration and launch checklist.
- Automatic creation of Order Online, Kitchen Display, and Order Status pages.
- Full Pro payment setup UI for Stripe test/live keys, webhook signing secret, Alipay, and WeChat Pay.
- Twilio SMS setup inside the wizard and Settings.
- Kitchen alert settings are now visible and saved from Settings.

### Changed
- Unified Free and Pro package versioning at 1.8.0.
- Removed Free-only Upgrade to Pro menu and locked-payment messaging from the Pro package.
- Updated onboarding copy so paid users can configure license-dependent features without confusion.

### Fixed
- Pro payment settings that existed in code but had no admin fields.
- Plugin Check database query findings for custom plugin tables.
- Order and kitchen notification settings that were registered but not shown in Settings.

## 1.7.0 - 2026-05-11
- Improved mobile app-style ordering UI with sticky restaurant header, category pills, bottom cart CTA, and bottom-sheet cart.
- Added safer order tracking with secure tracking keys and contact verification fallback.
- Added SMS OTP verification flow, login/register rate limits, scheduled-order validation, pause ordering controls, and time-slot capacity checks.
- Cleaned Plugin Check warnings for production readiness.

## 1.6.2
- Added item tag badges, hero promotional banner, visual coupon manager, and Twilio settings.
- Fixed cart quantity buttons for items with modifiers.
- Fixed required modifier validation in the item modal.

## 1.5.0
- Initial Pro release with Stripe and Twilio support.
