Commit graph

8 commits

Author SHA1 Message Date
9b1d85c8c3 docs: CLAUDE.md v0.2.3 - initDeferred() y rangos negativos
Documentación añadida:
- initDeferred(): control manual sin auto-crear archivo
- Arquitectura 3 fuentes (File > BD > Defaults)
- Validación rangos negativos: "-100-100" soportado
- Historial con commits 0ef5efd y 957767d

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 19:05:06 +01:00
957767d865 fix: validateIntRange/FloatRange soportan rangos negativos
Bug: "-100-100" se parseaba como ["", "100", "100"] con splitScalar
Fix: Buscar el separador '-' que NO está al inicio del string

Ejemplos que ahora funcionan:
- "-100-100" → min=-100, max=100
- "-50-50" → min=-50, max=50
- "0-100" → min=0, max=100 (sin cambio)

Test añadido para rangos negativos.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 17:35:25 +01:00
0ef5efd8d8 feat: initDeferred() para control manual de archivo
- Nueva función initDeferred() que NO carga/crea archivo automáticamente
- Útil cuando se necesita verificar BD antes de decidir qué cargar
- init() mantiene comportamiento original (loadOrCreate automático)
- Permite arquitectura 3 fuentes: Archivo > BD > Defaults

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 17:30:16 +01:00
04462afc5c docs: CLAUDE.md v0.2.1 - FileWatcher, loadFromString API
- Documentación FileWatcher (mtime polling, checkForChanges)
- Documentación loadFromString (defaults embebidos)
- updateMtime para evitar auto-detectar cambios propios
- Historial actualizado

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 13:13:49 +01:00
ef45ce6934 feat: Add FileWatcher and loadFromString
- FileWatcher: Observa archivo para detectar cambios via mtime
  - Intervalo configurable entre verificaciones
  - reset() y updateMtime() para control manual
- loadFromString(): Carga config desde string (para defaults embebidos)
- Tests para ambas funcionalidades

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 12:56:51 +01:00
4ec8667853 fix: duplicar strings al cargar config para evitar dangling pointers
Problema: Al recargar config, los strings asignados apuntaban al buffer
de contenido del archivo que se liberaba con defer al final de load().
Esto causaba segfaults al acceder a los valores después.

Solución: Usar dupeString() o allocator.dupe() para crear copias
independientes de los strings antes de asignarlos a la config.

Afecta tipos .string, .string_array y .color (cuando el campo es []const u8).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 11:33:35 +01:00
91e5133e13 feat: ConfigManager - gestor autónomo de configuración
Añade ConfigManager que maneja automáticamente:
- Carga/creación de archivo config (loadOrCreate)
- Auto-guardado en deinit si hay cambios pendientes
- Sistema de observers con contexto para sincronización externa

Cambios:
- ConfigManager(variables, ConfigType, app_name) type
- Observer con contexto: fn(change, config, ctx) void
- addObserver(callback, context) para registrar listeners
- Métodos: get, set, getConfig, getConfigMut, markDirty, isDirty

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 13:29:29 +01:00
15c7f7357e feat: zcatconfig v0.1.0 - Sistema de configuracion declarativo
Libreria para gestion de configuracion con:
- Definicion declarativa de variables (ConfigVariable)
- Engine generico con comptime (inline for + @field)
- Persistencia a archivo texto legible
- Validacion de valores (rangos, tipos)
- Soporte: boolean, integer, float, string, color

Extraido y generalizado de zsimifactu/src/config/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 12:29:59 +01:00