Dreamio WKWebView MVP shell
Created the first runnable Dreamio app shape: a thin iOS UIKit host with a single WKWebView that loads hosted Stremio Web, handles popup-style navigation in place, allows inline media playback, and gives the user a concrete real-device validation checklist.
Summary
The repository moved from planning-only files to an MVP iOS app scaffold. The app is intentionally narrow: it exists to prove whether hosted Stremio Web can support login, browsing, addon flows, and direct playback inside WKWebView on real iPhone and iPad hardware.
Changes Made
- Added
Dreamio.xcodeprojwith a single iOS application target. - Added a UIKit lifecycle with
AppDelegateandSceneDelegate. - Added
DreamioWebViewController, which loadshttps://web.stremio.com/in a configuredWKWebView. - Enabled inline media playback, JavaScript window opening, back-forward gestures, and a small load progress indicator.
- Added basic external URL handling and in-place handling for new-window flows.
- Added
README.mdwith run instructions and the MVP validation checklist.
Context
The source plan in /Users/kell/dreamio-plan.md recommends starting with hosted Stremio Web before bundling local assets. This implementation follows that gate exactly: no local Stremio Web fork, no native player bridge, no torrent engine, and no App Store positioning work.
Important Implementation Details
- The MVP URL is centralized in
DreamioWebViewController.Constants.stremioWebURL. WKUIDelegateloads targetless popup requests in the existing web view so auth or addon flows do not vanish.- Non-HTTP user-activated links such as
mailto:,tel:, andsms:open externally. - Orientation support includes portrait and landscape on iPhone, plus upside-down portrait on iPad.
- Code signing is left automatic with an empty development team, so Xcode can prompt for the correct personal or team signing identity.
Relevant Diff Snippets
The snippets below are rendered with Diffs when the document has network access, with plain-code fallback content retained in the page.
+++ Dreamio/DreamioWebViewController.swift
+ WKWebView configuration loads https://web.stremio.com/
+ Inline media playback is enabled.
+ Popup/new-window requests are loaded in the existing web view.
+ Basic load failure UI offers Retry.
+++ README.md
+ Added Xcode run instructions.
+ Added hosted web, login, addon, HLS, MP4, fullscreen, rotation, and relaunch validation checklist.
Expected Impact for End-Users
The user can now open the project in Xcode, install it on a real iOS device, and start testing whether Stremio Web is viable inside a private Dreamio shell. The app should feel like a focused wrapper, not a rewritten media application.
Validation
- Ran
plutil -lint Dreamio/Info.plist: passed. - Ran
plutil -lint Dreamio.xcodeproj/project.pbxproj: passed. - Checked local Swift availability with
swift --version: available. - Attempted to check Xcode build availability with
xcodebuild -version: blocked because the active developer directory is Command Line Tools, not full Xcode.
Issues, Limitations, and Mitigations
- The app has not been compiled on this machine because full Xcode is not selected. Mitigation: open the project in Xcode or switch
xcode-selectto a full Xcode install, then build on device. - No real-device playback gate has been passed yet. Mitigation: use the README checklist and record stream failures by protocol, container, codec, subtitles, HTTP status, and WebKit error.
- Beads Dolt sync could not pull because no remote is configured. Mitigation: this is documented in the handoff, and the local issue was still created and updated.
Follow-up Work
- Run the app on a real iPhone and iPad, then update the validation checklist with concrete results.
- Add a small diagnostics screen or log export if WebKit playback failures are hard to capture manually.
- Only after hosted viability passes, pin and evaluate bundled
stremio-webassets.