README.md and FEATURES.md for JED and site admins.
Marketing images in media/images/ (canonical URLs under https://recreatinganew.com/images/rca/osbj2c/); reimagined graphic refreshed for the osbj2c folder.
Entry-point stub rca_osbj2c.php and refreshed user documentation (product, user guide, FAQ).
Changed
Language manifest lists only standard en-GB.en-GB.plg_system_rca_osbj2c.* files (duplicate unprefixed copies removed).
File header @version tags aligned with manifest version.
Fixed
Special-price SQL null-date comparison uses a quoted literal instead of $db->getNullDate() for J6-safe publish_up/down checks.
1.0.11 - 2026-09-01
Changed
More times reveals 3 rows per click (rows × current column count) instead of all remaining slots. Show less collapses back to the initial row count.
1.0.10 - 2026-09-01
Fixed
Booking page hang: MutationObserver no longer loops on bridge-injected slot buttons and More times toggles.
1.0.9 - 2026-09-01
Added
Responsive timeslot grid: 3 columns on wide desktop, 2 columns on narrow desktop (≤1024px) and mobile (≤767px); full-width slot buttons.
"More times" / "Show less" expansion when more slots exist than the initial visible count (9 desktop / 6 mobile by default).
Plugin parameters for initial visible counts, column layout, mobile breakpoint, and expansion toggle.
1.0.8 - 2026-08-31
Fixed
Template custom.css can override bridge/OSB styles without !important: bridge CSS loads via WebAssetManager only (before Document stylesheets); onBeforeCompileHead at lowest priority moves template css/custom.css to the end of the Document stylesheet list.
Added
Installer: failure messages state which prerequisite is missing (OSB or J2Commerce) and remind to back up; success/update notices with step-by-step links to Plugins, Install, and Manage, including sid_map setup.
1.0.7 - 2026-08-27
Embedded {osbtable} no longer throws PaymentMethods is not defined. OSB prints new PaymentMethods() inline; the bridge defines the constructors in that same script block (native loadMedia() is still skipped to avoid Colorbox-before-jQuery)
1.0.6 - 2026-08-27
Timeslot hold returns clean JSON (OSB PHP 8.4 notices no longer prefix the ajax body), so Continue to Checkout can appear
If native OSB addToCart() throws after insert (special-rate divide-by-zero), the hold is still kept; a direct temp-row insert is used when needed
J2Commerce add-to-cart uses a decoded form action and task=carts.addItem; cart failure no longer hides the checkout button
Past start times are hidden; request keys slotStart / slotEnd avoid Joomla start pagination collisions
Update feed <infourl> is the full public feed URL, not the site root
1.0.5 - 2026-08-27
Embedded {osbtable} calendars no longer dump OSB PHP 8.4 deprecations or undefined-key warnings into the article HTML
Colorbox is not loaded before jQuery on those pages (native OSB loadMedia() order), so the console no longer throws jQuery is not defined / .colorbox is not a function
Article menus without date_from and services without a posted cid get safe defaults so OSB defaultLayout does not warn
1.0.4 - 2026-08-27
Render {osbtable} from the bridge so OSB cart() is not left uncaught when special rates divide by an empty slot list (HTTP 500 / error document on Full Consultation)
Load OSB payment classes needed for the embedded calendar; keep a display-only OSB session so a live hold does not crash the article
1.0.3 - 2026-08-27
Keep a successful OSB temp hold when native addToCart throws after insert, then auto-add the mapped J2Commerce product and show Continue to Checkout
Hide occupied label-only timeslots (including midnight 00:00 with no checkbox) and the OSB multi-select; 12-hour AM/PM buttons remain the only start-time UI
Populate OSB hidden booking fields with unix strings instead of clicking native checkboxes, so midnight is never treated as empty
1.0.2 - 2026-08-27
Renamed package to plg_system_rca_osbj2c (element rca_osbj2c)
After a valid slot hold, auto-add the mapped J2Commerce product and show Continue to Checkout (native J2C Add to Basket form stays hidden)
Midnight 00:00 is a valid start: parse unix from data-start / checkbox id, never treat 0 as "no time selected"
Timeslot buttons use 12-hour AM/PM labels; OSB range labels stay in the DOM but are hidden
1.0.1 - 2026-08-27
JED listing name is ASCII System - OSB J2C Bridge ({Type} - {Extension Name})
Add public update server and changelog URL (RCA feeds)
Rename assert* helpers so JED Checker Pattern 17 does not flag them as obfuscation
Fresh CSRF token via POST bridgeTask=token; ajax responses send Cache-Control: no-store
Reject past and overlapping appointment slots server-side before the OSB hold
1.0.0 - 2026-08-27
Initial free release: OS Services Booking appointments, J2Commerce cart and payment