# Changelog — MokoSuiteRealty ## [Unreleased] ### Added - **Package Manifest** — `pkg_mokosuiterealty.xml` with dlid and updateservers - **Plugin Manifest** — `mokosuiterealty.xml` with config fieldsets (listing defaults, search settings) - **Extension Class** — `Realty.php` SubscriberInterface plugin with autoloadLanguage - **Services Provider** — DI container registration for system plugin - **SQL Install** — 9 tables: listings, listing_photos, showings, offers, commissions, open_houses, open_house_visitors, price_history, saved_searches - **SQL Uninstall** — reverse-dependency drop order - **Language Files** — en-GB .ini and .sys.ini - **ListingHelper** — filtered search, dashboard stats, price history with transaction - **CommissionHelper** — split calculations, agent YTD summary, pending payouts - **ShowingHelper** — scheduling, agent calendar, buyer feedback recording - **OfferHelper** — submit, accept (atomic with FOR UPDATE), competing offer rejection - **OpenHouseHelper** — event scheduling, visitor sign-in, lead capture - **PropertySearchHelper** — Haversine geo proximity with bounding box, saved searches - **Wiki** — Home, guides/Installation, guides/Configuration, reference/Helpers - **README** — layer architecture and feature overview - **CLAUDE.md** — repo-specific with layer 2 dependencies, helpers, tables, coding standards ### Fixed - **OfferHelper** — dual-accept race condition (FOR UPDATE + status guards) - **PropertySearchHelper** — HAVING without GROUP BY replaced with subquery wrapper - **PropertySearchHelper** — count query was built but never executed ### Removed - **Makefile** — template artifact, not used for Joomla packages ### Security - Review #19: 3 critical fixes applied