Skip to content

Extend hidden database inspector#72

Open
zeugmaster wants to merge 9 commits into
releasefrom
feat/extend-inspector
Open

Extend hidden database inspector#72
zeugmaster wants to merge 9 commits into
releasefrom
feat/extend-inspector

Conversation

@zeugmaster

Copy link
Copy Markdown
Owner

Summary

  • Restructure the hidden Debugging menu into a single Wallets entry: each wallet shows its info as before, with per-wallet links to its Proof Database and the new Event Database
  • MintListView is now scoped to the wallet it was opened from (instead of the active wallet) and labels hidden mints; ProofListView itself is unchanged
  • New EventInspectorView lists all of a wallet's events including hidden ones (tagged "hidden"), newest first
  • New EventDataView exposes technical event data via copyable rows: event ID, kind, visibility, grouping ID, mint/melt quote IDs with state, payment request, expiry and fee reserve, payment preimages, serialized V4 token, blank output count, associated mints, transfer endpoints, proof count/sum, and the owning wallet

Notes

  • New UI strings are not yet in Localizable.xcstrings; they will be extracted on the next catalog sync and need localization afterwards

🤖 Generated with Claude Code

zeugmaster and others added 9 commits June 10, 2026 10:58
…transfer event helpers

- pollAndIssue: polls the destination mint quote until paid, then issues
  ecash with retry and exponential backoff on transient errors (~30s budget)
- pure resumeAction decision function (destination-first state machine)
- classifyMeltFailure: distinguish definitive-unpaid from unknown outcome
- Event.transferMints orients from/to via the proofs relationship because
  SwiftData does not preserve to-many relationship array order
- persist mint quote expiry into pending transfer events (existing field)
- fix latent index trap in EventList/EventSummary mint labels

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nagers

- issue step now uses TransferFlow.pollAndIssue instead of a single-shot
  mint call; failures park the transfer as resumable pending state
- melt failures only revert inputs to valid when the mint verifiably
  reports the quote unpaid; unknown outcomes (timeouts) keep proofs
  pending and preserve event data instead of wiping blankOutputs/proofs
- melt errors trigger a one-shot meltState recheck: a payment that
  settled despite a thrown error now continues into issuance
- resumeTransfer checks the destination mint quote first and no longer
  requires meltQuote/proofs/blankOutputs for the recovery path
- new .pending state handled in SwapView, BalancerView, RedeemView
- TransferView: live quote status rows and expiry instead of data-
  presence checkmarks, alert view was never attached (errors were
  silently swallowed), removal now verifies unpaid state and per-proof
  NUT-07 state with the mint before reverting

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
SwiftData does not preserve to-many relationship array order (proven by
test: [A, B] came back [B, A] after a single save), so the positional
from/to convention on Event.mints is unreliable. New transfer events now
carry unidirectional optional fromMint/toMint relationships, set on
creation and preferred by transferMints. Existing rows stay untouched
and resolve via the proofs-orientation/positional fallback.

Adding optional relationships is a lightweight migration; verified by an
on-disk store test (pre-change schema -> current schema -> reopen) and
the existing legacy-store migration tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CashuSwift: payment-methods branch -> up to next minor from 0.4.1
Bolt11: main branch -> up to next minor from 0.1.3

The branch pins forced a stale Bolt11 revision over cashu-swift's
exact 0.1.3 requirement, breaking the build against Bech32Swift 1.0.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add translations (ar, bn, de, es, fr, hi, ja, ko, pt-BR, ru, tr) for the
new transfer-flow strings and for previously untranslated keys — 56 keys,
617 translations. Catalog is now fully translated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nt details

Restructure the hidden Debugging menu into two entries: "Wallets" now
serves as the single entry point, where each wallet shows its info and
links to its own proof database (mint list scoped to that wallet instead
of the active one, hidden mints labeled). The new "Events" entry lists
all events including hidden ones and opens a technical detail view
exposing quote IDs, quote state, payment requests, preimages, serialized
tokens, blank outputs, transfer endpoints and associated proofs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Events are now reached from a wallet's section in the Wallets inspector
("Event Database" next to "Proof Database") instead of a global entry,
and the list shows only that wallet's events.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Catalog sync extracted 11 new keys from the extended database inspector
(Event Database, Event Details, Mint/Melt Quote, Transfer Endpoints,
Associated Proofs, Blank Outputs, Wallets, hidden, Including hidden,
"%lld %@"); add translations for all of them, keeping protocol terms
(Proof, Mint, Melt, NUT-08) and quote/database/hidden wording consistent
with the existing catalog. Also includes the sync's stale markers for
strings no longer extracted (e.g. the removed "Wallet Info" entry).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant