From c2dcd08ea466fb9a030d3acbb785c49f17667364 Mon Sep 17 00:00:00 2001 From: Michael Czechowski Date: Thu, 15 Jan 2026 12:37:50 +0100 Subject: [PATCH] fix: clear completed status when resetting a lesson MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove completion badge and reset Run button text in resetSuccessIndicators() - Remove lesson from completed array in LessonEngine.reset() - Update sidebar to remove completed class from lesson item - Update progress display after reset 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- src/app.js | 19 +++++++++++++++++++ src/impl/LessonEngine.js | 10 ++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/app.js b/src/app.js index 65347e6..7d77d30 100644 --- a/src/app.js +++ b/src/app.js @@ -459,6 +459,14 @@ function resetSuccessIndicators() { elements.previewWrapper?.classList.remove("matched"); elements.previewWrapper?.classList.remove("completed-glow"); elements.previewSection?.classList.remove("matched"); + + // Remove completion badge if present + const badge = document.querySelector(".completion-badge"); + if (badge) badge.remove(); + + // Reset Run button text + const runBtnText = elements.runBtn.querySelector("span"); + if (runBtnText) runBtnText.textContent = t("run"); } function updateEditorForMode(mode) { @@ -710,6 +718,17 @@ function resetCode() { // Clear hints and success indicators clearHint(); resetSuccessIndicators(); + + // Update sidebar to remove completed status from this lesson + const sidebarItem = document.querySelector( + `.lesson-list-item[data-module-id="${engineState.module?.id}"][data-lesson-index="${engineState.lessonIndex}"]` + ); + if (sidebarItem) { + sidebarItem.classList.remove("completed"); + } + + // Update progress display + updateProgressDisplay(); } function loadRandomTemplate() { diff --git a/src/impl/LessonEngine.js b/src/impl/LessonEngine.js index bc3781d..d3fc761 100644 --- a/src/impl/LessonEngine.js +++ b/src/impl/LessonEngine.js @@ -555,6 +555,16 @@ export class LessonEngine { this.userCodeMap.delete(lessonKey); this.saveUserCodeToStorage(); + // Remove lesson from completed list + const progress = this.userProgress[this.currentModule.id]; + if (progress?.completed) { + const idx = progress.completed.indexOf(this.currentLessonIndex); + if (idx !== -1) { + progress.completed.splice(idx, 1); + this.saveUserProgress(); + } + } + this.renderPreview(); } }