From 2de8f626be380cb25e2b7ccd4647752839d0fb0b Mon Sep 17 00:00:00 2001 From: reugenio Date: Tue, 9 Dec 2025 22:46:09 +0100 Subject: [PATCH] docs: Update CLAUDE.md with REFERENCE.md link and cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- CLAUDE.md | 259 +++++++------------------------------------------- build.zig.zon | 2 +- 2 files changed, 33 insertions(+), 228 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d643dbe..b38edc4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,13 +17,12 @@ /mnt/cello2/arno/re/recode/TEAM_STANDARDS/QUICK_REFERENCE.md ``` -### Paso 3: Leer documentación de investigación +### Paso 3: Leer documentación ``` -docs/DEVELOPMENT_PLAN.md # ⭐ PLAN MAESTRO - Leer primero +REFERENCE.md # ⭐ MANUAL DE REFERENCIA COMPLETO (1370 líneas) +docs/DEVELOPMENT_PLAN.md # Plan de desarrollo por fases +docs/MOBILE_WEB_BACKENDS.md # Documentación backends mobile/web docs/research/WIDGET_COMPARISON.md # Comparativa zcatgui vs DVUI vs Gio -docs/research/GIO_UI_ANALYSIS.md # Análisis de Gio UI (Go) -docs/research/IMMEDIATE_MODE_LIBS.md # Comparativa librerías immediate-mode -docs/research/SIMIFACTU_FYNE_ANALYSIS.md # Requisitos extraídos de Simifactu docs/ARCHITECTURE.md # Arquitectura y decisiones de diseño ``` @@ -47,7 +46,7 @@ Una vez verificado el estado, continúa desde donde se dejó. | **Nombre** | zcatgui | | **Versión** | v0.15.0 | | **Fecha inicio** | 2025-12-09 | -| **Estado** | ✅ 35 widgets, 274 tests, paridad DVUI + mobile backends | +| **Estado** | ✅ COMPLETO - 37 widgets, ~35K LOC, 4 backends | | **Lenguaje** | Zig 0.15.2 | | **Paradigma** | Immediate Mode GUI | | **Inspiración** | Gio (Go), microui (C), DVUI (Zig), Dear ImGui (C++) | @@ -194,7 +193,7 @@ zcatgui/ │ │ ├── accessibility.zig # ✅ Accessibility (ARIA roles) │ │ └── gesture.zig # ✅ Gesture recognizer (tap, swipe, pinch, rotate) │ │ -│ ├── widgets/ # 35 widgets implementados +│ ├── widgets/ # 37 widgets implementados │ │ ├── widgets.zig # Re-exports │ │ ├── label.zig, button.zig, text_input.zig, checkbox.zig │ │ ├── select.zig, list.zig, focus.zig, table.zig @@ -261,7 +260,8 @@ zcatgui/ │ ├── build.zig # Build con targets: wasm, android, ios ├── build.zig.zon -└── CLAUDE.md +├── CLAUDE.md # Este archivo +└── REFERENCE.md # ⭐ Manual de referencia completo (1370 líneas) ``` --- @@ -599,14 +599,17 @@ const stdout = std.fs.File.stdout(); // NO std.io.getStdOut() | 2025-12-09 | v0.14.0 | FASE 8: Accessibility system, Testing framework, 274 tests | | 2025-12-09 | v0.14.1 | FASE 9: Gio parity - 12 widgets + gesture system | | 2025-12-09 | v0.15.0 | FASE 10: Mobile/Web - WASM, Android, iOS backends | +| 2025-12-09 | v0.15.0 | Documentación: REFERENCE.md completo (1370 líneas) | --- ## ESTADO ACTUAL -**✅ PROYECTO COMPLETADO - v0.15.0 - Paridad DVUI + Mobile/Web** +**✅ PROYECTO COMPLETADO - v0.15.0** -### Widgets (35 total - 100% paridad DVUI): +> **Para detalles técnicos completos, ver `REFERENCE.md`** (1370 líneas de documentación) + +### Widgets (37 total): **Básicos (7)**: Label, Button, Checkbox, Radio, Slider, TextInput, NumberEntry @@ -644,8 +647,7 @@ const stdout = std.fs.File.stdout(); // NO std.io.getStdOut() - **Gestures**: Tap, double-tap, long-press, swipe, pinch, rotate ### Métricas: -- **274 tests** pasando -- **~27,000 LOC** total +- **~35,000 LOC** en 81 archivos fuente - **0 warnings**, **0 memory leaks** - **WASM**: ~18KB compilado @@ -671,227 +673,30 @@ cd /mnt/cello2/arno/re/recode/zig/zcatgui --- -## PLAN DE TRABAJO EXTENDIDO +## DOCUMENTACIÓN DISPONIBLE -### Fase 4: Modal/Popup (PRÓXIMO) -- [ ] Modal widget (overlay que bloquea UI) -- [ ] Diálogos estándar: Confirm, Alert, Input -- [ ] Z-order/capas para popups - -### Fase 5: Comparativa con Librerías de Referencia - -#### 5.1 Comparar con DVUI (Zig) - Librería base de referencia -DVUI tiene ~30 widgets. Comparar y extraer lo que nos falta: - -| Widget DVUI | zcatgui | Prioridad | -|-------------|---------|-----------| -| Button | ✅ | - | -| Checkbox | ✅ | - | -| TextInput | ✅ | - | -| Slider | ❌ | Media | -| ScrollArea | ❌ | Alta | -| Menu | ❌ | Alta | -| Dropdown | ✅ (Select) | - | -| TreeView | ❌ | Baja | -| Modal | ⏳ | Alta | -| Popup | ⏳ | Alta | -| Radio | ❌ | Media | -| ColorPicker | ❌ | Baja | -| ProgressBar | ❌ | Media | - -#### 5.2 Comparar con Gio (Go) -Gio es immediate-mode moderno. Extraer patterns: -- [ ] Sistema de constraints/layout -- [ ] Gesture handling -- [ ] Animation system -- [ ] Theming approach - -#### 5.3 Comparar con zcatui (nuestro TUI - 35 widgets) -Widgets de zcatui que deberíamos portar a GUI: - -| Widget zcatui | zcatgui | Prioridad | Notas | -|---------------|---------|-----------|-------| -| input | ✅ | - | TextInput | -| select | ✅ | - | | -| checkbox | ✅ | - | | -| table | ✅ | - | | -| list | ✅ | - | | -| panel | ✅ | - | | -| **popup** | ⏳ | Alta | Modal/Popup | -| **menu** | ❌ | Alta | Menús contextuales | -| **tabs** | ❌ | Alta | Tab navigation | -| **tree** | ❌ | Media | TreeView | -| **calendar** | ❌ | Media | Date picker | -| **filepicker** | ❌ | Media | File browser | -| **dirtree** | ❌ | Media | Directory tree | -| progress | ❌ | Media | ProgressBar | -| gauge | ❌ | Baja | | -| sparkline | ❌ | Baja | | -| barchart | ❌ | Baja | | -| chart | ❌ | Baja | | -| canvas | ❌ | Baja | Custom drawing | -| markdown | ❌ | Baja | | -| syntax | ❌ | Baja | Code highlighting | -| viewport | ❌ | Media | Scrollable content | -| scroll | ❌ | Alta | ScrollArea | -| scrollbar | ❌ | Alta | | -| slider | ❌ | Media | | -| spinner | ❌ | Baja | Loading indicator | -| statusbar | ❌ | Media | | -| textarea | ❌ | Alta | Multiline input | -| tooltip | ❌ | Media | Hover help | -| help | ❌ | Baja | | -| logo | ❌ | Baja | | -| clear | ✅ | - | Implicit | -| block | ✅ | - | Panel/Container | -| paragraph | ✅ | - | Label | - -### Fase 6: Widgets Específicos Simifactu - -#### 6.1 AutoComplete/ComboBox Widget (CRÍTICO) -Widget usado en Simifactu para: -- Provincias (dropdown con búsqueda) -- Países (dropdown con búsqueda) -- Tipos IVA (dropdown con valores predefinidos) -- Poblaciones (autocomplete con sugerencias) - -```zig -pub const AutoComplete = struct { - /// Current text value - text: []const u8, - /// All available options - options: []const []const u8, - /// Filtered options based on text - filtered: []const []const u8, - /// Whether dropdown is open - open: bool, - /// Selected index in filtered list - selected: i32, - /// Allow custom values not in list - allow_custom: bool, - /// Callback when value changes - on_change: ?*const fn([]const u8) void, -}; -``` - -#### 6.2 AdvancedTable Analysis -Analizar `/mnt/cello2/arno/re/recode/go/simifactu/internal/ui/components/advanced_table/`: -- [ ] Sorting por columnas (click en header) -- [ ] Resize de columnas (drag) -- [ ] Column reordering (drag) -- [ ] Multi-select rows -- [ ] Copy/Paste cells -- [ ] Undo/Redo edits -- [ ] Calculated columns -- [ ] Column visibility toggle -- [ ] Export selected rows - -#### 6.3 Sistema Lego Panels -Layout modular tipo Simifactu: -- [ ] Panel registry (panels registran su ID) -- [ ] Layout presets (Ctrl+1/2/3) -- [ ] Drag-and-drop panel reordering -- [ ] Panel minimize/maximize -- [ ] Save/restore layout state -- [ ] Panel communication (pub/sub) - -### Fase 7: Features Avanzados - -#### 7.1 Sistema de Themes -- [ ] Theme struct con todos los colores -- [ ] Hot-reload de themes -- [ ] Theme editor widget -- [ ] Persistencia de themes - -#### 7.2 TTF Fonts -- [ ] Integrar stb_truetype -- [ ] Font atlas generation -- [ ] Multiple font sizes -- [ ] Font fallback chain - -#### 7.3 Internacionalización -- [ ] String tables -- [ ] RTL support (futuro) +| Documento | Descripción | +|-----------|-------------| +| **REFERENCE.md** | ⭐ Manual de referencia completo (1370 líneas) | +| **docs/DEVELOPMENT_PLAN.md** | Plan de desarrollo por fases (10 fases completadas) | +| **docs/MOBILE_WEB_BACKENDS.md** | Guía de backends WASM/Android/iOS | +| **docs/ARCHITECTURE.md** | Decisiones de arquitectura | +| **docs/research/** | Análisis de librerías de referencia | --- -## WIDGETS ROADMAP VISUAL +## PROYECTOS RELACIONADOS -``` -COMPLETADOS (Fase 1-3.5): -✅ Label, Button, TextInput, Checkbox, Select, List -✅ Focus, Table, Split, Panel -✅ Keyboard integration - -EN PROGRESO: -⏳ Modal/Popup - -PRÓXIMOS (Fase 4-5): -📋 Menu, Tabs, ScrollArea, Scrollbar -📋 Radio, Slider, ProgressBar -📋 Textarea (multiline), Tooltip - -SIMIFACTU-ESPECÍFICOS (Fase 6): -🎯 AutoComplete/ComboBox -🎯 AdvancedTable features (sort, resize, multi-select) -🎯 Lego Panel system - -AVANZADOS (Fase 7): -🔮 Calendar, DatePicker -🔮 FilePicker, DirTree -🔮 Tree/TreeView -🔮 Themes hot-reload -🔮 TTF fonts -``` +| Proyecto | Ruta | Descripción | +|----------|------|-------------| +| **zcatui** | `/mnt/cello2/arno/re/recode/zig/zcatui/` | TUI library (proyecto hermano) | +| **simifactu** | `/mnt/cello2/arno/re/recode/go/simifactu/` | App de referencia (Fyne) | --- -## ESTIMACIÓN DE TRABAJO +## REFERENCIAS EXTERNAS -| Fase | Widgets/Features | Tiempo Est. | -|------|------------------|-------------| -| 4 | Modal/Popup | 2-3 días | -| 5.1 | Menu, Tabs, ScrollArea | 1 semana | -| 5.2 | Radio, Slider, Progress | 3-4 días | -| 5.3 | Textarea, Tooltip | 3-4 días | -| 6.1 | AutoComplete | 3-4 días | -| 6.2 | AdvancedTable | 1-2 semanas | -| 6.3 | Lego Panels | 1 semana | -| 7 | Themes, TTF | 1-2 semanas | -| **TOTAL** | | **6-8 semanas** | - ---- - -## ARCHIVOS DE REFERENCIA - -### Simifactu (Go/Fyne) -``` -/mnt/cello2/arno/re/recode/go/simifactu/ -├── internal/ui/components/advanced_table/ # AdvancedTable (2000+ LOC) -├── internal/ui/panels_v3/ # Lego panel system -├── third_party/fynex-widgets/ # AutoComplete, DateEntry, etc. -└── internal/ui/dialogs/ # Modal dialogs -``` - -### zcatui (Zig TUI - 35 widgets) -``` -/mnt/cello2/arno/re/recode/zig/zcatui/src/widgets/ -├── popup.zig # Modal/Popup reference -├── menu.zig # Menu widget -├── tabs.zig # Tab navigation -├── tree.zig # TreeView -├── calendar.zig # Calendar/DatePicker -├── filepicker.zig # File browser -└── ... -``` - -### DVUI (Zig GUI reference) -``` -https://github.com/david-vanderson/dvui -``` - -### Gio (Go immediate-mode) -``` -https://gioui.org/ -docs/research/GIO_UI_ANALYSIS.md -``` +- [microui](https://github.com/rxi/microui) - Arquitectura mínima +- [DVUI](https://github.com/david-vanderson/dvui) - Zig GUI reference +- [Gio](https://gioui.org/) - Go immediate-mode +- [Dear ImGui](https://github.com/ocornut/imgui) - C++ reference diff --git a/build.zig.zon b/build.zig.zon index a358aa2..772fe0e 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,6 +1,6 @@ .{ .fingerprint = 0x30a5cd33d0b0066c, - .name = .zcatgui, + .name = "zcatgui", .version = "0.1.0", .minimum_zig_version = "0.15.0",