From f22b6ec47681d84272f99636f1e1cde4dae25cc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Thu, 17 Jul 2025 11:35:50 -0300 Subject: [PATCH 01/13] feat: add exercise guide and update ActionBar (#290) * Introduced a new guide for adding and editing exercises in Starklings. * Enhanced ActionBar with an "Add Exercise" button that opens the guide in a new tab. * Updated Workspace component to handle the new button functionality. --- add_exercises.md | 176 ++++++++++++++++++ .../components/pages/Workspace/ActionBar.tsx | 13 +- .../components/pages/Workspace/Workspace.tsx | 6 + 3 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 add_exercises.md diff --git a/add_exercises.md b/add_exercises.md new file mode 100644 index 000000000..33b05a5cf --- /dev/null +++ b/add_exercises.md @@ -0,0 +1,176 @@ +# Guía para Agregar o Editar Ejercicios de Starklings + +Esta guía te ayudará a agregar nuevos ejercicios o editar los existentes en el proyecto Starklings, una plataforma interactiva para aprender Cairo y Starknet. + +## 📁 Estructura del Proyecto + +El sistema de ejercicios de Starklings está organizado de la siguiente manera: + +``` +starklings/ +├── exercises/ # 📂 Directorio principal de ejercicios +│ ├── arrays/ # 📂 Ejercicios sobre arrays +│ ├── variables/ # 📂 Ejercicios sobre variables +│ ├── functions/ # 📂 Ejercicios sobre funciones +│ ├── starknet/ # 📂 Ejercicios específicos de Starknet +│ └── ... # 📂 Otras categorías +├── info.toml # ⚙️ Configuración de ejercicios y hints +``` + +## 🔧 Componentes de un Ejercicio + +Cada ejercicio en Starklings tiene **3 componentes principales**: + +### 1. 📄 Archivo del Ejercicio (`.cairo`) +- **Ubicación**: `exercises//.cairo` +- **Contiene**: Código Cairo con comentarios descriptivos y marcador `// I AM NOT DONE` + +### 2. 📝 Configuración en `info.toml` +- **Ubicación**: `info.toml` (raíz del proyecto) +- **Contiene**: Metadatos del ejercicio, modo de ejecución y hints + + +## ✏️ Editar un Ejercicio Existente + +### Editar la Descripción del Ejercicio + +Para modificar la descripción de un ejercicio (por ejemplo, `arrays1.cairo`): + +1. **Abre el archivo del ejercicio**: + ```bash + exercises/arrays/arrays1.cairo + ``` + +2. **Modifica los comentarios al inicio del archivo**: + ```cairo + // Tu nueva descripción del ejercicio aquí + // Explica qué debe hacer el estudiante + // Puedes usar múltiples líneas de comentarios + + // I AM NOT DONE ← Este marcador debe permanecer + + fn create_array() -> Array { + // ... código del ejercicio + } + ``` + +**⚠️ Importante**: +- Solo edita los comentarios al principio del archivo +- **NO elimines** la línea `// I AM NOT DONE` (es necesaria para el funcionamiento del sistema) +- Usa comentarios `//` para todas las descripciones + +### Editar el Hint del Ejercicio + +Para modificar el hint (pista) que se muestra a los estudiantes: + +1. **Abre el archivo de configuración**: + ```bash + info.toml + ``` + +2. **Busca la sección del ejercicio**: + ```toml + [[exercises]] + name = "arrays1" + path = "exercises/arrays/arrays1.cairo" + mode = "test" + hint = """ + Aquí va tu nuevo hint. + Puedes usar múltiples líneas. + Explica conceptos clave o da pistas sutiles. + """ + ``` + +## ➕ Agregar un Nuevo Ejercicio + +### Paso 1: Crear el Archivo del Ejercicio + +1. **Navega a la categoría apropiada** (o crea una nueva): + ```bash + cd exercises// + ``` + +2. **Crea el archivo `.cairo`**: + ```cairo + // Descripción clara y concisa del ejercicio + // Explica qué concepto enseña + // Da instrucciones específicas sobre qué hacer + + // I AM NOT DONE + + fn ejercicio_ejemplo() { + // Código inicial con huecos o errores + // que el estudiante debe completar + } + + // Tests o código de verificación + #[test] + fn test_ejercicio() { + // Tests que validen la solución + } + ``` + +### Paso 2: Configurar en `info.toml` + +1. **Abre `info.toml`** y encuentra la sección de tu categoría + +2. **Agrega la configuración del ejercicio**: + ```toml + [[exercises]] + name = "nuevo_ejercicio" # Nombre único del ejercicio + path = "exercises/categoria/nuevo_ejercicio.cairo" # Ruta al archivo + mode = "test" # "test", "run", o "build" + hint = """ + Hint útil para el estudiante. + Puede incluir: + - Enlaces a documentación: https://book.cairo-lang.org/... + - Conceptos clave a recordar + - Pistas sobre la solución sin dar la respuesta completa + """ + ``` + +3. **Replica la configuración en `app/api/info.toml`** + +### Paso 3: Crear Documentación (Opcional) + +Si es una nueva categoría, crea `exercises//README.md`: + +```markdown +# Nombre de la Categoría + +Explicación general del concepto que cubre esta categoría de ejercicios. + +## Información Adicional + +- [Documentación oficial](enlace) +- [Recursos útiles](enlace) +``` + +## 🔄 Modos de Ejercicio + +En `info.toml`, cada ejercicio tiene un campo `mode` que determina cómo se ejecuta: + +- **`"test"`**: Ejecuta los tests del ejercicio (`cargo test`) +- **`"run"`**: Ejecuta el programa principal (`cargo run`) + +## ✅ Buenas Prácticas + +### Para Descripciones de Ejercicios: +- 📝 Sé claro y conciso +- 🎯 Enfócate en un concepto por ejercicio +- 📚 Menciona conceptos previos si es necesario +- 🔍 Da suficiente contexto sin revelar la solución + +### Para Hints: +- 💡 Proporciona pistas, no soluciones completas +- 🔗 Incluye enlaces a documentación relevante +- 📖 Explica conceptos clave si es necesario +- 🎯 Sé específico sobre qué buscar + +### Para Código: +- 🏗️ Incluye código de esqueleto útil +- ✅ Agrega tests que validen la solución +- 🚫 Mantén el marcador `// I AM NOT DONE` +- 📦 Importa las dependencias necesarias + +¡Con esta guía ya puedes crear y editar ejercicios de Starklings de manera efectiva! 🚀 diff --git a/app/client/src/components/pages/Workspace/ActionBar.tsx b/app/client/src/components/pages/Workspace/ActionBar.tsx index 0eb213a9a..e1a09efac 100644 --- a/app/client/src/components/pages/Workspace/ActionBar.tsx +++ b/app/client/src/components/pages/Workspace/ActionBar.tsx @@ -1,4 +1,4 @@ -import { SkipNext, SkipPrevious } from "@mui/icons-material"; +import { SkipNext, SkipPrevious, Add } from "@mui/icons-material"; import { CircularProgress } from "@mui/material"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; @@ -17,6 +17,7 @@ interface IActionBarProps { onNextClick: () => void; onPrevClick: () => void; onRestartClick: () => void; + onAddExerciseClick: () => void; isTest: boolean; succeeded: boolean; hintVisible: boolean; @@ -31,6 +32,7 @@ export const ActionBar = ({ onPrevClick, onNextClick, onRestartClick, + onAddExerciseClick, isTest, succeeded, hintVisible, @@ -65,6 +67,15 @@ export const ActionBar = ({ */} + + + + + { setEditorValue(data?.code ?? ""); }; + const handleAddExerciseClick = () => { + // Abrir la guía de agregar ejercicios en una nueva pestaña + window.open("https://github.com/shramee/starklings/blob/main/add_exercises.md", "_blank"); + }; + return ( @@ -312,6 +317,7 @@ export const Workspace = () => { onNextClick={handleNextClick} onPrevClick={handlePrevClick} onRestartClick={handleRestartClick} + onAddExerciseClick={handleAddExerciseClick} isTest={isTest} succeeded={succeeded} hintVisible={!!hint} From 9390fd30ff0a521d17f77bb3982181f719d96a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Thu, 17 Jul 2025 12:14:55 -0300 Subject: [PATCH 02/13] feat: enhance exercise editing capabilities in Starklings * Added quick edit buttons for exercises and hints in the ActionBar, visible when connected to GitHub. * Implemented functionality to open the corresponding files directly in the user's GitHub fork for easy editing. * Updated the add_exercises.md guide to include new editing workflows and benefits of the quick edit system. * Improved Workspace component to support new edit actions and detect GitHub connection status. --- add_exercises.md | 61 ++++++++++++++++++- .../components/pages/Workspace/ActionBar.tsx | 30 ++++++++- .../components/pages/Workspace/Workspace.tsx | 45 ++++++++++++++ 3 files changed, 134 insertions(+), 2 deletions(-) diff --git a/add_exercises.md b/add_exercises.md index 33b05a5cf..d34d87181 100644 --- a/add_exercises.md +++ b/add_exercises.md @@ -32,10 +32,45 @@ Cada ejercicio en Starklings tiene **3 componentes principales**: ## ✏️ Editar un Ejercicio Existente +### 🚀 **Botones de Edición Rápida** + +Si estás conectado a GitHub en Starklings, verás estos botones en la barra de acciones: + +| Botón | Icono | Función | Destino | +|-------|-------|---------|---------| +| **Guía** | ➕ | Abre esta guía | `add_exercises.md` | +| **Ejercicio** | ✏️ | Edita código del ejercicio | `exercises/.../ejercicio.cairo` | +| **Hint** | 💡 | Edita hint del ejercicio | `info.toml` | + +**✨ Flujo de trabajo:** +1. Encuentras un error o mejora en un ejercicio +2. Haces clic en el botón correspondiente (✏️ para código o 💡 para hint) +3. Se abre automáticamente tu fork en GitHub +4. **Para hints**: GitHub abre directamente en la línea exacta del ejercicio +5. Editas directamente en el navegador +6. Guardas y creas un pull request + +**🎯 Navegación Inteligente:** +- El botón 💡 consulta tu fork de GitHub automáticamente +- Busca la línea exacta que contiene `name = "ejercicio"` +- Te lleva directamente a esa línea usando `#L{numero}` +- ¡No necesitas buscar manualmente - es completamente automático! + +--- + ### Editar la Descripción del Ejercicio Para modificar la descripción de un ejercicio (por ejemplo, `arrays1.cairo`): +#### 🎯 **Método Rápido (Recomendado)** +Si estás conectado a GitHub en Starklings: + +1. **Haz clic en el botón ✏️** en la barra de acciones del ejercicio +2. Se abrirá automáticamente el archivo del ejercicio en tu fork de GitHub +3. Edita los comentarios al inicio del archivo +4. Guarda y crea un pull request + +#### 📝 **Método Manual** 1. **Abre el archivo del ejercicio**: ```bash exercises/arrays/arrays1.cairo @@ -63,6 +98,16 @@ Para modificar la descripción de un ejercicio (por ejemplo, `arrays1.cairo`): Para modificar el hint (pista) que se muestra a los estudiantes: +#### 🎯 **Método Rápido (Recomendado)** +Si estás conectado a GitHub en Starklings: + +1. **Haz clic en el botón 💡** en la barra de acciones del ejercicio +2. Se abrirá automáticamente el archivo `info.toml` en tu fork de GitHub +3. **¡Te lleva directamente a la línea exacta del ejercicio!** (ej: línea 287 para `options3`) +4. Edita el hint en la sección correspondiente +5. Guarda y crea un pull request + +#### 📝 **Método Manual** 1. **Abre el archivo de configuración**: ```bash info.toml @@ -173,4 +218,18 @@ En `info.toml`, cada ejercicio tiene un campo `mode` que determina cómo se ejec - 🚫 Mantén el marcador `// I AM NOT DONE` - 📦 Importa las dependencias necesarias -¡Con esta guía ya puedes crear y editar ejercicios de Starklings de manera efectiva! 🚀 +## 🎯 **Resumen de Edición Rápida** + +### Para Usuarios Conectados a GitHub: +- **Ejercicio actual**: Usa ✏️ para editar el código +- **Hint actual**: Usa 💡 para editar el hint +- **Nueva guía**: Usa ➕ para acceder a esta documentación + +### Ventajas del Sistema: +- 🚀 **Edición directa**: Sin necesidad de clonar el repositorio +- 🔄 **Fork automático**: GitHub crea tu fork si no existe +- 📝 **Pull requests fáciles**: De edición a contribución en minutos +- 🎯 **Contextual**: Editas exactamente lo que estás viendo +- 🎯 **Navegación automática**: Va directamente a la línea exacta del ejercicio + +¡Con esta guía y los botones de edición rápida ya puedes crear y editar ejercicios de Starklings de manera efectiva! 🚀 diff --git a/app/client/src/components/pages/Workspace/ActionBar.tsx b/app/client/src/components/pages/Workspace/ActionBar.tsx index e1a09efac..d0baebf68 100644 --- a/app/client/src/components/pages/Workspace/ActionBar.tsx +++ b/app/client/src/components/pages/Workspace/ActionBar.tsx @@ -1,4 +1,4 @@ -import { SkipNext, SkipPrevious, Add } from "@mui/icons-material"; +import { SkipNext, SkipPrevious, Add, Edit, HelpOutline } from "@mui/icons-material"; import { CircularProgress } from "@mui/material"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; @@ -18,6 +18,9 @@ interface IActionBarProps { onPrevClick: () => void; onRestartClick: () => void; onAddExerciseClick: () => void; + onEditExerciseClick?: () => void; + onEditHintClick?: () => void; + isGitHubConnected?: boolean; isTest: boolean; succeeded: boolean; hintVisible: boolean; @@ -33,6 +36,9 @@ export const ActionBar = ({ onNextClick, onRestartClick, onAddExerciseClick, + onEditExerciseClick, + onEditHintClick, + isGitHubConnected, isTest, succeeded, hintVisible, @@ -76,6 +82,28 @@ export const ActionBar = ({ + {isGitHubConnected && onEditExerciseClick && ( + + + + + + )} + {isGitHubConnected && onEditHintClick && ( + + + + + + )} { window.open("https://github.com/shramee/starklings/blob/main/add_exercises.md", "_blank"); }; + const handleEditExerciseClick = () => { + if (data?.path) { + // const githubUsername = localStorage.getItem(USERNAME); + const githubUsername = "dpinones"; + window.open(`https://github.com/${githubUsername}/starklings/edit/main/${data.path}`, "_blank"); + } + }; + + const handleEditHintClick = async () => { + // const githubUsername = localStorage.getItem(USERNAME); + const githubUsername = "dpinones"; + + try { + // Obtener el contenido raw del archivo info.toml desde GitHub + const response = await fetch(`https://raw.githubusercontent.com/${githubUsername}/starklings/main/info.toml`); + const content = await response.text(); + + // Buscar la línea que contiene name = "ejercicio" + const lines = content.split('\n'); + const searchPattern = `name = "${data?.id}"`; + const lineNumber = lines.findIndex(line => line.trim() === searchPattern) + 1; + + if (lineNumber > 0) { + // Abrir directamente en la línea encontrada + window.open(`https://github.com/${githubUsername}/starklings/edit/main/info.toml#L${lineNumber}`, "_blank"); + } else { + // Fallback si no encuentra la línea + window.open(`https://github.com/${githubUsername}/starklings/edit/main/info.toml`, "_blank"); + } + } catch (error) { + console.error('Error fetching info.toml:', error); + // Fallback en caso de error + window.open(`https://github.com/${githubUsername}/starklings/edit/main/info.toml`, "_blank"); + } + }; + + // Detectar si está conectado a GitHub + const isGitHubConnected = true; + // const isGitHubConnected = !!localStorage.getItem(GITHUB_ENABLED); + return ( @@ -318,6 +360,9 @@ export const Workspace = () => { onPrevClick={handlePrevClick} onRestartClick={handleRestartClick} onAddExerciseClick={handleAddExerciseClick} + onEditExerciseClick={handleEditExerciseClick} + onEditHintClick={handleEditHintClick} + isGitHubConnected={isGitHubConnected} isTest={isTest} succeeded={succeeded} hintVisible={!!hint} From cd96a686c125873ac5140801980dd695be90c520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Thu, 17 Jul 2025 12:27:00 -0300 Subject: [PATCH 03/13] feat: unify exercise editing options in Starklings * Replaced multiple edit buttons with a single "Edit Options" button in the ActionBar for a streamlined user experience. * Introduced a dialog that provides clear editing options and requirements when editing exercises and hints. * Updated the add_exercises.md guide to reflect the new editing workflow and benefits of the unified editing system. * Enhanced the Workspace component to support the new edit dialog and display the current exercise name. --- add_exercises.md | 82 +++++---- .../components/pages/Workspace/ActionBar.tsx | 165 +++++++++++++++--- .../components/pages/Workspace/Workspace.tsx | 1 + 3 files changed, 188 insertions(+), 60 deletions(-) diff --git a/add_exercises.md b/add_exercises.md index d34d87181..9beafb776 100644 --- a/add_exercises.md +++ b/add_exercises.md @@ -32,29 +32,36 @@ Cada ejercicio en Starklings tiene **3 componentes principales**: ## ✏️ Editar un Ejercicio Existente -### 🚀 **Botones de Edición Rápida** +### 🚀 **Centro de Edición Unificado** -Si estás conectado a GitHub en Starklings, verás estos botones en la barra de acciones: +En la barra de acciones de cada ejercicio encontrarás un **botón de edición** (✏️) que abre un popup con todas las opciones: -| Botón | Icono | Función | Destino | -|-------|-------|---------|---------| -| **Guía** | ➕ | Abre esta guía | `add_exercises.md` | -| **Ejercicio** | ✏️ | Edita código del ejercicio | `exercises/.../ejercicio.cairo` | -| **Hint** | 💡 | Edita hint del ejercicio | `info.toml` | - -**✨ Flujo de trabajo:** +**✨ Flujo de trabajo mejorado:** 1. Encuentras un error o mejora en un ejercicio -2. Haces clic en el botón correspondiente (✏️ para código o 💡 para hint) -3. Se abre automáticamente tu fork en GitHub -4. **Para hints**: GitHub abre directamente en la línea exacta del ejercicio -5. Editas directamente en el navegador -6. Guardas y creas un pull request - -**🎯 Navegación Inteligente:** -- El botón 💡 consulta tu fork de GitHub automáticamente +2. **Haces clic en el botón ✏️** (Opciones de edición) +3. **Se abre un popup** con todas las opciones disponibles +4. **Ves los requisitos** (fork y sincronización) claramente explicados +5. **Seleccionas la acción** que necesitas +6. **Se abre directamente** tu fork en GitHub en la ubicación correcta + +### 🎯 **Opciones Disponibles en el Popup:** + +| Opción | Función | Requisitos | +|--------|---------|------------| +| **📚 Ver Guía** | Abre esta documentación | Ninguno | +| **✏️ Editar Ejercicio** | Modifica código y descripción | GitHub conectado | +| **💡 Editar Hint** | Mejora las pistas (línea exacta) | GitHub conectado | + +### 📋 **Requisitos Mostrados Claramente:** +- ✅ **Fork del proyecto** en tu cuenta de GitHub +- ✅ **Sincronización** con el repositorio principal +- ✅ **Conexión a GitHub** en Starklings + +**🎯 Navegación Inteligente para Hints:** +- Consulta automáticamente tu fork de GitHub - Busca la línea exacta que contiene `name = "ejercicio"` -- Te lleva directamente a esa línea usando `#L{numero}` -- ¡No necesitas buscar manualmente - es completamente automático! +- Te lleva directamente usando `#L{numero}` +- ¡Completamente automático, sin búsqueda manual! --- @@ -65,10 +72,11 @@ Para modificar la descripción de un ejercicio (por ejemplo, `arrays1.cairo`): #### 🎯 **Método Rápido (Recomendado)** Si estás conectado a GitHub en Starklings: -1. **Haz clic en el botón ✏️** en la barra de acciones del ejercicio -2. Se abrirá automáticamente el archivo del ejercicio en tu fork de GitHub -3. Edita los comentarios al inicio del archivo -4. Guarda y crea un pull request +1. **Haz clic en el botón ✏️** (Opciones de edición) en la barra de acciones +2. **Selecciona "✏️ Editar Código del Ejercicio"** en el popup +3. Se abrirá automáticamente el archivo del ejercicio en tu fork de GitHub +4. Edita los comentarios al inicio del archivo +5. Guarda y crea un pull request #### 📝 **Método Manual** 1. **Abre el archivo del ejercicio**: @@ -101,11 +109,12 @@ Para modificar el hint (pista) que se muestra a los estudiantes: #### 🎯 **Método Rápido (Recomendado)** Si estás conectado a GitHub en Starklings: -1. **Haz clic en el botón 💡** en la barra de acciones del ejercicio -2. Se abrirá automáticamente el archivo `info.toml` en tu fork de GitHub -3. **¡Te lleva directamente a la línea exacta del ejercicio!** (ej: línea 287 para `options3`) -4. Edita el hint en la sección correspondiente -5. Guarda y crea un pull request +1. **Haz clic en el botón ✏️** (Opciones de edición) en la barra de acciones +2. **Selecciona "💡 Editar Hint del Ejercicio"** en el popup +3. Se abrirá automáticamente el archivo `info.toml` en tu fork de GitHub +4. **¡Te lleva directamente a la línea exacta del ejercicio!** (ej: línea 287 para `options3`) +5. Edita el hint en la sección correspondiente +6. Guarda y crea un pull request #### 📝 **Método Manual** 1. **Abre el archivo de configuración**: @@ -218,14 +227,21 @@ En `info.toml`, cada ejercicio tiene un campo `mode` que determina cómo se ejec - 🚫 Mantén el marcador `// I AM NOT DONE` - 📦 Importa las dependencias necesarias -## 🎯 **Resumen de Edición Rápida** +## 🎯 **Resumen del Centro de Edición** + +### Para Todos los Usuarios: +- **Un solo botón ✏️**: Acceso unificado a todas las opciones +- **Popup informativo**: Requisitos y opciones claramente explicados +- **Guía siempre disponible**: Sin necesidad de conexión a GitHub ### Para Usuarios Conectados a GitHub: -- **Ejercicio actual**: Usa ✏️ para editar el código -- **Hint actual**: Usa 💡 para editar el hint -- **Nueva guía**: Usa ➕ para acceder a esta documentación +- **Edición directa**: Código y hints desde la interfaz +- **Navegación inteligente**: Va directamente a la línea correcta +- **Contexto claro**: Nombre del ejercicio en el título del popup -### Ventajas del Sistema: +### Ventajas del Nuevo Sistema: +- 🎨 **UX mejorada**: Un solo botón en lugar de múltiples iconos +- 📋 **Requisitos claros**: Información sobre fork y sincronización - 🚀 **Edición directa**: Sin necesidad de clonar el repositorio - 🔄 **Fork automático**: GitHub crea tu fork si no existe - 📝 **Pull requests fáciles**: De edición a contribución en minutos diff --git a/app/client/src/components/pages/Workspace/ActionBar.tsx b/app/client/src/components/pages/Workspace/ActionBar.tsx index d0baebf68..168892833 100644 --- a/app/client/src/components/pages/Workspace/ActionBar.tsx +++ b/app/client/src/components/pages/Workspace/ActionBar.tsx @@ -1,4 +1,4 @@ -import { SkipNext, SkipPrevious, Add, Edit, HelpOutline } from "@mui/icons-material"; +import { SkipNext, SkipPrevious, Edit } from "@mui/icons-material"; import { CircularProgress } from "@mui/material"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; @@ -21,6 +21,7 @@ interface IActionBarProps { onEditExerciseClick?: () => void; onEditHintClick?: () => void; isGitHubConnected?: boolean; + currentExerciseName?: string; isTest: boolean; succeeded: boolean; hintVisible: boolean; @@ -39,6 +40,7 @@ export const ActionBar = ({ onEditExerciseClick, onEditHintClick, isGitHubConnected, + currentExerciseName, isTest, succeeded, hintVisible, @@ -47,6 +49,8 @@ export const ActionBar = ({ last, }: IActionBarProps) => { const [dialogOpen, setDialogOpen] = useState(false); + const [editDialogOpen, setEditDialogOpen] = useState(false); + const openDialog = () => { setDialogOpen(true); }; @@ -54,6 +58,20 @@ export const ActionBar = ({ const closeDialog = () => { setDialogOpen(false); }; + + const openEditDialog = () => { + setEditDialogOpen(true); + }; + + const closeEditDialog = () => { + setEditDialogOpen(false); + }; + + const handleEditAction = (action: () => void) => { + closeEditDialog(); + action(); + }; + return ( <> */} - + - + - {isGitHubConnected && onEditExerciseClick && ( - - - - - - )} - {isGitHubConnected && onEditHintClick && ( - - - - - - )} + + {/* Edit Options Dialog */} + + + 🛠️ Opciones de Edición - {currentExerciseName} + + + + 📋 Requisitos previos: +
+ • Debes tener el proyecto forkeado en tu cuenta de GitHub +
+ • Tu fork debe estar sincronizado con el repositorio principal +
+ • Debes estar conectado a GitHub en Starklings +
+ + + + + {isGitHubConnected && onEditExerciseClick && ( + + )} + + {isGitHubConnected && onEditHintClick && ( + + )} + + {!isGitHubConnected && ( + + + ⚠️ GitHub no conectado + + + Conecta tu cuenta de GitHub para acceder a las opciones de edición de ejercicios. + + + )} + +
+ + + +
+ + {/* Restart Dialog (existing) */} { onEditExerciseClick={handleEditExerciseClick} onEditHintClick={handleEditHintClick} isGitHubConnected={isGitHubConnected} + currentExerciseName={data?.name} isTest={isTest} succeeded={succeeded} hintVisible={!!hint} From 870ab5f7c9971eb5004282c2e638e85e4f776f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Thu, 17 Jul 2025 12:44:39 -0300 Subject: [PATCH 04/13] refactor: replace add_exercises.md with CONTRIBUTION_GUIDE.md * Deleted the outdated add_exercises.md file and replaced it with a new CONTRIBUTION_GUIDE.md that consolidates instructions for adding and editing exercises in Starklings. * Updated ActionBar and Workspace components to reflect the new guide and ensure users are directed to the correct documentation for exercise contributions. * Translated relevant text in the ActionBar from Spanish to English for consistency and improved accessibility. --- CONTRIBUTION_GUIDE.md | 162 +++++++++++ add_exercises.md | 251 ------------------ .../components/pages/Workspace/ActionBar.tsx | 60 +++-- .../components/pages/Workspace/Workspace.tsx | 2 +- 4 files changed, 199 insertions(+), 276 deletions(-) create mode 100644 CONTRIBUTION_GUIDE.md delete mode 100644 add_exercises.md diff --git a/CONTRIBUTION_GUIDE.md b/CONTRIBUTION_GUIDE.md new file mode 100644 index 000000000..092ace57f --- /dev/null +++ b/CONTRIBUTION_GUIDE.md @@ -0,0 +1,162 @@ +# Guide to Adding or Editing Starklings Exercises + +This guide will help you add new exercises or edit existing ones in the Starklings project, an interactive platform to learn Cairo and Starknet. + +## 📁 Project Structure + +Starklings exercises are organized as follows: + +``` +starklings/ +├── exercises/ # 📂 Main exercises directory +│ ├── arrays/ # 📂 Array exercises +│ ├── variables/ # 📂 Variable exercises +│ ├── functions/ # 📂 Function exercises +│ ├── starknet/ # 📂 Starknet-specific exercises +│ └── ... # 📂 Other categories +├── info.toml # ⚙️ Exercises and hints configuration +``` + +## 🔧 Exercise Components + +Each exercise in Starklings has **3 main components**: + +### 1. 📄 Exercise File (`.cairo`) +- **Location**: `exercises//.cairo` +- **Contains**: Cairo code with descriptive comments and the marker `// I AM NOT DONE` + +### 2. 📝 Configuration in `info.toml` +- **Location**: `info.toml` (project root) +- **Contains**: Exercise metadata, execution mode, and hints + +📋 **Prerequisites:** +• You must have the project forked in your GitHub account +• Your fork must be synced with the main repository + +## ✏️ Editing an Existing Exercise + +### Edit the Exercise Description + +To change the description of an exercise (for example, `arrays1.cairo`): + +1. **Open the exercise file:** + ```bash + exercises/arrays/arrays1.cairo + ``` + +2. **Edit the comments at the top of the file:** + ```cairo + // Your new exercise description here + // Explain what the student should do + // You can use multiple comment lines + + // I AM NOT DONE ← This marker must stay + + fn create_array() -> Array { + // ... exercise code + } + ``` + +**⚠️ Important:** +- Only edit the comments at the top of the file +- **Do NOT remove** the `// I AM NOT DONE` line (it's needed for the system) +- Use `//` for all descriptions + +### Edit the Exercise Hint + +To change the hint shown to students: + +1. **Open the configuration file:** + ```bash + info.toml + ``` + +2. **Find the exercise section:** + ```toml + [[exercises]] + name = "arrays1" + path = "exercises/arrays/arrays1.cairo" + mode = "test" + hint = """ + Your new hint here. + You can use multiple lines. + Give key concepts or subtle tips. + """ + ``` + +## ➕ Adding a New Exercise + +### Step 1: Create the Exercise File + +1. **Go to the right category** (or create a new one): + ```bash + cd exercises// + ``` + +2. **Create the `.cairo` file:** + ```cairo + // Clear and concise exercise description + // Explain what concept it teaches + // Give specific instructions + + // I AM NOT DONE + + fn example_exercise() { + // Starter code with blanks or errors + // for the student to complete + } + + // Test or verification code + #[test] + fn test_example() { + // Tests to validate the solution + } + ``` + +### Step 2: Configure in `info.toml` + +1. **Open `info.toml`** and find your category section + +2. **Add the exercise configuration:** + ```toml + [[exercises]] + name = "new_exercise" # Unique exercise name + path = "exercises/category/new_exercise.cairo" # Path to the file + mode = "test" # "test", "run", or "build" + hint = """ + Helpful hint for the student. + Can include: + - Links to docs: https://book.cairo-lang.org/... + - Key concepts to remember + - Tips about the solution (not the full answer) + """ + ``` + +## 🔄 Exercise Modes + +In `info.toml`, each exercise has a `mode` field that determines how it runs: + +- **`"test"`**: Runs the exercise tests +- **`"run"`**: Runs the main program + +## ✅ Best Practices + +### For Exercise Descriptions: +- 📝 Be clear and concise +- 🎯 Focus on one concept per exercise +- 📚 Mention previous concepts if needed +- 🔍 Give enough context without revealing the solution + +### For Hints: +- 💡 Give tips, not full solutions +- 🔗 Include links to relevant docs +- 📖 Explain key concepts if needed +- 🎯 Be specific about what to look for + +### For Code: +- 🏗️ Include useful starter code +- ✅ Add tests to validate the solution +- 🚫 Keep the `// I AM NOT DONE` marker +- 📦 Import needed dependencies + +With this guide and the quick edit buttons, you can now easily add and edit Starklings exercises! 🚀 diff --git a/add_exercises.md b/add_exercises.md deleted file mode 100644 index 9beafb776..000000000 --- a/add_exercises.md +++ /dev/null @@ -1,251 +0,0 @@ -# Guía para Agregar o Editar Ejercicios de Starklings - -Esta guía te ayudará a agregar nuevos ejercicios o editar los existentes en el proyecto Starklings, una plataforma interactiva para aprender Cairo y Starknet. - -## 📁 Estructura del Proyecto - -El sistema de ejercicios de Starklings está organizado de la siguiente manera: - -``` -starklings/ -├── exercises/ # 📂 Directorio principal de ejercicios -│ ├── arrays/ # 📂 Ejercicios sobre arrays -│ ├── variables/ # 📂 Ejercicios sobre variables -│ ├── functions/ # 📂 Ejercicios sobre funciones -│ ├── starknet/ # 📂 Ejercicios específicos de Starknet -│ └── ... # 📂 Otras categorías -├── info.toml # ⚙️ Configuración de ejercicios y hints -``` - -## 🔧 Componentes de un Ejercicio - -Cada ejercicio en Starklings tiene **3 componentes principales**: - -### 1. 📄 Archivo del Ejercicio (`.cairo`) -- **Ubicación**: `exercises//.cairo` -- **Contiene**: Código Cairo con comentarios descriptivos y marcador `// I AM NOT DONE` - -### 2. 📝 Configuración en `info.toml` -- **Ubicación**: `info.toml` (raíz del proyecto) -- **Contiene**: Metadatos del ejercicio, modo de ejecución y hints - - -## ✏️ Editar un Ejercicio Existente - -### 🚀 **Centro de Edición Unificado** - -En la barra de acciones de cada ejercicio encontrarás un **botón de edición** (✏️) que abre un popup con todas las opciones: - -**✨ Flujo de trabajo mejorado:** -1. Encuentras un error o mejora en un ejercicio -2. **Haces clic en el botón ✏️** (Opciones de edición) -3. **Se abre un popup** con todas las opciones disponibles -4. **Ves los requisitos** (fork y sincronización) claramente explicados -5. **Seleccionas la acción** que necesitas -6. **Se abre directamente** tu fork en GitHub en la ubicación correcta - -### 🎯 **Opciones Disponibles en el Popup:** - -| Opción | Función | Requisitos | -|--------|---------|------------| -| **📚 Ver Guía** | Abre esta documentación | Ninguno | -| **✏️ Editar Ejercicio** | Modifica código y descripción | GitHub conectado | -| **💡 Editar Hint** | Mejora las pistas (línea exacta) | GitHub conectado | - -### 📋 **Requisitos Mostrados Claramente:** -- ✅ **Fork del proyecto** en tu cuenta de GitHub -- ✅ **Sincronización** con el repositorio principal -- ✅ **Conexión a GitHub** en Starklings - -**🎯 Navegación Inteligente para Hints:** -- Consulta automáticamente tu fork de GitHub -- Busca la línea exacta que contiene `name = "ejercicio"` -- Te lleva directamente usando `#L{numero}` -- ¡Completamente automático, sin búsqueda manual! - ---- - -### Editar la Descripción del Ejercicio - -Para modificar la descripción de un ejercicio (por ejemplo, `arrays1.cairo`): - -#### 🎯 **Método Rápido (Recomendado)** -Si estás conectado a GitHub en Starklings: - -1. **Haz clic en el botón ✏️** (Opciones de edición) en la barra de acciones -2. **Selecciona "✏️ Editar Código del Ejercicio"** en el popup -3. Se abrirá automáticamente el archivo del ejercicio en tu fork de GitHub -4. Edita los comentarios al inicio del archivo -5. Guarda y crea un pull request - -#### 📝 **Método Manual** -1. **Abre el archivo del ejercicio**: - ```bash - exercises/arrays/arrays1.cairo - ``` - -2. **Modifica los comentarios al inicio del archivo**: - ```cairo - // Tu nueva descripción del ejercicio aquí - // Explica qué debe hacer el estudiante - // Puedes usar múltiples líneas de comentarios - - // I AM NOT DONE ← Este marcador debe permanecer - - fn create_array() -> Array { - // ... código del ejercicio - } - ``` - -**⚠️ Importante**: -- Solo edita los comentarios al principio del archivo -- **NO elimines** la línea `// I AM NOT DONE` (es necesaria para el funcionamiento del sistema) -- Usa comentarios `//` para todas las descripciones - -### Editar el Hint del Ejercicio - -Para modificar el hint (pista) que se muestra a los estudiantes: - -#### 🎯 **Método Rápido (Recomendado)** -Si estás conectado a GitHub en Starklings: - -1. **Haz clic en el botón ✏️** (Opciones de edición) en la barra de acciones -2. **Selecciona "💡 Editar Hint del Ejercicio"** en el popup -3. Se abrirá automáticamente el archivo `info.toml` en tu fork de GitHub -4. **¡Te lleva directamente a la línea exacta del ejercicio!** (ej: línea 287 para `options3`) -5. Edita el hint en la sección correspondiente -6. Guarda y crea un pull request - -#### 📝 **Método Manual** -1. **Abre el archivo de configuración**: - ```bash - info.toml - ``` - -2. **Busca la sección del ejercicio**: - ```toml - [[exercises]] - name = "arrays1" - path = "exercises/arrays/arrays1.cairo" - mode = "test" - hint = """ - Aquí va tu nuevo hint. - Puedes usar múltiples líneas. - Explica conceptos clave o da pistas sutiles. - """ - ``` - -## ➕ Agregar un Nuevo Ejercicio - -### Paso 1: Crear el Archivo del Ejercicio - -1. **Navega a la categoría apropiada** (o crea una nueva): - ```bash - cd exercises// - ``` - -2. **Crea el archivo `.cairo`**: - ```cairo - // Descripción clara y concisa del ejercicio - // Explica qué concepto enseña - // Da instrucciones específicas sobre qué hacer - - // I AM NOT DONE - - fn ejercicio_ejemplo() { - // Código inicial con huecos o errores - // que el estudiante debe completar - } - - // Tests o código de verificación - #[test] - fn test_ejercicio() { - // Tests que validen la solución - } - ``` - -### Paso 2: Configurar en `info.toml` - -1. **Abre `info.toml`** y encuentra la sección de tu categoría - -2. **Agrega la configuración del ejercicio**: - ```toml - [[exercises]] - name = "nuevo_ejercicio" # Nombre único del ejercicio - path = "exercises/categoria/nuevo_ejercicio.cairo" # Ruta al archivo - mode = "test" # "test", "run", o "build" - hint = """ - Hint útil para el estudiante. - Puede incluir: - - Enlaces a documentación: https://book.cairo-lang.org/... - - Conceptos clave a recordar - - Pistas sobre la solución sin dar la respuesta completa - """ - ``` - -3. **Replica la configuración en `app/api/info.toml`** - -### Paso 3: Crear Documentación (Opcional) - -Si es una nueva categoría, crea `exercises//README.md`: - -```markdown -# Nombre de la Categoría - -Explicación general del concepto que cubre esta categoría de ejercicios. - -## Información Adicional - -- [Documentación oficial](enlace) -- [Recursos útiles](enlace) -``` - -## 🔄 Modos de Ejercicio - -En `info.toml`, cada ejercicio tiene un campo `mode` que determina cómo se ejecuta: - -- **`"test"`**: Ejecuta los tests del ejercicio (`cargo test`) -- **`"run"`**: Ejecuta el programa principal (`cargo run`) - -## ✅ Buenas Prácticas - -### Para Descripciones de Ejercicios: -- 📝 Sé claro y conciso -- 🎯 Enfócate en un concepto por ejercicio -- 📚 Menciona conceptos previos si es necesario -- 🔍 Da suficiente contexto sin revelar la solución - -### Para Hints: -- 💡 Proporciona pistas, no soluciones completas -- 🔗 Incluye enlaces a documentación relevante -- 📖 Explica conceptos clave si es necesario -- 🎯 Sé específico sobre qué buscar - -### Para Código: -- 🏗️ Incluye código de esqueleto útil -- ✅ Agrega tests que validen la solución -- 🚫 Mantén el marcador `// I AM NOT DONE` -- 📦 Importa las dependencias necesarias - -## 🎯 **Resumen del Centro de Edición** - -### Para Todos los Usuarios: -- **Un solo botón ✏️**: Acceso unificado a todas las opciones -- **Popup informativo**: Requisitos y opciones claramente explicados -- **Guía siempre disponible**: Sin necesidad de conexión a GitHub - -### Para Usuarios Conectados a GitHub: -- **Edición directa**: Código y hints desde la interfaz -- **Navegación inteligente**: Va directamente a la línea correcta -- **Contexto claro**: Nombre del ejercicio en el título del popup - -### Ventajas del Nuevo Sistema: -- 🎨 **UX mejorada**: Un solo botón en lugar de múltiples iconos -- 📋 **Requisitos claros**: Información sobre fork y sincronización -- 🚀 **Edición directa**: Sin necesidad de clonar el repositorio -- 🔄 **Fork automático**: GitHub crea tu fork si no existe -- 📝 **Pull requests fáciles**: De edición a contribución en minutos -- 🎯 **Contextual**: Editas exactamente lo que estás viendo -- 🎯 **Navegación automática**: Va directamente a la línea exacta del ejercicio - -¡Con esta guía y los botones de edición rápida ya puedes crear y editar ejercicios de Starklings de manera efectiva! 🚀 diff --git a/app/client/src/components/pages/Workspace/ActionBar.tsx b/app/client/src/components/pages/Workspace/ActionBar.tsx index 168892833..ed7d68a14 100644 --- a/app/client/src/components/pages/Workspace/ActionBar.tsx +++ b/app/client/src/components/pages/Workspace/ActionBar.tsx @@ -91,7 +91,7 @@ export const ActionBar = ({
*/} - + - 🛠️ Opciones de Edición - {currentExerciseName} + 🛠️ Edit Options - {currentExerciseName} - 📋 Requisitos previos: + 📋 Prerequisites:
- • Debes tener el proyecto forkeado en tu cuenta de GitHub + • You must have the project forked in your GitHub account
- • Tu fork debe estar sincronizado con el repositorio principal + • Your fork must be synced with the main repository
- • Debes estar conectado a GitHub en Starklings + • You must be logged into GitHub in Starklings
{isGitHubConnected && onEditExerciseClick && ( @@ -221,21 +229,25 @@ export const ActionBar = ({ {isGitHubConnected && onEditHintClick && ( @@ -251,10 +263,10 @@ export const ActionBar = ({ }} > - ⚠️ GitHub no conectado + ⚠️ GitHub not connected - Conecta tu cuenta de GitHub para acceder a las opciones de edición de ejercicios. + Connect your GitHub account to access exercise editing options. )} @@ -262,7 +274,7 @@ export const ActionBar = ({
diff --git a/app/client/src/components/pages/Workspace/Workspace.tsx b/app/client/src/components/pages/Workspace/Workspace.tsx index 9c378392e..12aafeb64 100644 --- a/app/client/src/components/pages/Workspace/Workspace.tsx +++ b/app/client/src/components/pages/Workspace/Workspace.tsx @@ -195,7 +195,7 @@ export const Workspace = () => { const handleAddExerciseClick = () => { // Abrir la guía de agregar ejercicios en una nueva pestaña - window.open("https://github.com/shramee/starklings/blob/main/add_exercises.md", "_blank"); + window.open("https://github.com/shramee/starklings/blob/main/CONTRIBUTION_GUIDE.md", "_blank"); }; const handleEditExerciseClick = () => { From fef878d28a7d095c65e39b0a5e6953ddfea21836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Thu, 17 Jul 2025 12:51:38 -0300 Subject: [PATCH 05/13] refactor: update ActionBar edit button for improved clarity * Replaced the "Edit options" tooltip with a simplified "Edit" tooltip for the edit button in the ActionBar. * Adjusted the layout to enhance user experience and maintain consistency in the interface. --- .../components/pages/Workspace/ActionBar.tsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/client/src/components/pages/Workspace/ActionBar.tsx b/app/client/src/components/pages/Workspace/ActionBar.tsx index ed7d68a14..99f461be1 100644 --- a/app/client/src/components/pages/Workspace/ActionBar.tsx +++ b/app/client/src/components/pages/Workspace/ActionBar.tsx @@ -91,15 +91,6 @@ export const ActionBar = ({
*/} - - - - - + + + + + - - {isGitHubConnected && onEditExerciseClick && ( - - )} - - {isGitHubConnected && onEditHintClick && ( - - )} - - {!isGitHubConnected && ( - - - ⚠️ GitHub not connected - - - Connect your GitHub account to access exercise editing options. - - - )} - - - - - - - {/* Restart Dialog (existing) */} { const navigate = useNavigate(); const [hint, setHint] = useState(undefined); const [warning, setWarning] = useState(undefined); + const [editDialogOpen, setEditDialogOpen] = useState(false); const isTest = data?.mode === "test"; const { mutate: getHint, @@ -93,6 +101,19 @@ export const Workspace = () => { setWarning(undefined); }; + const openEditDialog = () => { + setEditDialogOpen(true); + }; + + const closeEditDialog = () => { + setEditDialogOpen(false); + }; + + const handleEditAction = (action: () => void) => { + closeEditDialog(); + action(); + }; + const handleCompileClick = async () => { let mode; if (data?.mode === "test") { @@ -246,9 +267,20 @@ export const Workspace = () => { > {/* description */} - - {data?.name} - + + + {data?.name} + + + + + + + {isLoading && } {data && ( @@ -349,11 +381,6 @@ export const Workspace = () => { onNextClick={handleNextClick} onPrevClick={handlePrevClick} onRestartClick={handleRestartClick} - onAddExerciseClick={handleAddExerciseClick} - onEditExerciseClick={handleEditExerciseClick} - onEditHintClick={handleEditHintClick} - isGitHubConnected={isGitHubConnected} - currentExerciseName={data?.name} isTest={isTest} succeeded={succeeded} hintVisible={!!hint} @@ -420,6 +447,131 @@ export const Workspace = () => { {isMobileOnly && } + + {/* Edit Dialog */} + + + 🛠️ Edit Options - {data?.name} + + + + 📋 Prerequisites: +
+ • You must have the project forked in your GitHub account +
+ • Your fork must be synced with the main repository +
+ • You must be logged into GitHub in Starklings +
+ + + + + {isGitHubConnected && ( + + )} + + {isGitHubConnected && ( + + )} + + {!isGitHubConnected && ( + + + ⚠️ GitHub not connected + + + Connect your GitHub account to access exercise editing options. + + + )} + +
+ + + +
); }; \ No newline at end of file From 9314a4f566f069f09795ed3373da410a7deeb537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Wed, 23 Jul 2025 22:33:50 -0600 Subject: [PATCH 10/13] resolve comments --- .../src/components/pages/Workspace/Workspace.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/client/src/components/pages/Workspace/Workspace.tsx b/app/client/src/components/pages/Workspace/Workspace.tsx index ddd601d69..137018683 100644 --- a/app/client/src/components/pages/Workspace/Workspace.tsx +++ b/app/client/src/components/pages/Workspace/Workspace.tsx @@ -220,13 +220,16 @@ export const Workspace = () => { const handleEditExerciseClick = () => { if (data?.path) { - const githubUsername = localStorage.getItem(USERNAME); + // const githubUsername = localStorage.getItem(USERNAME); + const githubUsername = "dpinones"; window.open(`https://github.com/${githubUsername}/starklings/edit/main/${data.path}`, "_blank"); } }; const handleEditHintClick = async () => { - const githubUsername = localStorage.getItem(USERNAME); + // const githubUsername = localStorage.getItem(USERNAME); + const githubUsername = "dpinones"; + try { const response = await fetch(`https://raw.githubusercontent.com/${githubUsername}/starklings/main/info.toml`); @@ -247,7 +250,9 @@ export const Workspace = () => { } }; - const isGitHubConnected = !!localStorage.getItem(GITHUB_ENABLED); + // const isGitHubConnected = !!localStorage.getItem(GITHUB_ENABLED); + const isGitHubConnected = true; + return ( @@ -274,10 +279,11 @@ export const Workspace = () => { - + From 4357f1056760bf1248780c07340c9c7d879ddf5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Wed, 23 Jul 2025 22:34:34 -0600 Subject: [PATCH 11/13] update GitHub username --- .../src/components/pages/Workspace/Workspace.tsx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/app/client/src/components/pages/Workspace/Workspace.tsx b/app/client/src/components/pages/Workspace/Workspace.tsx index 137018683..fbf785b8e 100644 --- a/app/client/src/components/pages/Workspace/Workspace.tsx +++ b/app/client/src/components/pages/Workspace/Workspace.tsx @@ -220,16 +220,13 @@ export const Workspace = () => { const handleEditExerciseClick = () => { if (data?.path) { - // const githubUsername = localStorage.getItem(USERNAME); - const githubUsername = "dpinones"; + const githubUsername = localStorage.getItem(USERNAME); window.open(`https://github.com/${githubUsername}/starklings/edit/main/${data.path}`, "_blank"); } }; const handleEditHintClick = async () => { - // const githubUsername = localStorage.getItem(USERNAME); - const githubUsername = "dpinones"; - + const githubUsername = localStorage.getItem(USERNAME); try { const response = await fetch(`https://raw.githubusercontent.com/${githubUsername}/starklings/main/info.toml`); @@ -250,9 +247,7 @@ export const Workspace = () => { } }; - // const isGitHubConnected = !!localStorage.getItem(GITHUB_ENABLED); - const isGitHubConnected = true; - + const isGitHubConnected = !!localStorage.getItem(GITHUB_ENABLED); return ( From bfaa30036fc0234b7dcc8528bbc4d4cf74f49c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Pi=C3=B1ones?= Date: Wed, 23 Jul 2025 22:37:32 -0600 Subject: [PATCH 12/13] remove new line --- app/client/src/components/pages/Workspace/ActionBar.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/client/src/components/pages/Workspace/ActionBar.tsx b/app/client/src/components/pages/Workspace/ActionBar.tsx index 6299e8085..0eb213a9a 100644 --- a/app/client/src/components/pages/Workspace/ActionBar.tsx +++ b/app/client/src/components/pages/Workspace/ActionBar.tsx @@ -39,7 +39,6 @@ export const ActionBar = ({ last, }: IActionBarProps) => { const [dialogOpen, setDialogOpen] = useState(false); - const openDialog = () => { setDialogOpen(true); }; @@ -47,7 +46,6 @@ export const ActionBar = ({ const closeDialog = () => { setDialogOpen(false); }; - return ( <> - - {/* Restart Dialog (existing) */} Date: Wed, 23 Jul 2025 22:38:32 -0600 Subject: [PATCH 13/13] add new line --- app/client/src/components/pages/Workspace/Workspace.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/client/src/components/pages/Workspace/Workspace.tsx b/app/client/src/components/pages/Workspace/Workspace.tsx index fbf785b8e..412c6a6fa 100644 --- a/app/client/src/components/pages/Workspace/Workspace.tsx +++ b/app/client/src/components/pages/Workspace/Workspace.tsx @@ -575,4 +575,4 @@ export const Workspace = () => { ); -}; \ No newline at end of file +};