Changelog - Scry Marketplace
Compra o vende singles de Magic: The Gathering.

Changelog

Volver al Home

Aquí publicamos las mejoras y fixes más recientes del Marketplace.

Nuevo: repricing manual de catálogo con Card Kingdom, cooldown y resguardos operativos

12/04/2026

Se incorporó una primera versión de la herramienta de repricing para tiendas habilitadas por admin. Desde “Mi Catálogo” ahora se puede recalcular masivamente el precio de las cartas tomando como referencia principal Card Kingdom y, cuando no exista match, Scryfall como respaldo; la conversión a CLP usa el dólar configurado por la tienda. El proceso corre por lotes, muestra progreso en pantalla y deja un reporte persistente al terminar con cartas evaluadas, actualizadas, omitidas, errores y variación neta del catálogo en CLP. Además, mientras el repricing está activo se bloquea la importación y edición manual del catálogo, el acceso a “Agregar cartas” queda deshabilitado, se advierte antes de cerrar la pestaña y la herramienta sólo puede volver a ejecutarse cada 12 horas para evitar saturación de consultas.

Nuevo: mazos como publicación independiente con precio conjunto, portada y compra como bloque

09/04/2026

Se incorporó una nueva experiencia de Mazos dentro del marketplace. Los vendedores ahora pueden importar una lista tipo Moxfield como mazo, editar su nombre, descripción, formato, precio publicado y carta portada, y publicarlo con URL propia dentro de la tienda. En público, el mazo se muestra como una publicación independiente con ahorro frente al valor por separado, mejor presentación visual de portada y una ficha interna con grilla de cartas, filtros y agrupación por tipo. Además, el carrito, checkout, resúmenes y correos principales ahora tratan el mazo como una sola unidad visual, mientras internamente el stock sigue resguardado por carta para mantener compatibilidad con el flujo transaccional existente.

Fix: contrapropuestas muestran estados correctos, se resuelven desde el detalle y bloquean acciones inválidas

08/04/2026

Se corrigió el flujo de contrapropuesta cuando el vendedor no tiene stock completo. Mientras la contrapropuesta está pendiente, el pedido original ya no se muestra como si siguiera esperando aprobación del vendedor, sino como una espera de respuesta del comprador. Cuando el comprador acepta, el pedido original pasa a estado 'Reemplazado por compra parcial', deja de ser operable y las listas muestran el correlativo del pedido nuevo directamente en el botón inactivo (por ejemplo, 'Reemplazado (0364)'). Además, la landing pública del correo ahora responde al estado real del ajuste: si ya fue aceptado, deja de mostrar un rechazo falso y permite continuar al pago. El mismo ajuste ahora también puede resolverse directamente desde el detalle de la compra, donde el comprador ve los cambios propuestos y puede aceptar o rechazar la contrapropuesta sin depender sólo del correo. En paralelo, mientras exista una contrapropuesta pendiente, el vendedor ya no puede volver a rechazar o reajustar manualmente ese pedido desde el panel, y los mensajes del detalle dejan de sugerir erróneamente que todavía se está esperando una aprobación normal del vendedor.

UX: aviso de cookies inicial y buscador mobile más limpio en iPhone

06/04/2026

Se incorporó un primer aviso simple de cookies en el frontend público, con aceptación persistente y enlace directo a la Política de privacidad, usando un diseño visual alineado al lenguaje de Scry. Además, se ajustó el buscador principal en mobile para mejorar la experiencia en iPhone: el campo ahora evita el zoom automático no deseado de Safari, se eliminó el botón lateral redundante de búsqueda y la navegación quedó enfocada en seleccionar sugerencias del autocomplete en lugar de dispararse con Enter.

Nuevo: carpetas públicas para organizar y compartir el catálogo de una tienda

06/04/2026

Las antiguas “colecciones” ahora son “carpetas”: una forma de categorizar cartas sin moverlas de tu stock (una carta puede estar en varias carpetas). En la vista pública de la tienda se muestran como cards con imagen de portada, contador y símbolos de maná; y cada carpeta tiene una URL compartible del tipo `/{tienda}/carpeta/{slug}` donde los filtros operan sólo sobre el contenido de esa carpeta. En el catálogo del vendedor, al seleccionar cartas aparece “Agregar a carpeta”: un modal permite elegir carpetas y crear una nueva ahí mismo. Además, tras agregar cartas, el conteo de cada carpeta se actualiza inmediatamente en el sidebar.

Pedidos: entrega en persona ahora requiere marcar el pedido como listo

05/04/2026

Se ajustó el flujo de pedidos para que la entrega en persona deje una trazabilidad explícita del vendedor antes de mostrar el código al comprador. Desde ahora, el vendedor debe marcar el pedido como “listo para entrega en persona” y recién ahí comienza a correr el plazo automático. Además, cuando existe respaldo válido de entrega presencial o retiro en tienda y el comprador no retira dentro del plazo, el cierre automático deja de caer injustamente como “vendedor no envió” y pasa a resolverse a favor del vendedor.

Fix: el comprador mantiene la sesión al volver desde Flow en QA y producción

05/04/2026

Se ajustó la política de cookies de sesión para que los entornos HTTPS emitan `ci_session` con `Secure` y `SameSite=None`, evitando que el comprador pierda la sesión al regresar desde Flow después de pagar. Con esto, el retorno post-pago vuelve logueado correctamente en QA y queda alineado para producción, mientras localhost mantiene el comportamiento compatible con HTTP para desarrollo.

Mejora: detalle de ventas muestra cartas más legibles y permite marcarlas como encontradas

03/04/2026

Se mejoró el resumen interno del detalle de ventas para vendedores: las imágenes de las cartas ahora se muestran más grandes, se pueden abrir en lightbox al hacer click y, cuando existe metadata localizada en cache local de Scryfall, se muestra también el nombre impreso de la carta bajo el nombre principal (por ejemplo, en español). Además, cada ítem del pedido incorpora un checkbox “La tengo” para que el vendedor pueda ir marcando visualmente las cartas encontradas; este estado se guarda localmente en su navegador por pedido y no altera la lógica transaccional del marketplace.

Mejora: Mi Catálogo suma toolbar de filtros y una vista interna más enfocada en el inventario

02/04/2026

Se rediseñó la vista interna de /catalogo para vendedores, dándole mucho más protagonismo al inventario y menos peso visual al bloque de colecciones. El catálogo ahora incorpora un toolbar compacto con búsqueda, sets reales del catálogo, tipo de carta, acabado, color, rareza, condición, cantidad visible y rápidos de orden por nombre, precio y stock, todo conectado al flujo AJAX existente de Admin::carta_filtrar. Además, el contador total del catálogo se actualiza con cada filtro, las filas muestran metadata útil por carta (set, rareza, condición y foil/no foil) y la tarjeta lateral de colecciones fue reducida y compactada para quedar en un rol secundario sin perder su funcionalidad.

Mejora: vista pública de filtros más compacta, consistente y útil para stock real

02/04/2026

Se refinó la vista pública de filtrado de cartas para acercarla al lenguaje visual de los filtros de tienda y hacerla más práctica al explorar stock real. El panel fue reorganizado en una barra más compacta con controles principales arriba (edición, condición, acabado y precio), chips para color/identidad, rareza y tipo de carta, resumen visual de filtros activos y acciones explícitas para buscar o limpiar. Además, se normalizaron labels al español y se incorporó soporte público para Condición y Acabado (Foil / No foil), permitiendo búsquedas más precisas desde /filtros sin cambiar la semántica de los parámetros GET existentes.

Mejora filtros de tienda: colecciones, sets reales, tipo de carta y URLs compartibles

02/04/2026

Se rediseñó el toolbar de filtros dentro de las páginas de tienda para separar correctamente dos conceptos que antes estaban mezclados: las colecciones internas del vendedor y los sets reales de Magic disponibles en su catálogo. Desde ahora la barra permite combinar Colecciones, Sets, Tipo de carta, Acabado, Color, Rareza y cantidad visible por página, manteniendo además los rápidos de orden y condición. También se sincronizó el estado de los filtros con la URL, de modo que cada tienda pueda compartir vistas filtradas concretas mediante enlaces directos. Como parte del mismo ajuste se compactó visualmente el bloque para desktop/mobile y se ocultó el banner placeholder superior de tienda y single de carta.

Fix: saneamiento de color e identidad de color en catálogos importados y filtro Incolora

02/04/2026

Se corrigió un problema de metadata que podía dejar cartas claramente coloreadas clasificadas como incoloras dentro de algunas tiendas, especialmente después de importaciones por lista. El trabajo incluyó reforzar la importación vía Moxfield para guardar correctamente `colors`, `color_identity` y `type_line`, además de ejecutar una reparación progresiva de registros históricos en QA y producción usando Scryfall como fuente canónica. También se ajustó la semántica del filtro “Incolora” para que represente el color real de la carta (`colors`) y no exija identidad vacía, permitiendo clasificar correctamente cartas incoloras con identidad de color como Herigast o Territory Culler. Con esto el filtro dejó de arrastrar falsos positivos evidentes y el catálogo quedó mucho más consistente sin reactivar productos eliminados.

Deck Builder ahora importa links de ManaBox y prioriza tiendas agrupadas con reputación y ubicación

01/04/2026

El Deck Builder sumó una nueva entrada opcional para pegar URLs compartidas de ManaBox: al cargar el link, la lista se convierte automáticamente en texto editable, se vuelca al textarea y se ejecuta la búsqueda al instante. Además, la vista de resultados ahora viene agrupada por tienda por defecto y los bloques de tienda fueron compactados para mostrar mejor señales de confianza y contexto comercial, incluyendo reputación, verificación, cobertura y ubicación disponible de cada vendedor.

Deck Builder suma links de tienda con oferta temporal y vista enfocada para comprador

01/04/2026

Se amplió el flujo compartido del Deck Builder para vendedores. Ahora, además del link general de una búsqueda, cada tienda puede generar su propia vista enfocada con solo las cartas que sí tiene disponibles, eliminando distracciones y dejando el CTA principal centrado en agregar esas coincidencias al carro. Sobre esa misma vista, el vendedor también puede crear un link temporal con descuento para la selección de cartas de su tienda, definiendo tipo de rebaja y vigencia. Cuando el comprador entra por ese enlace, ve la oferta aplicada directamente en la landing y, si agrega las cartas al carrito, el precio promocional queda congelado durante una ventana corta para que pueda completar el checkout sin perder la condición ofrecida.

Deck Builder ahora permite compartir búsquedas y mostrar coincidencias de una tienda específica

31/03/2026

Se amplió el Deck Builder para que, al buscar una lista, se genere automáticamente un enlace temporal compartible con vigencia de 72 horas. Quien abra ese link vuelve a cargar la misma lista y ve la misma búsqueda sin tener que pegar el texto nuevamente. Además, cuando un vendedor está logueado, ahora aparece una pestaña contextual con las cartas de su propia tienda que coinciden con la lista buscada, incluyendo opción de agregar cartas individualmente o sumar todo lo disponible al carrito. Ese mismo contexto de tienda también puede compartirse con un enlace dedicado, de modo que el comprador abra directamente la vista de esa tienda sobre la lista consultada.

Desbloqueo de cola de importaciones SM/Manabox + hardening del procesador

31/03/2026

Se corrigió un problema que podía dejar bloqueada toda la cola de importaciones SM cuando un lote anterior fallaba durante el procesamiento. En este caso, imports más nuevos como el 424 (Manabox) quedaban en PENDIENTE sin haber comenzado realmente, porque el runner siempre intentaba primero los lotes más antiguos. Durante la revisión se detectó además una fragilidad en el procesamiento de cartas resueltas desde Scryfall: algunos registros podían venir sin `type_line`, lo que terminaba generando un `NULL` en `mps_cartas.tx_type_line` y provocando una caída completa del proceso. El ajuste contempla robustecer `proc_sm()` para no exigir `api_k` cuando se ejecuta por CLI, alinear correctamente el wrapper `cli_sm run` con el procesador real, y agregar fallback seguro para `type_line` (incluyendo `card_faces` cuando aplica), evitando que un registro incompleto vuelva a botar todo el lote. Como resultado, la cola pudo destrabarse, los imports posteriores volvieron a avanzar por tandas y el import de Manabox 424 retomó procesamiento normal.

Top vendedores real en portada, basado en reputación, ventas y stock activo

29/03/2026

Se reemplazó la maqueta temporal del bloque de vendedores destacados del home por un ranking real alimentado desde la base de datos de QA. La portada ahora muestra 8 vendedores en formato 4x2, priorizando la reputación real de compradores, complementada por ventas finalizadas y catálogo con stock activo. Para evitar rankings engañosos, la reputación se pondera por volumen de calificaciones, de modo que una sola reseña perfecta no supere a tiendas con mejor trayectoria comprobada. También se agregó al bloque la cantidad de calificaciones recibidas por cada tienda, se eliminó el fallback mock de desarrollo y se normalizaron las URLs de imágenes para que funcionen correctamente tanto en QA como en producción.

Wishlist con alertas opcionales por WhatsApp al volver el stock

28/03/2026

Se incorporó un nuevo canal opcional de notificación por WhatsApp para la wishlist. Desde ahora, cada usuario puede guardar su número en formato internacional y activar o desactivar las alertas desde la misma página de Wishlist, manteniendo el correo electrónico como canal base. La implementación contempla normalización del número, prerrelleno automático cuando el usuario ya tiene un teléfono asociado y una presentación más clara del sistema de notificaciones tanto para usuarios logueados como no logueados. El aviso por WhatsApp se envía únicamente cuando una carta de la wishlist pasa efectivamente de sin stock a con stock, evitando mensajes repetidos mientras la carta siga disponible. Además, se integró el envío mediante Twilio con template aprobado para WhatsApp y se ajustó la lógica de origen de las cartas agregadas desde el buscador para que también queden cubiertas por este nuevo canal.

Eliminación administrativa de tiendas por infracción + bloqueo permanente de correo

26/03/2026

Se agregó en el panel de detalle de tienda una nueva acción administrativa para eliminar una tienda por infracción, junto con sus cartas y relaciones operativas directas, mediante un flujo controlado y transaccional. La implementación incorpora validación de acceso solo para administradores, ejecución exclusiva por POST, confirmación previa en interfaz y bloqueo de eliminación total cuando la tienda tiene historial transaccional relevante, evitando romper trazabilidad o consistencia de datos. Además, se creó una tabla de soporte para bloquear permanentemente el correo asociado, impidiendo que el usuario vuelva a registrarse o iniciar sesión, incluyendo acceso con Google. También se integró el envío de un correo de notificación al usuario afectado y se actualizó la página de Términos y Condiciones para incluir expresamente la prohibición de nombres, slugs, descripciones o contenidos vulgares, ofensivos, sexualmente explícitos, discriminatorios, engañosos o inapropiados. Posteriormente, se ajustó la redacción del correo para dejar el motivo en términos genéricos, indicando únicamente que se detectó una infracción a los Términos y Condiciones, sin exponer una tipología específica de faltas.

Mensaje automático post-pago configurable por tienda + correo orientativo al comprador

24/03/2026

Se incorporó un nuevo flujo post-pago para reducir la incertidumbre del comprador apenas se confirma el pago. Cada tienda ahora puede configurar un mensaje automático post-pago dentro de Configuración > Entregas, con límite de 300 caracteres, contador visible y sanitización backend para evitar emojis, tags HTML y caracteres problemáticos en base de datos. Al confirmarse el pago, Scry envía un nuevo correo al comprador indicando que el pago fue confirmado, que ya puede coordinar la entrega o el envío y que existe un canal activo asociado al pedido. Si la tienda configuró mensaje, ese mismo texto se muestra también en el correo dentro de un bloque destacado y se publica automáticamente en el chat del pedido; si la tienda no configuró mensaje, no se publica nada en el chat. Además, se eliminó el fallback genérico de Scry dentro del chat para que allí aparezca únicamente la voz de la tienda, y se agregó un alert contextual en la vista de ventas del vendedor cuando aún no tiene configurado su mensaje automático post-pago. También se ajustó la UI de Entregas para ordenar mejor el bloque nuevo y separar correctamente el botón Guardar entregas del textarea del mensaje.

Nuevo stepper en correos transaccionales de compra

15/03/2026

Se integró un bloque visual de seguimiento de compra en los correos transaccionales del comprador, unificando el flujo en 4 pasos: Reserva, Aprobación y pago, Envío del vendedor, y Finalizar y dejar feedback. El componente fue adaptado para HTML email con foco en compatibilidad mobile, corrigiendo problemas de renderizado como círculos oblongados, labels montados y bordes innecesarios. Se aplicó en las plantillas de reserva, reserva aprobada, comprobante cargado, retiro en tienda despachado, compra finalizada del comprador y retiro exitoso en tienda. Además, se ajustaron los estados activos/completados según cada instancia del flujo y se reforzó sanitización básica en algunas plantillas para evitar errores de renderizado.

Fix: Flow ya no deja intentos rechazados/anulados como pendientes y permite reintentar pago del mismo pedido

13/03/2026

Se corrigió el flujo de pagos con Flow para que los intentos terminales no queden mal persistidos como pendientes en mps_pedido_pago. El retorno/validación del pago ahora prioriza el token de Flow y consulta el estado real del intento con información extendida; si Flow devuelve status 3 (rechazada) o 4 (anulada), el intento se cierra correctamente en base de datos y el pedido permanece disponible para generar un nuevo intento de pago sin rehacer la compra. Además, la actualización de pagos deja de hacerse de forma amplia por id_pedido y pasa a resolverse por intento específico, evitando inconsistencias cuando existen múltiples reintentos sobre un mismo pedido. También se robusteció la obtención del último pago para tomar siempre el intento más reciente y se evita bloquear al comprador con links ya muertos o no pagables.

Fix: login por correo/contraseña tolera expiración/desalineación de CSRF en modal AJAX

13/03/2026

Se corrigió el problema intermitente del login por correo y contraseña que devolvía 403 Forbidden / 'The action you have requested is not allowed' cuando el token CSRF del modal quedaba vencido o desalineado respecto de la cookie. Se agregó un endpoint liviano para refrescar CSRF, se expuso la configuración CSRF real al modal y el flujo JS ahora sincroniza el token antes de enviar credenciales. Si aun así el POST encuentra un 403 por CSRF, el frontend refresca el token y reintenta automáticamente una vez, evitando que el usuario vea el error genérico de 'Error de red o respuesta inválida del servidor'. El mismo enfoque quedó aplicado también al flujo de recuperación de contraseña para mantener consistencia.

Ops: saneamiento manual de intentos Flow rechazados en producción para destrabar pedidos 0326 y 0345

13/03/2026

Se revisaron manualmente en producción los pedidos mpsc-0326 y mpsc-0345, ambos asociados a intentos de pago Flow que habían sido creados correctamente pero terminaban en status 3 con lastError -6 ('Rechazo general'). Como el sistema aún dejaba esos intentos en estado pendiente, se cerraron manualmente en mps_pedido_pago como anulada/rechazada según correspondía, permitiendo regenerar nuevos links de pago sin recrear el pedido completo. La revisión confirmó que el problema original provenía del rechazo terminal de Flow sobre esos intentos y no de una falla general de la tienda Bowito ni de la creación de órdenes.

Autorespuesta inbound para WhatsApp Twilio

12/03/2026

Se implementó un flujo de autorespuesta para mensajes entrantes en el canal de WhatsApp de Twilio. Cuando un usuario responde al bot, Marketplace Scry devuelve una respuesta automática que indica que el canal es automatizado y redirige a atención humana mediante un enlace wa.me con mensaje precargado. La respuesta se limita por remitente usando un TTL configurable para evitar spam repetido. Se agregó un endpoint dedicado para inbound, validación de firma de Twilio y exclusión CSRF puntual para el webhook. La funcionalidad fue validada en QA con Twilio WhatsApp Sandbox y quedó lista para activarse en producción apuntando el sender real a /twilio/whatsapp-inbound.

Perf: optimización profunda del home y assets públicos para mejorar velocidad de carga

10/03/2026

Se aplicó una ronda amplia de optimizaciones de rendimiento en Marketplace Scry enfocada en reducir TTFB, peso transferido y costo de render inicial del home. Se agregó cache del home para visitantes anónimos, se redujo la cantidad de vitrinas/cartas renderizadas en portada, y se limitó la carga anticipada de fondos de sets. Además, las imágenes de cartas del home ahora priorizan tamaños pequeños, usan lazy loading/async decoding y se sirven por same-origin reutilizando el proxy Img::scryfall con cache local, ETag, Last-Modified y respuestas 304. También se recortó la carga global de assets: DataTables quedó acotado a vistas donde realmente se usa, se eliminó carga duplicada de Popper, se reemplazó la dependencia externa de jquery-cookie por compatibilidad inline, GSAP salió del layout global con fallback vanilla JS, y socket/login dejaron de cargarse de entrada para público anónimo. Finalmente, se reforzó caché/compresión de archivos estáticos a nivel HTTP para CSS, JS, imágenes, fuentes y SVG.

Fix: editor de carta en Mis Cartas (admin catálogo) vuelve a abrir (ruta correcta + AJAX estable)

02/03/2026

Se corrigió el flujo de edición en /catalogo (vista admin “Mis Cartas”) que estaba fallando con 303 y no cargaba el modal. El botón “Editar” ahora apunta a la ruta pública correcta (/cargar_modal_edit) en lugar de /admin/carta_edit, evitando redirecciones del servidor y permitiendo que el editor se cargue vía AJAX de forma consistente. Se mantuvo el envío de cadena (hash) y headers XHR para preservar el comportamiento original del modal.

Fix: buscador/paginación en Mis Cartas (admin catálogo) + orden estable de columnas + eliminar seleccionadas + ocultar paginador

02/03/2026

Se corrigió el catálogo interno en /catalogo (vista admin “Mis Cartas”) para que el buscador por nombre funcione sobre el total del catálogo y no sólo sobre la página visible. Se aisló la vista de colisiones con scripts globales renombrando IDs/handlers y se implementó búsqueda/paginación/‘mostrar N’ en modo server-side vía Admin::carta_filtrar (AJAX con X-Requested-With), garantizando que el botón “Editar” permanezca siempre en la 2da columna (después del checkbox) incluso tras interacciones. Además, se restauró el correcto funcionamiento de “Eliminar seleccionadas” durante búsquedas/filtros y se ocultó la paginación cuando no existe más de una página (ej. 33 cartas con vista 100).

Feature: Home startup refresh (testimonios aleatorios + POS block) + sección Partners en footer + FAQ comisiones

02/03/2026

Se ajustó el hero del home para mejorar jerarquía visual (CTA principal más grande), se implementó un bloque de testimonios tipo 'pills' con selección aleatoria server-side (10 posibles, se muestran 3 por carga), y se añadió una sección dedicada a POS para tiendas. Además, se incorporó una franja 'Partners' en el footer con logos en horizontal (180x60). Finalmente, se añadió al FAQ una entrada de '¿Cuánto cobramos de comisión?' con tablas de ejemplo para vendedor y comprador (incluye comisión/IVA y total por $10.000).

Feature: Ventas Presencial (POS) + registro unificado de ventas y export CSV (online / POS / consolidado)

28/02/2026

Se agregó un flujo de Ventas Presencial (POS) para que el vendedor pueda marcar cartas del catálogo como vendidas fuera de Scry, descontando stock y registrando la venta sin generar comisión ni entrar al flujo de pedidos. En “Mis ventas” se incorporaron dos pestañas (Pedidos online y Presencial (POS)), con acciones de ver/anular (anular reintegra stock y marca el registro como anulada). Además, se implementó exportación CSV por pestaña y un export consolidado que unifica pedidos online + ventas POS en un solo archivo. Se corrigieron rutas para evitar que la regla ventas/(:any) intercepte endpoints POS y exports.

Feature: referencia Card Kingdom (affiliate) + precio sugerido CK-first en carga individual y por lista

25/02/2026

Se integró el feed de precios de Card Kingdom (affiliate) como referencia principal en USD: ahora las páginas de carta muestran “Referencia Card Kingdom” (precio + stock) con link directo al producto y tracking partner=scrycl. Se creó cache local en BD con tablas mps_ck_item y mps_ck_item_market (mapeo por scryfall_id + is_foil) y se programó actualización automática en producción cada 6 horas (log en _tools/ck_import_prod.log). En el backoffice, la carga individual y la importación por lista priorizan CK para el precio sugerido; si no existe match, se usa Scryfall como fallback. La conversión a CLP usa el dólar configurado por la tienda y redondea siempre hacia arriba (ceil). Además, se corrigieron detalles de UX/técnicos: NM por defecto, el precio sugerido no depende de la condición, fix de CSRF en AJAX y normalización de collector_number para matchear el printing correcto.

Fix: consistencia de montos y comisiones en mails, tablas y pagos a vendedor (IVA sobre comisión + deuda Flow FIFO)

24/02/2026

Se corrigieron inconsistencias de cálculo/visualización entre BD, pricing y correos. Ahora los montos se muestran siempre sobre el subtotal de productos (mps_pedido.total_compra) y el neto del vendedor se calcula como total_compra − (comision − iva). Se ajustó el listado de ventas para mostrar “Recibes” correctamente. Además, el correo de notificación de pago ahora considera descuentos por cargos pendientes de reembolsos Flow (FIFO), mostrando el monto neto a depositar y el desglose de descuento/monto bruto; y si aplica, se agrega la línea de descuento también en el detalle del pedido.

Security: verificación de tiendas con almacenamiento privado, acceso controlado y retención mínima

23/02/2026

Se reforzó el flujo de verificación de identidad de tiendas: los documentos ya no se exponen por rutas públicas, se guardan en un storage privado fuera del webroot y se sirven únicamente mediante endpoints autenticados. Se mejoró la validación de archivos (formatos/tamaño y verificación real de imagen), y se corrigió la entrega de headers para que los previews se rendericen correctamente. Además, al aprobar o rechazar una verificación, los documentos se eliminan automáticamente (retención mínima) y la UI del vendedor oculta el formulario de subida cuando la cuenta ya está verificada. Se ajustó la carga de foto de perfil de tienda para que use un storage público independiente y no se mezcle con la carpeta de verificación.

Fix: chat habilitado en pedidos pagados desde correo (Propuesta de compra parcial)

23/02/2026

Se corrigió un caso donde los pedidos generados por el flujo de Propuesta de compra parcial (aceptación desde correo y pago vía Flow) se creaban sin conversación asociada, lo que impedía persistir mensajes en el chat. Ahora, al crear el pedido reformado, el sistema asegura la creación de la conversación (mps_conversacion) y el registro de integrantes (mps_usuarios_conversacion), habilitando el chat de forma consistente.

Nuevo: compra parcial (propuesta del vendedor) con aceptar/rechazar por correo

22/02/2026

Si al vendedor le falta stock de uno o más ítems, ahora puede proponer una compra parcial desde el detalle de la venta. Se abre un modal para ajustar cantidades (incluye quitar ítems con cantidad 0) y el sistema notifica al comprador por correo con el resumen de cambios y nuevos totales. El comprador puede Aceptar y pagar o Rechazar directamente desde el correo.

Nuevo: aceptar compra parcial crea un nuevo pedido y redirige a Flow

22/02/2026

Al aceptar una propuesta de compra parcial, el sistema crea un nuevo pedido (pedido reformado), recalcula totales y comisiones, y redirige directamente al checkout de Flow. El pedido original queda marcado como 'Reemplazado por compra parcial' para evitar doble pago y mantener trazabilidad.

Fix: estados consistentes para compras parciales (rechazo comprador y pedido reemplazado)

22/02/2026

Se agregaron los estados 'Rechazada por comprador' y 'Reemplazado por compra parcial' en listas y detalles de compras/ventas, evitando warnings y mostrando badges correctos en UI.

Mejora: email y landing de compra parcial alineados a la marca

22/02/2026

El correo de propuesta y las páginas de aceptar/rechazar fueron rediseñados para usar el look&feel del marketplace (logo, tipografía y layout), evitando pantallas off-brand.

UX: menú superior con estado activo + botón Menú mejorado en mobile

21/02/2026

Se mejoró la navegación del header: (1) se agregó estado activo en la barra superior para resaltar la sección actual (Home, /buscar, /deckbuilder, /wishlist, /tiendas, etc.) con estilo visible en fondo oscuro; (2) en mobile se corrigió el comportamiento del texto “Menú” (ya no enlaza a Home) y se rediseñó el trigger como un botón ancho completo, más compacto (16px), con “Menú” a la izquierda y el ícono hamburguesa a la derecha. Se mantiene el header sticky sin cambios estructurales adicionales.

Feature: carrito tipo sidebar (offcanvas) en todo el sitio

21/02/2026

Se implementó un carrito tipo sidebar que se abre desde el lado derecho sin salir de la página (ideal para Deck Builder). El panel permite ver ítems, eliminar cartas individualmente, vaciar el carrito completo y acceder a /checkout (botón deshabilitado si el carrito está vacío).

Feature: Deck Builder (pegar lista y ver disponibilidad por carta)

20/02/2026

Se incorporó la página /deckbuilder para pegar una lista (formato Cantidad + Nombre, una carta por línea) y consultar disponibilidad. El endpoint de preview devuelve Disponibles / Sin stock / No encontradas, ordenando listings por precio ascendente y desempate por stock.

Fix: Deck Builder – errores 500 por columna inexistente en tiendas

20/02/2026

Se corrigió el query que intentaba leer t.tx_slug (columna inexistente) y se ajustó al slug real de la tienda (tx_nombre_slug), eliminando el 500 al consultar disponibilidad.

Fix: Deck Builder – mezcla de collations en comparación por nombre de carta

20/02/2026

Se corrigió el error 'Illegal mix of collations' en el filtro por nombre de carta aplicando normalización/collation consistente en la comparación, evitando fallas en QA y local al ejecutar IN(...) con nombres de carta.

Perf: índice compuesto para búsquedas masivas por nombre de carta

20/02/2026

Se definió un índice compuesto para acelerar consultas del Deck Builder y búsquedas por nombre (tx_nombre_carta + estado + stock + precio). Como tx_nombre_carta es TEXT, el índice se crea con prefijo (191) para compatibilidad.

UX: página /buscar para hojear cartas y filtrar como en Home

20/02/2026

Se creó la página /buscar como punto dedicado para explorar el catálogo con filtros equivalentes al Home, manteniendo el mismo flujo de resultados.

Fix: /buscar – filtros consistentes y tab inicial en Filtrar

20/02/2026

Se ajustó la pestaña Filtrar en /buscar para que quede consistente con el Home (colores/opciones) y se dejó Filtrar como tab principal por defecto.

Fix: /buscar – dropdown de Commander / sinergia

20/02/2026

Se corrigió el dropdown de búsqueda por Commander/sinergia para que vuelva a funcionar en la vista /buscar.

UX: tiendas verificadas primero + ordenamiento por header

20/02/2026

Se mejoró el listado de tiendas para priorizar tiendas verificadas y permitir ordenamiento desde el header de la tabla, manteniendo un criterio consistente de desempate.

Mejora: listado de tiendas con prioridad verificadas y ordenable por columna

20/02/2026

Se mejoró la página “Todas las tiendas” para priorizar tiendas verificadas y permitir ordenarlas desde el header. Ahora existe una columna “Verificada” (badge Sí/No) que habilita ordenar por verificadas; el criterio aplicado es Verificadas primero (DESC) y, como desempate, nombre alfabético (A→Z). Además, el orden por defecto del listado queda estable (verificadas primero y orden consistente dentro de grupos), manteniendo compatibilidad con DataTables y sin cambios de base de datos.

Feature: Wishlist (alertas multi-carta) + CTA en cartas sin stock

19/02/2026

Se implementó Wishlist como evolución del sistema de Alerta de stock: ahora puedes guardar múltiples cartas y recibir correos cada vez que vuelvan a tener stock (0→1+). Se añadió la nueva página /wishlist con buscador por nombre exacto, listado de cartas guardadas (con estado Sin stock / Disponible ahora) y opción de quitar cartas para desuscribirse. El enlace del buscador “¿No encuentras tu carta?” ahora dirige a Wishlist. Además, en el detalle de cartas sin stock se incorporó un CTA para agregar a Wishlist (si no hay sesión abre el modal de login), y cuando una carta ya está guardada se muestra el estado “En wishlist”. En Wishlist, las cartas disponibles ahora linkean directamente al listing correspondiente.

Cancelación de venta post-pago con reembolso y notificación

19/02/2026

Se habilitó la cancelación de ventas por parte del vendedor cuando el comprador ya pagó (estado “Esperando envío”). Al confirmar, el pedido pasa a “Vendedor no envió”, se crea el reembolso pendiente para el comprador y se envía un correo notificando el reembolso (incluye recordatorio de revisar datos bancarios en Configuración → Pagos).

Ajustes Mis ventas: restauración lista, orden y UX

19/02/2026

Se corrigió la carga de la tabla en “Mis ventas” (DataTables/IDs y endpoint), se aseguró el orden por defecto de más reciente a más antiguo, se estabilizó el ruteo para evitar colisiones con el wildcard de detalle y se ajustó el detalle de compra para mostrar el botón de feedback cuando corresponde (incluyendo casos con reembolso por “Vendedor no envió”).

UX: link a tienda y ID real del pedido en Mis compras

19/02/2026

En el listado de Mis compras, la columna ID ahora muestra el código real del pedido (mpscry-XXXX) en lugar de un correlativo. Además, el nombre de la tienda del vendedor es clickeable y abre la tienda en una nueva pestaña para facilitar navegación y confianza (Agradecimientos Jaime Sierralta).

Fix: orden correcto por compra más reciente en Mis compras (server-side)

19/02/2026

Se corrigió el orden por fecha en Mis compras para que el pedido más reciente aparezca primero. El problema ocurría porque la fecha formateada dd/mm/YYYY se ordenaba como texto en server-side. Ahora se usa un campo de fecha raw para ordenar correctamente sin afectar el formato visible.

UX: link a tienda en detalle de compra

19/02/2026

En el detalle de la compra, el nombre de la tienda del vendedor ahora es un enlace que abre la tienda en una nueva pestaña, manteniendo consistencia con el listado y mejorando el acceso rápido al perfil del vendedor.

Fix: compensación automática de cargos Flow (FIFO) al confirmar pagos

18/02/2026

Al confirmar un pago de venta, el sistema ahora compensa automáticamente los cargos pendientes por tarifa de reembolso de Flow, aplicando criterio FIFO (se descuenta primero del pago más antiguo). Esto asegura que la deuda por reembolsos baje correctamente a 0 cuando corresponde y que el neto a transferir se calcule de forma consistente.

Fix: regiones de Chile completas en configuración de localización

17/02/2026

Se corrigió el selector de Región para Chile, incorporando las regiones faltantes (Arica y Parinacota, Los Ríos y Ñuble). Además, el endpoint de Select2 aumentó el límite de resultados para evitar recortes y las regiones ahora se ordenan alfabéticamente para una mejor selección.

UX: indicador de cargos por reembolso y explicación contextual

18/02/2026

Se mejoró la comunicación del cargo asociado a reembolsos (tarifa Flow) en el panel de ventas: el usuario puede ver el monto pendiente y entender que se compensa automáticamente con el próximo pago a recibir (FIFO).

Mejora: email de "pago confirmado" informa descuento por tarifa Flow cuando aplica

18/02/2026

El correo que recibe el vendedor al procesarse un depósito ahora incluye el detalle del descuento por tarifa de reembolso de Flow solo cuando el pago corresponde al FIFO que compensa la deuda. Los pagos posteriores (sin compensación) mantienen el formato normal.

Nuevo: alertas de stock por correo (double opt-in)

15/02/2026

Cuando una búsqueda no tiene resultados (o no es la carta exacta que buscas), ahora puedes activar una alerta de stock: seleccionas el nombre exacto de la carta, ingresas tu correo y confirmas vía email (double opt-in). Al confirmarlo, tu contacto se agrega automáticamente a la lista “Stock alerts” en Brevo (ID 10) y te notificaremos cuando vuelva a haber stock de esa carta.

Fix: tabla de comisiones en registro y contador en vivo

14/02/2026

Se ajustó la tabla de comisiones del registro eliminando la columna “Comisión base” (no aplica). El badge de “cartas indexadas” en registro ahora usa el mismo contador en vivo del home y el cálculo llega correctamente a la vista. Además, la tabla de comisiones para comprador dejó de mostrar decimales.

Mejora: beneficios del registro en formato de cajas responsivas

14/02/2026

Los beneficios del registro dejaron de mostrarse como lista y pasaron a cards/cajas responsivas para mejorar lectura. Se optimizó el layout para desktop y mobile y se actualizó el copy eliminando el punto de “Próximamente”.

Nuevo: páginas públicas de Acerca de, Política de privacidad y Términos

14/02/2026

Se crearon páginas dedicadas de Acerca de, Política de privacidad y Términos y condiciones (Comercializadora Scry SpA, RUT 77.802.091-2), necesarias para validaciones de OAuth. Se reformó el footer para enlazarlas directamente (sin modal).

Nuevo: pausa de ventas por tienda (sin ocultar cartas)

14/02/2026

Los vendedores ahora pueden pausar temporalmente las ventas de su tienda: las cartas siguen visibles, pero el botón “Agregar al carro” queda deshabilitado y el backend bloquea intentos de agregar al carrito. La pausa puede ser indefinida o con reanudación automática usando fecha y hora.

Mejora: control de reanudación (día + hora) y confirmación al guardar

14/02/2026

La reanudación automática se simplificó a día + hora (sin minutos), se evita seleccionar fechas pasadas y se agregó feedback post-guardado indicando el estado de la suspensión (activa/activa hasta X/ventas activas).

Fix: guardado de suspensión desde Cuenta

14/02/2026

Se corrigió el guardado de la suspensión desde la sección “Cuenta” para que no dispare validaciones de “Mi tienda” ni redireccione incorrectamente. Además, se robusteció el manejo de slug para evitar errores cuando el texto viene nulo.

Mejora: carrito como invitado + login/registro con Google (compradores y vendedores)

14/02/2026

Ahora puedes agregar cartas al carrito sin iniciar sesión (se guarda en sesión y el badge se actualiza). En checkout se solicita iniciar sesión para reservar y se abre el modal de login sin redirigir al registro. Se incorporó “Continuar con Google” en login y registro; al iniciar sesión se respeta la redirección de retorno (checkout/carrito) y se hace merge del carrito invitado con el carrito del usuario. Además, se reforzó seguridad validando email verificado en Google, sanitizando el parámetro de retorno para evitar redirecciones externas y bloqueando el acceso desde navegadores embebidos de Messenger o Facebook, con aviso para abrir el Marketplace de Scry en un navegador compatible.

Mejora: resumen de pagos en “Mis ventas”

14/02/2026

Se agregó un bloque informativo que indica el día de pago (martes), muestra el monto pendiente por depositar (ventas finalizadas pendientes de pago) y recuerda mantener los datos de pago actualizados para evitar retrasos.

Mejora: feedback inmediato en buscador (autocompletar)

13/02/2026

El buscador global ahora muestra mensajes de estado: “Sigue escribiendo…” cuando hay 1–2 caracteres y “Buscando…” mientras se cargan coincidencias (3+ caracteres), reemplazándose automáticamente por los resultados al llegar.

Nuevo: auto-cierre de pedidos por inactividad del comprador

13/02/2026

Si el vendedor sube el comprobante de envío y el comprador no confirma la recepción, el pedido se marca automáticamente como recibido conforme tras 10 días para permitir el procesamiento del pago.

Nuevo: registro público de cambios

13/02/2026

Ahora puedes ver el historial de mejoras del Marketplace (fixes, features y optimizaciones).

Carrito
Cargando carrito…
Ir a finalizar reserva