Skip to content

Releases: bywuilgonzalezstudio/omnidiscount-opensource

v1.6.0

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 11 Jul 23:14
  • Welcome-popup email capture with unique, single-use coupons per visitor
  • First-purchase identity verification to prevent welcome-coupon abuse
  • Customizable HTML confirmation and code-reveal emails with live preview
  • Fixed a pricing bug where certain BOGO/gift promos could collapse cart lines to $0
  • Promo exclusivity, atomic usage reservation, and granular accumulation controls
  • Redesigned Analytics panel

v1.4.1 — Fix promos UX to match prototype + independent menu

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 15:02
65251d9

Changes

  • Fix promos dashboard UX: Aligned ~30 CSS class names in admin-promos.js with admin-promos.css so all prototype styling now applies correctly (cards, KPIs, badges, modals, type selector, meta stats, empty state)
  • Independent plugin menu: Moved OmniDiscount to its own top-level WordPress admin menu instead of being nested under WooCommerce
  • Toggle label CSS: Added .drw-toggle-label rule for toggle label wrappers in the promo editor modal

Files changed

  • assets/js/admin-promos.js — Rewrote all class names to match CSS prototype
  • assets/css/admin-promos.css — Added .drw-toggle-label rule
  • src/Controllers/AdminController.php — add_menu_page() + hook check update
  • discount-rules-woo.php — Version bump to 1.4.1

v1.4.0 — OmniDiscount

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 05:49
036c5ff

OmniDiscount v1.4.0

Rebrand

  • Plugin renombrado a OmniDiscount — Dynamic Pricing & Discount Rules for WooCommerce

Dashboard de Promos (Nuevo)

  • Panel premium de gestión de cupones/promociones con 15 tipos de oferta:
    percent, fixed, launch, 2x1, 3x2, second_unit, tiered, bundle, free_ship_threshold, free_ship, welcome, gift, cashback, flash, data_capture
  • KPI cards con métricas en tiempo real
  • Filter chips para filtrado rápido por estado y tipo
  • Grid de PromoCards con toggle de activación
  • Modal editor con selector visual de tipos
  • REST API completa: GET/POST/PUT/DELETE promos

Seguridad

  • Capability check manage_woocommerce en todos los endpoints
  • Sanitización con sanitize_text_field() en todas las entradas
  • Whitelist estricta de tipos, validación de porcentajes (<=100%), formato de fechas
  • Sin uso de innerHTML — DOM seguro con textContent/createElement

Técnico

  • CSS con variables --drw-*, layout responsivo, transform: scaleX() para animaciones
  • Compatible PHP 7.4 – 8.2, WooCommerce 6.0 – 10.8

v1.3.11

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 05:26
f69304f

v1.3.11 — Restore all v1.3.0-v1.3.5 features + no_coupon_stacking

Restored Features

  • ShortcodeController: Catalog grid with IntersectionObserver infinite scroll, badge overlays, category filters
  • AnalyticsController: Analytics dashboard with Chart.js visualizations
  • ImportExportController: JSON import/export of discount rules
  • ProgressBarController: Cart progress bar with configurable thresholds
  • StoreApiController: WooCommerce Block Cart/Checkout integration
  • drw-shortcode.js: Frontend shortcode rendering with lazy loading
  • drw-analytics.js: Analytics chart initialization
  • public-style.css: Full public-facing styles with container queries

New Features

  • No Coupon Stacking: Global option (drw_global_no_coupon_stacking) and per-rule field to prevent discounts when coupons are applied
  • Parent category fallback: Product targeting now checks parent categories for both inclusion and exclusion
  • Public accessors: get_cached_cart_item_prices() and get_cached_cart_level_discounts() on RulesEngine

Fixes

  • Fixed PHPCS equals sign alignment in class-router.php
  • Fixed AnalyticsController/ImportExportController submenu parent slug
  • Fixed StoreApiController double hook registration

v1.3.10 — Grid, badge, filtro por categoría restaurados

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 02:41
645e2f0

Novedades en v1.3.10

📱 Grid móvil — 2 columnas en teléfono

container-type:inline-size ahora está en .drw-sale-wrap (contenedor padre), no en el grid mismo. Esto permite que las @container queries funcionen correctamente sobre los hijos. Se mantienen @media queries como fallback universal.

  • Móvil ≤767px → 2 columnas
  • Tablet/desktop → columnas configuradas (default 4)

🏷️ Badge "-XX%" ya no flota sobre el header al hacer scroll

Se añadió isolation:isolate a .drw-sale-item, encapsulando el z-index dentro de la card.

🛍️ Badge consistente en catálogo/tienda estándar

.woocommerce-loop-product__link ahora tiene position:relative para que el badge se posicione correctamente en las páginas de tienda de WooCommerce.

🔍 Filtro de categorías con botón ✕ Limpiar

  • Al seleccionar una categoría, el grid recarga vía AJAX (sin recargar la página)
  • El botón rojo ✕ Limpiar aparece cuando hay un filtro activo
  • Al presionar Limpiar, vuelve a "Todas las categorías" y el botón desaparece

↕️ Ordenar por

  • Mayor descuento (default)
  • Precio: menor a mayor / mayor a menor
  • Más recientes

📐 Sort bar responsive

En pantallas <640px los controles se apilan en columna a ancho completo.

⚙️ Auto-actualización

El ZIP se adjunta automáticamente — actualiza desde WP sin subir archivos manualmente.

v1.3.9 — Grid responsivo e imágenes en shortcode

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 02:32
601b306

Correcciones en v1.3.9

📱 Grid responsive en móvil

  • El shortcode [awdr_sale_items_list] ahora adapta las columnas según pantalla:
    • Desktop (>900px): 4 columnas
    • Tablet (640–900px): 3 columnas
    • Móvil (<640px): 2 columnas
  • Causa raíz corregida: el CSS anterior usaba @container queries que no funcionan para estilizar el propio contenedor

🖼️ Imágenes faltantes

  • Los productos sin miniatura asignada en WooCommerce ahora muestran el placeholder estándar de WooCommerce en lugar de un espacio en blanco
  • Tarjetas con aspect-ratio: 1/1 + object-fit: cover para altura uniforme en el grid

⚙️ Auto-actualización

El ZIP se adjunta automáticamente — actualiza desde WP sin subir archivos manualmente.

v1.3.8 — Settings UI, catalog grid fix, autoloader fix

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 02:14
9931eab

Novedades en v1.3.8

✨ Nueva pantalla: Configuración Global

  • Accede desde WooCommerce → Discount Rules → botón ⚙ Configuración
  • Tipos de Descuento: habilita/deshabilita porcentaje, precio fijo, bulk, BOGO, bundle, envío gratis
  • Comportamiento de Reglas: estrategia de combinación (mejor, suma, único), orden de aplicación
  • Características Generales: programación por fechas, límites de uso, etiquetas de descuento, redondeo de precios
  • Tema y Colores: preset de tema, colores personalizados, tipografía, espaciado

🐛 Correcciones

  • Grid de catálogo restaurado: los precios tachados con descuento vuelven a funcionar (regresión de v1.3.6)
  • Fatal error resuelto: autoloader ahora resuelve class-router.php (PHPCS) antes de intentar Router.php (legacy) — elimina Class "Drw\App\Router" not found en producción

⚙️ Auto-actualización

El plugin se actualiza automáticamente desde el panel de WordPress (sin subir ZIP manualmente).

v1.3.7 — Fix Autoloader + WordPress Auto-Update

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 01:31

v1.3.7 — Fix Critical Autoloader + WordPress Auto-Update System

Bug Fix (Crítico)

  • Autoloader corregido: el autoloader de respaldo ahora resuelve correctamente archivos con convención PHPCS (class-router.php, class-settingscontroller.php, class-settingsmodel.php) además de los legacy (RuleModel.php, Database.php). Esto eliminó el error fatal "Class Drw\App\Router not found" en instalaciones sin Composer.

Nuevo: Auto-Update desde WordPress

  • El plugin ahora se actualiza automáticamente desde WordPress → Plugins → Actualizaciones, igual que un plugin oficial
  • Usa el sistema de releases de GitHub como fuente de actualizaciones
  • Cada release incluye un ZIP distributable limpio (discount-rules-woo-vX.X.X.zip) adjunto automáticamente por el nuevo workflow build-release.yml

Infraestructura CI/CD

  • Nuevo workflow .github/workflows/build-release.yml: se activa al publicar un release, genera un ZIP limpio del plugin (sin .git, .github, vendor, tests, scratch) y lo adjunta al release para que WordPress lo use en las actualizaciones

Checklist CI

  • ✅ PHP Syntax Check (7.4, 8.0, 8.1, 8.2)
  • ✅ WordPress Coding Standards (PHPCS)
  • ✅ Security Scan

v1.3.6 — Global Settings & Configuration Panel

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 20 Jun 00:53

What's New

Global Settings & Configuration System

A new centralized settings panel with full control over plugin behavior.

REST API Endpoints (/drw/v1/settings):

  • GET /drw/v1/settings — Retrieve all settings
  • POST /drw/v1/settings — Save settings
  • POST /drw/v1/settings/reset — Reset to defaults
  • GET /drw/v1/settings/types — List discount types
  • GET /drw/v1/settings/conditions — List conditions
  • GET /drw/v1/settings/themes — List theme presets

SettingsModel (src/Models/class-settingsmodel.php):

  • Dot-path key access (discount_types.bulk.max_tiers)
  • 12-hour transient cache
  • Deep merge defaults with saved values
  • 4 built-in theme presets: Default, Dark, Colorful, Minimal

Settings Groups:

  • Discount types (percentage, fixed, bulk, BOGO, bundle_set, free_shipping)
  • 17 condition types (cart, user, product)
  • 4 filter types
  • Rules behavior (combination strategy, apply order)
  • Theme & colors
  • General features

CI:

  • All 6 checks pass: PHP Syntax (7.4–8.2), WordPress Coding Standards, Security Scan

v1.3.5 — Fix mobile grid, badge z-index, clear filter

Choose a tag to compare

@bywuilgonzalezstudio bywuilgonzalezstudio released this 16 Jun 12:15

Cambios en v1.3.5

Correcciones urgentes de UI y comportamiento

Grid móvil — 4 columnas → 2 columnas en teléfono

El container-type: inline-size estaba en .drw-sale-items-grid (el propio grid), lo que impide que las @container queries funcionen porque un elemento no puede consultarse a sí mismo. Se movió a .drw-sale-wrap (el contenedor padre) y se añadieron @media queries como fallback:

  • Móvil ≤767px → 2 columnas
  • Tablet y desktop → columnas configuradas (default 4)

Badge "-15%" aparecía sobre el header al hacer scroll

El badge tenía z-index: 10 sin contexto de apilamiento propio, lo que permitía que "escapara" sobre elementos fijos del tema. Se añadió isolation: isolate a .drw-sale-item para que el z-index quede encapsulado dentro de la card.

Badge inconsistente en catálogo/tienda

En las páginas de catálogo WooCommerce el badge (position: absolute) se posicionaba relativo a un ancestro lejano porque el enlace de la imagen no tenía position: relative. Se añadió CSS defensivo para .woocommerce-loop-product__link.

Botón "✕ Limpiar" en el filtro de categorías

Al seleccionar una categoría aparece un botón rojo "✕ Limpiar" que resetea el filtro y recarga el grid vía AJAX sin recargar la página. Al volver a "Todas las categorías" el botón desaparece.

Sort bar responsive en móvil

En pantallas <640px los selectores de categoría y orden se apilan en columna a ancho completo, en lugar de desbordarse horizontalmente.