14d717d7f4
🔧 Font completo + key repeat para navegación
...
- Font bitmap 8x8 completo (ASCII 32-126)
- navKeyPressed() ahora detecta key repeat de SDL2
- Exportar default_font desde render module
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 00:50:44 +01:00
296939bb65
🔧 FIX: Compatibilidad Zig 0.15.2
...
- 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>
2025-12-09 23:01:09 +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
b42945ba81
docs: Complete API Reference Manual (1370 lines)
...
REFERENCE.md - Comprehensive documentation for zcatgui library
Contents:
- Overview and design philosophy
- Installation and build commands (all platforms)
- Quick start guide with examples
- Architecture diagram and file structure
- Core modules documentation:
- Context, Layout, Style, Input, Command
- Clipboard, DragDrop, Shortcuts, Focus
- Accessibility, Gesture recognition
- All 37 widgets documented with categories:
- Basic: Label, Button, TextInput, TextArea, Checkbox, Radio, Switch
- Selection: Select, List, AutoComplete, Menu, Tabs
- Data: Table, Tree, VirtualScroll
- Input: Slider, NumberEntry, ColorPicker, DatePicker
- Feedback: Progress, Tooltip, Toast, Badge, Loader
- Layout: Split, Panel, Modal, ScrollArea, Surface, Grid, Resize, Divider
- Navigation: AppBar, NavDrawer, Sheet, Breadcrumb, Discloser
- Visual: Icon, IconButton, Image, RichText, Canvas, Chart
- Interactive: Reorderable, Selectable
- Rendering system:
- Framebuffer, SoftwareRenderer
- Bitmap and TTF fonts
- Animation system (20+ easing functions, spring physics)
- Effects (shadows, gradients, blur, AA)
- Backend documentation:
- SDL2 (desktop)
- WASM (browser) with JS integration
- Android (NDK)
- iOS (UIKit bridge)
- Macro system (record/playback)
- Panel system (Lego architecture)
- Performance utilities (arena, pools, benchmarks)
- Theme system (5 built-in themes)
- Accessibility system
- Full API reference
Stats: 35K LOC, 81 source files, 37 widgets, 4 backends
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 18:42:52 +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
91e13f6956
feat: zcatgui Gio parity - 12 new widgets + gesture system
...
New widgets (12):
- Switch: Toggle switch with animation
- IconButton: Circular icon button (filled/outlined/ghost/tonal)
- Divider: Horizontal/vertical separator with optional label
- Loader: 7 spinner styles (circular/dots/bars/pulse/bounce/ring/square)
- Surface: Elevated container with shadow layers
- Grid: Layout grid with scrolling and selection
- Resize: Draggable resize handle (horizontal/vertical/both)
- AppBar: Application bar (top/bottom) with actions
- NavDrawer: Navigation drawer with items, icons, badges
- Sheet: Side/bottom sliding panel with modal support
- Discloser: Expandable/collapsible container (3 icon styles)
- Selectable: Clickable region with selection modes
Core systems added:
- GestureRecognizer: Tap, double-tap, long-press, drag, swipe
- Velocity tracking and fling detection
- Spring physics for fluid animations
Integration:
- All widgets exported via widgets.zig
- GestureRecognizer exported via zcatgui.zig
- Spring/SpringConfig exported from animation.zig
- Color.withAlpha() method added to style.zig
Stats: 47 widget files, 338+ tests, +5,619 LOC
Full Gio UI parity achieved.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 17:21:15 +01:00
5a751782ea
docs: Add comprehensive README.md
...
- 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>
2025-12-09 14:01:01 +01:00
f219e14f9c
docs: Mark all development phases complete
...
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>
2025-12-09 14:00:09 +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
1a26d34aa3
feat: zcatgui v0.14.0 - Phase 8 Accessibility & Testing
...
Accessibility System:
- Role enum for all widget types (button, checkbox, slider,
tree, table, menu, dialog, etc.)
- State packed struct (disabled, focused, selected, checked,
expanded, pressed, invalid, readonly, required, busy)
- Info struct with label, description, value, position,
level, controls, labelled_by
- Manager for tracking widget accessibility info
- announce() method for screen reader announcements
- Live region support (polite, assertive)
- Helper constructors for common patterns
Testing Framework:
- TestRunner for simulating user interactions:
- Mouse: click, doubleClick, drag, scroll, moveMouse
- Keyboard: pressKey, typeText, shortcut
- Time: tick, waitFrames, advanceTime
- SnapshotTester for visual regression testing:
- capture() to save framebuffer
- compare() to diff against baseline
- update() to update baseline
- Assertions module:
- assertVisible, assertContains, assertIntersects
- assertColorEqual, assertColorNear
- assertInRange
Widget count: 35 widgets
Test count: 274 tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:54:07 +01:00
70fca5177b
feat: zcatgui v0.13.0 - Phase 7 Visual Polish
...
Animation System:
- Easing functions: linear, quad, cubic, quartic, sine, expo,
elastic, bounce, back (in/out/inout variants)
- Animation struct with start/stop/getValue/isComplete
- AnimationManager for concurrent animations
- lerp/lerpInt interpolation helpers
Visual Effects:
- Shadow: soft/hard presets, offset, blur, spread
- Gradient: horizontal, vertical, diagonal, radial
- Blur: box blur with configurable radius
- Color utilities: interpolateColor, applyOpacity,
highlight, lowlight
Virtual Scrolling:
- VirtualScrollState for large list management
- Variable item height support
- Scrollbar with drag support
- Overscan for smooth scrolling
- ensureVisible/scrollToItem helpers
Anti-Aliased Rendering:
- drawLineAA: Xiaolin Wu's algorithm
- drawCircleAA: filled and stroke
- drawRoundedRectAA: rounded corners
- drawEllipseAA: arbitrary ellipses
- drawPolygonAA: polygon outlines
- Quality levels: none, low, medium, high, ultra
Widget count: 35 widgets
Test count: 256 tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:49:50 +01:00
976d172501
feat: zcatgui v0.12.0 - Phase 6 Advanced Input
...
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>
2025-12-09 13:41:43 +01:00
bb5b201203
feat: zcatgui v0.11.0 - Phase 5 Data Visualization
...
New Widgets (3):
Canvas - Drawing primitives widget
- Point, fillRect, strokeRect, line, text
- fillCircle, strokeCircle (Bresenham algorithm)
- fillArc, fillTriangle (scanline fill)
- strokePolygon, fillRoundedRect
- horizontalGradient, verticalGradient
- Color interpolation (lerpColor)
Chart - Data visualization widgets
- LineChart: Points, grid, axis labels, fill under line
- BarChart: Vertical bars, value display, labels
- PieChart: Slices with colors, donut mode
- DataPoint and DataSeries for multi-series
- 8-color default palette
- Scanline fill for triangles and quads
Icon - Vector icon system (60+ icons)
- Size presets: small(12), medium(16), large(24), xlarge(32)
- Categories: Navigation, Actions, Files, Status, UI, Media
- Stroke-based drawing with configurable thickness
- All icons resolution-independent
Widget count: 34 widget files
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 13:37:27 +01:00
34dfcfce18
feat: zcatgui v0.10.0 - Phase 4 Text & Navigation Widgets
...
New Widgets (3):
- NumberEntry: Numeric input with spinner buttons,
min/max limits, prefix/suffix, validation
- RichText: Styled text display with bold, italic,
underline, strikethrough, colors, clickable links,
simple markdown parsing
- Breadcrumb: Navigation path display with clickable
segments, separators, home icon, collapse support
Widget count: 30 widgets
Test count: 200 tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:27:21 +01:00
a75827f70b
feat: zcatgui v0.9.0 - Phase 3 Specialized Widgets
...
New Widgets (4):
- Image: Display images with RGBA/RGB/grayscale support,
fit modes (contain, cover, fill, scale_down), LRU cache
- ReorderableList: Drag and drop list reordering with
drag handle, remove button, add button support
- ColorPicker: RGB/HSL/Palette modes, alpha slider,
preview comparison, recent colors
- DatePicker: Calendar view with month navigation,
range selection, min/max dates, week numbers
Widget count: 27 widgets
Test count: 186 tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:21:47 +01:00
8044c1df43
feat: zcatgui v0.8.0 - Phase 2 Complete (6 new widgets)
...
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>
2025-12-09 13:04:41 +01:00
1ae0199db7
feat: zcatgui v0.7.0 - Phase 2 Feedback Widgets
...
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>
2025-12-09 12:54:55 +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