Skip to content

feat: revocation reason codes, proof history export, GraphQL API, and Ledger support - #720

Merged
Bilalishaq7 merged 9 commits into
ToluLabs:mainfrom
TheDEV111:feat/issues-393-394-405-420
Oct 8, 2026
Merged

Bilalishaq7 merged 9 commits into
ToluLabs:mainfrom
TheDEV111:feat/issues-393-394-405-420

Conversation

@TheDEV111

@TheDEV111 TheDEV111 commented Sep 30, 2026 •

Copy link
Copy Markdown

Closes #394


Summary

This PR implements four features:

closes #393 — Revocation reason codes and on-chain revocation metadata

  • Added RevocationReason enum to ProofRegistry with codes: expired, superseded, fraud, user_request, other
  • revoke now accepts an optional reason parameter (defaults to Other)
  • Reason stored on ProofRecord and emitted in EventProofRevoked
  • Indexer parses and stores reason_code in the claims table
  • SDK exposes reason on ProofRecordDetails and reason_code on IndexerClaimRow
  • Tests cover each reason code

Closes #394 — Holder-side proof history export (CSV/JSON)

  • Added export-history.ts utility with CSV and JSON export
  • Export includes: claim type, verified_at, expiry, tx hash, issuer address (no PII)
  • Added "Export history JSON" and "Export history CSV" buttons to holder page
  • Works offline from local state (localStorage)

Closes #405 — Indexer GraphQL API alongside REST

  • Added /graphql endpoint with graphql-yoga
  • Supports filtering by wallet, credential_type, issuer, active/revoked, time range
  • Cursor-based pagination with first/after
  • Shares the same DB layer as REST
  • Tests cover filtering, pagination, and combined filters

Closes #420 — WalletConnect and Ledger support

  • WalletConnect was already partially integrated; ensured full support
  • Added LedgerModule implementing the Stellar Wallet Kit ModuleInterface
  • Ledger registered in the wallet picker with proper error handling
  • Ledger-specific errors: locked PIN, app not open, transaction rejected
  • Tests for Ledger module registration and availability

Test Results

  • Contract tests: 78 passed (1 pre-existing failure: missing WASM file)
  • Indexer tests: 60 passed
  • Frontend: wallet tests updated for Ledger

🤖 Generated with Claude Code

… and Ledger support

- ToluLabs#393: Add RevocationReason enum to ProofRegistry with reason codes (expired, superseded, fraud, user_request, other), store on ProofRecord, emit in events, and propagate through indexer and SDK
- ToluLabs#394: Add holder-side proof history export (CSV/JSON) with non-sensitive fields only
- ToluLabs#405: Add GraphQL API to indexer with filtering by wallet, credential_type, issuer, active/revoked, time range, and cursor-based pagination
- ToluLabs#420: Add Ledger hardware wallet support through the wallet abstraction with proper error handling
@drips-wave

drips-wave Bot commented Sep 30, 2026

Copy link
Copy Markdown

@TheDEV111 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Antigravity added 3 commits September 30, 2026 11:51
- Move graphql import to top-level in api.ts
- Add reason_code to test fixtures
- Fix Config type assertion in tests
- Add graphql-yoga to dependencies
- Cast graphql handler to any for Express compatibility
- Remove unused imports in frontend (StrKey, ISupportedWallet, xdr, SubmissionRecord)
- Re-export getLedgerModule from wallet.ts
- Remove .js extension from graphql import in api.ts
- Add missing reason argument to gated_pool revoke calls
- Add RevocationReason import to gated_pool integration tests
- Fix xdr type casting in ledger-module signTransaction
- Add queryClaims method to Db interface and implementation
- Update GraphQL resolver to use db.queryClaims
- Fix sqlitePath config in GraphQL tests
- Add reason_code to SDK test fixtures
@TheDEV111

Copy link
Copy Markdown
Author

@Psalmuel01 kindly merge

TheDEV111 pushed a commit to TheDEV111/StellarCred that referenced this pull request Oct 5, 2026
…tend TS types & Wallet mocking, and Indexer test strictness/GraphQL filters
@TheDEV111
TheDEV111 force-pushed the feat/issues-393-394-405-420 branch 3 times, most recently from 5ce88f0 to b35c8ce Compare October 5, 2026 11:51
@TheDEV111
TheDEV111 force-pushed the feat/issues-393-394-405-420 branch from b35c8ce to 232b6b4 Compare October 5, 2026 12:09
@Bilalishaq7
Bilalishaq7 merged commit 8efbbad into ToluLabs:main Oct 8, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants