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>
This commit is contained in:
reugenio 2025-12-09 01:38:36 +01:00
parent 59c597fc18
commit c4ea6422dc
10 changed files with 41 additions and 41 deletions

View file

@ -1,4 +1,4 @@
# zCatGui - GUI Library para Zig # zcatgui - GUI Library para Zig
> **IMPORTANTE PARA CLAUDE**: Lee la sección "PROTOCOLO DE INICIO" antes de hacer cualquier cosa. > **IMPORTANTE PARA CLAUDE**: Lee la sección "PROTOCOLO DE INICIO" antes de hacer cualquier cosa.
@ -42,7 +42,7 @@ Una vez verificado el estado, continúa desde donde se dejó.
| Campo | Valor | | Campo | Valor |
|-------|-------| |-------|-------|
| **Nombre** | zCatGui | | **Nombre** | zcatgui |
| **Versión** | v0.1.0 - EN DESARROLLO | | **Versión** | v0.1.0 - EN DESARROLLO |
| **Fecha inicio** | 2025-12-09 | | **Fecha inicio** | 2025-12-09 |
| **Lenguaje** | Zig 0.15.2 | | **Lenguaje** | Zig 0.15.2 |
@ -52,7 +52,7 @@ Una vez verificado el estado, continúa desde donde se dejó.
### Descripción ### Descripción
**zCatGui** es una librería GUI immediate-mode para Zig con las siguientes características: **zcatgui** es una librería GUI immediate-mode para Zig con las siguientes características:
1. **Software Rendering por defecto** - Funciona en cualquier ordenador sin GPU 1. **Software Rendering por defecto** - Funciona en cualquier ordenador sin GPU
2. **Cross-platform** - Linux, Windows, macOS 2. **Cross-platform** - Linux, Windows, macOS
@ -466,9 +466,9 @@ Widgets → Commands → Software Rasterizer → Framebuffer → SDL_Texture →
## RELACIÓN CON ZCATUI ## RELACIÓN CON ZCATUI
**zcatui** (TUI) y **zCatGui** (GUI) son proyectos hermanos: **zcatui** (TUI) y **zcatgui** (GUI) son proyectos hermanos:
| Aspecto | zcatui | zCatGui | | Aspecto | zcatui | zcatgui |
|---------|--------|---------| |---------|--------|---------|
| Target | Terminal (ANSI) | Ventana gráfica | | Target | Terminal (ANSI) | Ventana gráfica |
| Rendering | Escape codes | Software rasterizer | | Rendering | Escape codes | Software rasterizer |

View file

@ -1,6 +1,6 @@
# zCatGui - Arquitectura y Decisiones de Diseño # zcatgui - Arquitectura y Decisiones de Diseño
> Documento de referencia para el desarrollo de zCatGui > Documento de referencia para el desarrollo de zcatgui
> Última actualización: 2025-12-09 > Última actualización: 2025-12-09
--- ---
@ -44,7 +44,7 @@ while (running) {
### 2.2 Immediate vs Retained Mode ### 2.2 Immediate vs Retained Mode
| Aspecto | Immediate (zCatGui) | Retained (Fyne) | | Aspecto | Immediate (zcatgui) | Retained (Fyne) |
|---------|---------------------|-----------------| |---------|---------------------|-----------------|
| Estado | Tú lo manejas | Framework lo mantiene | | Estado | Tú lo manejas | Framework lo mantiene |
| Callbacks | No hay | Muchos | | Callbacks | No hay | Muchos |

View file

@ -1,7 +1,7 @@
# Análisis Técnico: Gio UI (Go) # Análisis Técnico: Gio UI (Go)
> Investigación realizada: 2025-12-09 > Investigación realizada: 2025-12-09
> Propósito: Entender arquitectura de Gio como referencia para zCatGui > Propósito: Entender arquitectura de Gio como referencia para zcatgui
--- ---
@ -78,7 +78,7 @@ Gio usa un **vector renderer basado en Pathfinder** (proyecto de Mozilla):
### 2.3 CPU Fallback ### 2.3 CPU Fallback
**Importante para zCatGui**: Gio incluye un fallback CPU (`gioui.org/cpu`) con binarios pre-compilados de piet-gpu para arm, arm64, amd64, permitiendo renderizado software cuando no hay GPU disponible. **Importante para zcatgui**: Gio incluye un fallback CPU (`gioui.org/cpu`) con binarios pre-compilados de piet-gpu para arm, arm64, amd64, permitiendo renderizado software cuando no hay GPU disponible.
--- ---
@ -389,7 +389,7 @@ operation.Add(ops)
--- ---
## 9. Lecciones para zCatGui ## 9. Lecciones para zcatgui
### 9.1 Qué Adoptar ### 9.1 Qué Adoptar
@ -407,7 +407,7 @@ operation.Add(ops)
### 9.3 Diferencias Clave ### 9.3 Diferencias Clave
| Aspecto | Gio | zCatGui | | Aspecto | Gio | zcatgui |
|---------|-----|---------| |---------|-----|---------|
| Lenguaje | Go | Zig | | Lenguaje | Go | Zig |
| Rendering | GPU (Pathfinder) | Software (framebuffer) | | Rendering | GPU (Pathfinder) | Software (framebuffer) |

View file

@ -1,15 +1,15 @@
# Análisis Comparativo: Librerías GUI Immediate-Mode # Análisis Comparativo: Librerías GUI Immediate-Mode
> Investigación realizada: 2025-12-09 > Investigación realizada: 2025-12-09
> Propósito: Identificar mejores referencias para implementar zCatGui > Propósito: Identificar mejores referencias para implementar zcatgui
--- ---
## Resumen Ejecutivo ## Resumen Ejecutivo
Se analizaron las principales librerías GUI immediate-mode para identificar patrones, arquitecturas y código reutilizable para zCatGui. Se analizaron las principales librerías GUI immediate-mode para identificar patrones, arquitecturas y código reutilizable para zcatgui.
### Ranking de Relevancia para zCatGui ### Ranking de Relevancia para zcatgui
| # | Librería | Relevancia | Por qué | | # | Librería | Relevancia | Por qué |
|---|----------|------------|---------| |---|----------|------------|---------|
@ -83,7 +83,7 @@ mu_begin_window(ctx, "My Window", mu_rect(10, 10, 300, 200));
mu_end_window(ctx); mu_end_window(ctx);
``` ```
### Lecciones para zCatGui ### Lecciones para zcatgui
1. **Command list es suficiente** - No necesitamos vertex buffers 1. **Command list es suficiente** - No necesitamos vertex buffers
2. **~1000 LOC para MVP** - Es alcanzable 2. **~1000 LOC para MVP** - Es alcanzable
@ -157,7 +157,7 @@ pub fn gui(dvui: *Dvui) !void {
} }
``` ```
### Lecciones para zCatGui ### Lecciones para zcatgui
1. **Backend VTable**: Abstracción limpia para múltiples backends 1. **Backend VTable**: Abstracción limpia para múltiples backends
2. **Event processing**: Cómo manejar eventos en Zig 2. **Event processing**: Cómo manejar eventos en Zig
@ -216,7 +216,7 @@ Input → ImGuiContext → Widgets → Vertex Buffers → GPU/Software Raster
- Plot, Histogram - Plot, Histogram
- y muchos más... - y muchos más...
### Lecciones para zCatGui ### Lecciones para zcatgui
1. **ID system**: Hash de string/pointer para tracking 1. **ID system**: Hash de string/pointer para tracking
2. **State caching**: ImGuiStorage para estado persistente 2. **State caching**: ImGuiStorage para estado persistente
@ -283,7 +283,7 @@ nk_convert(&ctx, &cmds, &verts, &idx, &config);
- Chart, Color picker - Chart, Color picker
- Combo, Contextual, Menu, Tree - Combo, Contextual, Menu, Tree
### Lecciones para zCatGui ### Lecciones para zcatgui
1. **Styling extenso**: Sistema de propiedades muy configurable 1. **Styling extenso**: Sistema de propiedades muy configurable
2. **Memory model**: Fixed memory para embedded 2. **Memory model**: Fixed memory para embedded
@ -320,7 +320,7 @@ egui (core) → epaint (tessellation) → eframe (backend glue)
**epaint es interesante**: Convierte shapes vectoriales en triangle meshes. **epaint es interesante**: Convierte shapes vectoriales en triangle meshes.
### Lecciones para zCatGui ### Lecciones para zcatgui
1. **Response pattern**: Widgets retornan Response con interacciones 1. **Response pattern**: Widgets retornan Response con interacciones
2. **Context memory**: Retiene mínimo estado entre frames 2. **Context memory**: Retiene mínimo estado entre frames
@ -401,7 +401,7 @@ Input → UI Logic → Shapes → Tessellate → Vertex Buffers → GPU/Software
**Pros**: Eficiente, batching, flexible **Pros**: Eficiente, batching, flexible
**Contras**: Necesita tessellator, más complejo **Contras**: Necesita tessellator, más complejo
### Decisión para zCatGui ### Decisión para zcatgui
**Command List** (microui style): **Command List** (microui style):
1. Más simple de implementar 1. Más simple de implementar
@ -432,7 +432,7 @@ Input → UI Logic → Shapes → Tessellate → Vertex Buffers → GPU/Software
2. **imgui_software_renderer**: Rasteriza triangles de ImGui en CPU 2. **imgui_software_renderer**: Rasteriza triangles de ImGui en CPU
3. **SDL software renderer**: Backend para ImGui/Nuklear 3. **SDL software renderer**: Backend para ImGui/Nuklear
### Estimación para zCatGui ### Estimación para zcatgui
- **Rasterizer básico**: ~500 LOC - **Rasterizer básico**: ~500 LOC
- **Font handling**: ~300 LOC - **Font handling**: ~300 LOC
@ -441,7 +441,7 @@ Input → UI Logic → Shapes → Tessellate → Vertex Buffers → GPU/Software
--- ---
## Recomendaciones para zCatGui ## Recomendaciones para zcatgui
### Estudio Prioritario ### Estudio Prioritario

View file

@ -7,7 +7,7 @@
## Resumen Ejecutivo ## Resumen Ejecutivo
**Simifactu** es una aplicación de facturación empresarial desarrollada en Go con Fyne v2. Este análisis extrae todos los widgets, layouts, y funcionalidades que zCatGui necesitaría para soportar una aplicación similar. **Simifactu** es una aplicación de facturación empresarial desarrollada en Go con Fyne v2. Este análisis extrae todos los widgets, layouts, y funcionalidades que zcatgui necesitaría para soportar una aplicación similar.
**Proyecto analizado**: `/mnt/cello2/arno/re/recode/go/simifactu/` **Proyecto analizado**: `/mnt/cello2/arno/re/recode/go/simifactu/`
@ -32,7 +32,7 @@
- **ReadOnly** mode - **ReadOnly** mode
- `FocusGained/FocusLost` callbacks - `FocusGained/FocusLost` callbacks
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const Input = struct { pub const Input = struct {
text: []const u8, text: []const u8,
@ -57,7 +57,7 @@ pub const Input = struct {
- Navegación: `<<`, `<`, `>`, `>>` - Navegación: `<<`, `<`, `>`, `>>`
- Acciones contextuales: Exportar, Importar, Duplicar - Acciones contextuales: Exportar, Importar, Duplicar
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const Button = struct { pub const Button = struct {
label: []const u8, label: []const u8,
@ -81,7 +81,7 @@ pub const Button = struct {
- Estado Documento: "Borrador", "Confirmado", "Enviado" - Estado Documento: "Borrador", "Confirmado", "Enviado"
- Forma de Pago - Forma de Pago
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const Select = struct { pub const Select = struct {
options: [][]const u8, options: [][]const u8,
@ -98,7 +98,7 @@ pub const Select = struct {
- "Es Sociedad" - "Es Sociedad"
- Selección múltiple en importación - Selección múltiple en importación
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const Checkbox = struct { pub const Checkbox = struct {
checked: bool, checked: bool,
@ -203,7 +203,7 @@ pub const ColumnDef = struct {
- Todos los paneles principales están en InnerWindows - Todos los paneles principales están en InnerWindows
- Layout: 3-4 InnerWindows en HSplit/VSplit - Layout: 3-4 InnerWindows en HSplit/VSplit
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const Panel = struct { pub const Panel = struct {
title: []const u8, title: []const u8,
@ -221,7 +221,7 @@ pub const Panel = struct {
**Uso detectado:** **Uso detectado:**
- Navegador estilo OpenOffice (carpetas izquierda, archivos derecha) - Navegador estilo OpenOffice (carpetas izquierda, archivos derecha)
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const List = struct { pub const List = struct {
items: []ListItem, items: []ListItem,
@ -279,7 +279,7 @@ container.NewPadded(widget)
HSplit(0.20) HSplit(0.4347) HSplit(0.20) HSplit(0.4347)
``` ```
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const Split = struct { pub const Split = struct {
direction: enum { horizontal, vertical }, direction: enum { horizontal, vertical },
@ -348,7 +348,7 @@ window.Canvas().SetOnTypedKey(func(key *fyne.KeyEvent) {
}) })
``` ```
**Requisito zCatGui:** **Requisito zcatgui:**
```zig ```zig
pub const KeyEvent = struct { pub const KeyEvent = struct {
key: Key, key: Key,
@ -411,7 +411,7 @@ SIGSEGV: segmentation fault
GL context not current GL context not current
``` ```
### 6.2 Por qué zCatGui NO tiene este problema ### 6.2 Por qué zcatgui NO tiene este problema
**Immediate mode es inherentemente thread-safe por diseño:** **Immediate mode es inherentemente thread-safe por diseño:**
- No hay estado compartido del framework - No hay estado compartido del framework
@ -532,7 +532,7 @@ dataManager.StartConfigFileWatcher()
--- ---
## 10. Resumen de Requisitos para zCatGui ## 10. Resumen de Requisitos para zcatgui
### 10.1 Widgets Necesarios (Orden Prioridad) ### 10.1 Widgets Necesarios (Orden Prioridad)
@ -593,7 +593,7 @@ dataManager.StartConfigFileWatcher()
### Comparación Threading ### Comparación Threading
| Fyne (Retained) | zCatGui (Immediate) | | Fyne (Retained) | zcatgui (Immediate) |
|-----------------|---------------------| |-----------------|---------------------|
| 402 usos fyne.Do() | 0 equivalentes | | 402 usos fyne.Do() | 0 equivalentes |
| Callbacks async | Polling síncrono | | Callbacks async | Polling síncrono |

View file

@ -1,4 +1,4 @@
//! Hello World - Basic zCatGui example //! Hello World - Basic zcatgui example
//! //!
//! Demonstrates: //! Demonstrates:
//! - Initializing the backend //! - Initializing the backend
@ -21,7 +21,7 @@ pub fn main() !void {
const allocator = gpa.allocator(); const allocator = gpa.allocator();
// Initialize backend // Initialize backend
var backend = try Sdl2Backend.init("zCatGui - Hello World", 800, 600); var backend = try Sdl2Backend.init("zcatgui - Hello World", 800, 600);
defer backend.deinit(); defer backend.deinit();
// Create framebuffer // Create framebuffer

View file

@ -27,7 +27,7 @@ pub fn main() !void {
const allocator = gpa.allocator(); const allocator = gpa.allocator();
// Initialize backend // Initialize backend
var backend = try Sdl2Backend.init("zCatGui - Macro Demo", 800, 600); var backend = try Sdl2Backend.init("zcatgui - Macro Demo", 800, 600);
defer backend.deinit(); defer backend.deinit();
// Create framebuffer // Create framebuffer

View file

@ -1,6 +1,6 @@
//! SDL2 Backend - Window and event handling via SDL2 //! SDL2 Backend - Window and event handling via SDL2
//! //!
//! This is the primary backend for zCatGui. //! This is the primary backend for zcatgui.
//! SDL2 provides cross-platform window creation, event handling, //! SDL2 provides cross-platform window creation, event handling,
//! and texture-based rendering (we use it to display our software framebuffer). //! and texture-based rendering (we use it to display our software framebuffer).

View file

@ -1,6 +1,6 @@
//! Macro System - Record and playback user actions //! Macro System - Record and playback user actions
//! //!
//! The macro system is a CORNERSTONE of zCatGui. //! The macro system is a CORNERSTONE of zcatgui.
//! It allows recording raw keyboard input and replaying it exactly. //! It allows recording raw keyboard input and replaying it exactly.
//! //!
//! ## Design Decision: Raw Keys, Not Commands //! ## Design Decision: Raw Keys, Not Commands

View file

@ -1,4 +1,4 @@
//! zCatGui - Immediate Mode GUI Library for Zig //! zcatgui - Immediate Mode GUI Library for Zig
//! //!
//! A software-rendered, cross-platform GUI library with macro recording support. //! A software-rendered, cross-platform GUI library with macro recording support.
//! //!