Tier: S (1-2 days) | Type: dx
Context. fetchAnnouncementsStream and the pipeline scanner (src/chains/stellar/scanner/pipeline.ts) stream results but give the caller nothing to display while a cold scan chews through 50k events. Every example app (stellar-react-receive, stellar-cli-scan, the Chrome extension) currently guesses at a spinner. Add a first-class onProgress hook so UIs can render honest progress bars.
Scope.
ScanProgress type: { scannedLedgers, totalLedgers?, matches, elapsedMs }.
- Optional
onProgress?: (p: ScanProgress) => void on the public stellar scan entry.
- Emit at a bounded rate (throttle to at most once per 100ms).
- Wire it through the Chrome extension example so the popup shows real progress.
Acceptance.
Files. src/chains/stellar/scan.ts, src/chains/stellar/scanner/pipeline.ts, examples/stellar-chrome-extension/src/, test/chains/stellar/scan.test.ts.
Tier: S (1-2 days) | Type: dx
Context.
fetchAnnouncementsStreamand the pipeline scanner (src/chains/stellar/scanner/pipeline.ts) stream results but give the caller nothing to display while a cold scan chews through 50k events. Every example app (stellar-react-receive,stellar-cli-scan, the Chrome extension) currently guesses at a spinner. Add a first-classonProgresshook so UIs can render honest progress bars.Scope.
ScanProgresstype:{ scannedLedgers, totalLedgers?, matches, elapsedMs }.onProgress?: (p: ScanProgress) => voidon the public stellar scan entry.Acceptance.
Files.
src/chains/stellar/scan.ts,src/chains/stellar/scanner/pipeline.ts,examples/stellar-chrome-extension/src/,test/chains/stellar/scan.test.ts.