From abce2aaa274f83f53de2fb88fd81e3da664317fd Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 2 Jan 2026 23:53:06 +0900 Subject: feat(import): simplify CSV format by removing deck column MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since import is initiated from deck context, the deck is already known via props. Simplifies CSV format to: note_type,Field1,Field2,... BREAKING CHANGE: CSV format changed from deck,note_type,... to note_type,... 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/client/components/ImportNotesModal.tsx | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/client/components') diff --git a/src/client/components/ImportNotesModal.tsx b/src/client/components/ImportNotesModal.tsx index a7a88c5..2eb0922 100644 --- a/src/client/components/ImportNotesModal.tsx +++ b/src/client/components/ImportNotesModal.tsx @@ -142,22 +142,20 @@ export function ImportNotesModal({ const { headers, rows } = parseResult.data; - // Validate headers: must have deck, note_type, and at least one field - if (headers.length < 3) { - setError( - "CSV must have at least 3 columns: deck, note_type, and field(s)", - ); + // Validate headers: must have note_type and at least one field + if (headers.length < 2) { + setError("CSV must have at least 2 columns: note_type and field(s)"); setPhase("upload"); return; } - if (headers[0] !== "deck" || headers[1] !== "note_type") { - setError("First two columns must be 'deck' and 'note_type'"); + if (headers[0] !== "note_type") { + setError("First column must be 'note_type'"); setPhase("upload"); return; } - const fieldNames = headers.slice(2); + const fieldNames = headers.slice(1); const validated: ValidatedRow[] = []; const errors: ValidationError[] = []; @@ -316,9 +314,9 @@ export function ImportNotesModal({

Expected format:

- deck,note_type,Front,Back + note_type,Front,Back
- MyDeck,Basic,hello,world + Basic,hello,world
-- cgit v1.2.3-70-g09d2