69 Commits

Author SHA1 Message Date
Maycon Santos 98a2ee7f04 Fix SSO login on ChromeOS by using Device Code Flow (#134)
* Fix SSO login on ChromeOS by using Device Code Flow

  ChromeOS runs Android apps in a container with separate network namespace,
  preventing the browser from reaching the localhost callback server used by
  PKCE flow. This causes "service not available" errors after authentication.

  Use Device Code Flow on ChromeOS (like Android TV) which uses polling
  instead of localhost callback. On ChromeOS, also auto-open the browser
  for a similar UX to PKCE while showing QR dialog as fallback.

* update submodule
v0.3.2
2026-01-26 19:54:00 +01:00
Diego Romar cfad8fdc3a Set max width to fragments (#133)
* Add max width constraint to fragment_server

* Make fragment_server scrollable if necessary

* Make dialog_confirm_change_server scrollable

* Set max width on ConfirmChangeServerDialog

* Set rounded corner radius for dialogs to 16dp

* Set rounded corner radius for dialogs to 28dp

To make it consistent across the app

* Use AlertDialogTheme in ChangeServerFragment dialogs

* Center text used in dialog_simple_alert_message

* Add default margin values for dialogs

Smaller screens use 16dp margin; anything
larger will use 56dp.

* Add max width and center_horizontal to Advanced fragment

* Add max width and center_horizontal to Profiles fragment

* Use wrap_content on ScrollView's layout_height

* Remove unused method to calculate max width on dialogs

* Add fragment_max_width to dimens.xml

Make use of its value in fragments advanced,
profile and server

This also fixes a bug where fragment_advanced was
not respecting the containing layout's max width
value (and making switches disappear in landscape)

* Add missing contentDescription to Use Netbird server button

* Add dialog max width to dimensions file

* Change ConstraintLayout in dialog files to be contained in LinearLayout

In order to apply layout_gravity to its children

* Change ConstraintLayout in fragment_advanced to be contained in LinearLayout

In order to apply layout_gravity to its children
2026-01-26 11:10:13 -03:00
Diego Romar ebc42aca45 Update peer list when peers tab opened (#126)
* Add abstract implementation of StateListener

* Add adapter to implement only StateListener

* Add ViewModel usage to PeersFragment

Updates the UI when the peers list change via
StateListener

* Remove unused code and references

* Add null check for model before unregistering service state listener

* Make UI state immutable

* Change exception message in Status.fromString

This code is throwing "Unknown status: Idle"
without reason

* Add Locale.ROOT when doing status.ToLowerCase()

Some locales might be turning lowercase i to
dotless i (ı)

* Skip null peer info or connStatus

When parsing PeerInfoArray to List<Peer>

* Move cleaning up stateListenerRegistry and serviceAccessor to onDetach event

* Reverse cleanup order

* Add Locale.ROOT usage to exception message
2026-01-26 11:09:07 -03:00
Diego Romar b70d57b02b Keep fragments from inflating repeatedly (#131)
* Keep fragments from inflating repeatedly

When tapping in a given option in Navigation
Drawer multiple times

* Return boolean onNavigationItemSelected

Indicating if the NavController handled
navigation to the fragment successfully
2026-01-26 11:08:26 -03:00
Diego Romar 43182b7e56 Update submodule to v0.63.0 (#128) v0.3.1 2026-01-16 18:15:16 -03:00
Zoltan Papp 4c6d95dc12 Update submodule to v0.61.0 (#124) v0.3.0 2025-12-29 19:48:24 +01:00
Zoltan Papp 28495ce3dc Add profile switch (#115)
Profile management system: add, switch, logout, and remove user profiles with validation and dialogs.
Route selection and management capabilities exposed for VPN routing control.
Profile menu item in navigation drawer displays the active profile.
2025-12-24 11:17:31 +01:00
Diego Romar 7fc281a379 Move high resolution images from drawables folder (#121)
They've been placed in their respective drawables folders for higher resolutions
2025-12-05 10:22:21 -03:00
shuuri-labs 2c52b83c64 Bump submodule version (#120) v0.2.4 2025-12-04 19:13:25 +01:00
Zoltan Papp 2536a835e4 Replace VPNServiceRepository with ServiceAccessor pattern (#114)
VPNServiceRepository created its own service binding which caused conflicts
when unbinding - it would disconnect other components relying on the service.

Now NetworksFragmentViewModel uses ServiceAccessor from MainActivity, which
maintains a single shared service binding across all components.
v0.2.3
2025-12-03 22:46:56 +01:00
Diego Romar a7be16204b Update submodule to tag v0.60.5 (#119) 2025-12-03 17:52:01 -03:00
Diego Romar 8ba078f0b1 Capture local listener reference to avoid race condition (#118) 2025-12-03 13:59:52 -03:00
Diego Romar bf4ece69cd bug: bottom dialog fragment attached not attached to activity (#117)
* Remove onClickListener from peersBtn

When HomeFragment is destroyed

* Remove unused imports

* Check if BottomDialogFragment is attached to Activity

When setting its onShowListener
2025-12-01 16:41:22 -03:00
Zoltan Papp f9376e3991 Allow http and https as url (#116) 2025-12-01 13:00:36 +01:00
shuuri-labs 267ace7964 Added 'TV is in beta' message to first install fragment (#113)
* Added 'TV is in beta' message to first install fragment
v0.2.2 v0.2.1.1
2025-11-27 13:58:46 +01:00
Zoltan Papp bb0d250681 Support 16Kb pages (#111) v0.2.1 2025-11-26 19:04:38 +01:00
Zoltan Papp 518b3a5fcb Remove route change notification UI elements (#110)
This restores the intent of PR #105 which removed the route change
notification feature. PR #100 accidentally reintroduced these elements
due to a force push that overwrote PR #105 changes."
v0.2.0
2025-11-26 17:44:26 +01:00
Zoltan Papp a66064783e Update submodule (#109) 2025-11-26 17:15:07 +01:00
Diego Romar 8dbfc8acf0 Use force relay connection by default (#108) 2025-11-25 13:13:23 -03:00
shuuri-labs 227979ce15 feat/add-android-tv-support (#100)
* feat/add-android-tv-support

Add android TV support with the following changes:
- Implement new URLOpener interface with updated open method that accepts UserCode
- Add logic to MainActivity.java to detect Android TV, adjust UI and SSO flow accordingly
- Add QRCodeDialog.java to handle QR code/user code display logic
- Updated relevant layout xml files
- Add TV banner icon

---------

Co-authored-by: Ashley Mensah <ashleymensah@Ashleys-MBP.fritz.box>
2025-11-25 16:25:20 +01:00
Maycon Santos d50164314d build debug bundles when pushing to main (#107) 2025-11-25 14:19:32 +01:00
Maycon Santos 1602f54125 Update Go setup and gomobile version in Android build action (#104)
* Update Go setup and gomobile version in Android build action

* Update netbird file configuration

* update submodule
2025-11-22 11:29:54 +01:00
Zoltan Papp 92627d5ccb Wide screen fixes (#106)
- Fix the background color of the peers view in the light theme.
- Extend the background mask.
- Set a maximum width for the peers button.
- Change the shadow of the peers button in the dark theme.
2025-11-21 21:19:49 +01:00
Zoltan Papp 84b0501598 Remove unnecessary "route changed" notification (#105) 2025-11-21 19:21:49 +01:00
Diego Romar 4ea63dfb28 allow device registration with setup keys (#101) 2025-11-21 18:29:23 +01:00