Commit graph

33 commits

Author SHA1 Message Date
8a39ebe6f9 docs: Añadir sección LSP/zls a CLAUDE.md 2025-12-29 12:32:53 +01:00
ea388facb2 docs: Documentar refactorización modular (autocomplete, icon) 2025-12-29 11:52:27 +01:00
ae55ea5488 CLAUDE.md: jj + NORMAS_ESENCIALES 2025-12-25 19:24:00 +01:00
7d91835fb7 docs: Actualizar CLAUDE.md y CHANGELOG.md v0.21.2
Documentar nueva funcionalidad AdvancedTable:
- selected_row_unfocus: color fila seleccionada sin focus
- BasicColors acepta override desde aplicación
- drawRow recibe has_focus para elegir color

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 23:18:55 +01:00
3c52d2aa0e docs: Refactorizar CLAUDE.md (1006→354 líneas, -65%)
Cambios:
- Extraer historial de versiones a CHANGELOG.md
- Condensar secciones con enlaces a docs existentes
- Mantener completo: protocolo inicio, reglas críticas,
  documentación teamdocs, rutas, comandos
- Eliminar duplicación con docs/ARCHITECTURE.md y REFERENCE.md

CLAUDE.md sigue siendo autosuficiente para inicio de conversación.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 22:00:38 +01:00
bd95013ffc fix(advanced_table): Teclado funciona - result.selected_row/col
Bug: Las flechas no movían la selección en AdvancedTable.

Causa raíz:
- handleKeyboard seteaba result.selection_changed = true
- PERO NO seteaba result.selected_row / result.selected_col
- zsimifactu sincroniza selección desde DataManager cada frame
- Sin esos valores, DataManager no se actualizaba
- Siguiente frame: selección se reseteaba al valor anterior

Solución:
- Añadir result.selected_row y result.selected_col a todas
  las teclas de navegación (up, down, left, right, page_up,
  page_down, home, end)

Cambios visuales:
- Celda seleccionada: borde + tinte sutil (15%) en lugar
  de fondo sólido azul

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 20:06:17 +01:00
654183c0eb docs: Actualizar CLAUDE.md con bug pendiente AdvancedTable
- Añadida sección 🔴 BUG PENDIENTE con síntoma y pistas
- Actualizado historial: v0.20.0 y v0.21.0
- Añadido docs/BUG_ADVANCEDTABLE_KEYBOARD_2025-12-17.md a Paso 3

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 18:56:51 +01:00
e0d7e99bb6 fix: Corregir nombre de usuario Arno → R.Eugenio
Arno es el nombre de la carpeta/servidor, no del usuario.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 10:39:22 +01:00
a3c48efbab docs: Actualizar CLAUDE.md a v0.19.0 - Fases 1+2 completas
- Paridad Visual DVUI completada
- Focus Ring AA en 9 widgets documentado
- Historial actualizado con v0.19.0
- Bug TTF marcado como RESUELTO

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 10:23:40 +01:00
6e1f8b79d7 docs: Actualizar CLAUDE.md con Fase 2 transiciones hover 2025-12-17 01:12:53 +01:00
ebad736c75 docs: Actualizar CLAUDE.md - v0.18.0 con paridad visual DVUI Fase 1 2025-12-17 01:03:51 +01:00
6bf1eb1eb8 docs: Actualizar CLAUDE.md - zcatttf v1.0 funcionando
- TTF section actualizada: TRIUNFO HISTÓRICO zcatttf v1.0
- Lección clave: 'No reimplementar, TRADUCIR'
- Bug final: y_offset = -iy0 (positivo, no negativo)
- Versión actualizada a v0.17.0
- PROYECTOS RELACIONADOS: zcatttf v1.0 COMPLETA

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 00:51:48 +01:00
7a67a3b1ea docs: Actualizar estado TTF → zcatttf como solución
- CLAUDE.md: Bug TTF pausado, solución es nueva librería zcatttf
- TTF_DEBUG_SESSION: Documentar intentos adicionales y decisión final
- Proyectos relacionados: añadir zcatttf, zsimifactu, zcatp2p
- ttf.zig marcado como CONGELADO hasta integrar zcatttf

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 22:19:36 +01:00
d68ba3a03a docs: TTF bug NO RESUELTO - documentación completa
- Actualiza CLAUDE.md: bug crítico TTF prominente
- Documenta 3 intentos fallidos (DroidSans, Y-flip, UTF-8)
- Añade hipótesis actuales y pasos de verificación
- Instrucciones claras para próxima sesión

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 13:37:08 +01:00
399afc1149 docs: Auditoría DVUI y plan paridad visual
Nueva documentación:
- docs/research/DVUI_AUDIT_2025-12-17.md (570 líneas)
  - Análisis completo de DVUI vs zcatgui
  - Gap analysis: visual, no funcional
  - Plan de implementación en 3 fases
  - Técnica edge-fade para AA explicada

CLAUDE.md actualizado:
- Nueva tarea pendiente: Paridad Visual con DVUI
- Fases de implementación documentadas
- Estimación ~1,400 LOC
- Sistema dual propuesto (simple/fancy)

Hallazgo: zcatgui tiene MÁS widgets (~45 vs ~42)
El gap es VISUAL (esquinas, AA, transiciones)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 13:34:40 +01:00
222c4e1542 fix: DroidSans reemplaza AdwaitaSans (variable) + Y-flip TTF
- AdwaitaSans era fuente variable (fvar/gvar) incompatible con parser
- DroidSans.ttf: fuente estática 187KB (Apache 2.0)
- Y-flip en rasterización: TTF Y crece arriba, bitmap Y crece abajo
- Pendiente: UTF-8 multibyte en drawText

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 13:19:40 +01:00
c0107de978 docs: Actualizar sección documentación según protocolo
Formato requerido por PROTOCOLO_DOCUMENTACION_2025-12-16.md

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 01:38:22 +01:00
362393dd10 docs: Bump zcatgui to v0.16.1
- Actualizar CLAUDE.md con tarea TTF completada
- Añadir v0.16.1 al historial (fuente embebida)
- Actualizar versión en todos los lugares

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 01:27:26 +01:00
a11e1ea842 feat: zcatgui v0.16.0 - TTF rasterization con antialiasing
Cambios:
- TTF rasterization completo con bezier curves
- Antialiasing via supersampling 2x
- Integración TTF en SoftwareRenderer (setTtfFont)
- Fix ArrayListUnmanaged para Zig 0.15.2
- Documentación REFERENCE.md actualizada

CLAUDE.md actualizado con v0.16.0 y historial.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 01:05:48 +01:00
54626c8edf docs: Actualizar CLAUDE.md con protocolo documentación y tarea TTF
- Añadir sección PROTOCOLO DE DOCUMENTACIÓN (2025-12-16)
  - Agenda = índice, detalles en hitos/
  - Límite ~300 líneas por archivo
- Añadir sección TAREA ACTUAL: Fuentes TTF con Antialiasing
  - Estado de ttf.zig y fases de implementación
- TextInput: añadir text_color/border_color para validación

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 00:30:42 +01:00
aa3d0edcff docs: Actualizar rutas teamdocs en CLAUDE.md
Nueva estructura teamdocs con carpetas agenda/, normas/, historial/.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 00:13:42 +01:00
466735a6fd docs: Renombrar TEAM_STANDARDS a teamdocs
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 19:33:25 +01:00
3517a6f972 docs: Documentar sistema de focus completado y widgets adaptados
- Actualizar FOCUS_TRANSITION_2025-12-11.md con patrón de integración
- Actualizar CLAUDE.md: sección SISTEMA DE FOCUS - RESUELTO
- Widgets adaptados a FocusSystem:
  - numberentry.zig: registerFocusable, requestFocus, hasFocus
  - textarea.zig: registerFocusable, requestFocus, hasFocus
  - select.zig: campo focused, integración completa
  - radio.zig: reemplazado focus manual por FocusSystem
  - slider.zig: reemplazado focus manual por FocusSystem
  - tabs.zig: navegación teclado solo cuando tiene focus

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 18:50:37 +01:00
7cde6370d8 fix: Sistema de focus rediseñado y funcionando
Cambios principales:
- Nuevo FocusSystem unificado en core/focus.zig
- Separación registration_group / active_group para multi-panel
- Focus implícito para primer widget del grupo activo
- Table inicializa selected_row/col a 0 cuando tiene datos
- Corregido test navKeyPressed (usaba setKeyState en vez de handleKeyEvent)

Bug resuelto: tabla no respondía a teclado sin clic previo
Causa: selected_col quedaba en -1, selectedCell() retornaba null

Documentación: docs/FOCUS_TRANSITION_2025-12-11.md

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 17:55:08 +01:00
9b6210c76e refactor: Unificar sistema de focus - trabajo en progreso
PROBLEMA DETECTADO:
- Existían dos sistemas de focus paralelos que no se comunicaban
- FocusManager (widgets/focus.zig) usaba IDs u32
- FocusGroupManager (core/focus_group.zig) usaba IDs u64
- Esto causaba que Tab no funcionara y clics no cambiaran focus

SOLUCIÓN CONSENSUADA:
- Usar SOLO FocusGroupManager como fuente de verdad
- Integrar en Context con métodos públicos
- Widgets se auto-registran en el grupo activo al dibujarse
- Tab navega DENTRO del grupo activo
- F6 (u otro) cambia entre grupos/paneles

CAMBIOS:
- context.zig: Añadidos createFocusGroup(), setActiveFocusGroup(),
  hasFocus(), requestFocus(), registerFocusable(), handleTabKey()
- text_input.zig: Usa @intFromPtr para ID único, se auto-registra
- table.zig: Ahora se registra como widget focusable
- widgets.zig/zcatgui.zig: Eliminadas referencias antiguas a FocusManager
- CLAUDE.md: Documentado el trabajo en progreso

ESTADO: EN PROGRESO - Compila pero requiere más testing

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 00:26:22 +01:00
2de8f626be docs: Update CLAUDE.md with REFERENCE.md link and cleanup
- Add REFERENCE.md to documentation protocol (Step 3)
- Update widget count to 37
- Update LOC to ~35K
- Add REFERENCE.md to file structure
- Remove obsolete roadmap sections (now in DEVELOPMENT_PLAN.md)
- Simplify documentation section with table
- Clean up references section

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 22:46:09 +01:00
6889474327 feat: zcatgui v0.15.0 - Mobile & Web Backends
WASM Backend:
- src/backend/wasm.zig: Browser backend using extern JS functions
- web/zcatgui.js: Canvas 2D rendering bridge (~200 LOC)
- web/index.html: Demo page with event handling
- examples/wasm_demo.zig: Widget showcase for browser
- Output: 18KB WASM binary

Android Backend:
- src/backend/android.zig: ANativeActivity + ANativeWindow
- examples/android_demo.zig: Touch-enabled demo
- Touch-to-mouse event mapping
- Logging via __android_log_print
- Targets: ARM64 (device), x86_64 (emulator)

iOS Backend:
- src/backend/ios.zig: UIKit bridge via extern C functions
- ios/ZcatguiBridge.h: Objective-C header
- ios/ZcatguiBridge.m: UIKit implementation (~320 LOC)
- CADisplayLink render loop
- Touch event queue with @synchronized
- Targets: ARM64 (device), ARM64 simulator

Build System:
- WASM: zig build wasm
- Android: zig build android / android-x86
- iOS: zig build ios / ios-sim
- Conditional compilation for platform detection

Documentation:
- docs/MOBILE_WEB_BACKENDS.md: Comprehensive guide (~400 lines)
- Updated DEVELOPMENT_PLAN.md with FASE 10
- Updated CLAUDE.md with new commands

Stats: 3 backends, ~1500 new LOC, cross-platform ready

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 18:20:13 +01:00
5acc754555 docs: Update CLAUDE.md for v0.14.0 release
Updated documentation to reflect project completion:
- Version bump to v0.14.0
- Complete widget inventory (35 widgets)
- All core systems documented
- Full version history (v0.1.0 to v0.14.0)
- Metrics: 274 tests, ~25K LOC

All 9 phases of DEVELOPMENT_PLAN.md completed:
- Phase 1: Performance infrastructure
- Phase 2: Feedback widgets (Progress, Tooltip, Toast)
- Phase 3: Specialized widgets (Tree, Image, ColorPicker)
- Phase 4: Text widgets (TextArea, NumberEntry, RichText)
- Phase 5: Graphics (Canvas, Charts, Icons)
- Phase 6: Input systems (Clipboard, DragDrop, Shortcuts)
- Phase 7: Visual polish (Animation, Effects, AA)
- Phase 8: Accessibility & Testing
- Phase 9: Integration & Documentation

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:55:35 +01:00
8adc93a345 feat: zcatgui v0.6.0 - Phase 1 Optimization Complete
Performance Infrastructure:
- FrameArena: O(1) per-frame allocator with automatic reset
- ObjectPool: Generic object pool for frequently allocated types
- CommandPool: Specialized pool for draw commands
- RingBuffer: Circular buffer for streaming data
- ScopedArena: RAII pattern for temporary allocations

Dirty Rectangle System:
- Context now tracks dirty regions for partial redraws
- Automatic rect merging to reduce overdraw
- invalidateRect(), needsRedraw(), getDirtyRects() API
- Falls back to full redraw when > 32 dirty rects

Benchmark Suite:
- Timer: High-resolution timing
- Benchmark: Stats collection (avg, min, max, stddev, median)
- FrameTimer: FPS and frame time tracking
- AllocationTracker: Memory usage monitoring
- Pre-built benchmarks for arena, pool, and commands

Context Improvements:
- Integrated FrameArena for zero-allocation hot paths
- frameAllocator() for per-frame widget allocations
- FrameStats for performance monitoring
- Context.init() now returns error union (breaking change)

New Widgets (from previous session):
- Slider: Horizontal/vertical with customization
- ScrollArea: Scrollable content region
- Tabs: Tab container with keyboard navigation
- RadioButton: Radio button groups
- Menu: Dropdown menus (foundation)

Theme System Expansion:
- 5 built-in themes: dark, light, high_contrast, nord, dracula
- ThemeManager with runtime switching
- TTF font support via stb_truetype

Documentation:
- DEVELOPMENT_PLAN.md: 9-phase roadmap to DVUI/Gio parity
- Updated WIDGET_COMPARISON.md with detailed analysis
- Lego Panels architecture documented

Stats: 17 widgets, 123 tests, 5 themes

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 12:45:00 +01:00
6ac3856ae2 feat: zcatgui v0.5.0 - Complete widget library + research docs
Widgets implemented (13 total):
- Label: Static text with alignment
- Button: With importance levels (primary/normal/danger)
- TextInput: Single-line text entry with cursor
- Checkbox: Boolean toggle
- Select: Dropdown selection
- List: Scrollable selectable list
- Focus: Focus manager with tab navigation
- Table: Editable table with dirty tracking, keyboard nav
- Split: HSplit/VSplit draggable panels
- Panel: Container with title bar, collapsible
- Modal: Dialogs (alert, confirm, inputDialog)
- AutoComplete: ComboBox with prefix/contains/fuzzy matching

Core improvements:
- InputState now tracks keyboard state (keys_down, key_events)
- Full keyboard navigation for Table widget

Research documentation:
- WIDGET_COMPARISON.md: zcatgui vs DVUI vs Gio vs zcatui
- SIMIFACTU_ADVANCEDTABLE.md: Analysis of 10K LOC table component
- LEGO_PANELS_SYSTEM.md: Modular panel composition architecture

Examples:
- widgets_demo.zig: All basic widgets showcase
- table_demo.zig: Table, Split, Panel demonstration

All tests passing.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 11:00:49 +01:00
b352cf9672 docs: Update CLAUDE.md with actual project state
- Fix file structure to show what actually exists
- Update Zig 0.15.2 notes (ArrayListUnmanaged, file I/O)
- Update status: 16 tests passing, core implemented
- Add verification commands

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 01:41:20 +01:00
c4ea6422dc style: Use consistent lowercase naming (zcatgui, not zCatGui)
Apply TEAM_STANDARDS Norma #25: project names use lowercase
everywhere - repo, directory, module, documentation, imports.

No CamelCase in project names. Consistency = less cognitive friction.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 01:38:36 +01:00
59c597fc18 feat: zCatGui v0.1.0 - Initial project setup
Immediate Mode GUI library for Zig with software rendering.

Core features:
- SDL2 backend for cross-platform window/events
- Software rasterizer (works everywhere, including SSH)
- Macro recording system (cornerstone feature, like Vim)
- Command-list rendering (DrawRect, DrawText, etc.)
- Layout system with constraints
- Color/Style system with themes

Project structure:
- src/core/: context, command, input, layout, style
- src/macro/: MacroRecorder, MacroPlayer, MacroStorage
- src/render/: Framebuffer, SoftwareRenderer, Font
- src/backend/: Backend interface, SDL2 implementation
- examples/: hello.zig, macro_demo.zig
- docs/: Architecture, research (Gio, immediate-mode libs, Simifactu)

Build: zig build (requires SDL2-devel)
Tests: 16 tests passing

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 01:30:05 +01:00