feat: add configurable Anki word field with note ID merge tracking

- Extract word field config into reusable anki-field-config module
- Add ankiConnect.fields.word config option (default: "Expression")
- Replace hardcoded "Expression" field references across Anki integration
- Add note ID redirect tracking for merged/moved cards
- Support legacy ankiConnect.wordField migration path
This commit is contained in:
2026-03-18 02:24:26 -07:00
parent 61e1621137
commit a0015dc75c
17 changed files with 286 additions and 20 deletions

View File

@@ -2,6 +2,7 @@ import fs from 'fs';
import path from 'path';
import { DEFAULT_ANKI_CONNECT_CONFIG } from '../config';
import { getConfiguredWordFieldName } from '../anki-field-config';
import { AnkiConnectConfig } from '../types';
import { createLogger } from '../logger';
@@ -240,7 +241,8 @@ export class KnownWordCacheManager {
}
if (allFields.size > 0) return [...allFields];
}
return ['Expression', 'Word', 'Reading', 'Word Reading'];
const configuredWordField = getConfiguredWordFieldName(this.deps.getConfig());
return [...new Set([configuredWordField, 'Word', 'Reading', 'Word Reading'])];
}
private buildKnownWordsQuery(): string {