Skip to content

feat: add first-launch walkthrough and smooth exercise start - #27

Merged
jiaxinnns merged 3 commits into
mainfrom
feat/walkthrough-and-ui-fixes
Sep 26, 2026
Merged

jiaxinnns merged 3 commits into
mainfrom
feat/walkthrough-and-ui-fixes

Conversation

@jiaxinnns

Copy link
Copy Markdown
Contributor

Overview

New learners had no orientation and Start/Verify gave little feedback. This adds a two-step walkthrough and tightens the exercise start flow, tour nav, and AI hint model choice.

Solution

  • Walkthrough on first launch (and via a Help button): dims the terminal to point at lessons, then dims the lesson page to point at the terminal. The lesson page is dimmed by injecting an overlay into it, since DOM can't cover the native view
  • Start Exercise / Verify show a spinner and are disabled until main finishes; every successful start shows a "Started exercise" toast
  • Start intro modal repeats until "Don't show this again" is checked
  • Tour rows only expand/collapse; each tour gets a Tour Home link; tours panel open by default
  • Window maximises on launch
  • AI hints use OpenRouter's free router instead of three named models

Test cases

  • Clear gm-walkthrough-seen from localStorage and relaunch: the walkthrough shows, and Next/Back/Done work in light and dark mode
  • Help button in the header restarts the walkthrough
  • Click Start Exercise / Verify: button disables with a spinner until done
  • Start an already downloaded exercise: "Started exercise" toast still appears
  • Intro modal shows on each Start until the checkbox is ticked, then stops
  • Clicking a tour row only toggles it; Tour Home opens the tour page
  • App opens maximised
  • Request an AI hint: it returns using openrouter/free

Made with Cursor

jiaxinnns and others added 3 commits September 26, 2026 16:09
The tours list mixed expand with navigation, Start gave no instant feedback,
and the intro vanished after one click. Maximize on open, keep the tours
panel expanded, and let learners hide the intro themselves.

Co-authored-by: Cursor <cursoragent@cursor.com>
Named free models kept leaving the free tier and needed hand upkeep.
Send openrouter/free alone so the default always resolves to a model
that is currently free.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@jiaxinnns
jiaxinnns merged commit 0513b13 into main Sep 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant