Commit graph

4 commits

Author SHA1 Message Date
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