Files
minstrel/android/app/build/intermediates/incremental/debug-mergeJavaRes/zip-cache/SaoU3r0cCzD1OmnTAoiG9g==
T
bvandeusen 0b72827682 fix(android): unblock first device test — auth contrast + dynamic base URL
Two regressions surfaced on the first real device run.

1. Contrast on ServerUrl + Login screens: both wrapped content in a
   bare Box(fillMaxSize), no Surface. The obsidian background never
   painted (rendered against the system root view's default),
   LocalContentColor cascade fell through to Material's default
   contentColor — the screens rendered as near-invisible dark text
   on dark grey. Wrap both in Surface(color = background, contentColor
   = onBackground) so the bg paints AND the M3 contentColor pipeline
   flows correctly through OutlinedTextField labels / cursor /
   placeholders + the Button content tint.

2. The bigger bug: NetworkModule.provideRetrofit read
   authStore.baseUrl.value ONCE at Retrofit creation. AuthStore loads
   from Room async, so at injection time the value was still the
   localhost:8080 placeholder. Result: even after the user typed
   their real server URL on the ServerUrl screen, every API call
   kept hitting localhost:8080 ("Failed to connect to
   localhost/127.0.0.1:8080" on the login attempt). The pre-fix
   NetworkModule comment even acknowledged it — *"Server-URL
   changes require an app relaunch"*.

   Fix: per-request rewrite. New BaseUrlInterceptor reads the live
   AuthStore.baseUrl.value on every request and rewrites
   scheme/host/port of the outgoing URL. Retrofit now keeps a
   placeholder baseUrl ("http://placeholder.invalid/") solely to
   satisfy its parser; the actual target host is dynamic. Order in
   OkHttp chain: BaseUrl first → Auth → logging, so the cookie
   interceptor sees the final URL.

New:
  - api/BaseUrlInterceptor.kt — per-request scheme/host/port rewrite
    from AuthStore.baseUrl. Falls through to the original request
    when the stored URL is unparseable.

Modified:
  - api/NetworkModule.kt — adds BaseUrlInterceptor to the OkHttp
    chain. Drops the AuthStore dependency from provideRetrofit;
    swaps baseUrl for the placeholder.
  - auth/ui/ServerUrlScreen.kt — Box → Surface wrap.
  - auth/ui/LoginScreen.kt — Box → Surface wrap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 00:27:05 -04:00

1 line
7.4 KiB
Plaintext

[{"key":"META-INF/MANIFEST.MF","name":"META-INF/MANIFEST.MF","size":25,"crc":-301826126},{"key":"META-INF/room-common.kotlin_module","name":"META-INF/room-common.kotlin_module","size":24,"crc":-1272600036},{"key":"androidx/room/AmbiguousColumnResolver$Match.class","name":"androidx/room/AmbiguousColumnResolver$Match.class","size":1629,"crc":-516984492},{"key":"androidx/room/AmbiguousColumnResolver$ResultColumn.class","name":"androidx/room/AmbiguousColumnResolver$ResultColumn.class","size":2849,"crc":27497618},{"key":"androidx/room/AmbiguousColumnResolver$Solution$Companion.class","name":"androidx/room/AmbiguousColumnResolver$Solution$Companion.class","size":5437,"crc":1380822764},{"key":"androidx/room/AmbiguousColumnResolver$Solution.class","name":"androidx/room/AmbiguousColumnResolver$Solution.class","size":3005,"crc":-1761966433},{"key":"androidx/room/AmbiguousColumnResolver.class","name":"androidx/room/AmbiguousColumnResolver.class","size":17172,"crc":-1539513167},{"key":"androidx/room/AutoMigration.class","name":"androidx/room/AutoMigration.class","size":1094,"crc":-628394689},{"key":"androidx/room/BuiltInTypeConverters$State.class","name":"androidx/room/BuiltInTypeConverters$State.class","size":1994,"crc":-124355075},{"key":"androidx/room/BuiltInTypeConverters.class","name":"androidx/room/BuiltInTypeConverters.class","size":1118,"crc":-853219080},{"key":"androidx/room/ColumnInfo$Collate.class","name":"androidx/room/ColumnInfo$Collate.class","size":667,"crc":-1724763998},{"key":"androidx/room/ColumnInfo$Companion.class","name":"androidx/room/ColumnInfo$Companion.class","size":1534,"crc":690645063},{"key":"androidx/room/ColumnInfo$SQLiteTypeAffinity.class","name":"androidx/room/ColumnInfo$SQLiteTypeAffinity.class","size":700,"crc":2086771527},{"key":"androidx/room/ColumnInfo.class","name":"androidx/room/ColumnInfo.class","size":2225,"crc":-144709255},{"key":"androidx/room/ConstructedBy.class","name":"androidx/room/ConstructedBy.class","size":933,"crc":119513110},{"key":"androidx/room/Dao.class","name":"androidx/room/Dao.class","size":748,"crc":916627343},{"key":"androidx/room/Database.class","name":"androidx/room/Database.class","size":1367,"crc":-640885363},{"key":"androidx/room/DatabaseView.class","name":"androidx/room/DatabaseView.class","size":938,"crc":-1038047448},{"key":"androidx/room/Delete.class","name":"androidx/room/Delete.class","size":982,"crc":933842556},{"key":"androidx/room/DeleteColumn$Entries.class","name":"androidx/room/DeleteColumn$Entries.class","size":1010,"crc":-2048004911},{"key":"androidx/room/DeleteColumn.class","name":"androidx/room/DeleteColumn.class","size":1085,"crc":-1654557761},{"key":"androidx/room/DeleteTable$Entries.class","name":"androidx/room/DeleteTable$Entries.class","size":1004,"crc":-2136404071},{"key":"androidx/room/DeleteTable.class","name":"androidx/room/DeleteTable.class","size":1030,"crc":1418458591},{"key":"androidx/room/Embedded.class","name":"androidx/room/Embedded.class","size":907,"crc":-1196500624},{"key":"androidx/room/Entity.class","name":"androidx/room/Entity.class","size":1430,"crc":-1041402106},{"key":"androidx/room/ForeignKey$Action.class","name":"androidx/room/ForeignKey$Action.class","size":664,"crc":-485965797},{"key":"androidx/room/ForeignKey$Companion.class","name":"androidx/room/ForeignKey$Companion.class","size":971,"crc":-882465477},{"key":"androidx/room/ForeignKey.class","name":"androidx/room/ForeignKey.class","size":1849,"crc":1722809428},{"key":"androidx/room/Fts3.class","name":"androidx/room/Fts3.class","size":989,"crc":-213425193},{"key":"androidx/room/Fts4.class","name":"androidx/room/Fts4.class","size":1877,"crc":-1282504741},{"key":"androidx/room/FtsOptions$MatchInfo.class","name":"androidx/room/FtsOptions$MatchInfo.class","size":1857,"crc":-1785021919},{"key":"androidx/room/FtsOptions$Order.class","name":"androidx/room/FtsOptions$Order.class","size":1824,"crc":-1755360260},{"key":"androidx/room/FtsOptions.class","name":"androidx/room/FtsOptions.class","size":1179,"crc":-1856816960},{"key":"androidx/room/Ignore.class","name":"androidx/room/Ignore.class","size":835,"crc":332098521},{"key":"androidx/room/Index$Order.class","name":"androidx/room/Index$Order.class","size":1779,"crc":-595121130},{"key":"androidx/room/Index.class","name":"androidx/room/Index.class","size":1161,"crc":-1753105491},{"key":"androidx/room/Insert.class","name":"androidx/room/Insert.class","size":1148,"crc":-838384992},{"key":"androidx/room/Junction.class","name":"androidx/room/Junction.class","size":1003,"crc":-943691577},{"key":"androidx/room/MapColumn.class","name":"androidx/room/MapColumn.class","size":943,"crc":442100665},{"key":"androidx/room/MapInfo.class","name":"androidx/room/MapInfo.class","size":1157,"crc":2141174296},{"key":"androidx/room/OnConflictStrategy$Companion.class","name":"androidx/room/OnConflictStrategy$Companion.class","size":1283,"crc":-1409237666},{"key":"androidx/room/OnConflictStrategy.class","name":"androidx/room/OnConflictStrategy.class","size":1137,"crc":-487524999},{"key":"androidx/room/PrimaryKey.class","name":"androidx/room/PrimaryKey.class","size":902,"crc":405622868},{"key":"androidx/room/ProvidedAutoMigrationSpec.class","name":"androidx/room/ProvidedAutoMigrationSpec.class","size":814,"crc":1389947726},{"key":"androidx/room/ProvidedTypeConverter.class","name":"androidx/room/ProvidedTypeConverter.class","size":802,"crc":-51609376},{"key":"androidx/room/Query.class","name":"androidx/room/Query.class","size":863,"crc":-435851093},{"key":"androidx/room/RawQuery.class","name":"androidx/room/RawQuery.class","size":998,"crc":-1315457066},{"key":"androidx/room/Relation.class","name":"androidx/room/Relation.class","size":1395,"crc":-75400331},{"key":"androidx/room/RenameColumn$Entries.class","name":"androidx/room/RenameColumn$Entries.class","size":1010,"crc":-922504460},{"key":"androidx/room/RenameColumn.class","name":"androidx/room/RenameColumn.class","size":1141,"crc":-767034732},{"key":"androidx/room/RenameTable$Entries.class","name":"androidx/room/RenameTable$Entries.class","size":1004,"crc":-267003545},{"key":"androidx/room/RenameTable.class","name":"androidx/room/RenameTable.class","size":1085,"crc":1858223157},{"key":"androidx/room/RewriteQueriesToDropUnusedColumns.class","name":"androidx/room/RewriteQueriesToDropUnusedColumns.class","size":868,"crc":-1694671497},{"key":"androidx/room/RoomMasterTable.class","name":"androidx/room/RoomMasterTable.class","size":2282,"crc":-1566678899},{"key":"androidx/room/RoomWarnings$Companion.class","name":"androidx/room/RoomWarnings$Companion.class","size":2093,"crc":1104511178},{"key":"androidx/room/RoomWarnings.class","name":"androidx/room/RoomWarnings.class","size":2918,"crc":356271671},{"key":"androidx/room/SkipQueryVerification.class","name":"androidx/room/SkipQueryVerification.class","size":832,"crc":498193910},{"key":"androidx/room/Transaction.class","name":"androidx/room/Transaction.class","size":785,"crc":-1149485976},{"key":"androidx/room/TypeConverter.class","name":"androidx/room/TypeConverter.class","size":791,"crc":-1861906206},{"key":"androidx/room/TypeConverters.class","name":"androidx/room/TypeConverters.class","size":1253,"crc":673446980},{"key":"androidx/room/Update.class","name":"androidx/room/Update.class","size":1148,"crc":-199084232},{"key":"androidx/room/Upsert.class","name":"androidx/room/Upsert.class","size":982,"crc":1258011236},{"key":"META-INF/androidx/room/room-common/LICENSE.txt","name":"META-INF/androidx/room/room-common/LICENSE.txt","size":10175,"crc":-106424664}]