mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 03:38:23 +00:00
A design correction the migration got wrong, found by the compiler rather than by reasoning: NOT every string could move. A foreground-service notification is built inside Android's startForeground() timeout - NotificationRelayService has `if (!ensureForeground()) return START_NOT_STICKY`, a control-flow dependency that cannot become asynchronous. The Compose catalog's only non-composable accessor is suspend, so those strings have no business in it. They never appear in shared UI either. So the six foreground/tile service files are restored to their pre-migration state and their keys moved back: 19 exclusive to the service layer (554 elements across 57 locale dirs) and 7 also used by UI copied rather than moved (112 elements), on the same keep-both-sides precedent as the manifest keys. unmigrate.py is the inverse of migrate.py and lives next to it. That also means the Android accessors had to come back. Deleting the Int and Context overloads from StringResourceCache assumed every string was leaving; they are restored alongside the Compose ones, with the LruCache that made them worth having, and a comment stating which strings belong on which side. Also: a duplicate app_name (already kept for the manifest, re-added by the copy pass) broke packagePlayDebugResources - which surfaced AFTER Kotlin reported zero errors, so a green Kotlin count is not a green build. Now checking the BUILD SUCCESSFUL line too. Separately, an experiment worth recording as a dead end: propagating suspend outward from each call site does NOT converge here. Four rounds ran 304 -> 307 -> 309 -> 312, about +2 per round, because each newly-suspend function creates errors in its own callers and the frontier keeps widening into the app's general call graph. Reverted. The right move is the opposite - hoist the lookup to the nearest existing coroutine or composition, which is what took WalletViewModel from 22 errors to 1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AXvKXakvup4inNFfAhhr4L