From 96c8bb5db1a2e0ced999a366e3cf28f9895ec39f Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Tue, 24 Mar 2026 21:51:35 +0100
Subject: [PATCH] feat: Bonjour auto-discovery + VPN IP field in connection flow

---
 lib/screens/settings_screen.dart |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart
index 0cfb0fc..2a41067 100644
--- a/lib/screens/settings_screen.dart
+++ b/lib/screens/settings_screen.dart
@@ -18,6 +18,7 @@
 class _SettingsScreenState extends ConsumerState<SettingsScreen> {
   final _formKey = GlobalKey<FormState>();
   late final TextEditingController _localHostController;
+  late final TextEditingController _vpnHostController;
   late final TextEditingController _remoteHostController;
   late final TextEditingController _portController;
   late final TextEditingController _macController;
@@ -30,6 +31,8 @@
     final config = ref.read(serverConfigProvider);
     _localHostController =
         TextEditingController(text: config?.localHost ?? '');
+    _vpnHostController =
+        TextEditingController(text: config?.vpnHost ?? '');
     _remoteHostController =
         TextEditingController(text: config?.host ?? '');
     _portController =
@@ -43,6 +46,7 @@
   @override
   void dispose() {
     _localHostController.dispose();
+    _vpnHostController.dispose();
     _remoteHostController.dispose();
     _portController.dispose();
     _macController.dispose();
@@ -59,6 +63,9 @@
       localHost: _localHostController.text.trim().isEmpty
           ? null
           : _localHostController.text.trim(),
+      vpnHost: _vpnHostController.text.trim().isEmpty
+          ? null
+          : _vpnHostController.text.trim(),
       macAddress: _macController.text.trim().isEmpty
           ? null
           : _macController.text.trim(),
@@ -153,6 +160,19 @@
               ),
               const SizedBox(height: 16),
 
+              // VPN address
+              Text('VPN Address',
+                  style: Theme.of(context).textTheme.bodyMedium),
+              const SizedBox(height: 4),
+              TextFormField(
+                controller: _vpnHostController,
+                decoration: const InputDecoration(
+                  hintText: '10.8.0.1 (OpenVPN static IP)',
+                ),
+                keyboardType: TextInputType.url,
+              ),
+              const SizedBox(height: 16),
+
               // Remote address
               Text('Remote Address',
                   style: Theme.of(context).textTheme.bodyMedium),

--
Gitblit v1.3.1