# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Removed - Removed deploy-manual.yml workflow — switching to Joomla update server method for extension distribution ### Added - **Package** with component, 2 modules, and web services API plugin - **Component (com_mokojoomstorelocator)** - Admin location CRUD with tabbed edit form (details, address, coordinates, contact, media) - Leaflet coordinate picker — click map to set lat/lng on admin form - Locations list with publish/unpublish/delete, search, pagination - Categories admin with parent/child hierarchy, color, and custom marker icon - Multi-category support — locations assigned to multiple categories via junction table - CSV import with 3-step wizard (upload, column mapping, preview/validate) - CSV export with filter support and UTF-8 BOM for Excel - Sample data injection (8 Tennessee locations with real coordinates) - Geocoding service — Nominatim (free default) and Google Geocoding API - Auto-geocode on save when address present but coordinates missing - Video URL field with YouTube/Vimeo embed support - Multiple images field (gallery) per location - Contact form per location with email delivery and captcha - Custom fields integration via Joomla com_fields (location + category contexts) - Component config: geocoding provider, Google API key, auto-geocode toggle - access.xml with component and category-level ACL permissions - SQL update schema with versioned migration files - Filter forms: filter_locations.xml, filter_categories.xml - populateState for persistent admin list filters - joomla.asset.json for Web Asset Manager (Leaflet, MarkerCluster, CSS) - **Frontend (site views)** - Locations list with linked titles, distance display, Get Directions buttons - Single location detail page with embedded map, Schema.org JSON-LD - Category view — locations filtered by category with color swatch - SEF URL router (locations, location by alias, category by alias) - Contact form embedded on location detail page - Photo gallery and responsive video embed on detail page - Print button with print stylesheet and static map image - Category tags with color badges and links - Responsive CSS with mobile-first grid, click-to-call phone - **Map Module (mod_mokojoomstorelocator_map)** - Leaflet.js with OpenStreetMap tiles (no API key required) - Google Maps provider (optional, with API key) - MarkerCluster plugin for both providers - Category-colored SVG markers with custom icon override - Category legend below map - DOM-based popup content (XSS-safe) - Auto-fit bounds to show all markers - Get Directions link in popups - **Search Module (mod_mokojoomstorelocator_search)** - Text search (title, address, city, postcode) - City dropdown filter from distinct values - Radius filter with configurable options (miles/km) - "Use My Location" geolocation button with permission handling - Haversine formula for distance calculation in SQL - **Web Services API (plg_webservices_mokojoomstorelocator)** - CRUD routes for /v1/storelocator/locations - CRUD routes for /v1/storelocator/categories - Custom search route: /v1/storelocator/search - JsonapiView for Locations and Categories - **Package installer** - Auto-enables modules and API plugin on install - PHP 8.1+ and Joomla 4.4+ version checks - en-GB and en-US language files for all extensions ### Fixed - Hardcode name and description in all XML manifests (language variables don't resolve during install)