Commit graph

164 commits

Author SHA1 Message Date
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