- VideoCard: optional onAddPractice for lesson-scoped CTA
- ModuleDetailPage: navigate to add-practice with lessonId and lessonTitle
- AddPracticeFlow: show context banner when opened from a lesson
Co-authored-by: Cursor <cursoragent@cursor.com>
- Add practiceDynamicQuestionPayload helper to build stimulus/response slots
- Extend PracticeQuestionEditorFields with DYNAMIC type, definition picker, and per-slot values (JSON-capable)
- Wire AddNewPracticePage and AddNewLessonPage createQuestion to send question_type_definition_id and dynamic_payload
- Use lesson/practice save status (DRAFT/PUBLISHED) for created questions instead of always PUBLISHED
Co-authored-by: Cursor <cursoragent@cursor.com>
Handle environments where sub-module lesson detail is missing by falling back to question-set detail, and keep lesson form/status typing safe.
Made-with: Cursor
For lessons, fetch related questions by lesson question_set_id and render a styled question bank panel (same UX as practice), including add/edit/delete with proper refresh.
Made-with: Cursor
Fetch selected lesson details from the sub-module lesson endpoint so the inline detail panel shows the latest question count and lesson metadata.
Made-with: Cursor
Load human language lesson edit data from the dedicated sub-module lesson detail API so lesson metadata stays aligned with the backend response shape.
Made-with: Cursor
Retry scroll restoration until the page is tall enough so refreshes restore to the saved position smoothly, while keeping reduced-motion fallback.
Made-with: Cursor
Replace ad-hoc Loader2 loading indicators with SpinnerIcon so loading states across content and notifications pages use the same Circular-indeterminate progress indicator.
Made-with: Cursor
Route published lesson success back to the Human Language page so prior scroll position is restored, and explicitly guard practice question rendering by fetch status.
Made-with: Cursor
Filter course options by exact selected category_id in flows to prevent first-load course mismatch that changed module counts after refresh.
Made-with: Cursor
Keep retrying hierarchy fetch for a short period when the tab is active and still empty, so data appears automatically without manual refresh.
Made-with: Cursor
Trigger hierarchy fetch whenever the Human Language route is selected so data appears immediately when switching tabs from Content Management.
Made-with: Cursor
Run multiple delayed hierarchy retries on first tab navigation to prevent empty-state flicker and avoid requiring manual page refresh.
Made-with: Cursor
Match lesson review and success screens to the practice-style UI and add a single retry for initial hierarchy fetches so content management data appears immediately after login.
Made-with: Cursor
Auto-process intro video URLs on blur with preview support, improve local upload reliability, and refine Step 1 + Review styling for the lesson creation wizard.
Made-with: Cursor
Restore a stable practice-style step indicator in Add New Lesson so active and completed steps are clearly visible and connectors render correctly.
Made-with: Cursor