Files
vikunja/pkg/modules/migration/ticktick/testdata_ticktick_export.csv
kolaente a4aad79f53 fix: TickTick import (#1871)
This change fixes a few issues with the TickTick import:

1. BOM (Byte Order Mark) Handling: Added stripBOM() function to properly handle UTF-8 BOM at the beginning of CSV files
2. Multi-line Status Section: Updated header detection to handle the multi-line status description in real TickTick exports
3. CSV Parser Configuration: Made the CSV parser more lenient with variable field counts and quote handling
4. Test Infrastructure: Added missing logger initialization for tests
5. Field Mapping: Fixed the core issue where CSV fields weren't being mapped to struct fields correctly

The main problem was in the newLineSkipDecoder function where:
- Header detection calculated line skip count on BOM-stripped content
- CSV decoder was also stripping BOM and applying the same skip count
- This caused inconsistent positioning and empty field mapping

Rewrote the decoder to use a scanner-based approach with consistent BOM handling.

Resolves https://github.com/go-vikunja/vikunja/issues/1870
2025-11-25 22:32:39 +00:00

2.9 KiB

1Date: 2025-11-25+0000
2Version: 7.1
3Status: 0 Normal 1 Completed 2 Archived
4Folder NameList NameTitleKindTagsContentIs Check listStart DateDue DateReminderRepeatPriorityStatusCreated TimeCompleted TimeOrderTimezoneIs All DayIs FloatingColumn NameColumn OrderView ModetaskIdparentId
5WorkProject AlphaTask with repeating scheduleTEXTurgent, workThis task repeats weeklyN002022-10-09T15:09:48+0000-1099511627776Europe/Berlinfalselist1
6WorkProject AlphaTask with reminder and datesTEXTwork, reminderTask description with reminderN2018-12-11T23:00:00+00002018-12-11T23:00:00+0000002018-12-11T20:10:46+00002018-12-11T20:12:14+00000Europe/Berlintruefalselist2
7WorkProject AlphaSubtask exampleTEXTThis is a subtaskN002022-10-09T15:20:55+00001099511627776Europe/Berlintruefalselist32
8WorkProject AlphaAnother subtaskTEXTAnother subtask exampleN002022-10-09T15:20:59+00002199023255552Europe/Berlintruefalselist42
9PersonalShoppingBuy groceriesTEXTshopping, personalWeekly grocery shoppingN002018-12-29T21:48:09+0000-1099511627776Europe/Berlinfalselist5
10PersonalShoppingBuy household itemsTEXTshoppingCleaning supplies and toiletriesN002018-12-29T21:48:00+0000-1099511627776Europe/Berlinfalselist6
11InboxLong task description exampleTEXTThis is an example of a task with a very long description that might contain special characters and formatting.N022022-01-21T11:33:40+00002025-11-25T10:39:31+0000-2748779069440Europe/Berlinfalsefalselist7
12InboxCompleted task exampleTEXTThis task was completed and shows the completed timestampN022022-01-21T11:33:34+00002025-11-25T10:39:31+0000-2473901162496Europe/Berlinfalsefalselist8
13InboxTask with due dateTEXTimportant, deadlineTask with specific due date and tagsN2023-03-28T22:00:00+00002023-03-28T22:00:00+0000002018-12-29T21:14:45+0000-2199023255552Europe/Berlintruefalselist9
14InboxWelcome taskTEXTWelcome to the task management system. This task demonstrates basic functionality.N2023-06-13T22:00:00+00002023-06-13T22:00:00+0000002018-12-11T20:09:58+0000-1099511627776truefalselist10
15InboxChecklist exampleCHECKLISTThis is a checklist task with multiple itemsY002018-12-11T20:09:58+00002199023255552falselist11