=== maca Restu Pro ===
Contributors: maca
Donate link: https://maca.se
Tags: menu, restaurant, pdf, qr-code, food
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.14.15
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Display restaurant menus with categories, PDF/image files, scheduling, QR menu page, and Gutenberg block. Pro adds online menu, guest ratings,...

== Description ==

maca Restu helps restaurants and cafes publish menus on WordPress with categories, thumbnails, PDF or image files, and smart scheduling.

**maca Restu Pro** includes everything in the free plugin, plus premium features with an active subscription:

**Pro features (subscription required)**

* **Online menu** - register individual dishes instead of uploading PDF/image menus
* **Dish categories & allergens** - custom categories; EU default allergens (SV/EN) on install; checkboxes per dish (*italic* display on menu)
* **Menu footer** - allergy, VAT (number, rates), contact (phone, email, website with icons), optional alcohol age limit (website, QR, print)
* **Dishes** - title, description, optional image, price (incl. VAT), VAT code (food/alcohol), active/inactive
* **Campaign menus** - create campaign sections (e.g. Summer menu), schedule start/end date+time+weekdays, and choose included dishes
* **Printable menu** - paper/PDF layout from **Dishes -> Print menu**
* **Drag-and-drop sorting** - reorder dishes per category in admin (no manual sort numbers)
* **Category filters & clickable images** - compact optional filters on menu/QR; tap dish images for lightbox
* **Exclusive campaign mode** - when an active campaign exists, show only campaign dishes (toggle in Settings)
* **Menu language switcher** - local / English flag buttons on website and QR (uses WordPress site language)
* **Dual-language display** - optional show both languages at once (e.g. `Beef / Biff`)
* **Guest dish ratings** 1-5 stars per dish on website and QR page
* **Table ordering** - guest cart with quantities and notes; guest screen, waiter page (unit price + line sum), and/or **kitchen KDS** (Kanban board on laptop/iPad, staff PIN)
* **Table Reservation** - guest table reservations via shortcode or block; custom button and form title per language; tables, opening hours, exceptions; email confirmations; **waitlist** when fully booked (guest email + manual staff entry); **activity log** for staff changes; **booking host** role for limited wp-admin access
* **Info hub** - bilingual news and events; list or month calendar; iCal subscribe feed; optional Facebook/Instagram publish with your own Meta app
* **Site chatbot (Chatt)** - OpenAI BYOK, local index of menu/hours/events/booking rules; floating widget or `[maca_site_chat]`; booking button and page links in answers
* **Order status & add-ons** - guests see live kitchen progress; order more during the visit; **Guest QR** on staff screens lets guests scan to restore order status on a new device
* **Guest payments** - **Pay online** (Stripe) or **Pay with server**; pay **at order** or **after meal**; optional **tips**; optional **email order confirmation** (spec + VAT, not stored, not official receipt); **Payment history** and CSV in admin; staff see payment details on waiter/kitchen screens
* **QR per table** - print QR codes with table number pre-filled (`?bord=`)

**Included in Pro plugin (no subscription required)**

* **Backup & restore** - export all plugin data and media as ZIP, daily automatic backups, retention, import

**Free / core features (no license required)**

* Menu categories with optional thumbnail images
* Upload menus as PDF or image (drag & drop or media library)
* Schedule by date range, weekdays, and daily time windows
* Website shows published menus for browsing; QR page shows only live menus
* Shortcode `[maca_menu_list]` and Gutenberg block **maca Restu menu list** (optional single-category filter in PDF/image mode)
* Pro shortcodes/blocks: `[maca_table_booking]`, `[maca_opening_hours]`, **maca Table Reservation**, **maca Opening hours**
* Short QR URL (e.g. `/qrmeny/`) with printable QR codes
* PDF rendering with bundled PDF.js (HTTPS-friendly)
* Inline, popup, or new-tab display modes
* Optional menu title and serving-hours notice on the website
* Close button on website menus (similar to QR view)
* **Menu preview** - pick date/time and compare website vs QR visibility
* **Duplicate menu** - copy an existing menu (file + schedule) in one click
* Compact schedule summary in the Menus list
* Swedish and English translations

**Author:** [Maca Development](https://maca.se)

**Privacy:** On activation, deactivation, and uninstall, the plugin sends your site URL, plugin version, WordPress version, PHP version, and locale to Maca at `https://api.maca.se/v1/restu/events.php` so we can improve the plugin and count active installations. If you choose to send deactivation feedback, your selected reason and optional comment are included. No menu files, dishes, categories, or visitor data are transmitted.

== Installation ==

1. Upload the `maca-restu-pro` folder to `/wp-content/plugins/` (inside the release ZIP)
2. Activate the plugin through the **Plugins** screen in WordPress
3. Deactivate and delete the free **maca Restu** plugin if it was installed
4. On first visit to wp-admin, open **maca Restu -> Terms & Privacy**, read the Terms of Use and Privacy Policy, and accept both to activate the plugin
5. Follow **maca Restu -> Getting started** (step-by-step wizard; save and continue later anytime)
6. Create categories and menus (PDF/image mode), or choose **Online menu (Pro)** in the wizard or under **Settings** with an active subscription
7. Add the shortcode `[maca_menu_list]` to a page or use the **maca Restu menu list** block

Database tables are created automatically on activation.

**Recommended:** Set your site timezone under **Settings -> General** so scheduling uses the correct local time. Use HTTPS for **WordPress Address** and **Site Address** when serving PDF menus.

Connect a license under **maca Restu -> Subscription** to unlock Pro features.

**Pro pricing:** annual only **499 SEK/year** through **31 August 2026**, then **799 SEK/year** from **1 September 2026**. No lifetime. [maca.se/restu-pro/](https://maca.se/restu-pro/)

== Frequently Asked Questions ==

= How much does maca Restu Pro cost? =

Annual license only: **499 SEK/year** through **31 August 2026**, then **799 SEK/year** from **1 September 2026**. Subscribe on maca.se or activate an **ML-PRO-** key. No lifetime licenses.

= How do I reorder dishes? =

Go to **maca Restu -> Dishes -> Reorder dishes**. Drag dishes within each category; order saves automatically. New dishes are added at the end of their category.

= How does table ordering work? =

Enable **Guest order list** under **Settings** (dish mode). Guests tap **Add** on dishes, review the cart, and send the order. Choose delivery mode: show on guest device only, or send to waiter and/or kitchen staff pages (PIN protected). Optional guest order status shows progress after submit.

= How do I set up guest payments? =

Enable **Guest order list** with **prices** on dishes. Open **maca Restu -> Payments**: allow **Pay at table** (no Stripe required) and/or **Stripe checkout** (API keys + webhook). Choose **when** guests can pay at order or after the order is served. Guests pick **Pay online** or **Pay with server** on the order status screen; staff confirm manual payments with **Mark paid**. See **Payments Setup guide** for Stripe Dashboard steps. This is separate from your **Subscription** on maca.se.

= How do I set up Stripe or Swish for guest payments? =

Same as above. **Stripe** cards often work for international guests; **Swish** via Stripe or direct Handel is mainly for Swedish Swish users.

= How do I print a QR code for a specific table? =

Under **maca Restu -> QR Codes**, enter a **Table number** before opening the print page. The QR link includes `?bord=` so the table is pre-filled when guests order.

= How do I connect Facebook and Instagram for Info hub? =

Open **maca Restu -> Info hub -> Settings** and follow **Setup guide: Facebook & Instagram**. You need a Meta Developer app (Page + Instagram use cases), your App ID/Secret under **Social media**, and a linked Instagram Business account. News and events can be published to Facebook/Instagram when you check those channels on save (Instagram requires an image).

= How do backups work? =

Under **maca Restu -> Backup**, create a manual ZIP export or enable daily automatic backups. Restore by uploading a backup ZIP. No subscription required.

= How do I use the online menu (Pro)? =

Activate a Pro license under **Subscription**, then go to **Settings** and choose **Register dishes in the plugin (Pro)**. Manage **Dish Categories**, **Allergens**, and **Dishes** in the admin menu. The shortcode and QR page show the full dish list grouped by category.

= How do allergens work? =

On activation, ten standard EU allergens are created automatically with **Swedish and English names** (Gluten, Milk, Egg, Fish, Shellfish/Skaldjur, Peanuts/Jordntter, Nuts/Ntter, Soy/Soja, Celery/Selleri, Mustard/Senap). The guest menu shows the label matching your site language. You can edit or add allergens under **Allergens**. When editing a dish, check the allergens that apply they appear in italics under the description.

= How do I print the online menu on paper? =

Go to **maca Restu -> Dishes -> Print menu**. A print-friendly page opens with all active dishes grouped by category and the menu footer. Use **Print / Save as PDF** in the browser.

= How does the menu footer work? =

Under **Settings** (dish mode), enable **Menu footer** and fill in restaurant name, address, phone, email, and website (defaults to your WordPress site URL if website is empty). Under **Settings -> Restaurant**, set VAT number, service type (dine-in or takeaway), and VAT rates. Phone, email, and website are shown with small icons. Standard texts cover allergy information and VAT; enable **Alcohol service** for an age-limit notice. The footer appears at the bottom of the website menu, QR page, and printable menu.

= How do I show menus on a page? =

Add `[maca_menu_list]` to any page or post, or insert the **maca Restu menu list** block in the block editor (category **maca Restu**). In PDF/image mode the block can show all categories or a single category.

= How does table reservation work? =

Enable **Table Reservation** under **Settings** (Pro subscription). Configure tables, opening hours, and exceptions under **maca Restu -> Table Reservations**. Add `[maca_table_booking]` or the **maca Table Reservation** block to a page. Guests submit a request; you confirm in admin and both parties receive email. Show weekly hours with `[maca_opening_hours]` or **maca Opening hours**.

= How does scheduling work? =

Each menu can have a start/end date, selected weekdays, and optional daily start/end times. On the website, visitors can browse published menus; a yellow notice can show serving hours when a menu is outside its live window. The QR menu page only lists categories and menus that are live right now.

= What is the QR menu URL? =

After activation, guests can open `/qrmeny/` on your site (slug can be changed in **maca Restu -> Settings**). Generate and print QR codes under **maca Restu QR Code**.

= Does the plugin work with HTTPS? =

Yes. PDF URLs are normalized to HTTPS when your site uses SSL, and PDF.js is bundled in the plugin.

= How do I uninstall completely? =

Deactivate and delete the plugin from **Plugins**. `uninstall.php` removes database tables and plugin options.

== Screenshots ==

1. Category management with thumbnails and sort order
2. Menu edit screen with scheduling (dates, weekdays, daily times)
3. Frontend category buttons and menu display
4. QR menu page settings and printable QR code

== Changelog ==









= 1.14.15 =

* (add release notes)
= 1.14.14 =

* (add release notes)
= 1.14.13 =

* (add release notes)
= 1.14.12 =
* Plugin Check: Hub table row counts use an allowlisted table name plus `esc_sql()` (DirectDB.UnescapedDBParameter).

= 1.14.11 =
* Gutenberg menu block category picker (PDF/image mode) and Plugin Check fixes same release content as 1.14.10, packaged for distribution.

= 1.14.10 =
* Gutenberg menu block (PDF/image mode): choose all categories or a single category in the block editor.
* Plugin Check: translators comment, sanitize proxy headers for telemetry URLs, harden Hub table counts.

= 1.14.9 =

* (add release notes)
= 1.14.8 =

* (add release notes)
= 1.14.7 =

* (add release notes)
= 1.14.6 =

* Synced core with free plugin 1.0.52: duplicate menu, compact schedule column with Preview link, reliable Hub telemetry (pending + admin flush).
* Menu preview correctly listed as free-tier in docs; Tested up to WordPress 7.0; telemetry privacy disclosure in readme.

= 1.14.5 =

* (add release notes)
= 1.14.4 =

* (add release notes)
= 1.14.3 =

* **Fixed:** blank wp-admin after login for demo users (redirect loop after menu slug rebrand to `maca-restu`). Corrected submenu parent slugs and admin translation submenu key.

= 1.14.2 =

* **Menu preview for PDF/image menus** on the admin **Menu preview** page (file-based menu mode).

= 1.14.1 =

* **Fixed:** fatal error on `admin-ajax.php` when trial/license hooks ran before user-access was loaded (heartbeat and other lightweight AJAX).

= 1.14.0 =

* **Chatt (site chatbot):** Pro feature with OpenAI BYOK local RAG index, floating widget, shortcode/block, admin test chat, booking button and source links in answers. Admin menu **Chatt** after **Informationsdisk**.
* **Release ZIP:** install folder `maca-menulist-pro/` with `maca-menulist.php`; privacy v1.6, terms v1.7.

= 1.13.4 =

* **Restu branding (complete):** - terms, privacy, guides, support/pricing docs, maca.se privacy HTML, admin and guest UI strings, and changelog history updated to **maca Restu Pro**. License checkout URL maca.se/restu-pro/. Demo role shown as *maca Restu demo*.

= 1.13.3 =

* **Rebrand:** maca Restu Pro (folder `maca-restu-pro`, main file `maca-restu-pro.php`, text domain `maca-restu-pro`, admin slugs under `maca-restu`). Internal code IDs unchanged for upgrades.

= 1.13.2 =

* **Payments cash register notice:** before enabling Stripe or Swish guest payments, admins must read a scrollable notice about cash register laws and confirm they accept responsibility (EN/SV). Server-side validation on save.
* **Docs:** `docs/KASSAREGISTER-SVERIGE.md` cash registers and online orders in Sweden.

= 1.13.1 =

* **Daily report (Pro):** HTML end-of-day summary emailed on a schedule revenue, orders, tips, payments (online vs manual), bookings, top dishes, orders-by-hour chart. Configure under maca Restu Dagsrapport; preview in browser and send test.

= 1.13.0 =

* **Info hub (Informationsdisk):** bilingual news and events; recurring events with exceptions; list, banner, or month calendar on site; public iCal at `/maca-events.ics` (iOS-friendly); subscribe shortcode/block; optional Facebook/Instagram auto-publish via your own Meta app (OAuth). Admin under maca Restu -> Info hub (after QR Codes). Enable in onboarding extras or module settings.
* **Facebook & Instagram guide:** step-by-step setup in wp-admin (Info hub -> Settings *Setup guide: Facebook & Instagram*). Social posts send title + full content (or excerpt).
* **Republish to social:** edit news and check *Publish again to Facebook/Instagram* to post updated text after the first publish.
* **Backup:** Informationsdisk tables and social log included in export/import.
* **maca Restu demo role:** training/sandbox admin user with limited wp-admin and no access to secrets, backup, or license pages.
* **Menu preview:** Dishes -> Menu preview set date/time and compare QR menu (full schedule) vs website menu (start/end dates only); category visibility diagnostics.
* **Dish list search:** filter the Dishes admin list while typing.
* **Category schedule:** QR serving times and weekdays are set on **dish categories** (not per dish); website menu ignores weekday/time but respects category start/end dates.
* **CSV:** VAT code import accepts codes and Swedish labels; VAT visible in preview; *Upload another file* clears preview correctly.
* **Fix:** schedule preview uses site timezone correctly for weekday/time matching.

= 1.12.0 =

* **Category navigation:** optional compact dropdown for dish categories (website + QR); theme colors; sticky while scrolling. Setting under Settings -> Dishes.
* **Table booking:** configurable table-hold minutes and bilingual arrival notice in confirmation email only; stable booking modal width on mobile.

= 1.11.2 =

* **Category navigation:** compact dropdown for dish categories on website menu and QR page; choose under Settings -> Dishes.

= 1.11.1 =

* **QR category navigation:** optional compact dropdown for dish categories on the QR menu page; choose under QR Code Generator.

= 1.11.0 =

* **Personalliggare:** admin tabs for employees, reports (date range, personal identity number, CSV export, print), manager corrections (logged before/after), and change log; mobile clock-in at `/stampla/`; in-venue control view at `/stampla/kontroll/` (staff PIN, date filter, print no personal numbers); REST API for clock and control report; audit log on each stamp and correction.

= 1.10.12 =

* **Getting started wizard disable:** checkbox under Settings -> Restaurant (*Show getting started wizard*). *Dismiss wizard* also turns it off site-wide; re-enable in settings.
* **Free Pro trial:** one-time server-controlled trial per site; start under Subscription; shown in the setup wizard when eligible.
* **Fix manual backup:** two-step AJAX create + download; works when query-string downloads are blocked or PHP notices break headers (e.g. W3 Total Cache on PHP 8.4).
* **Fix menu block assets:** frontend CSS/JS loads when the menu is rendered via Gutenberg block (footer fallback).
* Onboarding trial promo when choosing online menu without Pro; bilingual/guest UI settings only saved when the Pro feature is available.

= 1.10.1 =

* **Staff change table:** correct table number on open dine-in orders from waiter/kitchen screens (PIN). Blocked after full payment or when closed.
* **Kitchen KDS overdue:** when preparation ETA passes, show overdue countdown beside timer and turn **Food is ready** bright red.
* **Guest UI translations:** all 12 bundled guest locales synced (443 strings).

= 1.10.0 =

* **Guest QR (staff):** button on waiter/kitchen order cards shows a QR code linking to the QR menu with order recovery token (`?maca_order=`) guests can reopen order status after private browsing or cleared storage. Requires order status for guests.
* **Fix availability tab:** AJAX load on demand; spinner hides when content is ready.
* **Fix split bill:** split count and email fields stay open during status polling; combined payment keeps draft values.
* **Changed:** split bill styling across QR themes; expanded Swedish admin translations.

= 1.9.7 =

* **Documentation:** guides, marketing, and readme updated for *online menu* / *onlinemeny* and the Getting started wizard.

= 1.9.6 =

* **Getting started wizard:** step-by-step setup after first install (menu type, restaurant, first content, optional Pro features, publish). Save and continue later on every step; resume under **maca Restu -> Getting started**.
* **Terminology:** user-facing *dish menu* / *rattmeny* is now *online menu* / *onlinemeny* in admin and docs (internal dishes mode unchanged).
* **Database migration:** all schema steps run in one admin request after plugin update.

= 1.9.3 =

* **Fix admin menu after update:** maca Restu Pro menu appears immediately after uploading a new version (no need to click another wp-admin item first).
* **Fix booking popup title:** matches the booking button text; legacy default *Table booking* is ignored.

= 1.9.2 =

* **Fix split bill + Stripe:** paying one share (e.g. split in two with tip) no longer marks the whole order as paid on the guest phone, waiter screen, or payment history.
* **Pro update notice:** administrators see a banner when a newer version is published on maca.se (requires license server update check endpoint).

= 1.9.1 =

* **Waitlist:** guests can join the waitlist on the website when no table is available (email confirmation); staff can add waitlist entries manually; confirm with table assignment sends confirmation email. Toggle under Table Reservations Table settings.

= 1.9.0 =

* **Activity log:** new tab under Table Reservations who changed what and when; filter by booking ID; paginated history (50500 per page).
* **Edit booking:** staff can update guest name, phone, email, date, time, party size, and note on booking detail (pending/confirmed).
* **Booking host role:** WordPress role for limited staff (all booking tabs except Table settings, plus opening hours & exceptions); replaces PIN booking portal.
* **Booking email:** dedicated address under Table settings for notifications and outgoing guest emails.
* Improved Swedish admin strings for table reservations; booking host admin menu navigation fix.

= 1.8.5 =

* **Floor overview (admin):** new tab under Table Reservations table cards with green/red seats, date picker, and time slider; link to bookings for the selected day.
* **Move bookings:** staff can reassign pending/confirmed bookings to another free table (drag-and-drop on floor overview or **Change table** on booking detail).
* **Shortcuts:** Floor overview from Overview dashboard header and quick actions; **Floor overview** button on the daily bookings list.

= 1.8.0 =

* **Waiters (Pro):** admin page to create waiter profiles and assign tables; shared waiter screen (PIN) with filter for all tables or one waiter.
* Waiter name shown at the top of the staff header when a profile is selected.
* Guest payment block (tips, email, pay online) only appears when payment timing allows (e.g. after order is served).
* Booking and payment confirmation emails use the restaurant name and email as sender.
* Staff order URLs more resilient after content mode changes; permalink refresh in settings.
* Guides: Elementor shortcode note (EN/SV).

= 1.7.0 =

* New **Campaign menus** (Pro): create scheduled campaigns and assign dishes to campaigns from both campaign edit and dish edit.
* Added **Exclusive campaign mode** setting to show only active campaign dishes on website and QR menus.
* Campaign dishes keep their normal dish category grouping and sorting inside campaign view.
* Website/QR filter buttons now adapt to categories present in active campaign dishes.
* Menu and QR main title now use active campaign title in exclusive campaign mode (single title under logo).
* Overview dashboard now shows active campaign in header and includes a quick action button for **Campaign menus**.
* Swedish campaign-related admin labels/menu ordering improved.

= 1.6.0 =

* New admin **Overview** management screen with live KPIs, action list, quick actions, and period filters.
* Added dashboard charts for orders, revenue, payment status, dish clicks, top dishes, and bookings.
* Added dish interaction statistics tracking and dedicated **Dish statistics** admin page.
* Improved guest tip UI on payment screen with a compact dropdown-first layout optimized for mobile/tablet.
* Updated admin dashboard compact layout for landscape iPad and improved top header shortcuts.

= 1.5.0 =

* Scheduled VAT rates: current + upcoming rate and effective date per category (dine-in, takeaway, alcohol). Orders and emails use the rate at payment time. Complete Swedish admin translations.

= 1.4.9 =

* VAT: restaurant settings (VAT number, service type dine-in/takeaway, rates); dish VAT code (food/alcohol); optional email order confirmation after Stripe payment with VAT breakdown (address not stored in WordPress). Updated guides and translations.

= 1.4.6 =

* Italian bundled guest UI (`languages/guest/it.json`).

= 1.4.3 =

* Guest UI texts settings tab per-restaurant overrides for local and English guest strings.

= 1.4.2 =
* Bundled guest UI translations (da, nb, fi, de, es, fr, nl, pl, nl_BE, fr_BE, sv); guest gettext follows menu language switcher.

= 1.4.1 =
* Settings and Payments admin split into tabs; Swedish translations for tab labels and payment settings.

= 1.4.0 =
* Kitchen KDS Kanban view (laptop/iPad); tips; payment history + CSV; staff payment details; guest payments (Stripe / pay at table). Updated guides.

= 1.3.3 =
* Guest payments: pay online (Stripe Checkout) or with server; timing at order or after meal; Terms v1.5, Privacy v1.3; updated guides

= 1.3.2 =
* Pro pricing: 499 SEK/year through 31 Aug 2026, then 799 SEK/year from 1 Sep 2026; Terms v1.4

= 1.3.1 =
* Pro pricing: annual only 499 SEK/year (intro through 31 Aug 2026); lifetime not offered
* Terms v1.3; subscription page pricing; docs and maca.se marketing copy

= 1.3.0 =
* **Pro:** Guest payments preparation **Payments** admin (Stripe + Swish settings, webhooks, checklist)
* **Pro:** Setup guides `docs/PAYMENTS-GUIDE-sv.md` / `PAYMENTS-GUIDE-en.md` (step-by-step including Stripe Dashboard)
* Terms of Use and Privacy Policy v1.2 (guest payments, international Stripe cards, separate from maca.se license billing)
* User guides and readme updated

= 1.2.9 =
* **Pro:** Table Reservation button and popup title configurable per language under Settings -> Table Reservation
* Follows guest menu language (local / English)

= 1.2.8 =
* **Pro:** Waiter page order lines show unit price and line sum columns

= 1.2.7 =
* Language switcher reads WordPress site language (Settings -> General); settings checkbox to enable/disable
* Flag emoji rendering fix on language buttons

= 1.2.6 =
* Admin hides duplicate local/English fields when WordPress site language is English

= 1.2.5 =
* Local menu language uses WordPress site language (Settings -> General); flag switcher hidden when site is English

= 1.2.4 =
* Menu language switcher on website and QR menu local / English via compact flag buttons
* Compact category filter bar on menu and QR pages

= 1.2.3 =
* Settings page reorganized into sections; restaurant name and contact details appear first

= 1.2.2 =
* **Pro:** Table Reservation setting **Standard** (guest picks table) or **Best-fit** (automatic smallest table + filtered times)

= 1.2.1 =
* **Pro:** Table Reservation assigns the smallest available table automatically (best-fit)
* **Pro:** Booking time slots only show times with at least one free suitable table
* Guest booking form no longer asks guests to pick a table

= 1.2.0 =
* **Pro:** Table Reservation guest form via `[maca_table_booking]` or **maca Table Reservation** block; tables, weekly hours, date exceptions; email to guest and restaurant; admin confirm/cancel; guest self-cancel link; CAPTCHA (reCAPTCHA or Turnstile)
* **Pro:** Opening hours `[maca_opening_hours]` or **maca Opening hours** block (highlights today, Monday-first option)
* **Pro:** Admin **Table Reservations** pending requests first, confirmed by date, availability overview with free seats
* Gutenberg blocks renamed with **maca-** prefix (**maca Restu menu list**, **maca Table Reservation**, **maca Opening hours**); older block names in saved content still work
* Swedish translations updated

= 1.1.0 =
* Bilingual menu content: local language and English fields on categories, menus, dishes, allergens, and menu footer texts
* Optional dual-language display on public menus (e.g. English / local) for international guests
* English shown by default on the website; local language when the visitor uses that locale

= 1.0.46 =
* **Pro:** Automatic daily cleanup of old completed table orders configurable retention and run time under **Table orders**

= 1.0.45 =
* **Pro:** Admin page **Table orders** list guest orders, filter by status/age, view details, delete selected, purge old completed orders from the database

= 1.0.44 =
* **Pro:** Terms of Use and Privacy Policy mandatory acceptance on first admin visit after install or update; always available under **maca Restu -> Terms & Privacy**
* Public menus, QR page, and staff order pages stay hidden until acceptance is saved
* Swedish and English legal documents included

= 1.0.40 =
* **Pro:** Menu footer email field with icon; phone and website also show icons (website, QR, print)
* **Pro:** Print menu uses zero @page margin for clean PDF (like QR print)

= 1.0.37 =
* **Pro:** Menu footer (allergy, VAT, contact, website, optional alcohol age limit)
* **Pro:** Printable menu from **Dishes -> Print menu**
* **Pro:** Default EU allergens pre-installed (Swedish and English names)
* Allergen admin: separate Swedish and English name fields
* Swedish translations compiled for admin and guest menu

= 1.0.35 =
* **Pro:** Drag-and-drop dish sorting per category in admin
* **Pro:** Guest dish ratings (1-5 stars)
* **Pro:** Table ordering with waiter/kitchen pages, guest order status, add-on orders
* **Pro:** QR print with table number (`?bord=`)
* **Pro:** Backup & restore (ZIP with media, daily cron, import)
* Fix guest order status overlay on QR page (hidden state CSS)

= 1.0.22 =
* **Pro:** Online menu register dishes with categories, descriptions, prices, images, and sort order
* **Pro:** Settings option to choose PDF/image menus or dish registration mode; price currency setting
* **Pro:** Custom allergen labels with checkboxes per dish; allergens shown in italics under description
* **Pro:** Online menu on website shortcode/block and QR page (requires active subscription)

= 1.0.21 =
* **Pro:** Content mode setting (PDF/image vs dishes) gated behind Pro license
* **Pro:** Subscription page lists registered Pro features

= 1.0.20 =
* Fix PHP 8.5 deprecation: stop rewrite flush loop on every page load
* Minimal Gutenberg block registration via standalone callback (no block.json metadata on init)
* Clear stale flush flags from older versions automatically

= 1.0.19 =
* Fix PHP 8.4 deprecation on frontend and QR menu page (block registration hooks)
* Restrict block editor script hook registration to admin requests
* Move user guide markdown files to docs/ folder (WordPress Plugin Check compliance)
* Exclude local _zipcheck folders from release package

= 1.0.18 =
* Fix PHP 8.4/8.5 deprecation warning on QR menu page and other front-end requests
* Register Gutenberg block programmatically (avoids metadata script hook issue on init)
* Prevent duplicate plugin init and rewrite flush loops

= 1.0.17 =
* Fix PHP 8.4 deprecation warning on the User Guide admin page

= 1.0.16 =
* Swedish translations compiled (MO file included)
* Guide files included in plugin package; improved guide rendering
* More complete Swedish strings on Settings page

= 1.0.15 =
* Centralized database layer for Plugin Check compliance
* QR print page requires admin capability and nonce

= 1.0.14 =
* WordPress Plugin Check fixes (escaping, input sanitization, Tested up to 7.0)
* Exclude phpcs.xml.dist from release package

= 1.0.13 =
* Removed Powered by credit from QR menu page

= 1.0.12 =
* Updated Powered by credit text (removed in 1.0.13)

= 1.0.11 =
* Close button on new-tab menu viewer page

= 1.0.10 =
* QR menu page uses same display mode as website (popup/new page/inline)

= 1.0.9 =
* Powered by credit on QR page (removed in 1.0.13)

= 1.0.8 =
* Fixed popup and new-page display modes when using list view or cached pages
* List view now uses vertical buttons and respects display mode settings
* Display mode read from page markup to avoid stale cache issues

= 1.0.7 =
* Swedish weekday names with leading capital letter
* Weekdays use WordPress locale (with plugin translation fallback)

= 1.0.6 =
* Fixed weekday names in admin and serving-hours notice (Swedish)

= 1.0.5 =
* Close button on website menus (inline and popup modes)

= 1.0.4 =
* Menu title setting respected for PDF.js display
* Serving-hours note in AJAX/PDF view
* Swedish translations for new settings

= 1.0.3 =
* Time-of-day and weekday scheduling
* Short QR URL, website vs QR menu logic
* Local PDF.js, HTTPS URL normalization

= 1.0.2 =
* Shortcode, Gutenberg block, and QR page fixes
* Mobile and mixed-content improvements

= 1.0.1 =
* Bug fixes and stability improvements

= 1.0.0 =
* Initial release

== Upgrade Notice ==

= 1.4.0 =
Kitchen KDS board, tips, payment history, and guest payments. See changelog and maca Restu Guide.

= 1.3.3 =
Guest payments on the menu: Stripe Checkout and pay-at-table. Re-accept Terms and Privacy in wp-admin if prompted.

= 1.2.9 =
Configure table reservation button text per language under Settings -> Table Reservation.

= 1.2.8 =
Waiter page shows unit price and line sum per dish. See changelog.

= 1.2.7 =
Language switcher uses WordPress site language. See changelog.

= 1.2.5 =
Local menu language follows WordPress site settings. Flag switcher hidden for English sites.

= 1.2.4 =

= 1.2.3 =

= 1.2.2 =
Choose Standard or Best-fit table assignment under Settings. See changelog.

= 1.2.1 =
Pro: automatic best-fit table assignment and filtered booking times. See changelog.

= 1.2.0 =
Pro: table reservation, opening hours block, and maca-prefixed Gutenberg blocks. See changelog.

= 1.0.37 =
Pro: menu footer, printable online menu, default EU allergens (SV/EN). See changelog.

= 1.0.35 =
Pro: dish sorting, guest ratings, table ordering, QR table numbers, and backup. See changelog for details.

= 1.0.22 =
Pro: online menu with categories, prices, images, and custom allergens. Requires active subscription.

= 1.0.21 =
Pro: dish registration mode requires an active subscription.

= 1.0.19 =
User guide files moved to docs/ folder for Plugin Check compliance; admin Guide page unchanged.

= 1.0.7 =
Improved Swedish weekday labels in admin and on the frontend.
