zcatgui/CHANGELOG.md
R.Eugenio 3af97f6174 feat: IdleCompanion widget (v0.25.0)
Mascota animada reutilizable que aparece tras inactividad:
- Se asoma por bordes de paneles aleatorios
- Clipping correcto (respeta límites del panel)
- Ojos que miran izq/der, salto de pánico
- Estados: hidden → peeking → watching → hiding
- Diseño gato: orejas puntiagudas, pupilas verticales, mejillas

Uso:
  const IdleCompanion = zcatgui.widgets.idle_companion;
  var state: IdleCompanion.State = .{};
  IdleCompanion.draw(ctx, &panels, &state, last_activity, color);

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:01:44 +01:00

116 lines
6.4 KiB
Markdown

# zcatgui - Historial de Versiones
> Extraído de CLAUDE.md para mantener archivo principal conciso.
> Ver CLAUDE.md para documentación del proyecto.
---
## Historial Completo
| Fecha | Versión | Cambios |
|-------|---------|---------|
| 2025-12-09 | v0.1.0 | Proyecto creado, estructura base, documentación |
| 2025-12-09 | v0.2.0 | Widgets Fase 2 completados (Label, Button, TextInput, Checkbox, Select, List, Focus) |
| 2025-12-09 | v0.3.0 | Widgets Fase 3 completados (Table editable, Split panels, Panel container) |
| 2025-12-09 | v0.3.5 | Keyboard integration: InputState ahora trackea teclas, Table responde a flechas/Enter/Escape/Tab/F2 |
| 2025-12-09 | v0.4.0 | Modal widget: diálogos modales (alert, confirm, input), plan extendido documentado |
| 2025-12-09 | v0.5.0 | AutoComplete widget, comparativa DVUI/Gio/zcatui en WIDGET_COMPARISON.md |
| 2025-12-09 | v0.6.0 | FASE 1 Optimización: FrameArena, ObjectPool, dirty rectangles, Benchmark suite |
| 2025-12-09 | v0.7.0 | FASE 2: Progress, Tooltip, Toast, Spinner |
| 2025-12-09 | v0.8.0 | FASE 2: TextArea, Tree, Badge/TagGroup |
| 2025-12-09 | v0.9.0 | FASE 3: Image, ReorderableList, ColorPicker, DatePicker |
| 2025-12-09 | v0.10.0 | FASE 4: NumberEntry, RichText, Breadcrumb |
| 2025-12-09 | v0.11.0 | FASE 5: Canvas, Charts (line/bar/pie), Icon system (60+ icons) |
| 2025-12-09 | v0.12.0 | FASE 6: Clipboard, DragDrop, Shortcuts, FocusGroups |
| 2025-12-09 | v0.13.0 | FASE 7: Animation/Easing, Effects (shadow/gradient/blur), VirtualScroll, AA rendering |
| 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) |
| 2025-12-11 | v0.15.1 | FocusSystem rediseñado: registration_group/active_group, focus implícito |
| 2025-12-11 | v0.15.2 | Widgets adaptados a FocusSystem: numberentry, textarea, select, radio, slider, tabs |
| 2025-12-16 | v0.16.0 | TTF rasterization con antialiasing (supersampling 2x) |
| 2025-12-16 | v0.16.1 | Fuente embebida: TtfFont.initEmbedded() |
| 2025-12-16 | v0.16.2 | Fix TTF: DroidSans (187KB) reemplaza AdwaitaSans (variable). Y-flip rasterización. |
| 2025-12-17 | v0.17.0 | ⭐ Integración zcatttf v1.0 - TTF FUNCIONA PERFECTAMENTE |
| 2025-12-17 | v0.18.0 | Paridad Visual DVUI Fase 1: RenderMode dual, esquinas redondeadas, sombras |
| 2025-12-17 | v0.19.0 | Paridad Visual DVUI Fase 2: HoverTransition, Focus Ring AA en 9 widgets |
| 2025-12-17 | v0.20.0 | AdvancedTable: 8 fases completas (~2,700 LOC) - Schema, CRUD, Sorting, Lookup |
| 2025-12-17 | v0.21.0 | AdvancedTable: +990 LOC (multi-select, search, validation) |
| 2025-12-17 | v0.21.1 | Fix: AdvancedTable teclado - result.selected_row/col en handleKeyboard |
| 2025-12-19 | v0.21.2 | AdvancedTable: selected_row_unfocus, color selección según focus |
| 2025-12-19 | v0.22.0 | ⭐ AutoComplete: focus system integration, getTextInput(), first_frame guard |
| 2025-12-19 | v0.22.1 | ⭐ Text Metrics: ctx.measureText/measureTextToCursor para fuentes TTF de ancho variable |
| 2025-12-19 | v0.22.2 | Cursor blink rate: 500ms→300ms (más responsive durante edición) |
| 2025-12-30 | v0.23.0 | ⭐ FilledTriangle primitive: scanline rasterizer for 3D graphics |
| 2025-12-30 | v0.24.0 | ⭐ FilledCircle primitive: Midpoint Circle Algorithm (Bresenham) |
| 2025-12-30 | v0.25.0 | ⭐ IdleCompanion widget: mascota animada que aparece tras inactividad |
---
## Hitos Importantes
### v0.17.0 - TTF Funcional (2025-12-17)
Integración de zcatttf v1.0. El texto TTF ahora se renderiza perfectamente.
→ Detalle: `docs/research/` y teamdocs hitos
### v0.18.0-v0.19.0 - Paridad Visual DVUI (2025-12-17)
Sistema de rendering dual (simple/fancy), esquinas redondeadas, sombras, transiciones hover, focus ring AA.
→ Detalle: `docs/research/DVUI_AUDIT_2025-12-17.md`
### v0.20.0-v0.21.1 - AdvancedTable (2025-12-17)
Widget de tabla avanzada con schema, CRUD, sorting, lookup, multi-select, search, validation.
→ Detalle: `docs/ADVANCED_TABLE_MERGE_PLAN.md`
### v0.22.0-v0.22.2 - AutoComplete + Text Metrics (2025-12-19)
- **AutoComplete**: Integración completa con sistema de focus (registerFocusable, requestFocus, hasFocus)
- **Text Metrics**: Nuevo sistema ctx.measureText() para posicionamiento correcto del cursor con fuentes TTF
- **Cursor**: Velocidad de parpadeo aumentada (500ms→300ms) para mejor feedback durante edición
→ Archivos: `context.zig`, `text_input.zig`, `autocomplete.zig`
### v0.23.0-v0.24.0 - Primitivas Gráficas 2D (2025-12-30)
Nuevas primitivas para gráficos 2D y mascotas animadas:
- **FilledTriangle** (v0.23.0):
- Rasterización por scanlines con interpolación de bordes
- Soporte para backface culling y Z-sorting (3D)
- Clipping integrado con sistema de clip rects
- Uso: logos 3D, iconos, formas geométricas
- **FilledCircle** (v0.24.0):
- Algoritmo Midpoint Circle (Bresenham)
- Solo aritmética entera (eficiente, sin sqrt/trig)
- Relleno por scanlines horizontales simétricos
- Uso: mascotas, avatares, UI orgánica, gráficos
**Aplicación:** Mascota "Zcat" en zsimifactu (aparece tras 15s de inactividad)
→ Archivos: `core/command.zig`, `render/software.zig`
→ Doc: `zsimifactu/docs/PLAN_CIRCULOS_Y_ZCAT_2025-12-30.md`
### v0.25.0 - IdleCompanion Widget (2025-12-30)
Sistema de mascota animada reutilizable para cualquier aplicación:
- **Características:**
- Aparece tras periodo configurable de inactividad (default: 15s)
- Se asoma por bordes de paneles/rectángulos aleatorios
- Animación suave con clipping correcto (respeta bordes)
- Ojos que miran a los lados (izq/centro/der)
- "Salto de pánico" al detectar actividad del usuario
- Diseño de gato con orejas puntiagudas, pupilas verticales, mejillas y bigotes
- **Estados de animación:**
- `hidden`: Esperando idle
- `peeking`: Asomándose lentamente (4s)
- `watching`: Completamente visible, mirando alrededor (3s)
- `hiding`: Bajando normal (1s) o salto de pánico (0.2s)
- **Uso:**
```zig
const IdleCompanion = zcatgui.widgets.idle_companion;
var state: IdleCompanion.State = .{};
const panels = [_]IdleCompanion.Rect{ ... };
IdleCompanion.draw(ctx, &panels, &state, last_activity, color);
```
→ Archivo: `widgets/idle_companion.zig`