Skip to content

[MBL-19927][Student] NGC Course Home screen#3661

Open
hermannakos wants to merge 4 commits intomasterfrom
MBL-19927-course-home
Open

[MBL-19927][Student] NGC Course Home screen#3661
hermannakos wants to merge 4 commits intomasterfrom
MBL-19927-course-home

Conversation

@hermannakos
Copy link
Copy Markdown
Collaborator

Summary

  • Add NGC Course Home screen with collapsing toolbar, segmented tab control (Home, Modules, My Work, More), and course image/color header
  • New InstUI design system components: CollapsingTopBar, SegmentedControl, LocalCourseColor on InstUITheme
  • Wire deep linking so course URLs route to NGC when the next_gen_canvas remote config flag is enabled
  • Add CourseHomeViewModel with unit tests

Test plan

  1. Enable the next_gen_canvas remote config flag
  2. Log in, navigate to dashboard, tap a course card
  3. Verify course home opens with collapsing toolbar showing course image and name
  4. Scroll to verify toolbar collapses: background transitions to course color, status bar icons switch to light, course image shrinks
  5. Switch between all 4 tabs (Home, Modules, My Work, More)
  6. Press back to return to dashboard
  7. Deep link test: adb shell am start -a android.intent.action.VIEW -d "https://<domain>/courses/<id>"
  8. Verify deep link opens course home in NGC experience

refs: MBL-19927
affects: Student
release note: New course home screen with collapsing toolbar and tabbed navigation

  • Follow-up e2e test ticket created or not needed
  • Tested in dark mode
  • Tested in light mode
  • Test in landscape mode and/or tablet
  • A11y checked
  • Approve from product

🤖 Generated with Claude Code

hermannakos and others added 4 commits April 23, 2026 10:50
Add course home screen with collapsing toolbar, segmented tab control,
and navigation from dashboard. The screen loads course data via
LoadSingleCourseUseCase and resolves course color through the
InstUI theme's new LocalCourseColor CompositionLocal.

New InstUI components:
- CollapsingTopBar: collapsing toolbar with leading content slot,
  accent color transitions, and content color interpolation
- SegmentedControl: wrapper around Material3 SecondaryTabRow
- LocalCourseColor on InstUITheme for course color propagation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tedControl

Add unit tests for CourseHomeViewModel covering loading, error, tab
selection, and course image states. Switch to LoadCourseUseCase (REST).
Update SegmentedControl to use course accent color for selected text
and indicator.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add placeholder screens for each course home tab:
- CourseOverviewScreen (Home tab)
- CourseModulesScreen (Modules tab)
- CourseMyWorkScreen (My Work tab)
- CourseNavigationScreen (More tab)

Each uses LazyColumn to support collapsing toolbar scroll.
Refactor NGC features into features/ package structure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Route deep links to NGCActivity when the next_gen_canvas remote config
flag is enabled. InterwebsToApplication now checks NGC before Career
and old experience routing.

Register navDeepLink patterns on the CourseHome route for https, http,
canvas-courses, and canvas-student schemes matching /courses/{courseId}.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Unit Test Results

✅ 📱 Student App

  • Tests: 1210 total, 0 failed, 0 skipped
  • Duration: 0.000s
  • Success Rate: 100%

✅ 🌅 Horizon

  • Tests: 779 total, 0 failed, 0 skipped
  • Duration: 44.622s
  • Success Rate: 100%

✅ 📦 Submodules

  • Tests: 3413 total, 0 failed, 0 skipped
  • Duration: 65.134s
  • Success Rate: 100%

📊 Summary

  • Total Tests: 5402
  • Failed: 0
  • Skipped: 0
  • Status: ✅ All tests passed!

Last updated: Thu, 23 Apr 2026 11:22:05 GMT

@github-actions
Copy link
Copy Markdown
Contributor

📊 Code Coverage Report

⚠️ Student

  • PR Coverage: 42.59%
  • Master Coverage: 42.61%
  • Delta: -0.02%

✅ Teacher

  • PR Coverage: 25.26%
  • Master Coverage: 25.26%
  • Delta: +0.00%

✅ Pandautils

  • PR Coverage: 23.99%
  • Master Coverage: 23.99%
  • Delta: +0.00%

📈 Overall Average

  • PR Coverage: 30.61%
  • Master Coverage: 30.62%
  • Delta: -0.01%

@github-actions
Copy link
Copy Markdown
Contributor

Student Install Page

import com.instructure.instui.compose.navigation.SegmentedControl
import com.instructure.instui.token.semantic.InstUILayoutSizes

private val TAB_LABELS = listOf("Home", "Modules", "My Work", "More")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should use string resources

Copy link
Copy Markdown
Contributor

@kristofnemere kristofnemere left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI Finding:

  • The back button seems too big, and different that on the design
  • The tab names breaking weird (on smaller screens)
  • The tabs are different that on design
  • The collapsing toolbar animation is weird, some polishing would be nice
  • Not sure if we want to change tabs by swipe but it's not working rn.

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.

2 participants