Skip to content

feat(web): enable Flutter Web (beta) — guard offline, add Build Web CI#55

Merged
windoze95 merged 1 commit into
mainfrom
feature/web-beta
Jun 29, 2026
Merged

feat(web): enable Flutter Web (beta) — guard offline, add Build Web CI#55
windoze95 merged 1 commit into
mainfrom
feature/web-beta

Conversation

@windoze95

Copy link
Copy Markdown
Owner

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 already allow_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.dartdownloadToDevice is a defensive no-op on web.
  • CI — new Build Web job (ubuntu) so the web target stays green.
  • AGENTS.md — documents web as a build target + the kIsWeb convention; re-synced all agent-rule copies.

Verification

flutter analyze --fatal-infos --fatal-warnings → No issues; flutter test156 passed; flutter build web → succeeds; bundle boots + renders in Chrome.

Not in this PR (follow-ups)

  • Hosting/deploy (serve the bundle from the FastAPI container, or a static host).
  • Playback validation against a live backend in-browser.
  • Desktop/responsive UX polish.

🤖 Generated with Claude Code

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>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@windoze95 windoze95 merged commit 0591423 into main Jun 29, 2026
7 checks passed
@windoze95 windoze95 deleted the feature/web-beta branch June 29, 2026 05:04
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.

1 participant