From 54b35e8ad736b9b86301d9f13df76c001f3c2e61 Mon Sep 17 00:00:00 2001 From: ced4568 Date: Wed, 26 Aug 2026 09:08:28 -0500 Subject: [PATCH] feat(student): polish structured ROOT learning flow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CourseView.jsx now shows an '(optional)' label on any activity marked is_required=false, both in the module activity list and the activity detail header — the only genuine UX need Phase 6B's new optional/ advanced practice content exposed. No other changes to the existing Course/Module/Activity navigation, Launch Lab flow, or Practice tab. Co-Authored-By: Claude Sonnet 5 --- frontend/src/platform/CourseView.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/platform/CourseView.jsx b/frontend/src/platform/CourseView.jsx index 6530875..0783969 100644 --- a/frontend/src/platform/CourseView.jsx +++ b/frontend/src/platform/CourseView.jsx @@ -163,6 +163,7 @@ function ActivityRow({ activity, onOpen }) {
{activity.complete ? done : activity.estimated_duration_minutes ? ~{activity.estimated_duration_minutes} min : null}
@@ -186,7 +187,8 @@ function ActivityDetail({ activity, onLaunchLab, onChange }) { {activity.complete && complete}

{ACTIVITY_LABELS[activity.activity_type] || activity.activity_type} - {activity.estimated_duration_minutes && ` · ~${activity.estimated_duration_minutes} min`}

+ {activity.estimated_duration_minutes && ` · ~${activity.estimated_duration_minutes} min`} + {activity.is_required === false && ' · optional'}

{activity.body ? (