# Garnet Merge Attempt — Status & Notes ## What is Garnet? Garnet ([github.com/retrnull/garnet](https://github.com/retrnull/garnet)) is an Amethyst fork that adds **Monero tipping/zapping** support alongside Lightning (zap) tips. Key features: - Monero wallet key derived from the user's Nostr private key - Three tip modes: private, anonymous, public - `monero` tags on posts (similar to NIP-57 zap tags) - Tip counter on notes and profiles, like zaps - Send received tips to an external wallet ## Merge Progress (May–June 2026) The merge was executed directly against the latest Amethyst codebase (not Garnet) following the recommended path: start from the newest Amethyst and port files one at a time. ### Completed (all committed) 1. **Phase 1–4**: Model layer, JNI bridge, WalletService, quartz tip events 2. **Phase 5**: Wiring — `MoneroDataSource.setMoneroService()`, Account reactive flows 3. **MoneroScreen UI**: `MoneroScreen.kt` (~795 lines) with send, receive, daemon settings, backup seed, transaction list composables 4. **Account reactive state**: `moneroStatus`, `moneroBalance`, `moneroLockedBalance`, `moneroWalletHeight`, `moneroDaemonHeight`, `moneroConnectionStatus`, `moneroTransactions`, `moneroAddress` StateFlows 5. **String resources**: 40+ monero-related strings added to `strings.xml` ### Build status | Check | Status | |---|---| | `compileFdroidDebugKotlin` | ✅ 0 errors | | `assembleFdroidDebug` | ⏳ Pending (not yet run after MoneroScreen addition) | ### What's remaining - Run `./gradlew assembleFdroidDebug` end-to-end after MoneroScreen addition - Wire MoneroScreen into app navigation routes (Routes.kt + AppNavigation.kt) - Add `compose-material-icons-extended` dependency if needed - Add NIP-69 monero address support - Full end-to-end testing of monero wallet functionality ### Files changed in this session (MoneroScreen) | # | File | Description | |---|---|---| | 1 | `amethyst/src/main/.../loggedIn/MoneroScreen.kt` | **NEW** — Full Monero wallet UI screen with all composables | | 2 | `amethyst/src/main/.../model/Account.kt` | **MODIFIED** — Added 7 reactive StateFlows + `updateMoneroState()` | | 3 | `amethyst/src/main/res/values/strings.xml` | **MODIFIED** — Added monero string resources | See `AGENTS.md` for the full project notes, build findings, and merge plan. ### Quick commands for a new session ```bash # Verify baseline builds cd ~/projects/amethyst && ./gradlew assembleFdroidDebug | tail -3 # Get the diff between Garnet and the fork point cd ~/projects/garnet git diff 99614f07..bfaf92e5 --stat # 103 files git diff 99614f07..bfaf92e5 --name-status # file list with A/M/D status # Extract native libs from garnet releases curl -L -o /tmp/garnet.apk "https://github.com/retrnull/garnet/releases/download/v0.3.0/app-mainnet-fdroid-universal-release.apk" unzip -o /tmp/garnet.apk -d /tmp/garnet/ # libmonerujo.so is in extracted-libs/lib// ```