- Early out para caracteres completamente fuera del clip
- Fast path para caracteres 100% visibles (caso común)
- Escritura directa al buffer de píxeles sin setPixel
- Loop optimizado para fuentes de 8px de ancho
- Unroll de los 8 bits del glyph byte
Resultados:
- Debug: 40ms → 32ms por frame
- Release: 40ms → 1.5ms por frame (~26x más rápido)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cambio de SDL_RENDERER_SOFTWARE a SDL_RENDERER_ACCELERATED | PRESENTVSYNC:
- VSync sincroniza con el refresco del monitor (~60Hz)
- SDL_RenderPresent() ahora bloquea hasta el próximo frame
- Elimina necesidad de sleep manual en aplicaciones
- CPU de ~70% a ~1-5% en idle
Fallback a software renderer si GPU no disponible.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
El widget TextInput ahora procesa internamente:
- Backspace/Delete: borrar caracteres
- Flechas izq/der: mover cursor
- Home/End: inicio/fin del texto
- Shift+movimiento: selección
- Ctrl+A: seleccionar todo
- Enter: submit
Esto hace que el widget sea auto-contenido y reutilizable,
sin requerir manejo de teclas en la aplicación.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- REFERENCE.md: Nueva sección "UTF-8 Text Rendering" explicando:
- Cómo funciona la decodificación UTF-8 → Latin-1
- Caracteres soportados (ASCII + Latin-1 Supplement)
- Por qué UTF-8 es el estándar correcto para BD/archivos
- Ejemplo de uso con texto español
- software.zig: Doc comments explicando el sistema UTF-8
El renderer ahora maneja texto UTF-8 automáticamente,
permitiendo mostrar correctamente: ñ, á, é, í, ó, ú, ¿, ¡, €, etc.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
El renderer iteraba byte por byte, causando que caracteres UTF-8
multi-byte (como ñ, á, é) se mostraran incorrectamente.
Cambios:
- Decodificación completa de UTF-8 (1-4 bytes)
- Mapeo de codepoints a Latin-1 para renderizado
- Caracteres fuera de Latin-1 se muestran como '?'
Esto permite mostrar correctamente texto en español y otros
idiomas europeos que usan caracteres Latin-1.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- build.zig.zon: .name = .zcatgui (enum literal, no string)
- examples/widgets_demo.zig: Añadido try en Context.init
- examples/table_demo.zig: Añadido try en Context.init
- ZIG_VERSION_NOTES.md: Referencia a sistema notas versiones
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- Project overview and features
- Quick start example
- Full widget list (35 widgets)
- Unique features documentation (Macros, Lego Panels, Table)
- Theme system
- Performance utilities
- Build instructions
- Comparison with DVUI/Dear ImGui
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated DEVELOPMENT_PLAN.md checklist:
- All 35 widgets marked complete
- All 9 development phases complete
- 274+ tests passing
- Ready for v1.0.0 release
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New Core Modules (4):
Clipboard - System clipboard integration
- getText()/setText() via SDL2 clipboard API
- hasText() and clear() utilities
- Cross-platform support
DragDrop - Drag and drop system
- DragData with typed data transfer
- DropZone registration with type filtering
- DragDropManager for coordinating operations
- Hover detection and drop results
- Helper functions: makeDraggable(), makeDropZone()
Shortcuts - Keyboard shortcuts system
- Shortcut struct with key + modifiers
- ShortcutManager for registration and checking
- Common shortcuts (Ctrl+C/V/X/Z, etc.)
- Human-readable formatting (formatShortcut)
- Enable/disable individual shortcuts
FocusGroup - Focus group management
- FocusGroup for widget tab order
- focusNext/Previous with wrap support
- FocusGroupManager for multiple groups
- Group switching (focusNextGroup)
- Tab/Shift+Tab navigation
All tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New Widgets:
- TextArea: Multi-line text editor with cursor navigation,
line numbers, selection, and scrolling support
- Tree: Hierarchical tree view with expand/collapse,
keyboard navigation, and selection
- Badge: Status labels with variants (primary, success,
warning, danger, info, outline), dismissible option
- TagGroup: Multiple badges in a row with wrapping
From previous session (v0.7.0):
- Progress: Bar (solid, striped, gradient, segmented),
Circle, Spinner (circular, dots, bars, ring)
- Tooltip: Hover tooltips with smart positioning
- Toast: Non-blocking notifications with auto-dismiss
Widget count: 23 widgets
Test count: 163 tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New Widgets (3):
- Progress: Bar, Circle, Spinner with multiple styles
- Bar styles: solid, striped, gradient, segmented
- Spinner styles: circular, dots, bars, ring
- Animated spinners with configurable speed
- Tooltip: Hover tooltips with smart positioning
- Auto-position to stay within screen bounds
- Arrow pointing to target element
- Multi-line text support with wrapping
- Configurable delay and styling
- Toast: Non-blocking notifications
- Types: info, success, warning, error
- Configurable position (6 positions)
- Auto-dismiss with countdown
- Action buttons support
- Stack multiple toasts
Widget count: 20 widgets
Test count: 140 tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>