Files
amethyst/amethyst
Claude 0fb6f6778d refactor: one DM window, NIP-04 followers, shared listener
Collapse the DM windowing system to a single source of truth and remove the
accumulated duplication.

- One window: the gift-wrap (NIP-17) loader owns the only TimeWindowPagination.
  The rooms-list NIP-04 loader no longer keeps its own window advanced "in
  lockstep" — like the conversation loader, it now follows the gift-wrap
  window's `windowSince` and re-requests via `reload()`. Removes its window,
  loadMore, loadEverything and exhausted; the rooms screen drives
  giftWraps.loadMore() + nip04.reload() and reads giftWraps.exhausted alone.

- Shared listener: extract WindowLoadTracker.trackingListener(forward) — the
  one place that feeds onActivity/onRelayResponded — replacing three copies of
  subscription-listener boilerplate and two newEose overrides.

- Drop the cold-boot instrumentation (bootStartMs/bootEventCount/bootEoseLogged
  + verbose per-call logs) from the gift-wrap manager; it was development
  scaffolding. (The debug-gated DmRelayDiagnosticsLogger stays.)

- Renames for clarity: DMsFromUserFilterSubAssembler -> ChatroomListNip04SubAssembler,
  ChatroomFilterSubAssembler -> ChatroomNip04SubAssembler, field nip04Dms -> nip04.

Behavior is unchanged: same auto-fill/prefetch, same all-relays-or-idle gating,
same gap-free conversation reveal. ~250 fewer lines and no more lockstep concept.
2026-06-01 14:12:02 +00:00
..