diff --git a/android/README.md b/android/README.md index 81b952a..5ee58d9 100644 --- a/android/README.md +++ b/android/README.md @@ -7,7 +7,7 @@ compile, unit tests (including every vector of `contracts/test-vectors/`), lint **Public host (D-121).** The release server's host name is the build property `kvitt.publicHost`, never a literal in the code: `:app` exposes it as `BuildConfig.PUBLIC_HOST`, as the manifest placeholder `publicHost` (the host of the -`https://:8443/i/` invite links, AC-2.6) and as `RELEASE_SERVER_URL` = `https://:8443`, which S-1 +`https:///i/` invite links, AC-2.6) and as `RELEASE_SERVER_URL` = `https://`, which S-1 prefills (AC-2.7). Gradle takes `-Pkvitt.publicHost=…` first (`infra/publish-apk.sh` passes it), else the key `kvitt.publicHost` in `android/local.properties`, where the owner sets it (git-ignored, never committed), else the placeholder `kvitt.example.invalid`, so a release built without it cannot talk to a real host. Debug builds pair with diff --git a/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/FakeScenarios.kt b/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/FakeScenarios.kt index 5f42c2b..8a64216 100644 --- a/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/FakeScenarios.kt +++ b/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/FakeScenarios.kt @@ -71,7 +71,7 @@ object FakeScenarios { clockSkew = false, syncRunning = false, update = UpdateState.None, - about = AboutState("dev", 1, "https://kvitt.example.org:8443", null, null), + about = AboutState("dev", 1, "https://kvitt.example.org", null, null), online = true, today = "2026-10-17", now = "2026-10-17T06:00:00.000Z", diff --git a/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/settings/SettingsScenarios.kt b/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/settings/SettingsScenarios.kt index 80663cc..cd6904d 100644 --- a/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/settings/SettingsScenarios.kt +++ b/android/core/fakes/src/main/kotlin/se/hagstedt/kvitt/fakes/settings/SettingsScenarios.kt @@ -116,7 +116,7 @@ object SettingsScenarios { devices = devices, invites = listOf(pendingDeviceInvite), lastSuccessAt = "2026-10-17T11:59:00.000Z", - about = AboutState("1.1", 11, "https://kvitt.example.org:8443", "1.1.0", 3), + about = AboutState("1.1", 11, "https://kvitt.example.org", "1.1.0", 3), today = "2026-10-17", now = "2026-10-17T12:02:00.000Z", defaultAccountId = huset.id, diff --git a/android/data/src/main/kotlin/se/hagstedt/kvitt/data/di/DataModule.kt b/android/data/src/main/kotlin/se/hagstedt/kvitt/data/di/DataModule.kt index dbbba69..551f8db 100644 --- a/android/data/src/main/kotlin/se/hagstedt/kvitt/data/di/DataModule.kt +++ b/android/data/src/main/kotlin/se/hagstedt/kvitt/data/di/DataModule.kt @@ -88,7 +88,7 @@ import javax.inject.Qualifier import javax.inject.Singleton /** - * What `:app` provides: its version (§10.6), build type (AC-2.8, AC-16.5) and release server `https://:8443` + * What `:app` provides: its version (§10.6), build type (AC-2.8, AC-16.5) and release server `https://` * (`RELEASE_SERVER_URL`, from the Gradle property `kvitt.publicHost`, D-121), which S-22 shows before pairing (D-122). */ data class AppBuildInfo(val versionCode: Int, val versionName: String, val debug: Boolean, val releaseServerUrl: String) diff --git a/android/data/src/main/kotlin/se/hagstedt/kvitt/data/repo/SettingsRepositories.kt b/android/data/src/main/kotlin/se/hagstedt/kvitt/data/repo/SettingsRepositories.kt index f8d781e..aec991a 100644 --- a/android/data/src/main/kotlin/se/hagstedt/kvitt/data/repo/SettingsRepositories.kt +++ b/android/data/src/main/kotlin/se/hagstedt/kvitt/data/repo/SettingsRepositories.kt @@ -388,7 +388,7 @@ class AboutRepositoryImpl( private val gate: OnlineGate, private val versionName: String, private val versionCode: Int, - /** Shown while no server is paired: `AppBuildInfo.releaseServerUrl`, `https://:8443` (D-122). */ + /** Shown while no server is paired: `AppBuildInfo.releaseServerUrl`, `https://` (D-122, D-124). */ private val releaseServerUrl: String, ) : AboutRepository { override fun about(): Flow { diff --git a/android/data/src/test/kotlin/se/hagstedt/kvitt/data/Harness.kt b/android/data/src/test/kotlin/se/hagstedt/kvitt/data/Harness.kt index baca736..9ef1cfe 100644 --- a/android/data/src/test/kotlin/se/hagstedt/kvitt/data/Harness.kt +++ b/android/data/src/test/kotlin/se/hagstedt/kvitt/data/Harness.kt @@ -188,7 +188,7 @@ class Harness { companion object { const val APP_VERSION = 41 const val APP_VERSION_NAME = "1.1" - const val BASE_URL = "https://kvitt.test:8443" + const val BASE_URL = "https://kvitt.test" const val TOKEN = "kvt_testtoken0000000000000000000000000000000000" const val ME = "0192a000-0000-7000-8000-000000000001" const val PARTNER = "0192a000-0000-7000-8000-000000000002" diff --git a/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/RepositoriesTest.kt b/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/RepositoriesTest.kt index 5d93055..0412818 100644 --- a/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/RepositoriesTest.kt +++ b/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/RepositoriesTest.kt @@ -528,6 +528,6 @@ class RepositoriesTest { private companion object { const val OLDER = "0192a003-0000-7000-8000-000000000002" /** `AppBuildInfo.releaseServerUrl` of the tests: a fixed host, not `:app`'s `kvitt.publicHost` (D-122). */ - const val RELEASE_SERVER_URL = "https://kvitt.example.org:8443" + const val RELEASE_SERVER_URL = "https://kvitt.example.org" } } diff --git a/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/SessionRepositoryTest.kt b/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/SessionRepositoryTest.kt index 9554673..8c98942 100644 --- a/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/SessionRepositoryTest.kt +++ b/android/data/src/test/kotlin/se/hagstedt/kvitt/data/repo/SessionRepositoryTest.kt @@ -60,14 +60,14 @@ class SessionRepositoryTest { @Test fun pair_storesCredentials_writesTheHousehold_andStartsAFullSync() = runSync { acceptAs(ME) - val result = repo().pair("https://kvitt.test:8443/ ", "7k3m-qx9d-2hpa", "Jacob", "Galaxy S26") + val result = repo().pair("https://kvitt.test/ ", "7k3m-qx9d-2hpa", "Jacob", "Galaxy S26") assertEquals(ME, (result as OnlineResult.Ok).value.user.id.value) assertEquals(InviteKind.ADMIN_SETUP, result.value.inviteKind) val request = h.requests.single() - assertEquals("https://kvitt.test:8443/invites/accept", request.url.toString()) + assertEquals("https://kvitt.test/invites/accept", request.url.toString()) val credentials = h.credentials.credentials() assertEquals("kvt_new", credentials?.token) - assertEquals("https://kvitt.test:8443", credentials?.baseUrl) + assertEquals("https://kvitt.test", credentials?.baseUrl) assertEquals("d2", credentials?.deviceId) val session = repo().session.first() assertTrue(session is SessionState.Paired) @@ -98,7 +98,9 @@ class SessionRepositoryTest { @Test fun serverUrls_releaseHttpsOnly_debugAlsoLocalHttp() { - assertEquals("https://icehack.asuscomm.com:8443", SessionRepositoryImpl.normaliseServerUrl("https://icehack.asuscomm.com:8443/", debugBuild = false)) + assertEquals("https://kvitt.example.org", SessionRepositoryImpl.normaliseServerUrl("https://kvitt.example.org/", debugBuild = false)) + // An explicit port survives normalisation (D-124 serves on 443, but a typed port is the owner's choice). + assertEquals("https://kvitt.example.org:8443", SessionRepositoryImpl.normaliseServerUrl("https://kvitt.example.org:8443/", debugBuild = false)) assertNull(SessionRepositoryImpl.normaliseServerUrl("http://192.168.1.10:8080", debugBuild = false)) for (ok in listOf("http://localhost:8080", "http://10.0.2.2:8080", "http://10.1.2.3", "http://172.16.0.1", "http://172.31.255.1", "http://192.168.1.10:8080")) { assertEquals(ok, SessionRepositoryImpl.normaliseServerUrl(ok, debugBuild = true)) diff --git a/android/feature/settings/src/test/screenshots/s21_invites_created_device_en_light.png b/android/feature/settings/src/test/screenshots/s21_invites_created_device_en_light.png index 7ce8957..c99f9dc 100644 Binary files a/android/feature/settings/src/test/screenshots/s21_invites_created_device_en_light.png and b/android/feature/settings/src/test/screenshots/s21_invites_created_device_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_dark.png b/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_dark.png index 6a04e6d..31e52bf 100644 Binary files a/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_dark.png and b/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_light.png b/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_light.png index 3e08744..e2fdad4 100644 Binary files a/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_light.png and b/android/feature/settings/src/test/screenshots/s21_invites_created_device_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s21_invites_created_partner_en_light.png b/android/feature/settings/src/test/screenshots/s21_invites_created_partner_en_light.png index e9b6703..1fcca9f 100644 Binary files a/android/feature/settings/src/test/screenshots/s21_invites_created_partner_en_light.png and b/android/feature/settings/src/test/screenshots/s21_invites_created_partner_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_dark.png b/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_dark.png index 2886609..cc22918 100644 Binary files a/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_dark.png and b/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_light.png b/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_light.png index 1b5e6c8..cf5f4ad 100644 Binary files a/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_light.png and b/android/feature/settings/src/test/screenshots/s21_invites_created_partner_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_failed_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_check_failed_en_light.png index 7f9f26e..b256554 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_failed_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_check_failed_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_dark.png index eea6698..51cd877 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_light.png index a1ce605..cd06f0d 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_check_failed_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_en_light.png index 8d3bdf0..eef6e23 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_dark.png index eca52fe..67f99b2 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_light.png index 1a8e756..eeaecf4 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_check_up_to_date_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_update_found_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_check_update_found_en_light.png index 061b7e4..96aa983 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_update_found_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_check_update_found_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_dark.png index a5dd34e..da9c386 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_light.png index 5ad8edf..04d6fb4 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_check_update_found_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_checking_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_checking_en_light.png index 506359c..9a41afd 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_checking_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_checking_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_checking_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_checking_sv_dark.png index 1197e5a..a3392c8 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_checking_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_checking_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_checking_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_checking_sv_light.png index d44ad63..2297ebe 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_checking_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_checking_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_downloading_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_downloading_en_light.png index 2a45d42..966109a 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_downloading_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_downloading_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_dark.png index 4e58130..89337c0 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_light.png index c50a4ef..8692e4d 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_downloading_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_offline_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_offline_en_light.png index b978293..638bb20 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_offline_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_offline_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_offline_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_offline_sv_dark.png index 2b71d6f..188a6e2 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_offline_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_offline_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_offline_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_offline_sv_light.png index 4069e94..6f33ca0 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_offline_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_offline_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_online_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_online_en_light.png index 512c915..22eeb6c 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_online_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_online_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_online_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_online_sv_dark.png index 0c4180a..07a4b77 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_online_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_online_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_online_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_online_sv_light.png index 57b0879..dfb8364 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_online_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_online_sv_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_update_failed_en_light.png b/android/feature/settings/src/test/screenshots/s22_about_update_failed_en_light.png index 2b87052..73e856a 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_update_failed_en_light.png and b/android/feature/settings/src/test/screenshots/s22_about_update_failed_en_light.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_dark.png b/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_dark.png index 1e65a75..bdc6593 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_dark.png and b/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_dark.png differ diff --git a/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_light.png b/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_light.png index 0abf6f1..8b8ae6d 100644 Binary files a/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_light.png and b/android/feature/settings/src/test/screenshots/s22_about_update_failed_sv_light.png differ