36e6ab590b
The import review grid rendered every parsed row and re-scanned all rows three times per render for its counts; RawCsvReviewView recomputes rows + counts once per change and the grid renders through Virtualize. The export modal embedded the whole CSV twice (textarea + base64 data: URI); it now shows a 50-line preview and links to GET /api/raw/tags.csv (ConfigEditor, like /raw), which runs the same RawTagCsvExport builder and sends it as an attachment. Refs #745 Claude-Session: https://claude.ai/code/session_01Ub9hGmYLQvn9XETzw7CMsT