Commit graph

220 commits

Author SHA1 Message Date
4b7069b076 refactor(style): Dividir style.zig (1437 LOC) en módulos
style.zig monolítico → módulos especializados:
- color.zig (~350 LOC): Color, Hsl, conversiones RGB/HSL
- theme.zig (~330 LOC): Theme (5 temas), ThemeManager
- panel_colors.zig (~300 LOC): Z-Design panel color derivation
- style.zig (~140 LOC): Re-exports + RenderMode + Style struct

Total: ~1120 LOC (vs 1437 original, -22% por eliminación de duplicados)
Mantenibilidad mejorada: cada módulo tiene responsabilidad clara.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 18:23:47 +01:00
31362b6d48 style: Z-Design V6 - Colores más vivos (30%/20%)
Cambios en deriveDarkPalette y derivePanelFrameColors:
- focus_blend: 80 → 70 (30% color visible, antes 20%)
- unfocus_blend: 88 → 80 (20% color visible, antes 12%)

Objetivo: Mejor identificación visual de tipos de documento/cliente
sin perder la estética oscura profesional.

Tests actualizados para reflejar nuevos valores.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 13:28:44 +01:00
0125e2ca3e feat(idle_companion): Aparición aleatoria 45s-3min
- Tiempo de aparición ahora es aleatorio entre 45s y 3 minutos
- Cada aparición genera nuevo umbral para la siguiente
- Mantiene el efecto sorpresa

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 21:02:16 +01:00
092671adda chore: Eliminar debug print en drawPanelFrame
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 20:51:16 +01:00
89c7508426 fix(bevel): Bisel inset +1px para no solapar borde exterior
- drawBeveledRect: bordes ahora en x+1,y+1 (interior del rect)
- drawBeveledRectPressed: mismo fix para estado presionado
- inner_w/inner_h calculados como w-2/h-2 para correcta insetación
- Fix identificado en verificación MASTER_RESCATE punto C

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:48:54 +01:00
326470ef92 docs: Z-Design V5 Pixel Perfect (v0.26.0)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:22:50 +01:00
0f16a77ae4 fix(panels): Semáforo reubicado - texto + cuadrado a la derecha
- Título: x+28 para dejar espacio al semáforo (antes x+10)
- Semáforo: "Viendo ■" alineado a la derecha (antes ■ izquierda, texto derecha)
- Botones: visual_adjust +2px para compensar baseline TTF
- contrastTextColor como fallback para títulos sin base_color

Layout final: "[N] Título                    Estado ■"

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:17:37 +01:00
d657a25ba7 fix(visual): Títulos legibles + botones centrados
Fix legibilidad títulos:
- title_color: 85% soft_white + 15% tinte del base_color
- Antes: base.lightenHsl(90) → azul claro sobre azul oscuro (ilegible)
- Ahora: blanco con tinte sutil → máximo contraste + identidad visual

Fix centrado vertical botones:
- Añadido char_height al Context (default 14px para TTF)
- button.zig: usa char_height en vez de char_width
- Offset visual -1px para compensar efecto 3D del bisel

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:15:13 +01:00
f7e1e346be feat(context): Títulos integrados con color adaptativo
Z-Design V5 - Títulos Adaptativos:
- derivePanelFrameColors: title_color según luminosidad del fondo
  - Fondo oscuro (L < 0.5) → base.lightenHsl(90) (blanco teñido)
  - Fondo claro → base.darkenHsl(90) (negro teñido)
- drawPanelFrame: siempre usa title_color (no border_unfocus)
- Márgenes título mejorados: x+10, y+5

Resultado: máximo contraste y legibilidad en todos los paneles.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 01:54:58 +01:00
203a1e6ee5 fix(style): Z-Design V5 final - Focus 20% / Unfocus 12%
Ajuste consensuado:
- deriveDarkPalette: 80% black (20% color) focus, 88% black (12% color) unfocus
- derivePanelFrameColors: mismos valores
- Elimina compensación perceptual completamente

Unfocus 12% es más visible que el anterior 4%.
2025-12-31 01:29:06 +01:00
f41e502f9c fix(style): Z-Design V5 - Blend fijo sin compensación perceptual
Simplificación consensuada:
- Eliminar compensación perceptual (causaba más problemas)
- Blend fijo para TODOS los colores:
  - Focus: 18% base / 82% negro
  - Unfocus: 6% base / 94% negro

La fluidez viene de pasar bg_transition.current a widgets,
no de compensar matemáticamente.
2025-12-31 00:43:24 +01:00
23204bdd0a fix(style): Z-Design V4 - El rojo es el estándar, boost para azul
Corrección de rumbo consensuada:
- Colores brillantes (L > 0.2): 22% intensidad (estándar del rojo)
- Colores oscuros (L <= 0.2): 35% intensidad (boost para azul/violeta)

El objetivo es que todos los paneles tengan la vibrancia del rojo.
El azul debe 'saltar' del negro tanto como lo hace el rojo.
2025-12-31 00:31:01 +01:00
797cca736c feat(context): Smart Panel V2 - base_color derivación genérica + título
- PanelFrameConfig: añadir base_color, title, title_color
- drawPanelFrame: modo híbrido (explícito vs Z-Design)
- derivePanelFrameColors: fórmula genérica luminosidad (L inversamente proporcional)
- Documentar decisión de omitir clipping (performance + control)

Consensuado: Claude + Gemini + R.Eugenio (2025-12-31)
2025-12-31 00:19:18 +01:00
5ba0cc9f25 docs(colors): Document perceptual correction algorithm in detail
Added extensive documentation explaining:
- The problem (blue goes to black, red stays red when darkened)
- Technical cause (ITU-R BT.709 luminance formula)
- Solution (threshold 0.15, correction factor)
- How to disable if needed

Status: PENDING CONSENSUS - needs team input on colors.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 21:35:08 +01:00
0a2f02a0a4 fix(colors): Correct perceptual correction threshold
Changed threshold from 0.45 to 0.15 so that:
- Blue (~0.07 luminance) gets boost to avoid "goes to black" effect
- Red (~0.21 luminance) is NOT affected (already darkens nicely)

This fixes the issue where red panels became too saturated.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 21:29:01 +01:00
b63cf44d88 fix(colors): Disable perceptual correction (wrong logic)
The current implementation boosts red colors when it should
compensate blue colors instead. Disabled until the algorithm
is revised.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 21:19:53 +01:00
f71c9e6186 feat(context): Add drawPanelFrame helper for DRY panel rendering
- Add PanelFrameConfig struct with has_focus, focus_bg, unfocus_bg, border_color options
- Add drawPanelFrame() method that encapsulates common panel rendering pattern:
  1. Update ColorTransition and request animation frame if needed
  2. Draw shadow when focused
  3. Draw beveled background
  4. Draw border outline
- Export ColorTransition from context module
- Reduces ~15 lines of repeated code per panel to single function call

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 20:33:28 +01:00
49cd2e25b3 feat(tabs): Add 3D bevel effect (Z-Design V3)
- Add bevel: bool option to TabsConfig (default false)
- Active tabs: raised effect (light top/left, dark bottom/right)
- Inactive tabs: subtle inset for depth contrast
- Respects tab_bg color for bevel calculations

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 20:24:10 +01:00
16fc528415 feat(colors): Add perceptual luminance correction (Z-Design V3)
E1 task from PLAN_REFINAMIENTO_UI_2025-12-30.md:
- Add Color.perceptualLuminance() using ITU-R BT.709 weights
- Add global perceptual_correction_enabled flag (default: true)
- deriveDarkPalette/deriveLightPalette now boost low-luminance colors
- Colors like red/magenta now have comparable contrast to blue
- Correction capped at 0.7 to avoid excessive boost

Algorithm: if base_lum < 0.45, reduce blend % by ratio (more color visible)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 20:15:48 +01:00
ded8946702 feat(widgets): Add focus_border_color to text_input and select
Z-Design V2: Allow panels to specify custom focus ring color.
- TextInputConfig.focus_border_color: overrides theme.primary
- SelectConfig.focus_border_color: same pattern
- Uses Command.focusRingColor() instead of focusRing()

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 20:09:08 +01:00
dd249d2b2d fix(buttons): Completar efecto bisel 3D con 4 lados
- Añadir líneas verticales (izquierda + derecha) al bisel
- Antes: solo 2 líneas horizontales (arriba + abajo)
- Ahora: 4 líneas formando marco 3D completo

Z-Design V2: Bisel con las 4 esquinas completas.
Normal: claro arriba/izquierda, oscuro abajo/derecha.
Pressed: invierte colores para efecto "hundido".

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 20:01:10 +01:00
8f577e02b0 fix(buttons): Centrar texto V+H usando métricas del contexto
- button.zig: Usar ctx.measureText() y ctx.char_width para centrado
- label.zig: Mismo fix para centrado de labels
- animation.zig: Actualizar test ColorTransition para duration 500ms

Z-Design V2: El centrado ahora funciona correctamente con TTF fonts.
Antes usaba 8px hardcodeado, ahora usa métricas dinámicas del contexto.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 19:58:45 +01:00
9c29faaa81 docs: Documentar Liquid UI V2 en CLAUDE.md
- Añadido hito Liquid UI V2: transiciones 500ms, contraste mejorado
- requestAnimationFrame() API documentada
- Archivos clave: animation.zig, style.zig, context.zig

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 19:31:46 +01:00
ed2701fbd8 feat(animation): Liquid UI V2 - Mayor fluidez y contraste
- ColorTransition: 200ms → 500ms (transiciones más perceptibles)
- deriveDarkPalette: 4%/20% base color (mayor contraste focus/unfocus)
- deriveLightPalette: 1%/6% base color (proporcional)
- Context: añadir requestAnimationFrame/needsAnimationFrame
- Tests actualizados para nuevos umbrales

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 19:24:36 +01:00
0e913cda55 style(chips): Reducir radio chips para consistencia con botones
Z-Design V2: Chips de filtro con corner_radius: 4 (igual que botones)
en lugar de 11 (pill-like).

Esto hace que chips y botones tengan el mismo lenguaje visual.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 18:25:47 +01:00
6eae44dcfd style(scrollbar): Aumentar ancho scrollbars (8/12→14px)
Z-Design V2: Scrollbars más anchos para mejor usabilidad.
- list.zig: 8→14px
- grid.zig: 8→14px
- advanced_table/drawing.zig: 12→14px
- virtual_advanced_table/drawing.zig: 12→14px
- virtual_scroll.zig: 12→14px (default config)
- table/render.zig: 12→14px

El bisel interno Laravel ya estaba implementado en drawBeveledRect.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 18:24:46 +01:00
ce93b1fe95 style(buttons): Reducir altura botones detail panels (28→22px)
Z-Design V2: Botones más compactos para look más elegante.
- ActionButtonsOpts.button_height: 28 → 22
- NavButtonsOpts.button_height: 28 → 22

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 18:23:01 +01:00
9772d33b06 fix(AdvancedTable): Pintar fondo área contenido (Z-Design V2)
Añade rectángulo de fondo con row_normal color ANTES de dibujar
las filas. Esto asegura que:
- Tablas vacías muestren color de fondo correcto (no negro)
- Áreas debajo de las últimas filas no queden sin pintar

VirtualAdvancedTable ya tenía este comportamiento.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 18:20:23 +01:00
b67de1ce01 style: Z-Design V2 - Atmósfera en vez de fogonazo
Refinamiento Visual Premium:
- Dark mode fondo_sin_focus: negro puro → 7% base color
- Dark mode fondo_con_focus: mantiene 15% base color
- Light mode sincronizado: 1%/3% base color

Efecto: Los paneles siempre tienen su "identidad" de color,
incluso sin focus. El cambio de focus es ahora una transición
suave de "iluminación" en vez de un fogonazo negro→color.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 18:12:28 +01:00
b5073dcbe3 feat(button): Micro-interacciones al pulsar botón
Acabado Espectacular mejora #5:
- Bisel invertido cuando pressed (oscuro arriba = "hundido")
- Texto desplazado +1px abajo/derecha cuando pressed
- Aplicado a buttonRect y buttonStatefulRect
- Botones se sienten "físicos" al pulsarlos

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:38:02 +01:00
f0f9120da0 feat(animation): ColorTransition para transiciones suaves de color
Transiciones Suaves (Acabado Espectacular mejora #4):
- Nuevo struct ColorTransition en animation.zig
- Interpola colores en ~200ms usando lerp
- Se inicializa automáticamente en primer uso
- Exportado en zcatgui.zig junto con HoverTransition

Uso: state.bg_transition.update(target_color, delta_ms)
     ctx.drawRect(..., state.bg_transition.current)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:34:43 +01:00
c657583e06 style(ui): Padding +20% en tablas, botones, inputs
El Lujo del Espacio (Acabado Espectacular mejora #3):
- table_core/rendering.zig: padding celdas 4px → 5px
- button.zig: padding botones 8px → 10px
- text_input.zig: padding inputs 4px → 5px

UI más "respirada" y profesional estilo Laravel.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:31:16 +01:00
6154cb1080 feat(context): Añadir drawBeveledRect/drawBeveledRectPressed
Helpers para dibujar rectángulos con efecto 3D:
- drawBeveledRect: luz desde arriba-izquierda (normal)
- drawBeveledRectPressed: bisel invertido (presionado)

Usa lightenHsl(10) y darkenHsl(15) para bordes.

Parte del plan 'Acabado Espectacular'.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:23:22 +01:00
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
d8f04f85bc feat: FilledCircle primitive (v0.24.0)
- Add FilledCircleCommand in command.zig
- Implement drawFilledCircle using Midpoint Circle Algorithm (Bresenham)
- Integer-only arithmetic (efficient, no sqrt/trig)
- Scanline filling with horizontal symmetry
- Add commandBounds for dirty region optimization
- Update CHANGELOG with v0.23.0 (FilledTriangle) and v0.24.0 (FilledCircle)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 13:29:57 +01:00
de56496803 feat: Añadir filledTriangle (rasterización scanline)
Nueva primitiva de dibujo para gráficos 3D:
- FilledTriangleCommand en command.zig
- Algoritmo scanline en software.zig
- Ordena vértices por Y, interpola bordes
- Soporta clipping correctamente

Base para logos 3D sólidos y widgets avanzados.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 00:51:46 +01:00
ae600f4341 feat: Modo minimal para tabs (estilo Laravel)
- Añadir config.minimal: bool para activar estilo sin fondos
- Añadir config.indicator_height para altura personalizable del underline
- En modo minimal: no dibujar fondos de tabs
- Texto inactivo usa text_secondary, activo usa primary
- Hover en minimal ilumina el texto
- Mantener retrocompatibilidad (minimal=false por defecto)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 00:13:51 +01:00
8b15d3f80f feat: Bisel 3D sutil en botones
- Añadir línea highlight (lighten 15) en borde superior interno
- Añadir línea shadow (darken 15) en borde inferior interno
- Aplicar a buttonRect y buttonStatefulRect
- Deshabilitar bisel en botones disabled
- Solo aplicar si botón tiene al menos 4px de alto/ancho
- Actualizar test para reflejar 2 comandos extra

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 00:11:25 +01:00
d2f99419de feat(text_input): Z-Design soporte para colores de panel
Añadidos campos opcionales a TextInputConfig:
- bg_color: color de fondo (override del theme)
- placeholder_color: color del placeholder

Los paneles ahora pueden pasar sus colores derivados Z-Design
a los widgets hijos para coherencia visual.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 22:39:47 +01:00
8f4336f1f6 feat(widgets): Z-Design usar theme dinámico en todos los widgets
Cambio de Style.Theme.dark (hardcoded) a Style.currentTheme().*
en 5 archivos / 7 ocurrencias:

- text_input.zig (línea 282)
- button.zig (líneas 75, 163)
- list.zig (líneas 124, 131)
- checkbox.zig (línea 61)
- select.zig (línea 102)

Ahora todos los widgets usan el ThemeManager global, permitiendo
cambio de tema en runtime.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 21:30:11 +01:00
9559b14a33 feat(style): Z-Design blend 85/15 para fondos visibles
Cambio en deriveDarkPalette(): 85% negro + 15% color base
(antes era 95/5, imperceptible)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 18:33:45 +01:00
b5a4205c29 feat(style): Mejorar derivePanelPalette con HSL
- Header usa darkenHsl/lightenHsl (preserva tono mejor que RGB)
- Selección sin foco usa desaturate + lightenHsl (más elegante)
- Nueva función contrastTextColor() para texto automático b/n
- Test adicional para contrastTextColor

Z-Design ahora produce paletas más armónicas desde color base.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:36:20 +01:00
c330492022 feat(style): Motor HSL para derivación de colores
Añadido espacio de color HSL para transformaciones perceptualmente uniformes:

- Struct Hsl con campos h (0-360), s (0-1), l (0-1)
- Funciones rgbToHsl() y hslToRgb() con algoritmo estándar
- Métodos Hsl: lighten, darken, saturate, desaturate, rotate
- Métodos Color: toHsl, lightenHsl, darkenHsl, saturate, desaturate
- Color.rotateHue, Color.complementary para teoría del color
- 15 tests unitarios para validar conversiones

Esto permite derivar paletas armónicas desde un color base (Z-Design).

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:33:57 +01:00
b2a4081493 feat: Paridad Excel-style AdvancedTable ↔ VirtualAdvancedTable
Propuesta Gemini: Unificación funcional entre tablas.

1. Modo inserción centralizado en NavigationState (table_core)
   - is_insertion_mode, last_inserted_id
   - enterInsertionMode(), exitInsertionMode(), isInInsertionMode()

2. Auto-edit en Ctrl+N (AdvancedTable)
   - Tras insertar fila, inicia edición inmediatamente en col 0

3. Auto-insert en Tab (Modo Pro)
   - En modo inserción, Tab al final de fila inserta nueva fila
   - Permite meter 50+ líneas sin soltar teclado

4. Fix ghost row clonada
   - Comparar row_id AND row_index en rendering
   - Evita que fila insertada y ghost row compartan buffer

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:55:30 +01:00
bb2d6a7be1 fix: Cell editor bugs - buffer corrupción + desincronización
Bug 1: text_input bytes corruptos al editar celda con texto pre-seleccionado
- Causa: slice getTextInput() se corrompía tras deleteSelection
- Fix: Copiar a buffer local antes de modificar edit_buffer

Bug 2: Editor permanecía visible al hacer clic en otra fila
- Causa: Falta commit implícito al abandonar fila
- Fix: handleMouseClick detecta clic en fila diferente → commitEdit()

Diagnóstico: Gemini | Implementación: Claude

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:31:49 +01:00
ae1cfba33b chore: Migración jj → git puro
- CLAUDE.md: VCS jj → git, comandos actualizados
- Estrategia: commits frecuentes + aliases git

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:27:05 +01:00
8a39ebe6f9 docs: Añadir sección LSP/zls a CLAUDE.md 2025-12-29 12:32:53 +01:00
ea388facb2 docs: Documentar refactorización modular (autocomplete, icon) 2025-12-29 11:52:27 +01:00
1ae07812bd refactor(icon): Modularizar en carpeta (805→515 LOC hub, -36%) 2025-12-29 11:41:40 +01:00
50a6d3ca60 chore: Eliminar archivos residuales textarea.zig y progress.zig
Estos archivos quedaron fuera de sus carpetas modulares.
Ya se importan desde textarea/textarea.zig y progress/progress.zig.
2025-12-29 11:33:30 +01:00