- commons/ui/StringRes.kt: the Compose-resources twin of the app's
stringRes family (composable, formatted, plural, and suspend
loadStringRes variants). Thin delegates - compose-resources caches
parsed locale files process-wide, so the Android-style LruCache is
unnecessary here.
- App StringResourceCache.kt gains stringRes(StringResource) overloads
delegating to the bridge, so a file can mix migrated and unmigrated
keys under its existing single import; migrating a key is just
R.string.x -> Res.string.x.
- tools/strings-migrate: moves keys from app res to commons
composeResources across all locales byte-for-byte (both trees are
Crowdin-managed with the same android mapping); refuses keys using
bare %s/%d since compose-resources only formats positional args.
- Exemplar: profile_banner - the single string blocking the ui/layouts
cluster - migrated across 57 locales, all 7 call-site files repointed.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011S1vbFWVVAMFDT8PTgdibV
Custom feed creation/discovery/management for Desktop; core model + builder + kind 31890 + desktop UI shipped, but relay-filter layer, DVM marketplace, kind 10090 sync, and list resolution still pending.
Extended NIP-88 poll results page (per-option counts + who voted for what) for Android and Desktop; also specifies four tally-correctness fixes and the missing poll-relay subscription. Proposed, not started.