specleap-framework 2.1.13 → 2.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +13 -6
- package/SETUP.md +11 -5
- package/package.json +1 -1
- package/setup.sh +74 -25
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.1.14] - 2026-05-01
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **`setup.sh` ahora pregunta SIEMPRE el nombre de la carpeta como Paso 0**, antes de la selección de idioma y antes de pedir cualquier token. Si el usuario escribe un nombre distinto al actual, el script renombra la carpeta in-place (`mv`) y sigue trabajando desde el nuevo path. Si pulsa Enter, se mantiene el nombre que ya tiene.
|
|
15
|
+
- El warning condicional introducido en v2.1.13 (que solo aparecía cuando la carpeta se llamaba exactamente `specleap-framework`) se elimina: el nuevo prompt activo lo reemplaza por completo, sin importar cómo se llame la carpeta de partida.
|
|
16
|
+
|
|
17
|
+
#### Por qué
|
|
18
|
+
|
|
19
|
+
Reportado por Styng tras testear v2.1.13: él esperaba un prompt activo, no un warning condicional. Con `git clone <url> mi-proyecto && cd mi-proyecto && bash setup.sh`, la v2.1.13 no preguntaba nada porque la carpeta no se llamaba `specleap-framework` (el filtro original era demasiado estrecho). Ahora el flujo es uniforme: el usuario siempre tiene la oportunidad de elegir el nombre, sin tener que recordar la sintaxis del segundo argumento de `git clone`.
|
|
20
|
+
|
|
21
|
+
#### Detalles del flujo
|
|
22
|
+
|
|
23
|
+
- Validación del nombre: letras, números, `-`, `_` y `.`, no puede empezar con `.`, máximo 100 caracteres. El prompt re-pregunta hasta que sea válido.
|
|
24
|
+
- Si el nombre escrito coincide con el actual, no hace `mv` (no-op), simplemente continúa.
|
|
25
|
+
- Si el nuevo path ya existe, se mantiene el nombre actual y se imprime un aviso (no aborta el setup).
|
|
26
|
+
- Si `SPECLEAP_INSTALL_PATH` ya está set (caso `npx` que pasa por `bin/specleap`), el bloque se salta entero — `bin/specleap` ya pidió el nombre antes de copiar archivos.
|
|
27
|
+
- El proceso bash sobrevive al `mv` del directorio activo porque mantiene el inode, no el path; tras el rename hace `cd` al nuevo path antes de continuar.
|
|
28
|
+
|
|
29
|
+
#### Tests cubiertos (4 escenarios, todos pasaron)
|
|
30
|
+
|
|
31
|
+
1. Enter en una carpeta llamada `specleap-framework` → mantiene nombre, no renombra.
|
|
32
|
+
2. Carpeta `mi-proyecto` + nombre nuevo `tienda-online` → renombra, vieja desaparece, nueva existe.
|
|
33
|
+
3. Carpeta `inicio` + nombre inválido `mi proyecto con espacios` + nombre válido `mi-proyecto-valido` → re-pregunta y luego renombra.
|
|
34
|
+
4. Carpeta `specleap-framework` + `SPECLEAP_INSTALL_PATH` set → no pregunta, va directo a Paso 1/6.
|
|
35
|
+
|
|
36
|
+
### Updated
|
|
37
|
+
|
|
38
|
+
- `README.md` y `SETUP.md`: la sección "Opción B: vía git clone" ahora explica que `setup.sh` pregunta el nombre como Paso 0 y que pasarlo a `git clone` es solo un atajo, no una obligación.
|
|
39
|
+
|
|
10
40
|
## [2.1.13] - 2026-05-01
|
|
11
41
|
|
|
12
42
|
### Fixed
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
SpecLeap convierte cualquier IDE con asistente de IA en un entorno de desarrollo spec-first. Combina un contrato de proyecto inmutable, agentes conversacionales especializados, 34 Agent Skills profesionales y un pipeline de validación en tres capas para entregar código consistente y probado sin improvisación.
|
|
22
22
|
|
|
23
|
-
**Versión actual:** 2.1.
|
|
23
|
+
**Versión actual:** 2.1.14 · **Licencia:** MIT · **Autor:** Styng Arias ([ConceptualCreative](https://conceptualcreative.com))
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -68,17 +68,24 @@ Nombre: mi-app-tienda
|
|
|
68
68
|
→ Resultado: /Users/tu-usuario/Downloads/mi-app-tienda/
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
### Opción B: Vía git clone (control
|
|
71
|
+
### Opción B: Vía git clone (control desde la terminal)
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
git clone https://github.com/ConceptualCreative/specleap-framework.git
|
|
75
|
-
cd
|
|
74
|
+
git clone https://github.com/ConceptualCreative/specleap-framework.git
|
|
75
|
+
cd specleap-framework
|
|
76
76
|
bash setup.sh
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
Cuando arranque `setup.sh` lo primero que te preguntará es **cómo quieres que se llame la carpeta** del proyecto. Si pulsas Enter mantiene el nombre que tiene (`specleap-framework` por default de git clone). Si escribes otro nombre, **el setup renombra la carpeta automáticamente** y continúa desde ahí. Después sigue con idioma, tokens, skills y CodeRabbit.
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
Atajo: si ya sabes el nombre, lo pasas a `git clone` para evitar el rename:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
git clone https://github.com/ConceptualCreative/specleap-framework.git mi-proyecto
|
|
85
|
+
cd mi-proyecto
|
|
86
|
+
bash setup.sh
|
|
87
|
+
# El setup pregunta el nombre igualmente; pulsa Enter para mantener "mi-proyecto".
|
|
88
|
+
```
|
|
82
89
|
|
|
83
90
|
### Diferencias rápidas
|
|
84
91
|
|
package/SETUP.md
CHANGED
|
@@ -46,15 +46,21 @@ Nombre: mi-app-tienda
|
|
|
46
46
|
### Opción B: vía git clone
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
cd mi-proyecto
|
|
49
|
+
git clone https://github.com/ConceptualCreative/specleap-framework.git
|
|
50
|
+
cd specleap-framework
|
|
52
51
|
bash setup.sh
|
|
53
52
|
```
|
|
54
53
|
|
|
55
|
-
|
|
54
|
+
**El primer paso del setup pregunta cómo quieres llamar la carpeta** (Paso 0). Pulsas Enter para mantenerla con el nombre que tiene, o escribes otro nombre y el setup renombra la carpeta automáticamente antes de seguir con idioma/tokens.
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
Atajo: si ya sabes el nombre, pásaselo a `git clone` y luego pulsas Enter en el Paso 0 para mantenerlo:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
git clone https://github.com/ConceptualCreative/specleap-framework.git mi-proyecto
|
|
60
|
+
cd mi-proyecto
|
|
61
|
+
bash setup.sh
|
|
62
|
+
# Paso 0: pulsa Enter para mantener "mi-proyecto"
|
|
63
|
+
```
|
|
58
64
|
|
|
59
65
|
---
|
|
60
66
|
|
package/package.json
CHANGED
package/setup.sh
CHANGED
|
@@ -49,33 +49,82 @@ echo -e "${CYAN}${LINE}${NC}"
|
|
|
49
49
|
echo ""
|
|
50
50
|
|
|
51
51
|
# ============================================
|
|
52
|
-
#
|
|
52
|
+
# PASO 0: Nombre de la carpeta del proyecto
|
|
53
53
|
# ============================================
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
54
|
+
# Solo se pregunta cuando setup.sh se ejecuta DIRECTAMENTE (`bash setup.sh`
|
|
55
|
+
# tras `git clone …`). Si vienes desde `bin/specleap` (vía `npx`) ese script
|
|
56
|
+
# ya preguntó nombre y ya creó la carpeta — entonces SPECLEAP_INSTALL_PATH
|
|
57
|
+
# está set y saltamos este bloque para no preguntar dos veces.
|
|
58
|
+
#
|
|
59
|
+
# Si el usuario escribe un nombre distinto al actual, el script RENOMBRA
|
|
60
|
+
# la carpeta in-place: `mv` del directorio actual al nuevo y `cd` al nuevo.
|
|
61
|
+
# El proceso bash sigue vivo durante el rename porque se aferra al inode,
|
|
62
|
+
# no al path.
|
|
63
|
+
|
|
64
|
+
CURRENT_PATH="$(pwd)"
|
|
65
|
+
CURRENT_FOLDER_NAME="$(basename "$CURRENT_PATH")"
|
|
66
|
+
PARENT_PATH="$(dirname "$CURRENT_PATH")"
|
|
67
|
+
|
|
68
|
+
is_valid_folder_name() {
|
|
69
|
+
local name="$1"
|
|
70
|
+
[ -z "$name" ] && return 1
|
|
71
|
+
[ ${#name} -gt 100 ] && return 1
|
|
72
|
+
[[ "$name" == .* ]] && return 1
|
|
73
|
+
[[ "$name" =~ ^[A-Za-z0-9_][A-Za-z0-9_.\-]*$ ]] && return 0
|
|
74
|
+
return 1
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if [ -z "${SPECLEAP_INSTALL_PATH:-}" ]; then
|
|
78
|
+
echo "📝 ¿Cómo quieres que se llame la carpeta del proyecto?"
|
|
79
|
+
echo " What name do you want for the project folder?"
|
|
80
|
+
echo ""
|
|
81
|
+
echo " Carpeta actual / Current: $CURRENT_FOLDER_NAME"
|
|
82
|
+
echo " Default si pulsas Enter / Default on Enter: specleap-framework"
|
|
83
|
+
echo " Permitido / Allowed: letras, números, '-', '_', '.'"
|
|
84
|
+
echo ""
|
|
85
|
+
|
|
86
|
+
while true; do
|
|
87
|
+
read -p "Nombre / Name: " RAW_NAME
|
|
88
|
+
# Si Enter vacío → default 'specleap-framework'
|
|
89
|
+
# Excepto si ya se llama así y el user pulsa Enter, mantenemos
|
|
90
|
+
if [ -z "$RAW_NAME" ]; then
|
|
91
|
+
NEW_NAME="specleap-framework"
|
|
92
|
+
else
|
|
93
|
+
NEW_NAME="$RAW_NAME"
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
if is_valid_folder_name "$NEW_NAME"; then
|
|
97
|
+
break
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
echo ""
|
|
101
|
+
echo "❌ Nombre inválido / Invalid name: \"$NEW_NAME\""
|
|
102
|
+
echo " Usa solo letras, números, '-', '_' y '.' (no empezar con '.')"
|
|
103
|
+
echo " Use only letters, numbers, '-', '_' and '.' (cannot start with '.')"
|
|
76
104
|
echo ""
|
|
77
|
-
|
|
78
|
-
|
|
105
|
+
done
|
|
106
|
+
|
|
107
|
+
# Si el nombre coincide con el actual, no renombramos
|
|
108
|
+
if [ "$NEW_NAME" = "$CURRENT_FOLDER_NAME" ]; then
|
|
109
|
+
echo ""
|
|
110
|
+
echo "✅ Carpeta: $CURRENT_FOLDER_NAME"
|
|
111
|
+
SPECLEAP_INSTALL_PATH="$CURRENT_PATH"
|
|
112
|
+
else
|
|
113
|
+
NEW_PATH="$PARENT_PATH/$NEW_NAME"
|
|
114
|
+
if [ -e "$NEW_PATH" ]; then
|
|
115
|
+
echo ""
|
|
116
|
+
echo "❌ Ya existe / Already exists: $NEW_PATH"
|
|
117
|
+
echo " Se mantiene el nombre actual / Keeping current name: $CURRENT_FOLDER_NAME"
|
|
118
|
+
SPECLEAP_INSTALL_PATH="$CURRENT_PATH"
|
|
119
|
+
else
|
|
120
|
+
mv "$CURRENT_PATH" "$NEW_PATH"
|
|
121
|
+
cd "$NEW_PATH"
|
|
122
|
+
CURRENT_PATH="$NEW_PATH"
|
|
123
|
+
CURRENT_FOLDER_NAME="$NEW_NAME"
|
|
124
|
+
SPECLEAP_INSTALL_PATH="$NEW_PATH"
|
|
125
|
+
echo ""
|
|
126
|
+
echo "✅ Carpeta renombrada / Folder renamed: $NEW_NAME"
|
|
127
|
+
fi
|
|
79
128
|
fi
|
|
80
129
|
echo ""
|
|
81
130
|
fi
|