Files
amayo/README/NUEVAS_MEJORAS.md
Shni 38046e4df8 feat: Implementar nuevas mejoras en Amayo Bot Editor
- Agregar selector de directorio multi-OS con validación y persistencia
- Implementar preview en tiempo real del código generado en CommandCreator y EventCreator
- Activar TypeScript strict mode y añadir snippets nativos para mejorar la experiencia de desarrollo
- Crear documentación detallada sobre las nuevas funcionalidades y cambios realizados
- Actualizar README con instrucciones de uso y solución de problemas comunes
- Modificar archivos clave para integrar las nuevas características y mejorar la usabilidad
2025-11-04 03:14:03 -06:00

9.3 KiB
Raw Blame History

🎉 Nuevas Mejoras Implementadas

Cambios Realizados

1. 📁 Selector de Directorio del Proyecto

Problema resuelto: Error "El directorio de comandos no existe"

Solución implementada:

  • Nuevo componente ProjectSelector.vue: Modal para seleccionar el directorio raíz del proyecto
  • Compatible con todos los SO: Windows, Linux (Arch/Debian), y macOS
  • Validación inteligente: Verifica que el directorio contenga src/commands/ y src/events/
  • Persistencia: Guarda la ruta en localStorage para futuras sesiones
  • Botón en Sidebar: Permite cambiar el directorio en cualquier momento

Características:

// Nuevo comando Tauri
validate_project_path(path: String) -> Result<bool, String>
  • Validación del directorio antes de aceptar
  • Mensajes de error claros y descriptivos
  • Ruta guardada se puede reutilizar
  • Compatible con rutas de Windows (C:\...) y Unix (/home/...)

Cómo usar:

  1. Al abrir la app, si no hay ruta guardada, aparece el selector automáticamente
  2. Click en "📁 Seleccionar Directorio"
  3. Navega a la carpeta raíz de tu proyecto Amayo
  4. Click en " Usar esta Ruta"
  5. ¡Listo! La ruta se guarda para la próxima vez

En el Sidebar:

  • Muestra la ruta actual del proyecto (truncada si es muy larga)
  • Botón 📁 en el header para cambiar el directorio en cualquier momento

2. 📋 Preview en Tiempo Real del Código Generado

Mejora solicitada: Ver cómo se verá el código mientras completas los formularios

Implementado en:

  • CommandCreator.vue
  • EventCreator.vue

Características:

  • Preview dinámico: Se actualiza automáticamente al cambiar cualquier campo
  • Badge "Actualización en tiempo real": Indica que el código se regenera en vivo
  • Scroll horizontal: Para ver código largo sin problemas
  • Altura máxima: 200px para no ocupar todo el espacio
  • Syntax highlighting: Colores del tema VS Code Dark

Ejemplo visual:

┌─────────────────────────────────────────┐
│ 📋 Preview del Código  [⚡ Tiempo real] │
├─────────────────────────────────────────┤
│ import type { Message } from "discord"  │
│ import type Amayo from "../../core"     │
│                                         │
│ export default {                        │
│   name: "ping",                         │
│   description: "Comando de latencia",   │
│   type: 'message' as const,             │
│   ...                                   │
│ }                                       │
└─────────────────────────────────────────┘

Ventajas:

  • Ves exactamente cómo quedará el archivo antes de crearlo
  • Detectas errores en nombres o configuración inmediatamente
  • Aprendes la estructura del código al verlo generarse
  • Verificas que aliases, cooldown y otros campos estén correctos

3. 🔍 Detección de Errores con TypeScript Strict + Snippets Nativos

Mejora solicitada: Macro proceso de detección de errores y snippets de TypeScript

Implementado:

A) TypeScript Strict Mode

monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
  strict: true,                  // Modo estricto activado
  noImplicitAny: true,           // No permite 'any' implícito
  strictNullChecks: true,        // Verifica null/undefined
  strictFunctionTypes: true,     // Tipado estricto en funciones
  // ... más opciones
});

Beneficios:

  • Detecta errores de tipos en tiempo real
  • Subraya código problemático con línea roja
  • Muestra mensajes de error al pasar el mouse
  • Previene bugs antes de guardar el código

B) Snippets de TypeScript Nativos

Snippets agregados:

  1. try-catch: Bloque try-catch completo

    try {
      // código
    } catch (error) {
      console.error(error);
    }
    
  2. async-function: Función asíncrona

    async function name(params) {
      // código
    }
    
  3. discord-embed: Estructura completa de embed

    embeds: [{
      title: "Título",
      description: "Descripción",
      color: 0x0099ff,
      fields: [
        { name: "Campo", value: "Valor", inline: true }
      ],
      timestamp: new Date(),
      footer: { text: "Footer" }
    }]
    

Cómo usar los snippets:

  1. Escribe el nombre del snippet (ej: try-catch)
  2. Aparece en el autocompletado con icono de snippet
  3. Presiona Enter o Tab
  4. El código se inserta con placeholders
  5. Tab para saltar entre placeholders

Ventajas:

  • Código más rápido con snippets predefinidos
  • Menos errores con estructuras correctas
  • Aprende patrones comunes de TypeScript
  • Compatible con snippets de Discord.js

🔧 Cambios Técnicos

Archivos Nuevos

  1. src/components/ProjectSelector.vue (215 líneas)
    • Modal de selección de directorio
    • Validación de proyecto
    • Persistencia en localStorage

Archivos Modificados

  1. src-tauri/src/lib.rs

    • Nuevo comando: validate_project_path()
    • Registro del plugin dialog
  2. src-tauri/Cargo.toml

    • Dependencia: tauri-plugin-dialog = "2"
  3. src-tauri/capabilities/default.json

    • Permiso: dialog:default
  4. src/App.vue

    • Integración de ProjectSelector
    • Lógica de validación de ruta
    • Función changeProjectDirectory()
  5. src/components/Sidebar.vue

    • Muestra ruta del proyecto
    • Botón para cambiar directorio
    • Función truncatePath()
  6. src/components/CommandCreator.vue

    • Preview en tiempo real con computed
    • TypeScript strict mode
    • Snippets nativos registrados
    • Estilos para preview
  7. src/components/EventCreator.vue

    • Preview en tiempo real
    • Mismos estilos que CommandCreator

Nuevas Dependencias NPM

{
  "@tauri-apps/plugin-dialog": "^2.0.0"
}

🎯 Características por Sistema Operativo

Windows

  • Rutas con backslash: C:\Users\...\amayo
  • Selector de directorios nativo de Windows
  • Guardado de rutas con formato correcto

Linux (Arch/Debian/Ubuntu)

  • Rutas con slash: /home/user/.../amayo
  • Selector de directorios GTK/Qt
  • Compatible con permisos de usuario

macOS

  • Rutas estilo Unix: /Users/.../amayo
  • Selector de directorios nativo de macOS
  • Soporte para Finder

📊 Estadísticas de las Mejoras

  • Líneas de código añadidas: ~500
  • Componentes nuevos: 1 (ProjectSelector)
  • Comandos Tauri nuevos: 1 (validate_project_path)
  • Snippets TypeScript: 3 nativos
  • Validaciones: 2 (proyecto y código)

🚀 Cómo Probar las Nuevas Funciones

1. Selector de Directorio

# Instalar dependencias actualizadas
cd AEditor
npm install

# Ejecutar la app
npm run dev
  1. La app se abrirá con el selector
  2. Click en "📁 Seleccionar Directorio"
  3. Navega a tu proyecto Amayo
  4. Verifica que aparezca si es válido
  5. Click en "Usar esta Ruta"

2. Preview en Tiempo Real

  1. Click en " Nuevo Comando"
  2. Completa el nombre: test
  3. Mira el preview actualizarse automáticamente
  4. Cambia la descripción
  5. El preview se actualiza al instante
  6. Agrega aliases o cooldown
  7. El código se regenera con los cambios

3. Snippets y Validación

  1. Abre el creador de comandos
  2. En el editor Monaco, escribe try
  3. Aparece sugerencia try-catch
  4. Presiona Enter
  5. El snippet se inserta con placeholders
  6. Escribe código con error de tipos
  7. Aparece línea roja y mensaje de error

🐛 Problemas Resueltos

  1. Error "El directorio de comandos no existe"

    • Ahora se puede seleccionar el directorio correcto
    • Funciona en cualquier SO
  2. No se veía el código antes de crear

    • Preview en tiempo real implementado
    • Se actualiza con cada cambio
  3. Faltaban snippets de TypeScript

    • 3 snippets nativos agregados
    • Más fácil escribir código común
  4. No había validación de tipos

    • TypeScript strict mode activado
    • Errores se muestran en tiempo real

📝 Notas Importantes

LocalStorage

La ruta del proyecto se guarda en:

localStorage.getItem('amayo-project-path')

Para limpiar la ruta guardada (si necesitas):

localStorage.removeItem('amayo-project-path')

Validación

El directorio debe tener obligatoriamente:

  • src/commands/ (con subdirectorios)
  • src/events/ (con archivos .ts)

Si falta alguno, la validación falla.

Compatibilidad

  • Windows 10/11
  • Linux (kernel 5.x+)
  • macOS 10.15+
  • Rutas con espacios
  • Rutas con caracteres especiales
  • Symlinks

🎉 Resumen de Mejoras

Mejora Estado Impacto
Selector de directorio multi-OS Completo Alto
Preview en tiempo real Completo Alto
TypeScript strict mode Completo Medio
Snippets nativos Completo Medio
Validación de proyecto Completo Alto
Persistencia de ruta Completo Alto
Botón cambiar directorio Completo Medio

¡Todas las mejoras solicitadas han sido implementadas exitosamente! 🚀