diff --git a/eea-foh.json b/eea-foh.json index 4cbe238..23f35fc 100644 --- a/eea-foh.json +++ b/eea-foh.json @@ -1,13 +1,13 @@ { "name": "Front of House for Event Espresso", "slug": "eea-foh", - "version": "0.22.1", - "download_url": "https://gitea.mulligan.casa/ee-extensions/foh-updates/raw/branch/main/eea-foh/eea-foh-0.22.1.zip", + "version": "0.22.2", + "download_url": "https://gitea.mulligan.casa/ee-extensions/foh-updates/raw/branch/main/eea-foh/eea-foh-0.22.2.zip", "homepage": "https://gitea.mulligan.casa/ee-extensions/eea-foh", "requires": "6.4", "tested": "7.0", "requires_php": "8.1", - "last_updated": "2026-06-23 18:38:00", + "last_updated": "2026-06-23 19:04:23", "icons": { "1x": "https://gitea.mulligan.casa/ee-extensions/foh-updates/raw/branch/main/eea-foh/icon-128x128.png", "2x": "https://gitea.mulligan.casa/ee-extensions/foh-updates/raw/branch/main/eea-foh/icon-256x256.png" @@ -23,7 +23,10 @@ "registration" ], "sections": { - "description": "

Front-of-house event check-in for Event Espresso 4/5: tablet check-in stations
\n(installable PWA, zero WP chrome), device trust with admin approval handshake,
\nclerk attribution via badge codes, and a full append-only audit trail — plus a
\nwp-admin \"default mode\" page that makes it a drop-in replacement for the official
\n(stalled) EE Barcode Scanner add-on.

\n

Design contract: docs/SPEC.md. Read it before touching code.

\n

Status

\n

Pre-release scaffold (0.1.0). Schema and module skeleton in place; see the spec for
\nthe build plan.

\n

Requirements

\n\n

Deploy

\n

Copy the plugin directory into wp-content/plugins/ — built front-end assets are
\ncommitted under assets/app/; nothing to build or install on the host. Activate
\nper-site. Deactivate eea-barcode-scanner first; this replaces it.

", - "changelog": "

[0.22.1] - 2026-06-23

\n

Changed

\n\n

[0.22.0] - 2026-06-23

\n

Added

\n\n

Changed

\n\n

[0.21.2] — 2026-06-22

\n

Changed

\n\n

[0.21.1] — 2026-06-22

\n

Fixed

\n\n

The lifecycle is now use-driven, matching how EE treats every other payment
\n method: the Return/Settlement rows are created/reactivated lazily on first actual
\n use
(paymentMethodId()), which only happens on the site that records a
\n return/settlement — so no stray rows are planted elsewhere. The eager Schema::install
\n activation and the proactive reactivation are removed; the money path is unchanged
\n (it already self-heals the row on use). The PMT types are still registered on
\n every load (that is what stops EE deactivating the real active row on the desk site).
\n The stale notice is now purged through EE's own notice collection (the
\n...PersistentAdminNoticeManager__registerNotices seam), which works in any
\n admin/network-admin context and on any site — fixing the multisite mis-targeting of
\n the previous attempts. New EePersistentNotice::suppressAutoDeactivated().

\n

[0.21.0] — 2026-06-22

\n

Added

\n\n

Changed

\n\n

Hardening (adversarial money-path review)

\n\n

Migration / compatibility

\n\n

[0.20.1] — 2026-06-22

\n

Fixed

\n\n

[0.20.0] — 2026-06-22

\n

Added

\n\n

Changed

\n\n

Migration / compatibility

\n\n

[0.19.0] — 2026-06-22

\n

Added

\n\n

Changed

\n\n

Migration / compatibility

\n\n

[0.18.2] — 2026-06-22

\n

Security

\n\n

Fixed

\n\n

Changed

\n\n

[0.18.1] — 2026-06-22

\n

Added

\n\n

Security

\n\n

[0.18.0] — 2026-06-22

\n

Security

\n\n

Fixed

\n\n

[0.17.2] — 2026-06-21

\n

Fixed

\n\n

[0.17.1] — 2026-06-21

\n

Added

\n\n

Fixed

\n\n

[0.17.0] — 2026-06-21

\n

Added

\n\n

[0.16.2] — 2026-06-20

\n

Fixed

\n\n

[0.16.1] — 2026-06-20

\n

Changed

\n\n

Fixed

\n\n

[0.16.0] — 2026-06-19

\n

Changed

\n\n

[0.15.0] — 2026-06-19

\n

Clerk badge printing + scan-to-login (camera or wedge). No schema change (v16).

\n

Added

\n\n

Changed

\n\n

[0.14.2] — 2026-06-18

\n

Added

\n\n

[0.14.1] — 2026-06-18

\n

Fixed

\n\n

[0.14.0] — 2026-06-18

\n

Bluetooth thermal receipt printing, templated header/footer, itemized receipts, and
\nloud failure handling for the card-present path. No schema change (v16).

\n

Added

\n\n

Changed

\n\n

[0.13.0] — 2026-06-18

\n

FOH returns, refunds & customer credit — the v1.0.0-blocking foundation. Full design
\nin docs/RETURNS-CREDIT-IMPLAN.md.

\n

Added

\n\n

Fixed

\n\n

Notes

\n\n

[0.12.3] — 2026-06-16

\n

Added

\n\n

Fixed

\n\n

[0.12.2] — 2026-06-15

\n

Changed

\n\n

[0.12.1] — 2026-06-15

\n

Added

\n\n

[0.12.0] — 2026-06-15

\n

Added — card-present payments (pluggable; Collect verified on-device)

\n\n

Changed

\n\n

[0.11.0] — 2026-06-15

\n

Added — Sell / POS mode (front-desk sales)

\n\n

Changed — core is ticket-native; ticket classes moved to the companion

\n\n

Note

\n\n

[0.10.0] — 2026-06-15

\n

Added

\n\n

Changed

\n\n

[0.9.0] — 2026-06-15

\n

Added — station modes, in-person payments, corrected check-in model (SPEC §16)

\n\n

Changed — the visibility ↔ action model (corrected; general EE, not Round-Up-specific)

\n\n

Polished

\n\n

[0.8.0] — 2026-06-15

\n

Added — in-person payment foundation (SPEC §16.1; POS epic begins)

\n\n

[0.7.2] — 2026-06-14

\n

Added

\n\n

Changed

\n\n

Fixed

\n\n

[0.7.1] — 2026-06-14

\n

Changed

\n\n

[0.7.0] — 2026-06-14

\n

Added — linked registrations (SPEC §15.10)

\n\n

[0.6.3] — 2026-06-14

\n

Added

\n\n

[0.6.2] — 2026-06-14

\n

Changed

\n\n

Fixed

\n\n

[0.6.1] — 2026-06-14

\n

Added — clerk → station scoping (SPEC §15.9)

\n\n

Added — custom roles & stateful clerk sessions (SPEC §15)

\n\n

Changed

\n\n

Fixed

\n\n

[0.5.1] — 2026-06-14

\n

Security

\n\n

Added

\n\n

Changed

\n\n

Fixed

\n\n

[0.4.0] — 2026-06-11

\n

Added

\n\n

Fixed

\n\n

[0.3.0] — 2026-06-11

\n

Added

\n\n

[0.2.0] — 2026-06-11

\n

Added

\n\n

Changed

\n\n

Removed

\n\n

[0.1.0] — 2026-06-11

\n

Added

\n" + "description": "

Front of House for Event Espresso runs the box office of a live event from a tablet. Each device is trusted by an administrator, every action is attributed to the clerk who took it, and the whole shift is captured in an append-only audit trail. It is an Event Espresso add-on — it reads and writes through Event Espresso's own models, so a sale, a payment, or a return at the door is the same real transaction it would be in wp-admin.

\n

The station runs as an installable PWA with no WordPress chrome: a clerk signs in with a badge, the tablet shows a fast registration search or a sales grid, and the door keeps moving.

\n

What a station can do

\n\n

Built for the front desk

\n\n

Full documentation and architecture notes live in the bundled README.md.

", + "installation": "
    \n
  1. Install and activate Event Espresso 5 on the site first — this plugin is an Event Espresso add-on and does nothing without it.
  2. \n
  3. Upload the plugin to wp-content/plugins/ and activate it (activate per site on multisite).
  4. \n
  5. Open the Front of House admin menu and set up your Access Profiles, Clerk Roles, Clerks, and Settings (including receipt header/footer).
  6. \n
  7. Create an Enrollment Link, open it on a tablet, install the PWA, and approve the device under Devices.
  8. \n
  9. The site should be served over HTTPS — the camera scanner and Bluetooth receipt printing require a secure context.
  10. \n
", + "faq": "

Does this require Event Espresso?

\n

Yes. It is an Event Espresso add-on and is tested against Event Espresso 5. Sales, payments, check-ins, and returns are written through Event Espresso's own models, so they are identical to what wp-admin would produce.

\n

Why does it need HTTPS?

\n

The camera-based barcode/QR scanner (camera access) and Bluetooth thermal printing (Web Bluetooth) only work in a secure browser context. Serve the site over HTTPS and the station works on tablets and phones.

\n

How do clerks log in?

\n

A clerk signs in to a station with a badge — scanned by the device camera, read by a hardware wedge scanner, or typed in as a code. Clerks are not WordPress users; they are managed under Front of House → Clerks and governed by configurable roles. Treat a printed badge as a physical login key.

\n

What happens when the network drops?

\n

The station distinguishes a genuine network failure (an offline banner) from a server-side response such as a too-short search or an out-of-scope result (shown inline). When the card-present path charges but recording the payment fails, the station does not swallow it: it retries, prints a manager error slip, records an audit incident, and shows a blocking manager modal.

\n

Can I add card payments or store credit?

\n

Yes. Cash and check are built in. Card-present payments come from a pluggable provider add-on, and store credit / pay-with-credit come from a companion customer-credit plugin. When those companions are absent, the station hides the affordances entirely.

\n

Does it work on multisite?

\n

Yes. Activate it per site on a multisite network.

", + "screenshots": "
    \n
  1. Check-in station — registration search with the All / Needs check-in / Needs payment filter.
  2. \n
  3. Sell / POS — category-tabbed item grid with variations and a running-total cart.
  4. \n
  5. Transaction screen — cash tender with live change-due and the payment-method buttons.
  6. \n
  7. Returns & exchanges — net settlement with cash refund, forfeit, and store-credit options.
  8. \n
  9. Bluetooth receipt printer configuration with on-device test buttons.
  10. \n
  11. Clerk badge sheet — CODE128 + QR for scan-to-login.
  12. \n
  13. wp-admin — the Front of House admin section (profiles, devices, clerks, roles, audit).
  14. \n
", + "changelog": "

0.22.2
\n* Update-details sections now come from readme.txt (WP-native); base/config renamed to .mu-manifest.yaml + .mu-release.yaml. No functional change.

\n

0.22.1
\n* Release now flows through the shared manifest pipeline; the \"View details\" modal carries a description, changelog, and tags. No functional change to the plugin.

\n

0.22.0
\n* Added a color-coded plugin icon (delivered through the update channel) and declared WordPress 7.0 compatibility. No functional change.

\n

The full history is in CHANGELOG.md bundled with the plugin.

\n

0.21.2
\n* Updates are now handled by the Manifest Updater plugin (via the standard \"Update URI\" header) instead of a bundled updater. No change to how Front of House works; this lets it run on a single site instead of network-wide. Requires the Manifest Updater plugin to be network-activated to receive update notifications.

\n

0.21.1
\n* Fixed for real (multisite): the \"payment method Return/Settlement was automatically deactivated\" admin notice that kept coming back. Root cause was that Front of House auto-activated its internal Return/Settlement methods on every site in the network and then kept reactivating them, which Event Espresso re-deactivated in a loop. Those methods are now created only on the site that actually records a return/settlement (the desk site), and the stale notice is cleared in every admin context. No effect on how returns/settlements work.

\n

0.21.0
\n* Per-method payment options. Settings ▸ Payment Methods now lets you set, per method, a custom button label, whether a check number is required, and (for card) a surcharge. A card surcharge is added to the sale as a real fee line item — it raises the total, prints on the receipt, and is recorded in Event Espresso — so the customer is actually charged it. Card payments include the surcharge in the amount charged on the reader.
\n* Card is now provided through the Collect for Stripe add-on's registration with Front of House, and Front of House owns enabling/disabling and labelling every method (including card) in one place. Update the Collect add-on to 0.2.0 alongside this release.
\n* The old \"Allow cash refunds\" setting is carried forward into the new Payment Methods section automatically; no reconfiguration needed.

\n

0.20.1
\n* Fixed a \"payment method was automatically deactivated\" admin notice that kept reappearing for the Return and Settlement payment methods. The methods themselves were working; the stale warning is now cleared properly (the previous fix was being undone by Event Espresso's own notice save).

\n

0.20.0
\n* Per-device payment hardware. Each device now has a \"Hardware\" block (card reader, cash drawer); unchecking one hides that payment method on that station's point of sale — card needs a card reader, cash needs a cash drawer. Visibility only: it never changes who may take payment, and nothing changes on existing devices (every device is treated as fully equipped until you say otherwise).

\n

0.19.0
\n* A single home for payment methods. A new \"Payment Methods\" settings section turns cash, check, and card on or off and sets cash-refund policy in one place; an access profile can restrict which methods a given station offers. Nothing changes on an existing install — every method stays enabled exactly as before until you adjust it. Under the hood the method set is now data-driven (a registry) so future methods can plug in cleanly.

\n

0.18.1
\n* Check payments at the desk (activates Event Espresso's Check method in the admin scope). Server-side event-scope enforcement on every payment/return endpoint (a clerk can only act on their own event's transactions). Clerk/manager codes widened to 10 digits with a per-device brute-force lockout, plus a remote \"Clear lockout\" admin action.

\n

0.18.0
\n* Card-present payments are verified against Stripe before approval (no more trusting the return URL). Every first-touch money write (sales, exchanges, cash, credit, settlements) is now idempotent against a lost-response retry. Audit-log failures are no longer silent.

\n

0.17.2
\n* The Return and Settlement payment methods now reactivate themselves automatically after a plugin update — no manual step on the Payment Methods screen, ever.

\n

0.17.1
\n* Walk-up Return (card-less return/exchange). Sales and returns now verify the transaction's true status in Event Espresso before completing — no more false \"Sale Complete\" on an unpaid exit.

\n

0.17.0
\n* Admin-configurable branding (receipt logo, app icon, splash, background) and Bluetooth badge printing in wp-admin (one badge at a time, tear between).

\n

0.16.2
\n* Service worker REST namespace fix (eea-checkin/v1 -> eea-foh/v1); no behavior change.

\n

0.16.1
\n* Update channel + repository URLs moved to the ee-extensions org. Removed a hard-coded external domain from the receipt printer's barcode/QR test page.

\n

0.16.0
\n* Taking payment is now a lookup filter (All / Needs check-in / Needs payment), not a separate mode. Sell remains its own mode. No schema or server change.

\n

0.15.0
\n* Printable clerk badges plus camera and hardware-wedge scan-to-login, with per-device camera configuration.

\n

0.14.x
\n* Bluetooth thermal receipt printing with templated header/footer, itemized line items, and configurable tear feed; a dedicated receipt-printer configuration modal with on-device test buttons; loud \"charged but unrecorded\" incident handling for the card-present path.

\n

0.13.0
\n* Returns, exchanges, refunds, and customer credit settled as real Event Espresso transactions, with cash-refund/forfeit/store-credit settlement and exchange tax suppression.

\n

0.12.0
\n* Card-present payments via a pluggable, provider-agnostic descriptor model; cash tender with change; on-demand emailed receipts.

\n

0.11.0
\n* Sell / POS mode — front-desk sales through a category grid and persistent cart, building real Event Espresso transactions with automatic tax and full rollback.

\n

0.9.0 - 0.10.0
\n* Station modes, pluggable in-person payments, the corrected visibility-vs-action check-in model, assistive (stacked) manager login, per-device themes, and a Q&A + payments details modal.

\n

0.5.0 - 0.7.x
\n* Device-secret authentication and nonce-sealed enrollment, first-class enrollment links, configurable clerk roles and stateful sessions, clerk-to-station scoping, linked-registration reverse lookup, and a role-gated registration details modal.

\n

0.1.0 - 0.4.0
\n* Foundation: profiles/devices/clerks/audit data model, REST layer, ranked search, check-in over Event Espresso models, the device approval handshake, and the station PWA.

" } } diff --git a/eea-foh/eea-foh-0.22.1.zip b/eea-foh/eea-foh-0.22.2.zip similarity index 89% rename from eea-foh/eea-foh-0.22.1.zip rename to eea-foh/eea-foh-0.22.2.zip index 2f3ad7e..6257b88 100644 Binary files a/eea-foh/eea-foh-0.22.1.zip and b/eea-foh/eea-foh-0.22.2.zip differ