0.9.3 (2026-08-20) — Fix: las capas de ArcGIS FeatureServer no cargaban * Las capas del catalogo Capas Oficiales servidas por ArcGIS FeatureServer (SERNAGEOMIN, SENAPRED y otras) fallaban al abrir un proyecto, con el error external_layer_invalid, aunque los servicios respondian normalmente. Se veian bien en la web de Pudumaps. * Dos causas, las dos corregidas: el proveedor de QGIS necesita el origen de datos como pares clave=valor y no como una URL suelta, y ademas exige el numero de capa del FeatureServer, que en algunas capas no venia. Ahora se consulta al servicio cual es. * Las capas de tipo MapServer nunca estuvieron afectadas. 0.9.2 (2026-08-20) — La URL de la API pasa a pudumaps.cl y el campo se esconde * La URL base por defecto deja de ser el endpoint crudo de Supabase y pasa a https://pudumaps.cl/api, que hace de proxy hacia la misma Edge Function. El endpoint viejo sigue funcionando. * Las instalaciones que ya tenian guardada la URL vieja se migran solas al abrir el plugin. Una URL personalizada (dev, self-host) no se toca. * El campo "Base URL" del dialogo de Configuracion ahora vive detras de una casilla "Avanzado" y esta oculto por defecto. Se abre solo si hay una URL personalizada guardada, para que nadie quede apuntando a otro lado sin darse cuenta. 0.9.1 (2026-08-20) — Fix: el dialogo de Configuracion decia que la API requeria plan Pro * El texto de ayuda del dialogo de Configuracion seguia diciendo "Requiere plan Pro o superior". El acceso a la API se abrio a todos los planes, incluido el gratuito, el 2026-08-19. La v0.8.2 corrigio metadata.txt y el README pero no este string, que es el unico de los tres que el usuario ve realmente. 0.9.0 (2026-08-20) — Primera version estable: el plugin sale de "experimental" * El plugin deja de estar marcado como experimental. Pasa a aparecer en el repositorio oficial de QGIS sin necesidad de activar "Mostrar tambien complementos experimentales" en el Administrador de Complementos. * Sin cambios funcionales respecto de 0.8.7: mismo codigo, mismos 164 tests en verde, bandit y ruff limpios. El salto de version marca el cambio de estado de publicacion, no una funcionalidad nueva. * Alcance verificado: pull de proyectos y capas — incluidas capas externas WMS/ArcGIS del catalogo Capas Oficiales de Chile — contra datos reales. Push y sync bidireccional funcionan pero acumulan menos horas de vuelo; ante un conflicto el plugin nunca sobrescribe solo, siempre pregunta que lado gana. 0.8.7 (2026-08-19) — Fix: 48 issues de compatibilidad Qt6 detectados por plugins.qgis.org * BUG REPORTADO al subir v0.8.6: security scan pasó, pero el check de compatibilidad Qt6 marcó 48 issues en 8 archivos — enums de PyQt5 sin calificar (ej. QMessageBox.Yes en vez de QMessageBox.StandardButton.Yes) y 4 usos de .exec_() (removido en PyQt6, solo queda .exec()). * Fix: los 48 corregidos a la forma calificada/PyQt6-compatible. Sigue funcionando igual en QGIS con Qt5 — la forma calificada siempre fue válida en PyQt5 también, no es exclusiva de Qt6. * NOTA: no se pudo probar contra un runtime Qt6/PyQt6 real (no hay QGIS instalado en el entorno de desarrollo) — verificado sintaxis + bandit + ruff + 164 tests, pero el fix en sí es el patrón estándar documentado de migración PyQt5→PyQt6, no smoke-testeado end-to-end en Qt6. 0.8.6 (2026-08-19) — Fix: 3 hallazgos CRÍTICOS de Bandit bloqueaban el scan de seguridad * BUG REPORTADO al subir v0.8.5: plugins.qgis.org bloqueó la publicación por 3 try/except/pass (error_utils.py, plugin.py, project_loader.py) — su scanner los trata como CRÍTICOS, a diferencia de bandit local que los marca solo LOW. Ya no eran aceptables como estaban. * Fix real, no solo silenciar el scan: los 3 ahora loggean el error (log_full_error, o print a stderr en el caso de error_utils.py que es el propio fallback de logging y no puede llamarse a sí mismo) en vez de tragárselo en silencio. Mismo comportamiento best-effort de antes — ninguna excepción ahí debe crashear el flujo — pero ya no desaparece sin rastro para debugging. * bandit: 0 issues (antes 3 LOW). ruff: 0 issues. 164/164 tests verdes. 0.8.5 (2026-08-19) — Fix: faltaba LICENSE dentro del ZIP publicado * BUG REPORTADO al subir el ZIP: "Cannot find LICENSE in the plugin package". El LICENSE (GPL-3.0) vive en la raíz del repo, pero build.py/build.sh solo empaquetaban pudumaps_qgis/ — nunca lo incluían. Ahora ambos scripts copian LICENSE dentro del paquete (junto a metadata.txt) al construir el ZIP. 0.8.4 (2026-08-19) — Fix: metadata.txt rompía el parser INI de plugins.qgis.org * BUG REPORTADO al subir el ZIP: el changelog de v0.7.6 tenía un símbolo porcentaje suelto (nubosidad, sin escapar). metadata.txt se lee con configparser (formato INI), que trata ese símbolo como carácter especial de interpolación — uno solo sin duplicar rompe el parseo completo del archivo. Ya escapado correctamente. Verificado simulando el mismo parser (ConfigParser + resolución de cada valor) antes de subir: parsea limpio. 0.8.3 (2026-08-19) — Limpieza de código previa a publicar en plugins.qgis.org * 2 imports sin usar (Qt en sync_dialog.py, QWidget en ui_helpers.py), 2 f-strings sin placeholder y 3 líneas >100 cols. Sin cambios de comportamiento. Verificado con bandit (0 issues medium/high) y ruff --select E,F,W (0 issues) antes de subir a plugins.qgis.org. 0.8.2 (2026-08-18) — El acceso a la API ya no requiere plan Pro * Pudumaps abrió acceso a la API (y por lo tanto al plugin) a todos los planes, incluido Free — antes requería Pro o superior. Se actualiza el texto de metadata.txt y README.md, que seguían diciendo lo contrario. 0.8.1 (2026-08-17) — Fix: capas externas del catálogo Capas Oficiales quedaban invisibles * BUG REPORTADO: al abrir un proyecto con capas del catálogo "Capas Oficiales de Chile" (WMS/ArcGIS MapServer/FeatureServer), el canvas quedaba completamente en blanco y sin zoom para las 7 capas del proyecto de prueba — no solo la marcada (WMS). * Causa raíz: esas capas se guardan en project_layers con geojson=null (layer_type + external_url describen el servicio real; la web las renderiza en vivo). La API v1 nunca exponía layer_type/external_url — solo geojson/id/name/display_order/project_id — así que el plugin recibía geojson=null para las 7 capas, las trataba a todas como FeatureCollection vacío, y _zoom_to_group las saltaba por tener 0 features → sin combined extent → canvas nunca se movía del default. * Fix backend (migración 20260817190000): api_v1_list_layers y api_v1_get_layer ahora exponen layer_type/external_url/metadata. * Fix plugin: project_loader distingue layer_type. Para wms/arcgis_map crea un QgsRasterLayer (proveedores nativos wms/arcgismapserver); para arcgis_feature, un QgsVectorLayer (arcgisfeatureserver). 'weather' (puntos Open-Meteo calculados en el navegador, sin servicio geoespacial real) se reporta como no soportado en vez de quedar en blanco sin explicación. * _zoom_to_group ya no crashea silenciosamente ante la primera capa raster del grupo (featureCount() no existe en QgsRasterLayer). * sync_dialog y el menú contextual "Subir a Pudumaps" excluyen estas capas — son referencias en vivo, no datos locales para sincronizar. * 11 tests nuevos, 164/164 verdes. 0.8.0 (2026-08-17) — Módulo IA oculto de la UI + hardening para publicación * El módulo IA (detección de edificios/agua, landcover, change detection, descarga Sentinel-2 vía geoai-py/GeoAgent) queda FUERA de esta release. No es un feature maduro: dependía de un instalador pip pesado (~2 GB, PyTorch) contra el Python embebido de QGIS, con varios hotfixes de DLL /CRS sin smoke test completo. Se retira de la UI (menú, toolbar, panel) y del zip publicado — el código sigue en el repo (paquete ai/ y diálogos asociados) por si se retoma más adelante, pero no se instala ni se ofrece al usuario. * scripts/build.py y build.sh excluyen pudumaps_qgis/ai/ y los diálogos IA del zip. El plugin publicado ya no arrastra la superficie de fallo de PyTorch/geoai — solo depende de `requests`, ya bundleada en QGIS. * Sin cambios en sync/pull/push/settings — siguen siendo el foco del plugin: navegar proyectos, abrir capas, subir capas nuevas y sincronizar cambios en ambas direcciones contra la API pública. 0.7.13 (2026-05-19) — Fix extract_buildings flow + mejor mensaje vacío * BUG REPORTADO en 0.7.12: extract_buildings corría 1 min y fallaba silenciosamente con "geoai no produjo el archivo de máscaras". Causa: mi código asumía que process_raster() escribe un GeoTIFF de máscaras intermedio (entonces vectorizar después), pero realmente process_raster() es la pipeline COMPLETA: tile, infer, vectorize, escribir GeoJSON. Devuelve GeoDataFrame directo. * Rewrite: ya no se genera _masks.tif intermedio. process_raster se invoca con output_path=geojson y listo. Si devuelve None pero escribió, leemos el GeoJSON. Si no escribe nada (0 detecciones), mensaje explícito al usuario con sugerencias (orto ≤1m/px en vez de Sentinel 10m/px). 0.7.12 (2026-05-18) — Auto-uninstall pyarrow + RGB renderer * BUG CULPABLE IDENTIFICADO: pyarrow.lib choca con DLLs C++ de QGIS causando "DLL load failed while importing lib". Auto-uninstall en el cleanup post-instalación (sklearn lo importa defensivamente y cae sin él — no afecta acciones IA). * Sentinel-2 descargado ahora se carga con renderer multibanda R=1/G=2/B=3 + stretch min-max automático. Antes se veía negro porque QGIS default lo cargaba en grayscale. 0.7.11 (2026-05-18) — Fix MKL conflict + GeoAgent pin * BUG REPORTADO: DLL load failed se mantiene incluso en main thread. Causa real: conflicto MKL/OpenMP entre QGIS y PyTorch (no threading como pensé en 0.7.9). Fix: warm_up_geoai ahora setea KMP_DUPLICATE_LIB_OK=TRUE y registra torch/lib como dll_directory ANTES de `import geoai`. * BUG REPORTADO: pin GeoAgent==0.4.0 no existía en PyPI (versiones reales saltan de 0.2.0 a 1.0.0). Bump a 1.8.0 (última). * Sin cambios funcionales nuevos — todos los rewrites de tools de 0.7.10 siguen igual. 0.7.10 (2026-05-18) — Rewrite wrappers + warm-up + UX polish * Rewrite de las 5 acciones IA con APIs reales de geoai 0.10.0: BuildingFootprintExtractor.process_raster (no predict), ChangeDetection.detect_changes (no ChangeDetector), CLIPSegmentation con text prompt para water (no WaterBodyExtractor), image_segmentation HF para landcover (marcado experimental), pystac-client + planetary-computer para download Sentinel-2. * Warm-up de geoai en main thread (fix DLL load en QgsTask Windows). * PyTorch CPU-only forzado desde índice oficial PyTorch (evita DLL CUDA fail en máquinas sin GPU NVIDIA). * Barra de progreso real con tiempo + MB + paquete N/M durante instalación pip. * Ventana consola cmd oculta vía CREATE_NO_WINDOW. 0.7.8 (2026-05-18) — Hotfix robusto: detección Python QGIS * El fix de 0.7.7 (usar sys.prefix) no cubría todas las layouts de QGIS-Windows: algunas distribuciones tienen sys.prefix apuntando al root de QGIS, no al directorio del Python embebido. * Estrategia más robusta: usar os.__file__ (que SIEMPRE apunta a <python_root>/Lib/os.py) para derivar el python.exe correcto. Fallbacks múltiples si esto falla. * Defensa adicional: el instalador valida que el python resuelto sea un archivo real antes de invocar subprocess. Si la detección falla, error claro en vez del críptico "could not be found". * Diagnóstico al inicio del log de pip: [pudumaps-ai diagnostics] con sys.executable / sys.prefix / resolved_python para que los reportes de bug traigan siempre el contexto necesario. 0.7.7 (2026-05-18) — Hotfix: instalador IA en Windows * BUG CRÍTICO: en QGIS-Windows sys.executable apunta al binario GUI (qgis-bin.exe), no a python.exe. El instalador IA de 0.7.6 fallaba "relanzando QGIS" en vez de invocar pip, con error críptico 'geoai-py==0.10.0 could not be found' (QGIS interpretaba la spec como archivo de proyecto). Ahora deriva python.exe desde sys.prefix que sí apunta consistentemente al Python embebido. * Sin cambios funcionales. Tests +4. 0.7.6 (2026-05-18) — Download Sentinel-2 + cierre 5 acciones * Quinta y última acción del plan IA original: "Descargar Sentinel-2" (DownloadSentinelTool). Bbox del canvas (o custom EPSG:4326) + rango de fechas + cloud cover máximo. Resultado GeoTIFF cargado como capa raster. * Diálogo de configuración con extent del canvas pre-seleccionado, QDateEdit con calendarios, spinbox de nubosidad %. * Validación defensiva: rechaza bbox >5° (descargas masivas), fechas invertidas, rango pre-Sentinel-2 (antes 2015-06-23), cloud_max fuera de 0-100. * Ciclo v0.7.x cerrado: las 5 acciones del plan IA están operativas — buildings, water, landcover, change_detection, download_sentinel. v0.8.0 arranca con Nivel 2 chilenización (modelos finetuneados sobre datasets chilenos). 0.7.5 (2026-05-18) — Change detection + framework prompt_params * Cuarta acción IA: "Detectar cambios (2 rásters)" (ChangeDetectionTool). Compara dos rásters del mismo bbox y distinta fecha, produce máscara binaria de cambios. * Nuevo patrón en AITool: input_kind='none' + prompt_params(parent, iface) hook. Permite tools que no usan la capa activa y necesitan pedir input vía diálogo propio. Útil también para futuros tools que requieran fechas, bbox custom, etc. * Diálogo selector dialogs/change_detection_dialog.py lista los rásters del proyecto y pide "antes" y "después" con validación (no permite el mismo, requiere ≥2 rásters cargados). 0.7.4 (2026-05-18) — Landcover + re-etiquetado clases Chile * Tercera acción IA: "Clasificar uso de suelo" (LandCoverClassificationTool). Produce raster GeoTIFF categórico con sidecar JSON de leyenda re-etiquetada al español + ecorregión chilena cuando el bbox cae en Chile. * Nuevo módulo pudumaps_qgis.ai.chile_classes (Nivel 1 chilenización en código): lookup determinístico bbox → ecorregión (matorral esclerófilo / estepa patagónica / bosque siempreverde / desierto costero / etc.) + traducción de clases genéricas (shrubland → matorral esclerófilo / patagónico según zona). * AITool gana atributo output_suffix (default .geojson). Landcover usa .tif. El panel ahora dispatcha QgsVectorLayer / QgsRasterLayer por extensión del output. 0.7.3 (2026-05-18) — Ejecución async + extract_water + doc Chile * Las acciones IA ahora corren en QgsTask (background thread del task manager de QGIS). La UI ya no se congela durante la inferencia y aparece una entry en el panel Tasks con progreso y cancelación. * Nueva acción: "Detectar cuerpos de agua" (ExtractWaterTool) — para lagos, embalses y ríos sobre raster RGB. Funciona con Sentinel-2 y ortofoto. Caveats Chile documentados. * Nuevo docs/modelos-chile.md (Nivel 1 chilenización): tabla de qué casos rinden bien con pesos de fábrica y cuáles requieren finetuning (rural, palafitos, tomas, bosque nativo). 0.7.2 (2026-05-18) — Panel IA + primera acción (extract_buildings) * Nuevo framework pudumaps_qgis/ai/tools con clase abstracta AITool, registry estático y manejo de dependencias por tool. * Primera acción: "Detectar edificaciones" sobre raster RGB usando geoai.BuildingFootprintExtractor. Aislada la llamada a geoai en un helper único para que el upgrade entre versiones del paquete sea localizado. * Panel lateral "Pudumaps · IA" como QDockWidget (toggle desde menú "Panel IA"). Lista las acciones registradas, grisa botones si falta geoai y muestra mensaje invitando al instalador. * Resultado de cada acción se carga automáticamente como capa vectorial en el proyecto QGIS. 0.7.1 (2026-05-18) — Instalador IA en menú * Nueva entrada "Instalar módulo IA…" en el menú Pudumaps y la toolbar, con icono propio (ai.svg). Abre el diálogo de instalación introducido en 0.7.0 para que sea descubrible por el usuario sin tener que invocarlo desde código. 0.7.0 (2026-05-18) — Infra IA opcional (foundation) * Nuevo módulo pudumaps_qgis.ai con detección de geoai-py y GeoAgent como dependencias opcionales. Versiones pineadas (geoai-py 0.10.0, GeoAgent 0.4.0) para protegerse de bumps rotos upstream. * Instalador asistido (pip install --user) contra el Python embebido de QGIS, con progreso línea a línea en un worker thread. * Diálogo "Instalar módulo IA" que explica tamaños (~500 MB descarga, ~2 GB en disco) y prerequisitos (VC++ redist en Windows). * Sin acciones IA todavía — esta release solo prepara la infraestructura. Las acciones (detección de edificios, agua, landcover, change detection, descarga Sentinel) llegan en 0.7.1. 0.6.0 (2026-05-07) — Security hardening (audit 2026-05-07) * H1 ALTO: prompt explícito antes de degradar a almacenamiento plaintext de QSettings cuando QgsAuthManager no tiene master password. Antes el fallback era silencioso. * H2 ALTO: rechazo de URLs base no-HTTPS (excepto loopback). Previene leak de la API key si el user/atacante setea http://evil.example/ * H3 MEDIO: tempfile usado por OGR ahora se borra en finally. Solo sobrevive cuando OGR es la layer activa y necesita leerlo on-demand (caso fallback). * H4 MEDIO: cap de 50 MB en respuestas HTTP + validación estructural de GeoJSON antes de pasar a OGR. Previene OOM por payloads malformados. * H5 MEDIO: helper safe_error_message en todos los diálogos. Stack traces y mensajes técnicos de la API ya no se muestran al usuario; el detalle queda en QgsMessageLog para debugging. * H6 BAJO: User-Agent leído dinámicamente desde metadata.txt. Antes estaba hardcoded a 0.1.0. * H8 BAJO: clear_credentials retorna ahora True/False según pudo eliminar la entry cifrada. SettingsDialog avisa al user si quedó residuo cifrado por falta de master password en sesión. 0.5.0 (2026-04-23) * Logo oficial Pudumaps (el pudu con mapa) integrado como icono del plugin en el administrador de QGIS y como header de cada diálogo * Iconos SVG específicos por acción: settings (engranaje), download (abrir proyecto), upload (subir capa), sync (sincronizar) * Stylesheet QSS con paleta verde Pudumaps aplicada a botones primarios, tablas, focus rings y progress bars * Headers con logo + título + subtítulo en los 4 diálogos (settings, projects, upload, sync) 0.4.0 (2026-04-23) * Sincronización bidireccional con detección de conflictos * Diálogo de sync con tabla por capa + dropdown de acción * Estados: unchanged / local_only / remote_only / conflict / new_local / deleted_remote * Hashes SHA-256 canónicos persistidos como pudumaps/last_hash * Dedup en pull: si ya existe una capa con el mismo layer_id, se actualizan sus features en vez de crear un duplicado 0.3.0 (2026-04-23) * Subir capas QGIS a Pudumaps (push) * Menú contextual: click derecho en capa vectorial → Subir a Pudumaps * Acción del menú: Subir capa activa a Pudumaps * Diálogo con dropdown de proyectos + creación inline de proyecto nuevo * Reproyección automática a EPSG:4326 desde cualquier CRS soportado * Pre-validación de tamaño (10 MB) y número de features (20k) * Smart dispatch: capas que vinieron del pull se actualizan in-place (PATCH) en vez de duplicarse (POST) 0.2.1 (2026-04-23) * Fix: polygon/multipolygon layers no renderizaban — OGR promueve a Multi* y el memory layer Polygon rechazaba las features. Ahora se usa el wkbType real de OGR. * Fix: CRS del memory layer ahora se hereda del OGR layer en vez de hardcodear EPSG:4326. * Auto-zoom al grupo recién cargado para que las capas sean visibles aunque estén lejos del viewport inicial. 0.2.0 (2026-04-23) * Open a Pudumaps project as QGIS layers (pull) * Projects dialog with list, search-by-sort, double-click to open * Automatic layer group "Pudumaps: <project>" in layer tree * Basic default styling (green) applied to each loaded layer * Remote project/layer ids stamped as custom properties for future sync 0.1.0 (2026-04-23) * Initial release * Settings dialog with encrypted API key storage via QgsAuthManager * Connection test against /v1/projects
yes
Chocoplatano
2026-08-20T22:26:56.730909+00:00
3.22.0
3.99.0
None
no
Plugin Tags