- Crear tools/Makefile con soporte multiplataforma (Windows/Linux/macOS)
- Añadir targets: pack_tool, resource_pack, test_pack, clean, help
- Mejorar Makefile raíz con target force_resource_pack
- Integrar regeneración automática de resources.pack en todos los releases
- Los releases siempre generan un resources.pack actualizado
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
**Problema crítico detectado:**
- resources.pack del 5 oct (14 días antiguo, 1.3 KB)
- Archivos en data/ modificados recientemente (logo.png: 18 oct)
- make *_release NO regeneraba resources.pack automáticamente
- Releases distribuían resources.pack obsoleto
**Causa:**
Makefile línea 108 solo dependía de $(PACK_TOOL):
```makefile
resources.pack: $(PACK_TOOL) # ← Faltaban archivos de data/
```
Result: Make decía "up to date" aunque data/ tuviera cambios
**Solución:**
Añadido wildcard con todos los archivos de data/ como dependencias:
```makefile
DATA_FILES := $(shell find data -type f 2>/dev/null)
resources.pack: $(PACK_TOOL) $(DATA_FILES) # ← Ahora detecta cambios
```
**Verificación:**
✅ Regeneración completa: 1.3 KB → 3.7 MB (16 recursos)
✅ Detección de cambios: touch data/logo.png → regenera automáticamente
✅ Eficiencia: Si no hay cambios → "up to date" (no regenera)
✅ tools/pack_resources: +x permisos de ejecución
**Impacto:**
Todas las recetas *_release ahora regeneran resources.pack si hay cambios
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
**Problema 1: Símbolos no definidos de SDL_ttf** (CRÍTICO)
- Error: "Undefined symbols: _TTF_Init, _TTF_OpenFont, etc."
- Causa: LDFLAGS solo incluía -lSDL3 (faltaba -lSDL3_ttf)
- Solución: Añadido -lSDL3_ttf a LDFLAGS para Unix/macOS (línea 81)
- Afecta: Linux, macOS y otros sistemas Unix
**Problema 2: Mismatch class/struct SDL_Renderer** (WARNING)
- Warning: "class 'SDL_Renderer' was previously declared as a struct"
- Causa: ui_manager.h:7 declaraba "class SDL_Renderer"
- SDL3 lo declara como "struct SDL_Renderer" (SDL_render.h:119)
- Solución: Cambiado class → struct en ui_manager.h:7
- Evita warnings y potenciales errores de linker en MSVC
**Resultado:**
✅ make macos_release completa exitosamente
✅ DMG creado: vibe3_physics-2025-10-19-macos-apple-silicon.dmg (17.9 MB)
✅ Sin errores de enlazado, solo warnings menores de versión macOS
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
**Cambios organizativos:**
- Archivos .md movidos de raíz a .claude/ (BOIDS_ROADMAP, CLAUDE, REFACTOR_*, ROADMAP, RULES)
- .claude/ ya está en .gitignore, archivos de sesión no versionados
**Nuevos recursos para release:**
- Añadido release/frameworks/SDL3_ttf.xcframework/ para macOS
- Añadidos release/SDL3.dll y release/SDL3_ttf.dll para Windows (forzado con -f)
**Configuración:**
- defines.h: APPLOGO_DISPLAY_INTERVAL 120→90 segundos (logo aparece más frecuente)
- defines.h: Ajustes de formato/indentación (sin cambios funcionales)
**Makefile windows_release:**
- Comandos Unix reemplazados por Windows CMD nativos:
- rm -rf → if exist + rmdir /S /Q
- mkdir -p → mkdir
- cp -f → copy /Y
- rm -f → if exist + del /Q
- Ahora funciona en Windows CMD sin necesitar Git Bash/MSYS2
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
**Problemas corregidos:**
1. APP_SOURCES ahora usa wildcards automáticos (como CMakeLists.txt)
- Detecta automáticamente todos los .cpp en subdirectorios
- Faltaban 16 archivos: themes, state, input, scene, shapes_mgr, boids_mgr, text, ui, app_logo, logo_scaler
- Elimina mantenimiento manual de lista de archivos
2. macOS release ahora copia SDL3_ttf.xcframework correctamente
- Añadido a Contents/Frameworks en el .app
- Añadido a carpeta Frameworks temporal
3. Windows DLLs: línea mantenida para futuro uso
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Arreglar getExecutableDirectory() para usar _NSGetExecutablePath en macOS
- Añadir getResourcesDirectory() con soporte MACOS_BUNDLE
- Actualizar main.cpp y engine.cpp para buscar recursos correctamente
- Eliminar referencias obsoletas a directorio 'config' en Makefile
Ahora resources.pack se busca en ../Resources/ cuando MACOS_BUNDLE está
definido, permitiendo que la app bundle funcione correctamente.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
SISTEMA DE RELEASE (Makefile):
- Adaptado windows_release de Coffee Crisis a ViBe3 Physics
- Comandos Unix-style (rm/cp/mkdir) compatibles con Git Bash/MSYS2
- Compresión ZIP via PowerShell Compress-Archive
- LICENSE opcional (si no existe, continúa)
- Genera: vibe3_physics-YYYY-MM-DD-win32-x64.zip
CARGA DINÁMICA DE RECURSOS:
- Añadido Texture::getPackResourceList() - Lista recursos del pack
- Añadido Texture::isPackLoaded() - Verifica si pack está cargado
- engine.cpp: Descubrimiento dinámico de texturas desde pack
- Sin listas hardcodeadas - Usa ResourcePack::getResourceList()
- Filtra recursos por patrón "balls/*.png" automáticamente
ARQUITECTURA:
- Descubrimiento de texturas híbrido:
1. Si existe data/balls/ → escanear disco
2. Si no existe + pack cargado → listar desde pack
3. Ordenar por tamaño (automático)
TESTING CONFIRMADO:
- ✅ Release con resources.pack funciona sin data/
- ✅ Carga 4 texturas desde pack dinámicamente
- ✅ make windows_release genera ZIP válido
- ✅ Ejecutable arranca correctamente desde release/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>