Skip to content

fix(web): accept semicolon separated Loom CSVs - #3518

Merged
richiemcilroy merged 2 commits into
mainfrom
fix/loom-csv-semicolon
Oct 28, 2026
Merged

richiemcilroy merged 2 commits into
mainfrom
fix/loom-csv-semicolon

Conversation

@richiemcilroy

@richiemcilroy richiemcilroy commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Problem

Spreadsheet apps set to many European locales save CSV files with semicolons between columns instead of commas. parseLoomCsvRecords only split on commas, so a file like

loom_video_url;user_email
https://www.loom.com/share/...;owner@example.com

was read as a single column called loom_video_url;user_email. The Loom CSV import page then could not map a video URL column and the Review Import button stayed disabled with no explanation.

Fix

parseLoomCsvRecords now picks the delimiter from the header line before parsing: it counts unquoted commas and semicolons on the first line that has content (blank lines and lines of empty cells before the header are skipped) and uses a semicolon only when there are more of those than commas. Everything else in the parser is unchanged.

  • Comma files parse exactly as before, including ones with semicolons inside values or quoted headers (quotes are skipped when counting).
  • A single column file has neither character in its header and stays comma separated.
  • Quoted commas inside a semicolon file stay inside their cell.
  • The results CSV the page offers for download is still written with commas, and it parses back with the comma path.

Both callers (the CSV import page and the admin concierge upload) go through this function, so both get the fix.

Testing

  • New unit tests in loom-csv.test.ts for semicolon files, quoted commas in a semicolon file, comma files with semicolons in values, a single column file, and a semicolon file with blank lines before the header. The semicolon tests fail on main and pass with the change. All 18 tests in the file pass.
  • Parsed a real multi-file semicolon separated Loom export with the new parser: every row came back as two columns with the header recognised.
  • biome check is clean on both files.

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; both previous findings are addressed.

Summary

Adds semicolon-separated Loom CSV support in the shared parser.

  • Loom CSV imports now read comma- and semicolon-separated files.

Reviews (2) · Last reviewed commit: "fix(web): skip blank lines when detectin..." · Reviewed by Greptile

@capy-ai capy-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capy found no issues.

Open in Capy

Comment thread apps/web/lib/loom-csv.ts Outdated
Comment thread apps/web/__tests__/unit/loom-csv.test.ts Outdated
@vercel

vercel Bot commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
cap-status Skipped Skipped Oct 28, 2026 2:54pm UTC

@capy-ai capy-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capy found no issues.

View 2 other findings in Capy.

Open in Capy

@richiemcilroy

Copy link
Copy Markdown
Member Author

@greptileai review

@richiemcilroy
richiemcilroy merged commit 4e7969c into main Oct 28, 2026
39 checks passed

This branch was successfully deployed

1 active and 1 inactive deployments
Preview – cap-web — 6f4ececd Deployed Oct 28, 2026 by vercel[bot]
Preview – cap-status — 6f4ececd Deployed Oct 28, 2026 by vercel[bot]
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