Hyperlinks (OSC 8):
- Clickable hyperlinks with URL and display text
- ID support for link grouping
- URL encoding utility
Notifications (OSC 9/777):
- iTerm2-style (OSC 9) and urxvt-style (OSC 777)
- NotificationManager with title/body support
Image display (Kitty/iTerm2):
- Kitty Graphics Protocol with chunked transmission
- iTerm2 inline images
- File and raw data display
Tree widget:
- Hierarchical tree view with expand/collapse
- Customizable symbols (Unicode/ASCII)
- TreeState for selection navigation
FilePicker widget:
- File browser using Tree widget
- Lazy-loading directory contents
- Hidden files toggle, file icons
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ContextMenu:
- Right-click context menu support
- Auto-adjust position to fit in bounds
- containsPoint for hit testing
- Wraps existing Menu widget
Tooltip:
- Single and multiline text support
- Configurable positioning (above/below/left/right/auto)
- Customizable style, border, padding
- TooltipManager with hover delay timing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents all features implemented in this session:
- Input widget (readline-style)
- Popup and Modal widgets
- Menu and MenuBar widgets
- Animation system (Easing, Animation, Timer)
- Clipboard OSC 52 support
- 10 example demos
Updated roadmap with pending features:
- Scrollable containers
- Textarea widget
- Tree widget
- File picker
- Hyperlinks OSC 8
- Image protocol
- Notifications OSC 9/777
Includes summary of LEGO panels study from simifactu-fyne
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>