Merge frontend-v2/main into split-frontend-new-v2
Strategy: ours for our v4-ported changes (StudentDashboard course-plans widget, InteractiveWorkbook, PlanReader, AdminBranches, media upload UI), theirs only where they don't conflict. No protected files on the frontend side. Made-with: Cursor
This commit is contained in: