Popup widget:
- Floating overlay with optional backdrop dimming
- Configurable size and position (or centered)
- Block wrapper support
Modal widget:
- Title, message, and action buttons
- Keyboard navigation (Tab/arrows to switch buttons)
- Helper functions: confirmDialog, alertDialog, yesNoCancelDialog
Menu widgets:
- MenuItem: action, separator, submenu, toggle types
- Menu: Dropdown menu with selection navigation
- MenuBar: Horizontal menu bar with dropdown support
- Shortcut display support
- Enabled/disabled state
Example: menu_demo.zig with interactive menu bar and dialogs
Tests: 11 tests for popup/menu, all pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New features:
- Easing functions: linear, ease-in/out, cubic, expo, bounce, elastic, back
- Animation struct for tweening values over time
- AnimationGroup for parallel/sequential animations
- Timer for frame-based updates (one-shot and repeating)
- Helper functions: lerp, inverseLerp, mapRange
Animation features:
- Configurable repeat count (-1 for infinite)
- Ping-pong mode (reverse on repeat)
- Delay before start
- Pause/resume control
- getValue as f64, i64, or u16
Example: animation_demo.zig comparing 5 easing functions
Tests: 12 animation tests, all pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New widget: src/widgets/input.zig
- Basic editing (insert, delete, backspace)
- Cursor movement (home, end, left, right)
- Word navigation (Ctrl+Left/Right, Ctrl+B/F)
- Kill/yank operations (Ctrl+K, Ctrl+U, Ctrl+Y)
- Delete word (Ctrl+W)
- History navigation (Up/Down arrows)
- Unicode support (UTF-8 encoding)
- Password masking support
New example: examples/input_demo.zig
- Interactive demo with normal and password inputs
- Tab to switch focus between inputs
- Shows submitted values in message log
Run with: zig build input-demo
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New examples:
- list_demo.zig: Interactive list with j/k navigation
- table_demo.zig: Table with row selection and status colors
- dashboard.zig: Multi-widget demo (Tabs, Gauges, Sparklines, List)
Also includes:
- build.zig: Added build targets for all new examples
- table.zig: Fixed Cell.content default, HighlightSpacing check, ColumnPos type
Run with: zig build list-demo / table-demo / dashboard
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Buffer optimizations:
- Symbol: nuevo tipo compacto para almacenar UTF-8 (4 bytes max)
- Evita conversion codepoint->UTF8 en cada render
- fromCodepoint() y fromSlice() para crear symbols
- slice() para output directo sin conversion
- Cell: refactorizado para usar Symbol
- Eliminado campo 'dirty' (innecesario con diff)
- Nuevo metodo eql() para comparacion eficiente
- char() accessor para compatibilidad legacy
- Buffer.diff(): nuevo sistema de renderizado diferencial
- DiffIterator compara buffers celda a celda
- Solo retorna celdas que cambiaron
- Reduce drasticamente I/O a terminal
- Buffer.resize(): nuevo metodo para redimensionar
- Preserva contenido existente donde posible
- Backend.writeSymbol(): escribe UTF-8 directo
- Mas eficiente que writeChar() con conversion
- Terminal.flush(): usa diff iterator
- Solo escribe celdas modificadas
Tests: 18 tests (9 nuevos para Symbol, Cell, diff)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>