From dde3b8d84e1cd01bd974fbeb72f517a8e497abb8 Mon Sep 17 00:00:00 2001
From: Nicolas Pomepuy <nicolas@videolabs.io>
Date: Tue, 28 Jan 2025 09:25:44 +0100
Subject: [PATCH 1/4] Rename the webserver module to remote-access-server

---
 application/app/build.gradle                  |  6 +--
 .../.gitignore                                |  0
 .../build.gradle                              |  2 +-
 .../consumer-rules.pro                        |  0
 .../gradle.properties                         |  0
 .../proguard-rules.pro                        |  0
 .../ExampleInstrumentedTest.kt                |  4 +-
 .../src/main/AndroidManifest.xml              |  0
 .../remoteaccessserver}/RemoteAccessOTP.kt    |  8 +--
 .../RemoteAccessRouting.kt                    | 24 ++++-----
 .../remoteaccessserver}/RemoteAccessServer.kt | 10 ++--
 .../RemoteAccessService.kt                    |  2 +-
 .../RemoteAccessSession.kt                    |  6 +--
 .../vlc/remoteaccessserver}/ServerStatus.kt   |  2 +-
 .../remoteaccessserver}/TranslationMapping.kt |  2 +-
 .../remoteaccess/RemoteAccessShareActivity.kt | 14 ++---
 .../adapters/ConnnectionAdapter.kt            | 10 ++--
 .../RemoteAccessOnboardingActivity.kt         | 28 +++++++++-
 .../RemoteAccessOnboardingContentFragment.kt  | 28 +++++++++-
 .../RemoteAccessOnboardingFragment.kt         |  6 +--
 .../RemoteAccessOnboardingHowFragment.kt      | 28 +++++++++-
 .../RemoteAccessOnboardingOtpFragment.kt      | 30 +++++++++--
 .../RemoteAccessOnboardingSslFragment.kt      | 28 +++++++++-
 .../RemoteAccessOnboardingWelcomeFragment.kt  | 53 +++++++++++++++++++
 .../ssl/SecretGenerator.kt                    | 30 ++++++++---
 .../remoteaccessserver}/utils/CypherUtils.kt  |  4 +-
 .../utils/MediaZipUtils.kt                    |  2 +-
 .../utils/PreferenceUtil.kt                   |  2 +-
 .../RemoteAccessOnboardingViewModel.kt        | 34 ++++++++++++
 .../websockets/RemoteAccessWebSockets.kt      | 14 ++---
 .../websockets/WSAuthTicket.kt                |  2 +-
 .../websockets/WSIncomingMessage.kt           |  2 +-
 .../remote_access_onboarding_content.xml      |  0
 .../remote_access_onboarding_how.xml          |  0
 .../remote_access_onboarding_otp.xml          |  0
 .../remote_access_onboarding_ssl.xml          |  0
 .../remote_access_onboarding_welcome.xml      |  0
 .../layout/remote_access_connection_item.xml  |  0
 .../remote_access_onboarding_content.xml      |  0
 .../layout/remote_access_onboarding_how.xml   |  0
 .../layout/remote_access_onboarding_otp.xml   |  0
 .../layout/remote_access_onboarding_ssl.xml   |  0
 .../remote_access_onboarding_welcome.xml      |  0
 .../layout/remote_access_share_activity.xml   |  0
 .../src/main/res/menu/remote_access_share.xml |  0
 .../remoteaccessserver}/ExampleUnitTest.kt    |  2 +-
 .../java/org/videolan/resources/Constants.kt  |  4 +-
 .../src/org/videolan/vlc/StartActivity.kt     |  2 +-
 .../RemoteAccessOnboardingWelcomeFragment.kt  | 29 ----------
 .../RemoteAccessOnboardingViewModel.kt        | 10 ----
 settings.gradle                               |  2 +-
 51 files changed, 307 insertions(+), 123 deletions(-)
 rename application/{webserver => remote-access-server}/.gitignore (100%)
 rename application/{webserver => remote-access-server}/build.gradle (98%)
 rename application/{webserver => remote-access-server}/consumer-rules.pro (100%)
 rename application/{webserver => remote-access-server}/gradle.properties (100%)
 rename application/{webserver => remote-access-server}/proguard-rules.pro (100%)
 rename application/{webserver/src/androidTest/java/org/videolan/vlc/webserver => remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver}/ExampleInstrumentedTest.kt (92%)
 rename application/{webserver => remote-access-server}/src/main/AndroidManifest.xml (100%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessOTP.kt (94%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessRouting.kt (98%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessServer.kt (99%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessService.kt (99%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/RemoteAccessSession.kt (96%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/ServerStatus.kt (96%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/TranslationMapping.kt (99%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/RemoteAccessShareActivity.kt (95%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/adapters/ConnnectionAdapter.kt (86%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt (71%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt (72%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt (91%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt (79%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt (81%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt (71%)
 create mode 100644 application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/ssl/SecretGenerator.kt (93%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/utils/CypherUtils.kt (93%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/utils/MediaZipUtils.kt (99%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/utils/PreferenceUtil.kt (97%)
 create mode 100644 application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/websockets/RemoteAccessWebSockets.kt (97%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/websockets/WSAuthTicket.kt (95%)
 rename application/{webserver/src/main/java/org/videolan/vlc/webserver => remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver}/websockets/WSIncomingMessage.kt (97%)
 rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_content.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_how.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_otp.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_ssl.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout-land/remote_access_onboarding_welcome.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_connection_item.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_content.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_how.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_otp.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_ssl.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_onboarding_welcome.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/layout/remote_access_share_activity.xml (100%)
 rename application/{webserver => remote-access-server}/src/main/res/menu/remote_access_share.xml (100%)
 rename application/{webserver/src/test/java/org/videolan/vlc/webserver => remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver}/ExampleUnitTest.kt (96%)
 delete mode 100644 application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt
 delete mode 100644 application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt

diff --git a/application/app/build.gradle b/application/app/build.gradle
index 71827eb569..be1e8e0d55 100644
--- a/application/app/build.gradle
+++ b/application/app/build.gradle
@@ -162,12 +162,12 @@ android {
 dependencies {
     implementation project(':application:vlc-android')
     implementation project(':application:television')
-    devImplementation project(':application:webserver')
-    debugImplementation project(':application:webserver')
+    devImplementation project(':application:remote-access-server')
+    debugImplementation project(':application:remote-access-server')
     releaseImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion"
     vlcBundleImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion"
     testImplementation project(':application:television')
-    testImplementation project(':application:webserver')
+    testImplementation project(':application:remote-access-server')
 
     androidTestImplementation "androidx.test.espresso:espresso-contrib:$rootProject.espressoVersion"
     androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.espressoVersion"
diff --git a/application/webserver/.gitignore b/application/remote-access-server/.gitignore
similarity index 100%
rename from application/webserver/.gitignore
rename to application/remote-access-server/.gitignore
diff --git a/application/webserver/build.gradle b/application/remote-access-server/build.gradle
similarity index 98%
rename from application/webserver/build.gradle
rename to application/remote-access-server/build.gradle
index 589bf32145..c6c72aecd7 100644
--- a/application/webserver/build.gradle
+++ b/application/remote-access-server/build.gradle
@@ -8,7 +8,7 @@ ext {
     library_version = "$rootProject.ext.remoteAccessVersion"
 }
 android {
-    namespace 'org.videolan.vlc.webserver'
+    namespace 'org.videolan.vlc.remoteaccessserver'
 
     dataBinding {
         enabled = true
diff --git a/application/webserver/consumer-rules.pro b/application/remote-access-server/consumer-rules.pro
similarity index 100%
rename from application/webserver/consumer-rules.pro
rename to application/remote-access-server/consumer-rules.pro
diff --git a/application/webserver/gradle.properties b/application/remote-access-server/gradle.properties
similarity index 100%
rename from application/webserver/gradle.properties
rename to application/remote-access-server/gradle.properties
diff --git a/application/webserver/proguard-rules.pro b/application/remote-access-server/proguard-rules.pro
similarity index 100%
rename from application/webserver/proguard-rules.pro
rename to application/remote-access-server/proguard-rules.pro
diff --git a/application/webserver/src/androidTest/java/org/videolan/vlc/webserver/ExampleInstrumentedTest.kt b/application/remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver/ExampleInstrumentedTest.kt
similarity index 92%
rename from application/webserver/src/androidTest/java/org/videolan/vlc/webserver/ExampleInstrumentedTest.kt
rename to application/remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver/ExampleInstrumentedTest.kt
index 38fa1fa924..fe7775ae2c 100644
--- a/application/webserver/src/androidTest/java/org/videolan/vlc/webserver/ExampleInstrumentedTest.kt
+++ b/application/remote-access-server/src/androidTest/java/org/videolan/vlc/remoteaccessserver/ExampleInstrumentedTest.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -43,6 +43,6 @@ class ExampleInstrumentedTest {
     fun useAppContext() {
         // Context of the app under test.
         val appContext = InstrumentationRegistry.getInstrumentation().targetContext
-        assertEquals("org.videolan.vlc.webserver.test", appContext.packageName)
+        assertEquals("org.videolan.vlc.remoteaccessserver.test", appContext.packageName)
     }
 }
\ No newline at end of file
diff --git a/application/webserver/src/main/AndroidManifest.xml b/application/remote-access-server/src/main/AndroidManifest.xml
similarity index 100%
rename from application/webserver/src/main/AndroidManifest.xml
rename to application/remote-access-server/src/main/AndroidManifest.xml
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessOTP.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessOTP.kt
similarity index 94%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessOTP.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessOTP.kt
index e12bb1c809..9dd8bd91b2 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessOTP.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessOTP.kt
@@ -2,7 +2,7 @@
  * ************************************************************************
  *  RemoteAccessOTP.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,14 +22,14 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import android.content.Context
 import androidx.core.app.NotificationManagerCompat
 import org.videolan.vlc.gui.helpers.NotificationHelper
 import org.videolan.vlc.gui.helpers.REMOTE_ACCESS_CODE_ID
-import org.videolan.vlc.webserver.ssl.SecretGenerator
-import org.videolan.vlc.webserver.utils.CypherUtils
+import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator
+import org.videolan.vlc.remoteaccessserver.utils.CypherUtils
 import java.security.SecureRandom
 
 
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessRouting.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt
similarity index 98%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessRouting.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt
index 61f64bae5f..9e190000fe 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessRouting.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt
@@ -2,7 +2,7 @@
  * ************************************************************************
  *  RemoteAccessRouting.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import android.content.Context
 import android.content.res.Resources
@@ -131,16 +131,16 @@ import org.videolan.vlc.util.slugify
 import org.videolan.vlc.util.toByteArray
 import org.videolan.vlc.viewmodels.browser.FavoritesProvider
 import org.videolan.vlc.viewmodels.browser.PathOperationDelegate
-import org.videolan.vlc.webserver.RemoteAccessServer.Companion.getServerFiles
-import org.videolan.vlc.webserver.RemoteAccessServer.PlayerStatus
-import org.videolan.vlc.webserver.RemoteAccessSession.verifyLogin
-import org.videolan.vlc.webserver.utils.MediaZipUtils
-import org.videolan.vlc.webserver.utils.serveAudios
-import org.videolan.vlc.webserver.utils.servePlaylists
-import org.videolan.vlc.webserver.utils.serveSearch
-import org.videolan.vlc.webserver.utils.serveVideos
-import org.videolan.vlc.webserver.websockets.RemoteAccessWebSockets
-import org.videolan.vlc.webserver.websockets.WSIncomingMessage
+import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.Companion.getServerFiles
+import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.PlayerStatus
+import org.videolan.vlc.remoteaccessserver.RemoteAccessSession.verifyLogin
+import org.videolan.vlc.remoteaccessserver.utils.MediaZipUtils
+import org.videolan.vlc.remoteaccessserver.utils.serveAudios
+import org.videolan.vlc.remoteaccessserver.utils.servePlaylists
+import org.videolan.vlc.remoteaccessserver.utils.serveSearch
+import org.videolan.vlc.remoteaccessserver.utils.serveVideos
+import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets
+import org.videolan.vlc.remoteaccessserver.websockets.WSIncomingMessage
 import java.io.BufferedWriter
 import java.io.File
 import java.io.FileNotFoundException
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessServer.kt
similarity index 99%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessServer.kt
index a55bd6b278..64f743e7cd 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessServer.kt
@@ -2,7 +2,7 @@
  * ************************************************************************
  *  RemoteAccessServer.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import android.annotation.SuppressLint
 import android.content.Context
@@ -112,9 +112,9 @@ import org.videolan.vlc.viewmodels.CallBackDelegate
 import org.videolan.vlc.viewmodels.ICallBackHandler
 import org.videolan.vlc.viewmodels.browser.IPathOperationDelegate
 import org.videolan.vlc.viewmodels.browser.PathOperationDelegate
-import org.videolan.vlc.webserver.ssl.SecretGenerator
-import org.videolan.vlc.webserver.websockets.RemoteAccessWebSockets
-import org.videolan.vlc.webserver.websockets.RemoteAccessWebSockets.setupWebSockets
+import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator
+import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets
+import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets.setupWebSockets
 import java.io.File
 import java.math.BigInteger
 import java.net.InetAddress
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessService.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt
similarity index 99%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessService.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt
index 2020f5f4be..690c25f6d0 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessService.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt
@@ -17,7 +17,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import android.annotation.SuppressLint
 import android.app.ForegroundServiceStartNotAllowedException
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessSession.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessSession.kt
similarity index 96%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessSession.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessSession.kt
index 47e88342a8..9b67122417 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessSession.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessSession.kt
@@ -2,7 +2,7 @@
  * ************************************************************************
  *  RemoteAccessSession.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import android.content.SharedPreferences
 import com.squareup.moshi.JsonAdapter
@@ -36,7 +36,7 @@ import io.ktor.server.response.respond
 import io.ktor.server.sessions.sessions
 import io.ktor.util.pipeline.PipelineContext
 import org.videolan.tools.putSingle
-import org.videolan.vlc.webserver.ssl.SecretGenerator
+import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator
 
 private const val VALID_SESSIONS = "valid_sessions"
 
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/ServerStatus.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ServerStatus.kt
similarity index 96%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/ServerStatus.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ServerStatus.kt
index 31a14e8f25..665415baec 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/ServerStatus.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ServerStatus.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 /**
  * Describe the sharing server status
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/TranslationMapping.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/TranslationMapping.kt
similarity index 99%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/TranslationMapping.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/TranslationMapping.kt
index 900348ce27..a1c0e81763 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/TranslationMapping.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/TranslationMapping.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import android.content.Context
 import android.os.Build
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/RemoteAccessShareActivity.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/RemoteAccessShareActivity.kt
similarity index 95%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/RemoteAccessShareActivity.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/RemoteAccessShareActivity.kt
index d8ee9f8964..dd2e30d8ef 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/RemoteAccessShareActivity.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/RemoteAccessShareActivity.kt
@@ -2,7 +2,7 @@
  * ************************************************************************
  *  RemoteAccessShareActivity.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.gui.remoteaccess
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess
 
 import android.content.Intent
 import android.os.Bundle
@@ -49,11 +49,11 @@ import org.videolan.tools.setVisible
 import org.videolan.vlc.gui.BaseActivity
 import org.videolan.vlc.util.UrlUtils
 import org.videolan.vlc.util.share
-import org.videolan.vlc.webserver.R
-import org.videolan.vlc.webserver.RemoteAccessServer
-import org.videolan.vlc.webserver.ServerStatus
-import org.videolan.vlc.webserver.databinding.RemoteAccessShareActivityBinding
-import org.videolan.vlc.webserver.gui.remoteaccess.adapters.ConnnectionAdapter
+import org.videolan.vlc.remoteaccessserver.R
+import org.videolan.vlc.remoteaccessserver.RemoteAccessServer
+import org.videolan.vlc.remoteaccessserver.ServerStatus
+import org.videolan.vlc.remoteaccessserver.databinding.RemoteAccessShareActivityBinding
+import org.videolan.vlc.remoteaccessserver.gui.remoteaccess.adapters.ConnnectionAdapter
 
 
 /**
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt
similarity index 86%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt
index 05115cec75..824a51c88e 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/adapters/ConnnectionAdapter.kt
@@ -1,8 +1,8 @@
 /*
  * ************************************************************************
- *  ConnectionAdapter.kt
+ *  ConnnectionAdapter.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,14 +22,14 @@
  *
  */
 
-package org.videolan.vlc.webserver.gui.remoteaccess.adapters
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.adapters
 
 import android.view.LayoutInflater
 import android.view.ViewGroup
 import androidx.recyclerview.widget.RecyclerView
 import org.videolan.vlc.gui.helpers.SelectorViewHolder
-import org.videolan.vlc.webserver.RemoteAccessServer
-import org.videolan.vlc.webserver.databinding.RemoteAccessConnectionItemBinding
+import org.videolan.vlc.remoteaccessserver.RemoteAccessServer
+import org.videolan.vlc.remoteaccessserver.databinding.RemoteAccessConnectionItemBinding
 
 class ConnnectionAdapter(private val layoutInflater: LayoutInflater, var connections:List<RemoteAccessServer.RemoteAccessConnection>) : RecyclerView.Adapter<ConnnectionAdapter.ViewHolder>() {
 
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt
similarity index 71%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt
index d452b8588a..3c89829665 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt
@@ -1,4 +1,28 @@
-package org.videolan.vlc.webserver.gui.remoteaccess.onboarding
+/*
+ * ************************************************************************
+ *  RemoteAccessOnboardingActivity.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
 
 import android.os.Bundle
 import android.view.View
@@ -8,7 +32,7 @@ import androidx.appcompat.app.AppCompatActivity
 import androidx.fragment.app.commit
 import org.videolan.tools.setGone
 import org.videolan.vlc.R
-import org.videolan.vlc.webserver.viewmodels.RemoteAccessOnboardingViewModel
+import org.videolan.vlc.remoteaccessserver.viewmodels.RemoteAccessOnboardingViewModel
 
 
 class RemoteAccessOnboardingActivity : AppCompatActivity(), OnboardingFragmentListener {
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt
similarity index 72%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt
index 78b459489c..7b308a36d1 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingContentFragment.kt
@@ -1,4 +1,28 @@
-package org.videolan.vlc.webserver.gui.remoteaccess.onboarding
+/*
+ * ************************************************************************
+ *  RemoteAccessOnboardingContentFragment.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
 
 import android.animation.Animator
 import android.animation.AnimatorSet
@@ -17,7 +41,7 @@ import androidx.lifecycle.repeatOnLifecycle
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import org.videolan.vlc.gui.view.MiniVisualizer
-import org.videolan.vlc.webserver.R
+import org.videolan.vlc.remoteaccessserver.R
 
 
 class RemoteAccessOnboardingContentFragment : RemoteAccessOnboardingFragment() {
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt
similarity index 91%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt
index c18053a809..4d72914cfc 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingFragment.kt
@@ -1,8 +1,8 @@
 /*
  * ************************************************************************
- *  OnboardingFragment.kt
+ *  RemoteAccessOnboardingFragment.kt
  * *************************************************************************
- * Copyright © 2021 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.gui.remoteaccess.onboarding
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
 
 import android.view.View
 import android.view.accessibility.AccessibilityEvent
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt
similarity index 79%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt
index 19374dae79..5759d85aa3 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingHowFragment.kt
@@ -1,4 +1,28 @@
-package org.videolan.vlc.webserver.gui.remoteaccess.onboarding
+/*
+ * ************************************************************************
+ *  RemoteAccessOnboardingHowFragment.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
 
 import android.animation.AnimatorSet
 import android.animation.ObjectAnimator
@@ -24,7 +48,7 @@ import org.videolan.tools.dp
 import org.videolan.tools.setGone
 import org.videolan.tools.setVisible
 import org.videolan.vlc.gui.view.MiniVisualizer
-import org.videolan.vlc.webserver.R
+import org.videolan.vlc.remoteaccessserver.R
 
 class RemoteAccessOnboardingHowFragment : RemoteAccessOnboardingFragment() {
     private lateinit var vizu: MiniVisualizer
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt
similarity index 81%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt
index 3b19c93a28..fa6b651314 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingOtpFragment.kt
@@ -1,4 +1,28 @@
-package org.videolan.vlc.webserver.gui.remoteaccess.onboarding
+/*
+ * ************************************************************************
+ *  RemoteAccessOnboardingOtpFragment.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
 
 import android.animation.Animator
 import android.animation.AnimatorSet
@@ -21,8 +45,8 @@ import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import org.videolan.tools.Settings
 import org.videolan.tools.dp
-import org.videolan.vlc.webserver.R
-import org.videolan.vlc.webserver.RemoteAccessOTP
+import org.videolan.vlc.remoteaccessserver.R
+import org.videolan.vlc.remoteaccessserver.RemoteAccessOTP
 
 
 class RemoteAccessOnboardingOtpFragment : RemoteAccessOnboardingFragment() {
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt
similarity index 71%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt
index 62f1004862..619e698d35 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingSslFragment.kt
@@ -1,4 +1,28 @@
-package org.videolan.vlc.webserver.gui.remoteaccess.onboarding
+/*
+ * ************************************************************************
+ *  RemoteAccessOnboardingSslFragment.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
 
 import android.animation.AnimatorSet
 import android.animation.ObjectAnimator
@@ -13,7 +37,7 @@ import android.widget.TextView
 import androidx.core.animation.doOnRepeat
 import androidx.core.content.ContextCompat
 import org.videolan.tools.Settings
-import org.videolan.vlc.webserver.R
+import org.videolan.vlc.remoteaccessserver.R
 import java.security.SecureRandom
 
 class RemoteAccessOnboardingSslFragment : RemoteAccessOnboardingFragment() {
diff --git a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt
new file mode 100644
index 0000000000..e31458e429
--- /dev/null
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt
@@ -0,0 +1,53 @@
+/*
+ * ************************************************************************
+ *  RemoteAccessOnboardingWelcomeFragment.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import org.videolan.vlc.remoteaccessserver.R
+
+class RemoteAccessOnboardingWelcomeFragment : RemoteAccessOnboardingFragment() {
+    private lateinit var titleView: TextView
+
+    override fun getDefaultViewForTalkback() = titleView
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+        return inflater.inflate(R.layout.remote_access_onboarding_welcome, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        titleView = view.findViewById(R.id.welcome_title)
+    }
+
+    companion object {
+        fun newInstance(): RemoteAccessOnboardingWelcomeFragment {
+            return RemoteAccessOnboardingWelcomeFragment()
+        }
+    }
+}
\ No newline at end of file
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/ssl/SecretGenerator.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ssl/SecretGenerator.kt
similarity index 93%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/ssl/SecretGenerator.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ssl/SecretGenerator.kt
index 78296b6472..a709b00959 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/ssl/SecretGenerator.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/ssl/SecretGenerator.kt
@@ -1,11 +1,27 @@
 /*
-MIT License: https://opensource.org/licenses/MIT
-Copyright 2017 Diederik Hattingh
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-package org.videolan.vlc.webserver.ssl
+ * ************************************************************************
+ *  SecretGenerator.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+package org.videolan.vlc.remoteaccessserver.ssl
 
 import android.annotation.SuppressLint
 import android.content.Context
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/CypherUtils.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/CypherUtils.kt
similarity index 93%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/utils/CypherUtils.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/CypherUtils.kt
index d257d8d648..0b738579f5 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/CypherUtils.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/CypherUtils.kt
@@ -2,7 +2,7 @@
  * ************************************************************************
  *  CypherUtils.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.utils
+package org.videolan.vlc.remoteaccessserver.utils
 
 import java.security.MessageDigest
 
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/MediaZipUtils.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/MediaZipUtils.kt
similarity index 99%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/utils/MediaZipUtils.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/MediaZipUtils.kt
index 3eedb7f056..7f04b99b9b 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/MediaZipUtils.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/MediaZipUtils.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.utils
+package org.videolan.vlc.remoteaccessserver.utils
 
 import org.videolan.medialibrary.interfaces.Medialibrary
 import org.videolan.medialibrary.interfaces.media.*
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/PreferenceUtil.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/PreferenceUtil.kt
similarity index 97%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/utils/PreferenceUtil.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/PreferenceUtil.kt
index f72a3cd904..5e4a39e6ba 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/utils/PreferenceUtil.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/utils/PreferenceUtil.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.utils
+package org.videolan.vlc.remoteaccessserver.utils
 
 import android.content.Context
 import android.content.SharedPreferences
diff --git a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt
new file mode 100644
index 0000000000..a1956cfd88
--- /dev/null
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/viewmodels/RemoteAccessOnboardingViewModel.kt
@@ -0,0 +1,34 @@
+/*
+ * ************************************************************************
+ *  RemoteAccessOnboardingViewModel.kt
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+package org.videolan.vlc.remoteaccessserver.viewmodels
+
+import androidx.lifecycle.ViewModel
+import org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding.FragmentName
+
+class RemoteAccessOnboardingViewModel : ViewModel() {
+
+    var currentFragment = FragmentName.WELCOME
+}
+
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/RemoteAccessWebSockets.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/RemoteAccessWebSockets.kt
similarity index 97%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/RemoteAccessWebSockets.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/RemoteAccessWebSockets.kt
index 9552c8b4d8..df3071f966 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/RemoteAccessWebSockets.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/RemoteAccessWebSockets.kt
@@ -2,7 +2,7 @@
  * ************************************************************************
  *  RemoteAccessWebSockets.kt
  * *************************************************************************
- * Copyright © 2023 VLC authors and VideoLAN
+ * Copyright © 2025 VLC authors and VideoLAN
  * Author: Nicolas POMEPUY
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.websockets
+package org.videolan.vlc.remoteaccessserver.websockets
 
 import android.content.Context
 import android.content.SharedPreferences
@@ -47,11 +47,11 @@ import org.videolan.tools.REMOTE_ACCESS_PLAYBACK_CONTROL
 import org.videolan.vlc.PlaybackService
 import org.videolan.vlc.R
 import org.videolan.vlc.gui.video.VideoPlayerActivity
-import org.videolan.vlc.webserver.BuildConfig
-import org.videolan.vlc.webserver.RemoteAccessServer
-import org.videolan.vlc.webserver.convertToJson
-import org.videolan.vlc.webserver.ssl.SecretGenerator
-import org.videolan.vlc.webserver.websockets.IncomingMessageType.*
+import org.videolan.vlc.remoteaccessserver.BuildConfig
+import org.videolan.vlc.remoteaccessserver.RemoteAccessServer
+import org.videolan.vlc.remoteaccessserver.convertToJson
+import org.videolan.vlc.remoteaccessserver.ssl.SecretGenerator
+import org.videolan.vlc.remoteaccessserver.websockets.IncomingMessageType.*
 import java.util.Calendar
 import java.util.Collections
 import java.util.concurrent.ConcurrentHashMap
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSAuthTicket.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSAuthTicket.kt
similarity index 95%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSAuthTicket.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSAuthTicket.kt
index 4bc497d717..65a9811104 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSAuthTicket.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSAuthTicket.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.websockets
+package org.videolan.vlc.remoteaccessserver.websockets
 
 data class WSAuthTicket(
             val id: String,
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSIncomingMessage.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSIncomingMessage.kt
similarity index 97%
rename from application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSIncomingMessage.kt
rename to application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSIncomingMessage.kt
index fbd8311bca..a5286b2e38 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/websockets/WSIncomingMessage.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/websockets/WSIncomingMessage.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver.websockets
+package org.videolan.vlc.remoteaccessserver.websockets
 
 data class WSIncomingMessage(
             val message: String,
diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_content.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_content.xml
similarity index 100%
rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_content.xml
rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_content.xml
diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_how.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_how.xml
similarity index 100%
rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_how.xml
rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_how.xml
diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_otp.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_otp.xml
similarity index 100%
rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_otp.xml
rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_otp.xml
diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_ssl.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_ssl.xml
similarity index 100%
rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_ssl.xml
rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_ssl.xml
diff --git a/application/webserver/src/main/res/layout-land/remote_access_onboarding_welcome.xml b/application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_welcome.xml
similarity index 100%
rename from application/webserver/src/main/res/layout-land/remote_access_onboarding_welcome.xml
rename to application/remote-access-server/src/main/res/layout-land/remote_access_onboarding_welcome.xml
diff --git a/application/webserver/src/main/res/layout/remote_access_connection_item.xml b/application/remote-access-server/src/main/res/layout/remote_access_connection_item.xml
similarity index 100%
rename from application/webserver/src/main/res/layout/remote_access_connection_item.xml
rename to application/remote-access-server/src/main/res/layout/remote_access_connection_item.xml
diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_content.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_content.xml
similarity index 100%
rename from application/webserver/src/main/res/layout/remote_access_onboarding_content.xml
rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_content.xml
diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_how.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_how.xml
similarity index 100%
rename from application/webserver/src/main/res/layout/remote_access_onboarding_how.xml
rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_how.xml
diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_otp.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_otp.xml
similarity index 100%
rename from application/webserver/src/main/res/layout/remote_access_onboarding_otp.xml
rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_otp.xml
diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_ssl.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_ssl.xml
similarity index 100%
rename from application/webserver/src/main/res/layout/remote_access_onboarding_ssl.xml
rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_ssl.xml
diff --git a/application/webserver/src/main/res/layout/remote_access_onboarding_welcome.xml b/application/remote-access-server/src/main/res/layout/remote_access_onboarding_welcome.xml
similarity index 100%
rename from application/webserver/src/main/res/layout/remote_access_onboarding_welcome.xml
rename to application/remote-access-server/src/main/res/layout/remote_access_onboarding_welcome.xml
diff --git a/application/webserver/src/main/res/layout/remote_access_share_activity.xml b/application/remote-access-server/src/main/res/layout/remote_access_share_activity.xml
similarity index 100%
rename from application/webserver/src/main/res/layout/remote_access_share_activity.xml
rename to application/remote-access-server/src/main/res/layout/remote_access_share_activity.xml
diff --git a/application/webserver/src/main/res/menu/remote_access_share.xml b/application/remote-access-server/src/main/res/menu/remote_access_share.xml
similarity index 100%
rename from application/webserver/src/main/res/menu/remote_access_share.xml
rename to application/remote-access-server/src/main/res/menu/remote_access_share.xml
diff --git a/application/webserver/src/test/java/org/videolan/vlc/webserver/ExampleUnitTest.kt b/application/remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver/ExampleUnitTest.kt
similarity index 96%
rename from application/webserver/src/test/java/org/videolan/vlc/webserver/ExampleUnitTest.kt
rename to application/remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver/ExampleUnitTest.kt
index 06a863ca0f..4ff66ac080 100644
--- a/application/webserver/src/test/java/org/videolan/vlc/webserver/ExampleUnitTest.kt
+++ b/application/remote-access-server/src/test/java/org/videolan/vlc/remoteaccessserver/ExampleUnitTest.kt
@@ -22,7 +22,7 @@
  *
  */
 
-package org.videolan.vlc.webserver
+package org.videolan.vlc.remoteaccessserver
 
 import org.junit.Test
 
diff --git a/application/resources/src/main/java/org/videolan/resources/Constants.kt b/application/resources/src/main/java/org/videolan/resources/Constants.kt
index 75b32e289a..0f7812e368 100644
--- a/application/resources/src/main/java/org/videolan/resources/Constants.kt
+++ b/application/resources/src/main/java/org/videolan/resources/Constants.kt
@@ -243,8 +243,8 @@ const val MOVIEPEDIA_ACTIVITY = "org.videolan.moviepedia.ui.MoviepediaActivity"
 const val TV_AUDIOPLAYER_ACTIVITY = "org.videolan.television.ui.audioplayer.AudioPlayerActivity"
 const val MEDIAPARSING_SERVICE = "org.videolan.vlc.MediaParsingService"
 const val TV_ONBOARDING_ACTIVITY = "org.videolan.television.ui.OnboardingActivity"
-const val REMOTE_ACCESS_SERVICE = "org.videolan.vlc.webserver.RemoteAccessService"
-const val REMOTE_ACCESS_ONBOARDING = "org.videolan.vlc.webserver.gui.remoteaccess.onboarding.RemoteAccessOnboardingActivity"
+const val REMOTE_ACCESS_SERVICE = "org.videolan.vlc.remoteaccessserver.RemoteAccessService"
+const val REMOTE_ACCESS_ONBOARDING = "org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding.RemoteAccessOnboardingActivity"
 
 const val ROOM_DATABASE = "/vlc_database.zip"
 const val EXPORT_SETTINGS_FILE = "/vlc_exported_settings.json"
\ No newline at end of file
diff --git a/application/vlc-android/src/org/videolan/vlc/StartActivity.kt b/application/vlc-android/src/org/videolan/vlc/StartActivity.kt
index c73e4ffc17..6d13f85efd 100644
--- a/application/vlc-android/src/org/videolan/vlc/StartActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/StartActivity.kt
@@ -211,7 +211,7 @@ class StartActivity : FragmentActivity() {
                     }
                 }
             } else if(action != null && action== "vlc.remoteaccess.share") {
-                startActivity(Intent().apply { component = ComponentName(this@StartActivity, "org.videolan.vlc.webserver.gui.remoteaccess.RemoteAccessShareActivity") })
+                startActivity(Intent().apply { component = ComponentName(this@StartActivity, "org.videolan.vlc.remoteaccessserver.gui.remoteaccess.RemoteAccessShareActivity") })
             } else {
                 val target = idFromShortcut
                 val service = PlaybackService.instance
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt b/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt
deleted file mode 100644
index 66162816a3..0000000000
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingWelcomeFragment.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.videolan.vlc.webserver.gui.remoteaccess.onboarding
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.TextView
-import org.videolan.vlc.webserver.R
-
-class RemoteAccessOnboardingWelcomeFragment : RemoteAccessOnboardingFragment() {
-    private lateinit var titleView: TextView
-
-    override fun getDefaultViewForTalkback() = titleView
-
-    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
-        return inflater.inflate(R.layout.remote_access_onboarding_welcome, container, false)
-    }
-
-    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
-        super.onViewCreated(view, savedInstanceState)
-        titleView = view.findViewById(R.id.welcome_title)
-    }
-
-    companion object {
-        fun newInstance(): RemoteAccessOnboardingWelcomeFragment {
-            return RemoteAccessOnboardingWelcomeFragment()
-        }
-    }
-}
\ No newline at end of file
diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt b/application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt
deleted file mode 100644
index 0dbd6b110e..0000000000
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/viewmodels/RemoteAccessOnboardingViewModel.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.videolan.vlc.webserver.viewmodels
-
-import androidx.lifecycle.ViewModel
-import org.videolan.vlc.webserver.gui.remoteaccess.onboarding.FragmentName
-
-class RemoteAccessOnboardingViewModel : ViewModel() {
-
-    var currentFragment = FragmentName.WELCOME
-}
-
diff --git a/settings.gradle b/settings.gradle
index a90303ead3..c7fa53916b 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,4 @@
 include ':libvlcjni:libvlc', ':medialibrary'
-include ':application:tools', ':application:resources', ':application:mediadb', ':application:app', ':application:live-plot-graph', ':application:television', ':application:donations', ':application:webserver'
+include ':application:tools', ':application:resources', ':application:mediadb', ':application:app', ':application:live-plot-graph', ':application:television', ':application:donations', ':application:remote-access-server'
 include ':application:vlc-android'
 include ':application:moviepedia'
-- 
GitLab


From f0ee7f30a52c2a21f4452984c9b9ab92d37e8a1b Mon Sep 17 00:00:00 2001
From: Nicolas Pomepuy <nicolas@videolabs.io>
Date: Tue, 28 Jan 2025 11:42:22 +0100
Subject: [PATCH 2/4] Create the new remote access client module and setup
 maven and CI

Fixes #3131
---
 application/app/build.gradle                  |   5 +-
 application/remote-access-client/.gitignore   |   1 +
 application/remote-access-client/build.gradle | 126 ++++++++++++++++++
 .../remote-access-client/consumer-rules.pro   |   0
 .../gradle.properties                         |   4 +-
 .../remote-access-client/proguard-rules.pro   |  21 +++
 .../src/main/AndroidManifest.xml              |  28 ++++
 application/remote-access-server/build.gradle |  60 +--------
 buildsystem/gitlab/.gitlab-ci.yml             |   2 +-
 settings.gradle                               |   1 +
 10 files changed, 186 insertions(+), 62 deletions(-)
 create mode 100644 application/remote-access-client/.gitignore
 create mode 100644 application/remote-access-client/build.gradle
 create mode 100644 application/remote-access-client/consumer-rules.pro
 rename application/{remote-access-server => remote-access-client}/gradle.properties (94%)
 create mode 100644 application/remote-access-client/proguard-rules.pro
 create mode 100644 application/remote-access-client/src/main/AndroidManifest.xml

diff --git a/application/app/build.gradle b/application/app/build.gradle
index be1e8e0d55..64adb29a2a 100644
--- a/application/app/build.gradle
+++ b/application/app/build.gradle
@@ -162,10 +162,7 @@ android {
 dependencies {
     implementation project(':application:vlc-android')
     implementation project(':application:television')
-    devImplementation project(':application:remote-access-server')
-    debugImplementation project(':application:remote-access-server')
-    releaseImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion"
-    vlcBundleImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion"
+    implementation project(':application:remote-access-server')
     testImplementation project(':application:television')
     testImplementation project(':application:remote-access-server')
 
diff --git a/application/remote-access-client/.gitignore b/application/remote-access-client/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/application/remote-access-client/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/application/remote-access-client/build.gradle b/application/remote-access-client/build.gradle
new file mode 100644
index 0000000000..b39ecc5d52
--- /dev/null
+++ b/application/remote-access-client/build.gradle
@@ -0,0 +1,126 @@
+/*
+ * ************************************************************************
+ *  build.gradle
+ * *************************************************************************
+ * Copyright © 2025 VLC authors and VideoLAN
+ * Author: Nicolas POMEPUY
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * **************************************************************************
+ *
+ *
+ */
+
+plugins {
+    id 'com.android.library'
+    id 'org.jetbrains.kotlin.android'
+    id 'com.vanniktech.maven.publish'
+}
+
+ext {
+    library_version = "$rootProject.ext.remoteAccessVersion"
+}
+
+android {
+    namespace 'org.videolan.vlc.remoteaccessclient'
+
+    defaultConfig {
+        minSdkVersion rootProject.ext.minSdkVersion
+        targetSdkVersion rootProject.ext.targetSdkVersion
+        compileSdk rootProject.ext.compileSdkVersion
+
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        consumerProguardFiles "consumer-rules.pro"
+        resValue "string", "build_remote_access_revision", remoteAccessRevision()
+        resValue "string", "remote_access_version", remoteAccessVersion()
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+        }
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+    kotlinOptions {
+        jvmTarget = '1.8'
+    }
+
+    task webCopy(type: Copy) {
+        from '../../remoteaccess/dist'
+        into 'assets/dist'
+    }
+
+    sourceSets.main {
+        assets.srcDirs = ['assets']
+    }
+
+    sourceSets.main {
+        assets.srcDirs = ['assets']
+    }
+
+    // Make per-variant version code
+    libraryVariants.all { variant ->
+        //Custom APK name
+        variant.outputs.each { output ->
+            if (output.outputFileName != null && output.outputFileName.endsWith('.aar')) {
+                output.outputFileName = "vlc-android-remote-access-${library_version}.aar"
+            }
+        }
+    }
+}
+
+preBuild.dependsOn(webCopy)
+
+def remoteAccessVersion() {
+    def code = new ByteArrayOutputStream()
+    try {
+        if (file("../../remoteaccess/package.json").exists()) {
+
+            exec {
+                commandLine = ['bash', '-c', 'grep -m1 "version" ../../remoteaccess/package.json']
+                standardOutput = code
+            }
+            return code.toString().split("\"")[3]
+
+        }
+    } catch (Exception e) {
+    }
+    return "unknown"
+}
+
+def remoteAccessRevision() {
+    try {
+        def hash = new ByteArrayOutputStream()
+        exec {
+            commandLine = ['bash', '-c', 'git -C ../../remoteaccess rev-parse --short HEAD']
+            standardOutput = hash
+        }
+        return hash.toString()
+    } catch (Exception e) {
+    }
+    return "unknown"
+}
+
+dependencies {
+
+    testImplementation 'junit:junit:4.13.2'
+    androidTestImplementation 'androidx.test.ext:junit:1.2.1'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
+}
+
+apply from: '../../buildsystem/publish.gradle'
diff --git a/application/remote-access-client/consumer-rules.pro b/application/remote-access-client/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/application/remote-access-server/gradle.properties b/application/remote-access-client/gradle.properties
similarity index 94%
rename from application/remote-access-server/gradle.properties
rename to application/remote-access-client/gradle.properties
index ee9ac55a81..26f8de8626 100644
--- a/application/remote-access-server/gradle.properties
+++ b/application/remote-access-client/gradle.properties
@@ -2,7 +2,7 @@
 # *************************************************************************
 #  gradle.properties
 # **************************************************************************
-# Copyright © 2024 VLC authors and VideoLAN
+# Copyright © 2025 VLC authors and VideoLAN
 # Author: Nicolas POMEPUY
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,4 +28,4 @@ POM_ARTIFACT_ID=remote-access
 
 POM_NAME=VLC-Android-RemoteAccess
 POM_DESCRIPTION=Android port of VLC's Remote Access
-POM_INCEPTION_YEAR=2021
\ No newline at end of file
+POM_INCEPTION_YEAR=2024
\ No newline at end of file
diff --git a/application/remote-access-client/proguard-rules.pro b/application/remote-access-client/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/application/remote-access-client/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/application/remote-access-client/src/main/AndroidManifest.xml b/application/remote-access-client/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..13a607c102
--- /dev/null
+++ b/application/remote-access-client/src/main/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ *************************************************************************
+  ~  AndroidManifest.xml
+  ~ **************************************************************************
+  ~ Copyright © 2025 VLC authors and VideoLAN
+  ~ Author: Nicolas POMEPUY
+  ~ This program is free software; you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation; either version 2 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program; if not, write to the Free Software
+  ~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+  ~ ***************************************************************************
+  ~
+  ~
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+
+</manifest>
\ No newline at end of file
diff --git a/application/remote-access-server/build.gradle b/application/remote-access-server/build.gradle
index c6c72aecd7..cb7d371d05 100644
--- a/application/remote-access-server/build.gradle
+++ b/application/remote-access-server/build.gradle
@@ -1,12 +1,8 @@
 plugins {
     id 'com.android.library'
     id 'org.jetbrains.kotlin.android'
-    id 'com.vanniktech.maven.publish'
 }
 
-ext {
-    library_version = "$rootProject.ext.remoteAccessVersion"
-}
 android {
     namespace 'org.videolan.vlc.remoteaccessserver'
 
@@ -23,8 +19,6 @@ android {
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         consumerProguardFiles "consumer-rules.pro"
         buildConfigField 'Boolean', 'VLC_REMOTE_ACCESS_DEBUG', project.hasProperty("vlc_remote_access_debug") ? vlc_remote_access_debug : "false"
-        resValue "string", "build_remote_access_revision", remoteAccessRevision()
-        resValue "string", "remote_access_version", remoteAccessVersion()
 
     }
 
@@ -43,11 +37,6 @@ android {
         }
     }
 
-    task webCopy(type: Copy) {
-        from '../../remoteaccess/dist'
-        into 'assets/dist'
-    }
-
     sourceSets.main {
         assets.srcDirs = ['assets']
     }
@@ -68,51 +57,14 @@ android {
         buildConfig true
     }
 
-    // Make per-variant version code
-    libraryVariants.all { variant ->
-        //Custom APK name
-        variant.outputs.each { output ->
-            if (output.outputFileName != null && output.outputFileName.endsWith('.aar')) {
-                output.outputFileName = "vlc-android-remote-access-${library_version}.aar"
-            }
-        }
-    }
-}
-
-def remoteAccessVersion() {
-    def code = new ByteArrayOutputStream()
-    try {
-        if (file("../../remoteaccess/package.json").exists()) {
-
-            exec {
-                commandLine = ['bash', '-c', 'grep -m1 "version" ../../remoteaccess/package.json']
-                standardOutput = code
-            }
-            return code.toString().split("\"")[3]
-
-        }
-    } catch (Exception e) {
-    }
-    return "unknown"
-}
-
-def remoteAccessRevision() {
-    try {
-        def hash = new ByteArrayOutputStream()
-        exec {
-            commandLine = ['bash', '-c', 'git -C ../../remoteaccess rev-parse --short HEAD']
-            standardOutput = hash
-        }
-        return hash.toString()
-    } catch (Exception e) {
-    }
-    return "unknown"
 }
 
-preBuild.dependsOn(webCopy)
-
 dependencies {
     coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
+    devImplementation project(':application:remote-access-client')
+    debugImplementation project(':application:remote-access-client')
+    releaseImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion"
+    vlcBundleImplementation "org.videolan.android:remote-access:$rootProject.ext.remoteAccessVersion"
     implementation project(':application:vlc-android')
     implementation "io.ktor:ktor:$rootProject.ext.ktorVersion"
     implementation "io.ktor:ktor-server-netty:$rootProject.ext.ktorVersion"
@@ -130,6 +82,4 @@ dependencies {
     testImplementation 'junit:junit:4.13.2'
     androidTestImplementation 'androidx.test.ext:junit:1.1.5'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
-}
-
-apply from: '../../buildsystem/publish.gradle'
+}
\ No newline at end of file
diff --git a/buildsystem/gitlab/.gitlab-ci.yml b/buildsystem/gitlab/.gitlab-ci.yml
index edc279541a..9f0fb4712d 100644
--- a/buildsystem/gitlab/.gitlab-ci.yml
+++ b/buildsystem/gitlab/.gitlab-ci.yml
@@ -466,7 +466,7 @@ publish_remote_access_lib:
     script:
         - mkdir -p $M2_REPO
         - ./buildsystem/compile.sh --init -b
-        - GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -p application/webserver publishToMavenLocal
+        - GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -p application/remote-access-client publishToMavenLocal
     artifacts:
         name: "${CI_COMMIT_TAG}"
         paths:
diff --git a/settings.gradle b/settings.gradle
index c7fa53916b..097de50d83 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,3 +2,4 @@ include ':libvlcjni:libvlc', ':medialibrary'
 include ':application:tools', ':application:resources', ':application:mediadb', ':application:app', ':application:live-plot-graph', ':application:television', ':application:donations', ':application:remote-access-server'
 include ':application:vlc-android'
 include ':application:moviepedia'
+include ':application:remote-access-client'
-- 
GitLab


From afe591f95848e04528079cc6d4feeba08b70bfe8 Mon Sep 17 00:00:00 2001
From: Nicolas Pomepuy <nicolas@videolabs.io>
Date: Tue, 28 Jan 2025 15:01:30 +0100
Subject: [PATCH 3/4] Move the remote access client git to the
 remote-access-client module directory

---
 application/remote-access-client/build.gradle |  8 ++++----
 buildsystem/compile-remoteaccess.sh           | 11 ++++++-----
 buildsystem/gitlab/.gitlab-ci.yml             |  6 +++---
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/application/remote-access-client/build.gradle b/application/remote-access-client/build.gradle
index b39ecc5d52..bcfb43fb50 100644
--- a/application/remote-access-client/build.gradle
+++ b/application/remote-access-client/build.gradle
@@ -61,7 +61,7 @@ android {
     }
 
     task webCopy(type: Copy) {
-        from '../../remoteaccess/dist'
+        from 'remoteaccess/dist'
         into 'assets/dist'
     }
 
@@ -89,10 +89,10 @@ preBuild.dependsOn(webCopy)
 def remoteAccessVersion() {
     def code = new ByteArrayOutputStream()
     try {
-        if (file("../../remoteaccess/package.json").exists()) {
+        if (file("remoteaccess/package.json").exists()) {
 
             exec {
-                commandLine = ['bash', '-c', 'grep -m1 "version" ../../remoteaccess/package.json']
+                commandLine = ['bash', '-c', 'grep -m1 "version" remoteaccess/package.json']
                 standardOutput = code
             }
             return code.toString().split("\"")[3]
@@ -107,7 +107,7 @@ def remoteAccessRevision() {
     try {
         def hash = new ByteArrayOutputStream()
         exec {
-            commandLine = ['bash', '-c', 'git -C ../../remoteaccess rev-parse --short HEAD']
+            commandLine = ['bash', '-c', 'git -C remoteaccess rev-parse --short HEAD']
             standardOutput = hash
         }
         return hash.toString()
diff --git a/buildsystem/compile-remoteaccess.sh b/buildsystem/compile-remoteaccess.sh
index c7b006efe8..cb09402a45 100755
--- a/buildsystem/compile-remoteaccess.sh
+++ b/buildsystem/compile-remoteaccess.sh
@@ -60,22 +60,23 @@ done
   REMOTE_ACCESS_TESTED_HASH=543dcf36610e6944c85cbf355b4b934b8ae451d3
   REMOTE_ACCESS_REPOSITORY=https://code.videolan.org/videolan/remoteaccess
 
-  : ${VLC_REMOTE_ACCESS_PATH:="$(pwd -P)/remoteaccess"}
+  : ${VLC_REMOTE_ACCESS_PATH:="$(pwd -P)/application/remote-access-client/remoteaccess"}
+  diagnostic "VLC_REMOTE_ACCESS_PATH is $VLC_REMOTE_ACCESS_PATH"
 
   if [ ! -d "$VLC_REMOTE_ACCESS_PATH" ] || [ ! -d "$VLC_REMOTE_ACCESS_PATH/.git" ]; then
       diagnostic "Remote access sources: not found, cloning"
       branch="main"
       if [ ! -d "$VLC_REMOTE_ACCESS_PATH" ]; then
-          git clone --single-branch --branch ${branch} "${REMOTE_ACCESS_REPOSITORY}"
-          cd remoteaccess
+          git clone --single-branch --branch ${branch} "${REMOTE_ACCESS_REPOSITORY}" application/remote-access-client/remoteaccess
+          cd application/remote-access-client/remoteaccess
       else # folder exist with only the artifacts
-          cd remoteaccess
+          cd application/remote-access-client/remoteaccess
           git init
           git remote add origin "${REMOTE_ACCESS_REPOSITORY}"
           git pull origin ${branch}
       fi
       git reset --hard ${REMOTE_ACCESS_TESTED_HASH} || fail "Remote access sources: REMOTE_ACCESS_TESTED_HASH ${REMOTE_ACCESS_TESTED_HASH} not found"
-      cd ..
+      cd ../../..
   fi
 
   if [ "$INIT_ONLY" != 1 ]; then
diff --git a/buildsystem/gitlab/.gitlab-ci.yml b/buildsystem/gitlab/.gitlab-ci.yml
index 9f0fb4712d..8f9a48611e 100644
--- a/buildsystem/gitlab/.gitlab-ci.yml
+++ b/buildsystem/gitlab/.gitlab-ci.yml
@@ -9,7 +9,7 @@ variables:
   VLC_ANDROID_IMAGE_30: registry.videolan.org/vlc-debian-android-3.0:20230621085943
   VLC_ANDROID_IMAGE_40: registry.videolan.org/vlc-debian-android:20240731083648
   VLC_WEB_BUILD_IMAGE: registry.videolan.org/videolan-alpine-node:20230523124511
-  WEBSERVER_DIR: "./remoteaccess"
+  WEBSERVER_DIR: "./application/remote-access-client/remoteaccess"
 
 default:
   before_script: |
@@ -53,7 +53,7 @@ webserver-install-dependencies:
       - npm install
     artifacts:
       paths:
-        - remoteaccess/
+        - application/remote-access-client/remoteaccess/
       when: on_success
       expire_in: 1h
 
@@ -67,7 +67,7 @@ webserver-build:
         - npm run build-android
     artifacts:
       paths:
-        - remoteaccess/
+        - application/remote-access-client/remoteaccess/
       when: on_success
       expire_in: 1h
 
-- 
GitLab


From edcd1cbc6b9e4debd74076d53b55e560ad3f5299 Mon Sep 17 00:00:00 2001
From: Nicolas Pomepuy <nicolas@videolabs.io>
Date: Tue, 28 Jan 2025 12:40:37 +0100
Subject: [PATCH 4/4] Bump the remote access artifact version to 0.2.0

---
 build.gradle | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.gradle b/build.gradle
index 614423cf3b..ce54a492db 100644
--- a/build.gradle
+++ b/build.gradle
@@ -42,7 +42,7 @@ ext {
     versionCode = 3060200
     versionName = project.hasProperty('forceVlc4') && project.getProperty('forceVlc4') ? '4.0.0-preview - ' + versionCode : '3.6.2'
     vlcMajorVersion = project.hasProperty('forceVlc4') && project.getProperty('forceVlc4') ? 4 : 3
-    remoteAccessVersion = '0.1.3'
+    remoteAccessVersion = '0.2.0'
     libvlcVersion = vlcMajorVersion == 3 ? '3.6.0-eap14' :'4.0.0-eap17'
     medialibraryVersion = vlcMajorVersion == 3 ? '0.13.13-rc14' : '0.13.13-vlc4-rc14'
     minSdkVersion = 17
-- 
GitLab