- 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
9.3 KiB
🎉 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/ysrc/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:
- Al abrir la app, si no hay ruta guardada, aparece el selector automáticamente
- Click en "📁 Seleccionar Directorio"
- Navega a la carpeta raíz de tu proyecto Amayo
- Click en "✅ Usar esta Ruta"
- ¡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:
-
try-catch: Bloque try-catch completotry { // código } catch (error) { console.error(error); } -
async-function: Función asíncronaasync function name(params) { // código } -
discord-embed: Estructura completa de embedembeds: [{ 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:
- Escribe el nombre del snippet (ej:
try-catch) - Aparece en el autocompletado con icono de snippet
- Presiona Enter o Tab
- El código se inserta con placeholders
- 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
src/components/ProjectSelector.vue(215 líneas)- Modal de selección de directorio
- Validación de proyecto
- Persistencia en localStorage
Archivos Modificados
-
src-tauri/src/lib.rs- Nuevo comando:
validate_project_path() - Registro del plugin dialog
- Nuevo comando:
-
src-tauri/Cargo.toml- Dependencia:
tauri-plugin-dialog = "2"
- Dependencia:
-
src-tauri/capabilities/default.json- Permiso:
dialog:default
- Permiso:
-
src/App.vue- Integración de ProjectSelector
- Lógica de validación de ruta
- Función
changeProjectDirectory()
-
src/components/Sidebar.vue- Muestra ruta del proyecto
- Botón para cambiar directorio
- Función
truncatePath()
-
src/components/CommandCreator.vue- Preview en tiempo real con
computed - TypeScript strict mode
- Snippets nativos registrados
- Estilos para preview
- Preview en tiempo real con
-
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
- La app se abrirá con el selector
- Click en "📁 Seleccionar Directorio"
- Navega a tu proyecto Amayo
- Verifica que aparezca ✅ si es válido
- Click en "Usar esta Ruta"
2. Preview en Tiempo Real
- Click en "➕ Nuevo Comando"
- Completa el nombre:
test - Mira el preview actualizarse automáticamente
- Cambia la descripción
- El preview se actualiza al instante
- Agrega aliases o cooldown
- El código se regenera con los cambios
3. Snippets y Validación
- Abre el creador de comandos
- En el editor Monaco, escribe
try - Aparece sugerencia
try-catch - Presiona Enter
- El snippet se inserta con placeholders
- Escribe código con error de tipos
- Aparece línea roja y mensaje de error
🐛 Problemas Resueltos
-
✅ Error "El directorio de comandos no existe"
- Ahora se puede seleccionar el directorio correcto
- Funciona en cualquier SO
-
✅ No se veía el código antes de crear
- Preview en tiempo real implementado
- Se actualiza con cada cambio
-
✅ Faltaban snippets de TypeScript
- 3 snippets nativos agregados
- Más fácil escribir código común
-
✅ 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! 🚀