mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 03:38:23 +00:00
BootRelayDiagnostics -> commonMain. The concurrency review found it already fully non-blocking: per-relay atomic counters on the hot per-message path and get-or-create maps, no locks. Swaps: stdlib kotlin.concurrent.atomics, quartz ConcurrentMap, TimeUtils.nowMillis, and the daemon dump thread became a coroutine that completes after the last scheduled census instead of parking a thread for process lifetime. Blurhash/Thumbhash/Base64 fetchers -> commonMain over a new CoilImageBridge expect (PlatformImage.toCoilImage + base64DataUriToCoilImage; android actual = Bitmap.asImage, jvm/ios actuals = Skia N32 premul from the ARGB pixel buffer, iOS base64 via Image.makeFromEncoded). desktopApp deletes its three hand-rolled clone fetchers and registers the shared ones - the first UI-adjacent duplication the migration removes outright. BuzzInviteMinter drops Jackson for kotlinx-serialization but stays jvmAndroid: its OkHttp pin is load-bearing, since the NIP-98 u tag is signed over OkHttp's canonical URL string and the transport must not drift from the canonicalizer. PodcastRemoteContent is reclassified to the OkHttp tier - the object IS a capped HTTP GET; injecting the fetch would leave an empty shell. Verified: verifyKmpPurity, JVM, iosArm64 compile + test-compile, Android, desktop, and the quartz/commons/cli test suites. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011S1vbFWVVAMFDT8PTgdibV