feat(web): enable Flutter Web (beta) — guard offline, add Build Web CI#55
Merged
Conversation
The app already compiles and boots on web; this makes it correct and keeps it that way. Web has no on-device filesystem, so the offline-save feature is hidden and guarded; everything else (browse, instant-stream + HQ playback via the HTML <video> element, Hive on IndexedDB, dio, WebSocket) works. - routes: nav refactored to a destinations list; the Offline tab is dropped on web (kIsWeb) instead of hard-coded indices. - video_list_tile: no "save offline" affordance on web. - websocket_provider: auto-offline never fires on web. - video_player_screen: skip the local-file (dart:io) playback path on web. - offline_service: downloadToDevice is a defensive no-op on web. - CI: add a Build Web job (ubuntu) so the web target stays green. - AGENTS.md: document web as a build target + the kIsWeb convention; re-synced all agent-rule copies. Verified: flutter analyze clean, 156 tests pass, `flutter build web` succeeds, and the bundle boots + renders in Chrome (setup screen, no console errors). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Turns on Flutter Web (beta) for the existing iOS app. It already compiled and booted on web (verified: built in ~36s, renders the setup screen in Chrome with no console errors) — this PR makes it correct and keeps it green in CI.
Web has no on-device filesystem, so the offline-save feature is hidden and guarded. Everything else works on the same codebase: browsing, instant-stream + HQ playback via the HTML
<video>element, Hive on IndexedDB, dio (XHR), and the WebSocket. Backend CORS is alreadyallow_origins=["*"], so browsers aren't blocked.Changes
routes.dart— nav refactored to a destinations list; the Offline tab is dropped on web (kIsWeb) instead of hard-coded indices.video_list_tile.dart— no "Save offline" affordance on web.websocket_provider.dart— auto-offline never fires on web.video_player_screen.dart— skip the local-file (dart:io) playback path on web.offline_service.dart—downloadToDeviceis a defensive no-op on web.kIsWebconvention; re-synced all agent-rule copies.Verification
flutter analyze --fatal-infos --fatal-warnings→ No issues;flutter test→ 156 passed;flutter build web→ succeeds; bundle boots + renders in Chrome.Not in this PR (follow-ups)
🤖 Generated with Claude Code