fix(app): Reorder among older items, export and text import that hold up

- Reorder: rows from before an order existed all share one position, and
  one moved among them landed at their end; the run it goes into now
  gets positions of its own (placeAmong), for notes, files, paths,
  steps and sub-studysets. Rows whose deletion can still be undone count
  for nothing, as the list leaves them out, and a dropped row takes its
  place at once instead of snapping back until the order is read again.
- Export: two studysets inside each other (moved so on two devices
  offline) no longer make it run forever; links to files whose names
  hold #, % or brackets work; PDFs, images and sounds go into the zip
  without being compressed again; any error says the export failed.
- Text import: a real CSV reader (quoted fields over several lines, a
  back over several quoted fields, a stray quote spoiling only its own
  line), the separator guessed from the text (semicolons from German
  spreadsheets), and files in UTF-16 or Windows-1252 read as meant.
- A tab whose notes, paths or files couldn't be read says so rather than
  "No … yet"; an Anki import from the Library that fails leaves no empty
  studyset behind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-09 13:02:32 +02:00
commit 084af278b5
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -262,11 +262,11 @@
"studysetImportCards": "Karteikarten",
"studysetImportCardsHint": "Eingefügt oder aus einer CSV- oder TSV-Datei",
"cardTextImportTitle": "Karteikarten importieren",
"cardTextImportDescription": "Eine Karte pro Zeile: ihre Vorderseite, ein Trennzeichen, dann ihre Rückseite. Jede Zeile wird an ihrem ersten Trennzeichen geteilt; Zeilen ohne eines werden ausgelassen.",
"cardTextImportDescription": "Eine Karte pro Zeile: ihre Vorderseite, ein Trennzeichen, dann ihre Rückseite. Jede Zeile wird an ihrem ersten Trennzeichen geteilt; Zeilen ohne eines werden ausgelassen. Ein Feld in doppelten Anführungszeichen, wie Tabellenprogramme sie schreiben, darf Trennzeichen und Zeilenumbrüche enthalten.",
"cardTextImportHint": "Füge die Karten hier ein",
"cardTextImportLoadFile": "CSV- oder TSV-Datei laden",
"cardTextImportFileType": "CSV- oder TSV-Dateien",
"cardTextImportUnreadable": "Diese Datei ist kein Text in UTF-8.",
"cardTextImportUnreadable": "Diese Datei enthält keinen Text.",
"cardTextImportSeparator": "Trennzeichen",
"cardTextSeparatorTab": "Tab",
"cardTextSeparatorComma": "Komma",
@ -438,6 +438,9 @@
"syncMismatchMore": "Mehr",
"tagsReadFailed": "Die Tags konnten nicht gelesen werden.",
"notesReadFailed": "Die Notizen konnten nicht gelesen werden.",
"pathsReadFailed": "Die Lernpfade konnten nicht gelesen werden.",
"filesReadFailed": "Die Dateien konnten nicht gelesen werden.",
"tagPickerTitle": "Tags",
"tagPickerManage": "Tags verwalten",
"tagPickerSearchLabel": "Tag suchen oder erstellen",