Changelog
01:49
Changelog

PC de Adam - Changelog

  • Archivo
  • Editar
  • Ver
  • Insertar
  • Formato
  • Herramientas
  • Tabla
  • Complementos
  • Ayuda
Orgullosamente robado a Pablo Vizcaino, pero modificado
  • Comentar
  • Compartir

Antes de nada, es posible que veas cosas que no se ven o no aparecen. Eso es porque está realizado, pero no publicado. La idea es tener un control de todas las acciones realizadas. Cuando se publiquen las páginas/apps, se actualizará para añadir los enlaces correspondientes.

2025/diciembre/22

  • Estantería / Llaveros:
    • Optimización completa de la REST API que usan estas dos páginas. Antes las tenía en transients, pero al usar Redis (caché de objetos en la RAM), ya he perdido tenerla pre-cargada en forma de caché. Cada día hay más discos y necesito mega-optimizar la consulta para que siempre esten cargadas.
    • Se ha convertido de usar la Transient API por la Options API, que precargará en la base de datos sin ser 100% volátil con Redis. Ahora ya tendré una sola opción con el listado y devolver la respuesta correspondiente con cada llamada a la API.
    • Además, he reducido la respuesta para evitar enviar información repetida. Hemos reducido unos 10KBs de las llamadas totales al día de hoy. No es mucho, pero acelera bastante. Las accionse realizadas son las siguientes:
      • El compuesto de ‘artista (separador) titulo’ que también llevaba HTML personalizado. Por lo que aumentaba el peso de la llamada.
      • Reduzco el campo anterior para usar los campos ‘artist’ y ‘title’ donde antes se usaba.
      • En la URL de la imagen, he eliminado el dominio actual. Ahora, en las plantillas correspondientes para crear el apartado visual, volverá a añadirlo. Si son 700 discos, son 700 textos iguales a reducir. (incluso podría quitar el /wp-content/uploads/, pero tampoco vamos a ajustar tanto.
      • Quito el campo ‘year’ porque ni lo estaba añadiendo (todos en null) ni lo estaba usando.

2025/diciembre/14

  • Historial de canciones:
    • Se mejora el responsive del número de canciones, ya que es tan elevado que ya no encaja bien en todas las resoluciones.

2025/diciembre/13

  • Estantería:
    • Mejora del sistema de caché del REST API personalizado que se crea porque estaba fallando con Redis. Lo he vuelto a dejar con transients y ya se encargará mejor de gestionarlo así Redis que haberlo hecho nativo a éste.
    • Mejora del CSS en dispositivos móviles como mejor espaciado, título/artista en dos líneas y mejora de legibilidad.
    • Se añade una especie de loader de skeleton que no me gusta nada, pero estoy trabajando en ello. Ya lo arreglaré cuando tenga fuerzas de hacer algo.

2025/diciembre/05

  • Estadísticas de concierto:
    • Se arregla el responsive de la tabla de ranking de precios que se había roto.
    • Añado una doble columna para las estadísticas rápidas.

2025/noviembre/30

  • Discos:
    • La IA se ha apoderado de mi. No, es broma. Pero estoy aprendiendo a usar agentes. Le he dado la app de discos y me ha dicho que me odia…
    • Todo lo que ha hecho la IA:
      • Sistema de medición de rendimiento (baseline y comparación)
      • Conversión de CSS a SCSS con metodología BEM (prefijo .c-)
      • Extracción de constantes a config/constants.js
      • Variables SCSS centralizadas en _variables.scss
      • Refactorización: separación de Discs en componentes más pequeños
      • Componente FiltersSection para filtros
      • Componente SortSection para ordenamiento
      • Componente DiscsList para el listado
      • Componente LazyImage para carga diferida de imágenes
      • Hook useDiscsFilters para lógica de filtros
      • Hook useTaxonomies consolidado (elimina múltiples useEffect)
      • Hook useScrollListener para scroll
      • Hook useIntersectionObserver mejorado con reset y detección inmediata
      • Optimización de re-renders con React.memo en DiscListItem y DiscsList
      • Utilidades: sorting-helpers.js, taxonomy-helpers.js, country-flags.js
      • Utilidades: data-formatters.js, graphql-helpers.js, disc-transformers.js, disc-meta-helpers.js
      • Estilos de react-select extraídos y optimizados con useMemo
      • Eliminación de código no usado y console.logs de debug
      • Documentación JSDoc en funciones y hooks
      • Mejora del manejo de errores en fetch-taxonomies.jsx
      • Fix del bug: imágenes que se quedaban en spinner al cambiar filtros/orden
      • Eliminación del parpadeo de imágenes al cambiar contexto
      • Generación de contextKey para resetear imágenes cuando cambia el contexto
      • Script PERFORMANCE-CONSOLE.js para usar funciones de rendimiento en consola
      • SkeletonLoader reutilizable: creado componente con props configurables (count, variant, className).
      • Estilos SCSS para SkeletonLoader: creado archivo con metodología BEM.
      • Reemplazo del skeleton hardcodeado: DiscsList ahora usa SkeletonLoader.
      • Accesibilidad: agregado aria-live=»polite» y aria-atomic=»true» al contador de resultados.
      • Accesibilidad: agregado role=»status» y aria-busy en estados de carga.
      • Accesibilidad: agregado aria-label al botón de limpiar filtros.
      • image-proxy.js: agregada función isValidUrl() para validación robusta.
      • image-proxy.js: manejo de URLs relativas, data: y protocolos diferentes.
      • image-proxy.js: try-catch para manejo seguro de errores.
      • Prettier: creado .prettierrc con configuración consistente.
      • Prettier: creado .prettierignore excluyendo node_modules, dist y SCSS.
      • Lo que he hecho yo:
        • Mejoras del CSS.
        • Optimizaciones para Dart 3.0.
        • Vigilarlo porque se le ha ido la pinza muchísimas veces.

2025/noviembre/21

  • General:
    • En las ventanas, ya no se podrá seleccionar textos. Son muchos casos donde alguien querría seleccionar, pero los revisaré uno a uno. Ahora mismo, no me gusta y prefiero quitarlo entero.
    • Arreglo del selector de iconos encima de las ventanas.
      • Ahora, el selector se queda un z-index por debajo de las ventanas.
      • También se detecta que si el click está encima de una ventana, ya no se hace.
    • Changelog (tanto el del PC como el de Otros proyectos):
      • Parece que ya necesitaba unos reajustes adicionales para que funcionara mejor. Está el diseño regulero y he cambiado muchas cosas. Así que lo he optimizado un poco e ir mejorándolo poco a poco para dejarlo a mi gusto.

2025/noviembre/18

  • Hoy he probado Antigravity, el nuevo VS Code fork de parte de Google. Con la primera tarea que tenía que modificar cuatro chorradas, se han agotado los créditos de Gemini 3. Eso sí, algo ha hecho.
  • Cosas hechas con la asistencia de la IA:
    • (Beta) Cambiar de Gulp a Vite: hace un par de meses lo intenté, pero fracasó la IA, el chat de la IA y yo demasiadas veces. Parece que ahora ha funcionado bien y voy a ir probándolo.
      • En Windows me funciona regular el watch de ficheros SCSS, pero creo que es normal y solucionable con el Instant Reload de Local.
  • Cosas hechas por humanoídes:
    • Conciertos:
      • Arreglo las imágenes para que se contengan y se añadan al principio de la ventana en vez de centradas.
      • Ayer también lo arreglé, pero ciertas imágenes no estaban funcionando bien.

2025/noviembre/17

  • El día en el que no hice nada: he probado los agentes de Cursor y probar estas novedades para ver si me pueden ayudar ahora o en un futuro. No soy muy de IA porque le quitan la gracia a las cosas. Por supuesto, mega fan del auto completado… Pero se le va demasiado la cabeza aún a la IA. No sé si seré yo y mis IAs «baratas».
  • El proyecto de mi PC tiene más de 6 años y ya es por saber qué puedo optimizar y lo que no. He llegado a un punto que todo lo nuevo que hago, lo hago con las mejores prácticas posibles que puedo tener y saber. Pero no tengo otros desarrolladores que sepan más que yo y que se expongan a desarrollar sin tener soltar muchísimo dinero en cursos. Además WordPress ya no es algo mainstream de desarrollo y que esta web no está hecha en Gutenberg porque me parece mega innecesario generarme yo apartados de edición cuando prácticamente son todo encapsulados.
  • Cosas que he revisado y estudiado en apoyarme con la IA en revisar los siguientes puntos:
    • Se ha securizado ciertas consultas directas a la base de datos que se ejecutan en tareas de administración como borrar transients.
      • Esas consultas, si por algún motivo obtuvieran algún tipo de acceso a la web, podrían usarlo, pero no son puntos críticos porque las inyecciones en esas consultas serán muy improbable que las usen para algo.
      • Si ya tienen acceso, ya me pueden destrozar el sitio que aquí no.
    • En varias zonas se ha escapado las salidas de datos en HTML. Antiguamente no lo solía hacer cuando son datos que no pueden hacer inyecciones, aunque ya se recomienda que se escape todo siempre.
      • Se han añadido un par de escapes en diferentes puntos donde se mostraba información.
    • Se le ha ocurrido a la IA de cambiar mi sistema de caché para los ficheros estáticos como estilos o scripts.
      • La idea que se le ha ocurrido es generar un fichero PHP con el versionado de los ficheros, pasarlo a hash MD5 y que lo lea WordPress para añadirlo…. Total, que no me ha gustado.
      • Lo de generar un fichero PHP en Node, muchas mezclas raras, añadirme más paquetes al build para un MD5… Se lo he desechado casi entero, pero he reutilizado unas partes.
      • Ahora, vamos a crear un JSON con el número de versión que seguirá siendo el mismo que ya llevaba yo (YYYYMMDDHHIISS). Así podré seguir sabiendo la build, mantenimiento mis formas, pero ya me quito de estar cambiando el functions cada vez que genero una build.
  • No todo es IA, yo también hago cosas por mi cuenta. Aunque sean pocas, han sadio:
    • Conciertos:
      • Se arregla la deformación en la vista detalle del poster que, en diferentes imágenes, a veces se deformaban.
      • Se arregla de que se vea la fecha sin cortarse con otros elementos.
    • Generales:
      • Cambio funciones get_stylesheet_directory_uri() por get_theme_file_uri(), ya que se adaptan mejor a las nuevas corrientes de WordPress y que yo no uso los directorios de estilos por defecto de WordPress.
        • Quedaban unos pocos porque yo esto lo dejé de usar hace mucho. Así todos estarán de la misma forma.
        • Además, nos quitamos esos engorros de encadenar textos y handles.
      • Elimino unos ficheros de formulario de contacto que tenía de base porque quería añadirle un sistema de correo en la web, pero nunca lo usé.

2025/noviembre/11

  • Discos:
    • Se arregla el importador de Discogs para añadir los países que, aunque se estaban guardando bien en un campo de texto, se trasladó a su taxonomía propia y no se estaban añadiendo.
    • Se ha hecho un pequeño script temporal para buscar aquellos discos que tenían el campo de texto País relleno y la taxonomía Región vacía para poblarlo.

2025/noviembre/09

  • Discos:
    • Añado un filtro para ordenar por Años, Artistas, Títulos y por fecha de agregado. Así se pueden hacer búsquedas en los artistas y ver cosas interesantes.
    • Cada vez que un filtro esté seleccionado, se dejará marcado para que destaque. Esto me di cuenta mientras lo usaba mucho y no veía lo que estaba marcado. Mejora la usabilidad también cuando carga con un filtro inicial.

2025/noviembre/07

  • Taskbar:
    • Se arregla el título para que nunca se pase de las dos líneas y se quede como un taskbar real.
  • Discos:
    • Se añade un pollyfills para los emojis en Windows. Que parece ser que hay algunos sistemas de Windows que petan los emojis.

2025/noviembre/06

  • Discos:
    • Eliminamos los archivos Artistas, Años de publicación, Discográficas, Géneros, Estilos, Formatos y Tipos de formato en favor a la nueva versión de Discos.
    • Se hacen las oportunas redirecciones para ir a Discos.
    • Añado la función de poder precargar cualquiera de los filtros a través de la URL.
    • Reducido el texto y los espacios del apartado de los filtros.
    • Se añade un contador de resultados.
    • Se pone como sticky los filtros para que acompañen en el scroll en los listados más largos.
  • Vista detalle de discos:
    • Ya que ha entrado mucha nueva información, vamos a reinventar la forma en la que se muestra la información:
      • Añadimos todos los campos nuevos.
      • Las taxonomías que tienen la posibilidad de poder acceder en Discos se añaden para tener enlaces directos. Ejemplo: si alguien quiere ver más vinilos, más de la misma región o del mismo año.
  • Taskbar:
    • Arreglo para que la imagen de una app abierta no se distorsione cuando es un disco o utiliza una imagen como tal.
  • AJAX:
    • Filtrado del ID del disco cuando se solicita la información. Esto es para prevenir cualquier injección de código.

2025/noviembre/05

  • Discos:
    • Añadimos el campo País para mostrar la procedencia del disco. Hay que hacer una petición extra a Discogs. Pero la idea que me dio Sergio L. fue interesante.
      • Se crea y añade un campo adicional para incluir el país.
      • Se crea una función para actualizar todos los países adicionales de forma manual.
    • Añadimos la taxonomía Descripción de formato:
      • Ya que estoy por ahí, he descubierto que puedo descargarme los colores de los vinilos, si es un boxset, un gatefold… Así que nueva taxonomía jajajjaja
      • Se modifica la función de descarga de datos para obtener estas descripciones.
      • Se crea una función para actualizar todas las descripciones de los discos existentes de forma manual.
    • Rework de la página:
      • Nuevos cambios realizados. Estoy pensando en eliminar las pastillas para los formatos y añadir toda la info nueva que tenemos. Creo que cambiaré a un formato tabla. A ver qué se me ocurre.
      • Publicamos la primera versión funcional.
      • Propuesta futura de cambiar la vista para añadir todos los detalles nuevos.

2025/noviembre/04

  • General:
    • Limpieza de discos repetidos.
    • Revisión de portadas que no se han descargado y se añaden manualmente.
    • Añadidos más de 40 discos a Discogs…
  • Discos:
    • Se viene rework entero del apartado de Mi música:
      • Una sola página en vez de 1 página y 7 taxonomías. Aunque puede que deje las taxonomías porque tienen una vista muy específica que me mola y lo dejaré a pantalla completa.
      • Reactiva con React / Tanstack Query / Vite. Con filtros dinámicos y búsqueda rápida.
      • Lo he estado probando para ver discos faltantes y, por el momento, me gusta el resultado. Seguramente le de una vueltecita a cómo se ve el disco para meter formatos y otros datos como las stories.

2025/noviembre/01

  • Artistas más escuchados:
    • Se mejora la peticiones a las API de búsqueda de imágenes para que no llegue a hacer timeouts
    • Se elimina código duplicado de comprobación para la petición de imágenes.
  • Creación del plugin AM Toolbox: una herramienta interna que centraliza todas las utilidades antiguas y futuras en un único plugin. Se irán trasladando funciones poco a poco.
    • Añadida la primera funcionalidad “Artistas – Fotos”:
      • Estadísticas: número de artistas con imagen, sin imagen y total.
      • Panel de control para iniciar/detener el proceso automático de descarga de imágenes.
      • Descarga automática de imágenes para artistas sin imagen, mediante la API de Discogs (controlando el límite de peticiones).
      • Añado un endpoint privado para que n8n se conecte y mande artistas para dar de alta. Una vez se dan de alta, hacen la misma búsqueda y guardan los artistas. Esta problemática viene de que, aunque tenga mucha música física, no implica que esté en Discogs o lo tenga añadido. Por lo que cada vez que se busca un artista para los rankings con imágenes, envía la imagen o la busca para descargar y devolverla.

2025/septiembre/27

  • Discos:
    • Las taxonomías (tipos, fechas, formatos, etc…) casualmente han dejado de ordenarse bien. Resulta que no puedes ordenar los años que son strings por algún motivo. No sé si han cambiado algo, pero lleva funcionando bien varios años. Pero hace poco dejaron de hacerlo… Lo estoy reordenando con una función simple de ordenado. ¿Posible orden por cómo se pronuncia y no por los caracteres?

2025/septiembre/12

  • Conciertos:
    • He trasladado toda la lógica de conciertos sobre lugares. Ya no aparecerá la ciudad entre paréntesis en Estadísticas de conciertos u otras zonas.
    • He movido todo a un sistema de categorización con subcategorías. Hemos pasado de tenerlo todo a un nivel a tenerlo en cuatro:
      • País => Comunidad / Región => Ciudad => Recinto
    • Ahora, con la nueva jerarquía, podremos hacer muchas más cosas sobre las ciudades, países y regiones.
  • API de Conciertos:
    • Añadimos nuevo campo ‘geolocation’ donde tener los cuatro nuevos datos separados.
    • No cambia ‘location’, pero el contenido se ha quedado un poco vacío. Ya solo queda el recinto.

2025/septiembre/01

  • Logros de conciertos:
    • Sigo trabajando para generar todos los logros posibles de primeras.
    • Aún me falta diseño, pero tengo una idea para hacerlo tipo carpetas. Ya veré lo que hago….

2025/agosto/31

  • Logros de conciertos:
    • Ya que tengo tantos datos y tan completos es sobre los conciertos, pues estoy extendiendo un poco más la cosa. ¿Y si gamificamos los conciertos?
    • Creo que puede estar guay porque se pueden sacar datos interesantes y cuándo pasaron las cosas.
    • Comenzamos un nuevo React como el de Estadísticas de conciertos y reutilizando todo ese apartado, pero esta vez procesando toda la info en el cliente en vez de en el servidor.
    • De este apartado no añadiré más información hasta su publicación. Ya que los logros van a ser muchísimos y será un poco lío añadir aquí tanto bloque inicial.

2025/agosto/30

  • Estadísticas de conciertos:
    • Me centro en el arreglo del responsive que lo había abandonado durante mucho tiempo:
      • Elimino el título para no repetirse dos veces
      • Elimino espacio de los laterales para que se muestre más contenido
      • Arreglo tablas en las que el contenido se quedaba pegado a la izquierda.
      • Arreglo las tarjetas de cifras para que el contenido no se salga y se muestre completamente sin tener que hacer scroll dentro de la tarjeta.
      • Se reducen los números de los ejes de coordenadas en todas la tablas para que sea legible y visible.
  • Optimizaciones internas:
    • Cuando obtengo una carátula para añadirla a la colección de discos, no comprobaba la longitud de título y artista. Por lo que se generaban nombres de ficheros enormes que podrían fallar en diferentes sistemas.
    • El caso que me ha hecho arreglarlo es PetroDragonic Apocalypse; or, Dawn of Eternal Night: An Annihilation of Planet Earth and the Beginning of Merciless Damnation de King Gizzard & the Lizard Wizard. Generando el siguiente fichero: disc-petrodragonic-apocalypse-or-dawn-of-eternal-night-an-annihilation-of-planet-earth-and-the-beginning-of-merciless-damnation-de-king-gizzard-and-the-lizard-wizard-cover-pc-adammartin. Soy idiota.