Navigation bug when switching between C# lessons with Sandbox open #183

Closed
opened 2026-05-22 18:50:17 +00:00 by Zhekrom · 1 comment
Title: Navigation issues when switching between C# lessons with Sandbox open
Severity: Medium
Mode: C# Section
Lesson ID / File: C# lesson navigation + Sandbox
Environment: Browser (specify version), OS (specify version)
Date/Time: 2026-05-22

Source Code

(Not applicable � navigation/UI state issue)

Steps to Reproduce

1. Open the Sandbox in a C# lesson.
2. Navigate to a different C# lesson.
3. Observe the top navigation indicator.
4. Try to navigate back to the Sandbox.

Expected Output

When switching lessons, the navigation indicator should update to reflect the current active section.

Actual Output

When navigating to another lesson after using the Sandbox, the lesson content loads correctly but the top navigation indicator still shows "Sandbox" as the active section. To access the Sandbox again, the user must first click "Lesson" to clear the stuck state, and only then can they navigate to the Sandbox properly.

Suggested Priority

Medium ? Does not block functionality but creates confusing navigation state. The indicator shows incorrect active section and adds unnecessary steps to access the Sandbox.

Additional Notes

This appears to be a navigation state management bug where the active section indicator is not properly updated when switching from the Sandbox view to a different lesson.

Title: Navigation issues when switching between C# lessons with Sandbox open Severity: Medium Mode: C# Section Lesson ID / File: C# lesson navigation + Sandbox Environment: Browser (specify version), OS (specify version) Date/Time: 2026-05-22 Source Code (Not applicable � navigation/UI state issue) Steps to Reproduce 1. Open the Sandbox in a C# lesson. 2. Navigate to a different C# lesson. 3. Observe the top navigation indicator. 4. Try to navigate back to the Sandbox. Expected Output When switching lessons, the navigation indicator should update to reflect the current active section. Actual Output When navigating to another lesson after using the Sandbox, the lesson content loads correctly but the top navigation indicator still shows "Sandbox" as the active section. To access the Sandbox again, the user must first click "Lesson" to clear the stuck state, and only then can they navigate to the Sandbox properly. Suggested Priority Medium ? Does not block functionality but creates confusing navigation state. The indicator shows incorrect active section and adds unnecessary steps to access the Sandbox. Additional Notes This appears to be a navigation state management bug where the active section indicator is not properly updated when switching from the Sandbox view to a different lesson.
Zhekrom changed title from Navigation issues when switching between C# lessons with Sandbox open to Navigation bug when switching between C# lessons with Sandbox open 2026-05-22 18:50:41 +00:00
Owner

Fix submitted in spikersoft-angular PR #16.

Root cause: Toggling to the Sandbox keeps the lesson selected and only clears ?lessonId from the URL. Re-selecting that same lesson then hit the route effect's dedupe guard (selectedLessonNumber() === requested), which returned early before the mode could be restored — so the Lesson/Sandbox indicator stayed stuck on "Sandbox" while lesson content was shown.

Fix: The already-selected branch now restores mode = 'lesson' when the matched lesson is unlocked. Added a regression spec (language-runner-mode-sync.spec.ts) that drives a mutable query-param subject to reproduce the toggle → re-navigation sequence and verifies the mode recovers.

Will close once the PR merges.

Fix submitted in `spikersoft-angular` PR #16. **Root cause:** Toggling to the Sandbox keeps the lesson selected and only clears `?lessonId` from the URL. Re-selecting that same lesson then hit the route effect's dedupe guard (`selectedLessonNumber() === requested`), which returned early before the mode could be restored — so the Lesson/Sandbox indicator stayed stuck on "Sandbox" while lesson content was shown. **Fix:** The already-selected branch now restores `mode = 'lesson'` when the matched lesson is unlocked. Added a regression spec (`language-runner-mode-sync.spec.ts`) that drives a mutable query-param subject to reproduce the toggle → re-navigation sequence and verifies the mode recovers. Will close once the PR merges.
Sign in to join this conversation.