mirror of
https://github.com/panatgithub/AnkiHeadingSync.git
synced 2026-07-22 06:51:43 +00:00
1.8 KiB
1.8 KiB
Module 1 Gap Report
What Is Already Correct
AnkiConnectGateway.getModelDetails(modelName)already reads field names from Anki.qaNoteTypeandclozeNoteTypeare already persisted in plugin settings.CardRenderingServicealready renders heading and body separately before assigning them to Anki-facing fields.
Gaps Against Module 1 Spec
AnkiGatewaydoes not exposelistNoteModels(), so settings cannot populate note type dropdowns from Anki.PluginSettingshas nonoteFieldMappings, so there is no persisted, note-type-specific field mapping.- Settings UI still uses free-text note type inputs and has no field-loading, mapping dropdowns, or saved-state feedback.
NoteFieldMappingServicestill relies on heuristic fallback guesses (Front/Back,Text/Extra) during sync.- Sync execution does not block when mappings are missing or stale.
- Cloze output is still treated as
text+extra, nottitle + <br><br> + bodyinto one mapped main field. - There is no migration coverage proving old settings load with empty
noteFieldMappings. - There are no tests for note type list loading, mapping persistence, stale mapping validation, or settings UI mapping flow.
Focused Repair Plan
- Add persisted
NoteModelFieldMappingand migrate settings load/save to defaultnoteFieldMappingsto{}. - Replace heuristic sync mapping with configuration-driven mapping + validation.
- Add
listNoteModels()to the Anki gateway and wire settings UI to Anki-backed dropdowns. - Persist confirmed mappings per
${cardType}:${modelName}and block sync when missing or stale. - Update rendering semantics so sync assignment is driven by title/body fragments.
- Add targeted tests for gateway, settings persistence, mapping validation, UI flow, and sync gating.
Blockers
- No concrete repository blocker found at audit time.