Summary
Users can't get swap interface data out of the app. Add a client-side export of the currently-filtered view as CSV and JSON with correct escaping (including formula-injection safety).
Why this matters
Export is table stakes for a data tool, and naive CSV is a formula-injection risk. Correct escaping makes it safe and useful.
Requirements
- Export the currently-filtered swap interface as CSV and JSON.
- Escape correctly: quotes, commas, newlines, and leading
= + - @ (CSV formula-injection).
- Respect the active filters/sort; export what the user sees.
- Trigger a client download; accessible control.
Technical guidance
- Neutralize formula-triggering leading characters in CSV cells.
- Stream/generate without blocking the UI for large views.
Edge cases — each must have a test
Acceptance criteria
Out of scope
- Server-side/large-dataset export
- XLSX format
Rewards
Part of the GrantFox OSS / Official Campaign (FWC26) — this task may be rewarded. PR quality is assessed by AI: depth, correctness under edge cases, meaningful tests, and clean design are what earn the reward. Shallow changes (typos, formatting, trivial docs) do not qualify.
Summary
Users can't get swap interface data out of the app. Add a client-side export of the currently-filtered view as CSV and JSON with correct escaping (including formula-injection safety).
Why this matters
Export is table stakes for a data tool, and naive CSV is a formula-injection risk. Correct escaping makes it safe and useful.
Requirements
= + - @(CSV formula-injection).Technical guidance
Edge cases — each must have a test
Acceptance criteria
npm run lint,npm test, andnpm run buildall pass locallyCloses #<issue>Out of scope
Rewards
Part of the GrantFox OSS / Official Campaign (FWC26) — this task may be rewarded. PR quality is assessed by AI: depth, correctness under edge cases, meaningful tests, and clean design are what earn the reward. Shallow changes (typos, formatting, trivial docs) do not qualify.