Changelog
06:02
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.

2026/marzo/15

  • Discos:
    • La función de sincronización con Discogs está ocasionando algunas veces duplicados, así que vamos mejorarla.
    • He estado estudiando posibles casos y vamos a ver las soluciones posibles a ver si se arregla a futuro:
      • Añado un transient de bloqueo para que la función no se ejecute más de una vez al mismo tiempo.
        • Creo que puede ser por estas posibles ejecuciones múltiples, aunque se lance muy específicamente una vez cada 4 horas.
      • Fuerzo la ID de Discogs como entero (int) para la comprobación del número de la base de datos y el de Discogs.
      • Mejoramos la petición discos que coincidan a:
        • una sola (posts_per_page = 1)
        • al ID (fields = ids)
        • no haga el recuento de filas (no_found_rows = true).

2026/marzo/14

  • Logros musicales:
    • Sigo trabajando en esto, aunque muy de vez en cuando.
    • He leído a un japonés hablar sobre Vite+ y me parece muy interesante para trabajar, probar y, sobre todo, ver qué tal se comporta en Windows.
      • Traslado, migración y actualización a Vite+.
    • He limpiado componentes antiguos que ya no sirven. Cree otro componente para hacer un nuevo diseño y es el que me quedaré hasta el final.
    • Modifico el componente «Días seguidos de conciertos» para que sea dinámico. Ahora se mostrarán 3, 5 y 7 días seguidos.

2026/marzo/04

  • General:
    • He descubierto una propiedad CSS brutal para los números que cambian en el tiempo en una fuente sin tener que usar una fuente «monospace». Se llama font-variant-numeric: tabular-nums; y hace que todos ocupen el mismo espacio.
      • Se lo aplico por el momento al reloj, pero buscaré todos los números posibles. Ahora se ve genial.
  • Opciones del sistema:
    • He revisado y mejorado el tema ‘dark’. Ya solo me queda uno de los cinco temas iniciales que tendré según se publique.

2026/febrero/28

  • Feliz Día de Andalucía, mis niños y niñas.
  • Optimizaciones en el tema si quiero seguir metiendo tonterías pequeñas:
    • Añadimos una pequeña cookie para guardar el tema e intentar optimizar desde el servidor cuando se entrega el código. Así evitamos parpadeos.
    • CSS crítico cambiado a dinámico:
      • En su día, preparé un string muy largo de CSS con los estilos críticos. Pero al meterle ya temas, no es suficiente.
      • Además, le he añadido rutas respeto a el dominio en el que se carga y reducción de código para ver si mejora la velocidad.
    • Orden de los preloads:
      • Subo puestos a las fuentes para ver si los icons del MaterialIcons precargan antes.
      • Cambio funciones desfasadas como site_url() a get_theme_file_uri() para tenerlo todo mejor centralizado.
    • Mejora en funcionalidades de los scripts de revisión de los ficheros CSS para los pequeños ‘hacks’ de carga.
  • Otros cambios pequeños que han afectado tener temas:
    • El reloj pasa a tener una altura de línea ajustada al texto y se le añade margen fijo.
      • Esto es porque he hecho un tema con una línea que pasa justo entre medidas de la fecha y la hora. Así, estará bien centrado.
    • Mejoras en el tema ‘blackpink’
    • Arreglo de un bug en el que las ventanas, cuando se cerraban, no desaparecían del taskbar.

2026/febrero/27

  • Hoy he perdido la fe y las ganas en la programación. Gracias, IA.
  • Añadimos, por fin, la funcionalidad de «Temas» en el PC. Llevo años queriendo hacerlo, pero tenía los colores muy descentralizados. Ahora, ya no seremos como los quejicas de X/Twitter y tendremos un par de temas y otras funciones que iré haciendo poco a poco.
  • Ahora, el menú tendrá una opción de configuración para ir añadiendo opciones poco a poco.
    • Tendrá su propia ventana.
    • Tendrá un buscador por si se me va la cabeza con las opciones.

2026/febrero/22

  • Logros de conciertos:
    • Creado el logro de viajar más de 5.000 kms
    • Creado el logro de viajar menos de 5 kms
    • Creado el logro de comprar un ticket por debajo de 10 euros y que no sea gratis
    • Creado el logro de ir andando a 10 conciertos
    • Añadir el bloque de ir a 10 conciertos gratuítos
    • Arreglar el logro de Weekend Warrior que tenía algunas cosas raras por las que no funcionaba nien.
    • Arreglar el nombre del logro de 25 conciertos que coincidía con otro logro.
    • Crear un breve resumen inicial con los logros conseguidos y el total de logros. También un resumen de logros entre categorías.
    • Sigo sin tener diseño que me convenza y tampoco he trabajado mucho en esto desde septiembre.

2026/febrero/14

  • Archivo de escaneos:
    • Se mejora la query de petición de discos porque había discos sin galería que aparecían.

2025/diciembre/31

  • Feliz entrada de año y feliz Nochevieja a todos.
  • Estáticos:
    • Elimino comentarios de la consola que se han quedado como públicos después del traspaso a Vite. Os cuento muchas movidas aquí. Si me queréis hackear, tenéis aquí toda la info para pasarle a una IA. Perros.
  • Temas de desarrollo:
    • Elimino ciertos ficheros temporales generados por plugins y los añado dentro del .gitignore para evitar meter basura en el repo.
    • Creo un nuevo fichero de CSS crítico para las ventanas: creo que es totalmente necesario ahora que les estoy dando estilos y cosas chulas. Así evitamos el parpadeo de morado al personalizado.
    • Optimizamos un par de librerías en su carga como tal:
      • Librería que ya no se usan las elimino de cargar (solo era una).
      • Librería que se usa en Mis conciertos solo cargará cuando se esté en esa página.
  • Archivo de escaneos:
    • Añado una nueva función de zoom automático mediante el ratón cuando se accede a la vista de previsualización. Según la posición del ratón, se ve ampliada la imagen.
    • Optimizamos la carga de la petición de datos de los escaneos para guardarlos en memoria y que carguen más rápido, además de tener un poco más optimización en el código.
  • Escritorio:
    • Mejoramos los estilos de cuando se pulsa en un icono para entrar, se quede marcado hasta que cargue.
    • Cuando se cerraba una app, se ocultaba la ventana y no se recargaba la página. Cambiábamos algunos parámetros y se veía el escritorio sin problema. Pero, cuando se pulsaba en la misma página en la que se estaba, no hacía nada.
      • Por lo que, he arreglado el código para detectarlo y que se muestre lo que he ocultado.
      • También, el historial ya funcionaría porque ya se está detectando la marcha atrás de las ventanas.

2025/diciembre/29

  • Archivo de escaneos:
    • Os presento la nueva sección que estaba preparando el 27 de diciembre. Le he añadido todo lo necesario y una forma de beta. Iré metiendo imágenes y cosas para ir probando.
    • Mejoraremos con el tiempo, pero hay que ir publicando y probando.

2025/diciembre/27

  • Nuevo proyecto de página/app:
    • Se me ha ocurrido crear un archivo de escaneos. Como últimamente estoy añadiendo a Discogs demasiados discos, creo que estaría guay subir mis escaneos aquí. En Discogs se pierde la calidad al máximo. No creo que escanee toda la colección, pero para ir guardándolos.
    • He estado viendo un par de referencias, jugando con la IA y eso… y ya tengo la vista listado que me ha molado.
    • La idea es abrir un popup con un carrusel y las imágenes. A ver que se me ocurre con esto. Porque debería de ser una carga asíncrona para no meter todas las imágenes en el código del listado. Iba a hacerlo con React, pero me parece innecesario meter todo eso para dos cosas.
    • Para manejar los estados, creo que haré lo de ir guardando lo que se carga por si se abre dos veces. La típica de meterlo como atributo de un objeto por su ID y así aprovechamos de no cargar múltiples veces la misma.
    • Si sigo animado mañana, terminaré la vista y subiré lo que tenga escaneado.

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.