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
This commit is contained in:
355
README/NUEVAS_MEJORAS.md
Normal file
355
README/NUEVAS_MEJORAS.md
Normal file
@@ -0,0 +1,355 @@
|
||||
# 🎉 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:**
|
||||
|
||||
```typescript
|
||||
// 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
|
||||
|
||||
```typescript
|
||||
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
|
||||
```typescript
|
||||
try {
|
||||
// código
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
```
|
||||
|
||||
2. **`async-function`**: Función asíncrona
|
||||
```typescript
|
||||
async function name(params) {
|
||||
// código
|
||||
}
|
||||
```
|
||||
|
||||
3. **`discord-embed`**: Estructura completa de embed
|
||||
```typescript
|
||||
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
|
||||
|
||||
```json
|
||||
{
|
||||
"@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
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
```javascript
|
||||
localStorage.getItem('amayo-project-path')
|
||||
```
|
||||
|
||||
Para limpiar la ruta guardada (si necesitas):
|
||||
```javascript
|
||||
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! 🚀**
|
||||
Reference in New Issue
Block a user