-
Notifications
You must be signed in to change notification settings - Fork 121
[MBL-19480][S/T/P] Immersive Video Player for Canvas Media Uploads #3755
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
[MBL-19480][S/T/P] Immersive Video Player for Canvas Media Uploads #3755
Conversation
Claude Code ReviewUpdated: 2025-11-10 Critical Issues Found
Issues found |
Release Note:Introduced immersive experience for video player. Affected Apps: Student, Teacher, ParentBuilds: Student, Teacher, Parent
|
refs: MBL-19480 affects: Student, Teacher, Parent builds: Student, Teacher, Parent release note: Introduced immersive experience for video player.
Claude Code ReviewUpdated: 2025-11-10 ✅ APPROVED Reviewed changes for immersive video player feature (MBL-19480). No critical issues found. Summary:
|
Claude Code ReviewUpdated: 2025-11-10 ✅ Approved - No critical issues found Summary of changes:
Key observations:
|
Claude Code ReviewUpdated: 2025-11-11 Critical Issues Found:
❌ (issues found) |
Claude Code ReviewUpdated: 2025-11-11 ✅ Approved - No critical issues found Summary of changes:
Verified:
|
Claude Code ReviewUpdated: 2025-11-11 Critical Issues Found:
❌ (issues found) |
BuildsCommit: Add better name. (b045bb9) |
Claude Code ReviewUpdated: 2025-11-11 ✅ Approved - No critical issues found Summary:
Note: Danger reports below minimum test coverage for new files (expected for new feature) |
Core/Core/Common/CommonModels/AppEnvironment/FeatureFlags/GetFeatureFlagStateRequest.swift
Outdated
Show resolved
Hide resolved
Core/Core/Common/CommonModels/AppEnvironment/FeatureFlags/GetFeatureFlagStateRequest.swift
Show resolved
Hide resolved
Core/Core/Common/CommonModels/AppEnvironment/FeatureFlags/GetFeatureFlagStateRequest.swift
Outdated
Show resolved
Hide resolved
...Tests/Common/CommonUI/CoreWebView/Model/Features/InsertStudioOpenDetailViewButtonTests.swift
Outdated
Show resolved
Hide resolved
Core/CoreTests/Common/CommonModels/AppEnvironment/FeatureFlags/FeatureFlagTests.swift
Outdated
Show resolved
Hide resolved
Core/Core/Common/CommonModels/AppEnvironment/FeatureFlags/GetFeatureFlagState.swift
Outdated
Show resolved
Hide resolved
Core/Core/Common/CommonModels/AppEnvironment/FeatureFlags/GetFeatureFlagState.swift
Outdated
Show resolved
Hide resolved
Core/Core/Common/CommonUI/CoreWebView/Model/CoreWebViewStudioFeaturesInteractor.swift
Show resolved
Hide resolved
Core/Core/Common/CommonUI/CoreWebView/Model/CoreWebStudioFeaturesInteractor.swift
Outdated
Show resolved
Hide resolved
Claude Code ReviewUpdated: 2025-11-16 Critical Issues:
Other Issues:
Status: Issues found |
Claude Code ReviewCRITICAL COMPILATION ERROR & ISSUES FOUND • Undefined method • String format injection vulnerability - • Race condition in state management - Feature flag subscription updates state while pending JavaScript evaluations modify shared map. No async cancellation on context reset. • Memory safety issue - Unowned WebView reference + weak self closures create crash risk if WebView deallocates during pending JS callback. • URL matching bug - hasPrefix lookup can match wrong video entries with overlapping path prefixes (e.g., ❌ Cannot merge - compilation error and correctness issues |
Claude Code ReviewUpdated: 2025-11-18 🔴 CRITICAL ISSUES FOUND
BUILD STATUS🔴 Will not compile - missing |
Claude Code ReviewUpdated: 2025-11-23 ❌ Critical Issues Found
Recommendations
❌ Issues found |
Claude Code ReviewUpdated: 2025-11-24 Analysis SummaryReviewed core immersive video player feature with feature flag integration (40 files changed, ~600 LOC additions). No Critical Issues FoundStrengths:
Safe patterns:
✅ |
Claude Code ReviewUpdated: 2025-11-25 🔴 Critical Issue FoundXSS/URL Injection Vulnerability in InsertStudioOpenDetailViewButton.swift:107
|
vargaat
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tested on Prod and encountered a few issues that we could fix before merging, see them below.
| var onScanFinished: (() -> Void)? | ||
| var onFeatureUpdate: (() -> Void)? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the public interface, so these should go before private property declarations.
| ) { | ||
| reloadObserver?.cancel() | ||
| reloadObserver = trigger?.sink { | ||
| webView.reload() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a new warning here: Result of call to 'reload()' is unused.
| public class CoreWebViewStudioFeaturesInteractor { | ||
| private static let scanFramesScript = """ | ||
| function scanVideoFramesForTitles() { | ||
| const frameElements = document.querySelectorAll('iframe[data-media-id]'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed the link for detail view button for such cases.
After asking around about it, seems like we can safely assume that expand button will always show up whenrce_studio_embed_improvements is turned on. Studio team will always show the Expand button when that flag is on. Since it would be inefficient to wait for iframe content to load in order to decide whether to insert those buttons or not.
| .open_details_button { | ||
| font-weight: 400; | ||
| font-size: 15px; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Claude Code ReviewUpdated: Wed Nov 26 07:37:47 UTC 2025 Critical Issues Found
✋ (issues found) |
Claude Code ReviewUpdated: 2025-11-26 ✅ Approved - No critical issues found. Summary:
All changes are backward compatible and follow project patterns. |
| mockRequest = URLRequest(url: URL(string: url)!) | ||
| mockType = type | ||
| mockSourceFrame = sourceFrame | ||
| mockSourceFrame = sourceFrame ?? MockFrameInfo(isMainFrame: true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be better to make the init parameter non-optional and add a default value.
Claude Code ReviewUpdated: 2025-11-26 ✅ Code Quality: ApprovedSummary: Feature flag system refactor and Studio video player integration implemented with solid architecture and comprehensive tests. Areas Reviewed:
No critical bugs, crashes, or breaking changes identified. Implementation follows project patterns and maintains backward compatibility. |
Claude Code ReviewUpdated: 2025-11-26 ✅ Approved - No critical issues found. Summary:
All changes follow project patterns and maintain backward compatibility. |
Core/Core/Common/CommonUI/CoreWebView/Model/Features/InsertStudioOpenDetailViewButton.swift
Show resolved
Hide resolved
Claude Code ReviewUpdated: 2025-11-27 Approved ✅Key Findings:
Minor Notes:
No critical issues found. |
Claude Code ReviewUpdated: $(date) ❌ Critical Issues Found
✋ Issues found |
rh12
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code + 1
refs: MBL-19480
affects: All
builds: All
release note: Introduced immersive experience for video player.
Screen Recording
Simulator.Screen.Recording.-.iPhone.16.Pro.-.2025-11-12.at.05.30.43.mov
Test Plan
Checklist