test: record 2026-07-09 live run results + fix macOS prefs path in sheet

- Correct the AUTH-approval persistence check: this JVM uses
  MacOSXPreferences (~/Library/Preferences/com.vitorpamplona.amethyst.plist),
  not ~/.java/.userPrefs. Updated T3.b/c/d to read it via plutil.
- Record session results (T1,T2,T3a,T3c,T6,T6b,T8,T12 pass) and the three
  bugs found+fixed during the run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
nrobi144
2026-07-09 15:43:03 +03:00
co-authored by Claude Opus 4.8
parent 5a8e8828b1
commit fe96311d93
@@ -1,6 +1,6 @@
# Desktop DM Reliability — Testing Playbook
**Branch:** `feat/desktop-dm-reliability` rebased onto `upstream/main` (24 commits; latest `9e707da2b1`)
**Branch:** `feat/desktop-dm-reliability` rebased onto `upstream/main`
**Tester:** _______________________
**Date:** _______________________
@@ -8,6 +8,29 @@
---
## Session results — 2026-07-09 (live run)
| Test | Result | Notes |
|------|--------|-------|
| T1 startup / AUTH wired | ✅ PASS | both `Init, Subscribe` + `AUTH wired` logged; no CME crash |
| T2 tier-1 self-DM (no banner) | ✅ PASS | published, no `PendingAuthApproval` prompt |
| T3.a tier-2 banner render | ✅ PASS | `relay.ditto.pub` banner, icon clear of traffic lights, 3 buttons |
| T3.c `Always` persists | ✅ PASS | `auth/<pubkey>/ wss://relay.ditto.pub/ = ALWAYS` in the plist |
| T6 no-10050 blocks send | ✅ PASS | "Recipient has no DM relay list", send disabled |
| T6b kind:10002-only blocks | ✅ PASS | same block; zero publish to the NIP-65 read relay |
| T8 wrap `p`-tag relay hint | ✅ PASS (after fix) | 3-element `["p", hex, wss://nos.lol/]` on the wrap |
| T12 kind:1059 sub has no `since` | ✅ PASS | `since` removed from `giftWrapsToMe` signature |
| T3.b `Once` / T3.d `Never` | ⏭️ not run | logic covered by `AuthApprovalEndToEndTest` |
| T9 group rumor.id | ⏭️ covered-by-construction | rumor signed once before the per-recipient loop |
| T10 AUTH-under-load / T11 bunker | ⏭️ not run | no challenging relay / bunker on hand |
**Bugs found & fixed this run:**
1. `DmInboxRelayResolver` LocalCache fast-path used lenient `dmInboxRelays()` → NIP-65 read-relay leak. Now `dmInboxRelaysStrict()`.
2. `NewDmDialog` rendered pasted npubs of metadata-less users as non-clickable → couldn't start a DM by npub. Now `getOrCreateUser`.
3. NIP-17 `p`-tag relay hint was plumbed in quartz but never passed by `DesktopIAccount` → every wrap shipped a 2-element `p` tag. Now wired.
---
## Setup (once, ~3 min)
**1.** In a terminal, cd to the worktree and confirm you're on the right commit:
@@ -123,10 +146,15 @@ Record:
- **Expected:** banner slides away immediately, no visible change to relay state.
**7.** In a second terminal, check the Preferences file did NOT get written for this relay:
**7.** In a second terminal, check the Preferences store did NOT get written for this relay.
> **Prefs location (macOS).** This JVM uses the `MacOSXPreferences` backing
> store, NOT `~/.java/.userPrefs`. Java prefs land in
> `~/Library/Preferences/com.vitorpamplona.amethyst.plist` under an
> `auth/<full-pubkey>/` node. Read it with `plutil`:
```bash
cat ~/.java/.userPrefs/com/vitorpamplona/amethyst/desktop/auth/<your-full-pubkey>/prefs.xml 2>/dev/null | grep pyramid
plutil -convert xml1 -o - ~/Library/Preferences/com.vitorpamplona.amethyst.plist | grep -i "pyramid\|ditto"
```
- **Expected:** empty output (ONCE is not persisted).
@@ -149,10 +177,10 @@ Record:
**11.** Check Preferences was written:
```bash
cat ~/.java/.userPrefs/com/vitorpamplona/amethyst/desktop/auth/<your-full-pubkey>/prefs.xml | grep pyramid
plutil -convert xml1 -o - ~/Library/Preferences/com.vitorpamplona.amethyst.plist | grep -i "pyramid\|ditto\|ALWAYS"
```
- **Expected:** line containing `wss://pyramid.fiatjaf.com/` and `ALWAYS`.
- **Expected:** the relay URL (e.g. `wss://relay.ditto.pub/`) followed by `ALWAYS`, under the `auth/<full-pubkey>/` node.
**12.** Close app (Cmd+Q). Relaunch. Log in as A.
@@ -176,10 +204,10 @@ Record:
**16.** Check Preferences:
```bash
cat ~/.java/.userPrefs/com/vitorpamplona/amethyst/desktop/auth/<your-full-pubkey>/prefs.xml | grep <relay-domain>
plutil -convert xml1 -o - ~/Library/Preferences/com.vitorpamplona.amethyst.plist | grep -i "<relay-domain>\|BLOCKED"
```
- **Expected:** line with `BLOCKED`.
- **Expected:** the relay URL followed by `BLOCKED`, under the `auth/<full-pubkey>/` node.
**17.** Restart the app. Log in as A.