Implements Unbounded #8492
Conversation
Full feature implementation for the unbounded/broflake widget proxy: Go: FFI and mobile bindings for setUnboundedEnabled/isUnboundedEnabled, event subscription to forward connection state changes to Flutter. Flutter: Unbounded screen with interactive three-globe WebView showing animated arcs as censored users connect, share bandwidth toggle with optimistic update, Riverpod event pipeline from Go through to WebView JS, and geo-IP lookup for peer location visualization. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add info banner, status cards with live/total connection counts, auto-enable checkbox, and welcome dialog to Unbounded screen - Add unbounded stats provider to track active and total connections - Add new AppSetting fields: autoEnableUnbounded, unboundedWelcomeSeen, hideUnbounded with corresponding setters - Create Unbounded Settings sub-page with auto-enable and hide toggles - Add UnboundedSettingsScreen route and link from Settings page - Conditionally hide Unbounded tile when hideUnbounded is enabled - Remove stray root-level flags.dart and system_tray_notifier.dart Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds “Unbounded” (widget proxy) support end-to-end: new Go core APIs/events, Flutter settings + UI screen, and a WebView-based 3D globe visualization driven by connection events.
Changes:
- Introduces Go Core + FFI/mobile bindings for enabling/disabling Unbounded and emitting
unbounded-connectionevents. - Adds Flutter Unbounded screens (main + settings) and Riverpod event pipeline/stats plumbing.
- Updates routing, persistence (ObjectBox AppSetting fields), and assets/localization scaffolding.
Reviewed changes
Copilot reviewed 23 out of 25 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| pubspec.yaml | Registers assets/unbounded/ for new Unbounded assets. |
| pubspec.lock | Updates locked transitive versions/hashes. |
| lib/lantern/lantern_service.dart | Routes Unbounded enable/isEnabled calls to FFI vs platform services. |
| lib/lantern/lantern_platform_service.dart | Adds method-channel calls for Unbounded enable/isEnabled. |
| lib/lantern/lantern_generated_bindings.dart | Adds FFI symbols for setUnboundedEnabled/isUnboundedEnabled. |
| lib/lantern/lantern_ffi_service.dart | Implements Unbounded enable/isEnabled via FFI. |
| lib/lantern/lantern_core_service.dart | Extends core service interface with Unbounded APIs. |
| lib/features/unbounded/unbounded_settings.dart | New Unbounded settings screen (auto-enable/hide toggles). |
| lib/features/unbounded/unbounded.dart | New Unbounded main screen + WebView globe + stats UI. |
| lib/features/setting/setting.dart | Adds navigation tiles for Unbounded screen and Unbounded settings; hide toggle support. |
| lib/features/home/provider/app_setting_notifier.dart | Adds AppSetting mutations for Unbounded flags and enabling call-through. |
| lib/features/home/provider/app_event_notifier.g.dart | Riverpod generator output for new Unbounded stats listener provider. |
| lib/features/home/provider/app_event_notifier.dart | Adds Unbounded connection event parsing + stream provider + stats plumbing. |
| lib/core/services/db/objectbox.g.dart | Updates ObjectBox model code for new AppSetting fields. |
| lib/core/services/db/objectbox-model.json | Updates ObjectBox schema metadata for new AppSetting fields. |
| lib/core/router/router.gr.dart | Adds generated routes for Unbounded screens. |
| lib/core/router/router.dart | Registers /unbounded and /unbounded-settings routes. |
| lib/core/models/entity/app_setting_entity.dart | Persists new Unbounded-related boolean flags. |
| lantern-core/mobile/mobile.go | Adds gomobile exports for enabling/querying Unbounded. |
| lantern-core/ffi/ffi.go | Adds exported C FFI functions for enabling/querying Unbounded. |
| lantern-core/core.go | Adds Unbounded interface, enable/isEnabled, and forwards connection events to Flutter. |
| go.sum | Updates Go dependency sums (adds broflake, quic-go fork, etc.). |
| go.mod | Adds/updates Go deps and replaces (quic-go fork, go-nats replace, radiance update). |
| assets/unbounded/globe.html | Adds standalone globe HTML asset (Three.js/three-globe). |
| assets/locales/en.po | Adds new locale keys related to Unbounded. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
* added platfrom methods and refactor to improve maintainability * added localization and fixed UI issues * connect more dots * more localizetion * UI fixes * fix setting ui issue * Replace webview with widget
|
This PR should not be merged until the utils below the PRs are merged. |
|
This PR has been inactive for 31 days. Waiting on: @jigar-f It will be closed automatically in 7 days if no action is taken. |
|
@jay-418 How can i by pass this warning? |
|
This PR has been inactive for 30 days. Waiting on: @jigar-f It will be closed automatically in 7 days if no action is taken. |
|
This is waiting on other PRs |
Summary
setUnboundedEnabled/isUnboundedEnabled, event subscription forwarding connection state changes to FlutterDepends on:
🤖 Generated with Claude Code