中文: 设置页手动读取 Anki 模板时改为批量读取字段并缓存到 data.json,重新打开设置页可直接使用缓存字段。
中文: 修复字段缓存 loadedAt 类型收窄和测试 fake 缺少批量字段接口导致的 production build 失败。
English: Batch-load Anki model fields for settings, cache them in data.json, and reuse cached fields when reopening the settings page.
English: Fix production build failures by narrowing cached loadedAt values and adding the batch field API to test fakes.
中文: 优化设置页卡片类型布局,隐藏语义问答题与 AnkiConnect URL;允许多级列表问答题从 Anki 模板中选择笔记类型和字段。
中文: 将手动读取到的 Anki 笔记模板列表缓存到 data.json,设置页重新打开后下拉菜单可直接使用上次读取结果。
English: Refine the settings card-type layout, hide Semantic Q&A and the AnkiConnect URL, and let nested-list Q&A use selectable Anki note types and fields.
English: Cache loaded Anki note templates in data.json so settings dropdowns can reuse the last loaded list after reopening.
重构设置页采用五个卡片外壳,提升布局稳定性和局部刷新体验;通过 cardTypeConfigs 驱动各卡片的识别配置,并完成初步的功能测试与验证。 / Refactored settings page into five cards for better stability and partial refresh; unified recognition configurations via cardTypeConfigs with initial testing and verification.
中文: 修复设置页文件夹树半选逻辑,子文件夹选择不再自动提升为父文件夹;补充 Anki Heading Sync 插件同步路径说明。
English: Keep child folder selections explicit in the settings tree, render parent folders as indeterminate, and document the Anki Heading Sync plugin sync target.
覆盖普通卡、Cloze、语义 QA 与 QA Group 12,新增回链名称与放置位置设置、渲染位置控制、QA Group 模板漂移更新与 renderConfigHash 失效。
Cover normal cards, cloze, semantic QA, and QA Group 12 with configurable backlink label and placement, placement-aware rendering, QA Group template drift updates, and renderConfigHash invalidation.
中文: 移除 Anki 字段中的标签 chip 内联样式,仅输出 class 和 data-tag,并把 QA Group 模型样式放入 Anki 模板 CSS。
English: Remove inline styles from rendered tag chips, keep semantic class/data attributes in fields, and move QA Group tag styling into Anki model CSS.
中文: 增加 Obsidian 标签在 Anki 正文中的标签样式渲染,并覆盖 QA Group 同步链路,确保渲染配置变更会触发重同步。
English: Render retained Obsidian tag tokens as styled chips in Anki card bodies, extend the behavior to QA Group sync, and bump render/index fingerprints so existing cards resync.
EN: Implement one-way Obsidian to Anki tag sync, nested tag normalization, pure tag-line body cleanup, and QA Group coverage.\nZH: 实现 Obsidian 到 Anki 的单向标签覆盖、嵌套标签规范化、正文纯标签行清理,并补齐 QA Group 覆盖。
- 新增完整双语 i18n 支持,支持按 Obsidian 语言自动切换
- 实现结构化 warning / user error 渲染
- Added full bilingual i18n support with automatic switching based on Obsidian language settings
- Implemented structured warning and user error rendering
删除已失效的 legacy sync use case、syncRegistry 持久化与旧 card pipeline,运行入口保持 ManualSyncService 主链。
Remove the obsolete legacy sync use cases, syncRegistry persistence, and old card pipeline while keeping the runtime on ManualSyncService.
中文: 修复 QA Group 在本地 state 与正文 hash 看起来未变化时,如果 Anki 中对应 note 已丢失却不会自动补建的问题。现在同步会先校验 note 是否仍存在,缺失时自动重建并重写 GI。
English: Fix QA Group sync so missing Anki notes are recreated even when local state and block hashes look unchanged. Sync now verifies note existence first and self-heals by rebuilding the note and rewriting GI when needed.
中文: 统一普通 QA、填空题、QA Group 与旧 AHS marker 的写回排版。现在 marker 会紧贴正文最后一行,并在下一个标题前固定保留两行空白,同时清理旧的多余空行。
English: Normalize write-back spacing for standard ID markers, QA Group GI markers, and legacy AHS markers. Markers now sit directly after the last content line and keep exactly two blank lines before the next heading while removing stale extra spacing.
中文: 修复 QA Group 同步链路中的多处稳定性问题,包括可点击回链、丢失 noteId 时自动重建、避免在未指定目标 deck 时误调用 changeDeck,以及统一设置页 note type 下拉行为。
English: Fix multiple QA Group stability issues, including clickable backlinks, self-healing recreation when stored noteIds are missing, skipping changeDeck when no target deck is provided, and unifying note type dropdown behavior in settings.
- 修复 QA Group model 管理的 AnkiConnect payload 契约,模板与样式更新改为嵌套 model payload
- 修复 QA Group model 自检与更新链路,补充带 action/model 上下文的错误信息与回归测试
- 解耦 QA Group 与旧 semantic-qa mapping 路径,设置页移除保留 model 的旧映射入口并增加只读状态说明
- Fix the AnkiConnect payload contract for QA Group model management by using nested model payloads for template and styling updates
- Repair the QA Group model ensure/update flow with action/model-aware errors and regression tests
- Decouple QA Group from the legacy semantic-qa mapping path by removing the reserved model from old mapping controls and adding read-only status guidance
Add a parallel QA Group 12 sync path with GI writeback, fixed model management, and GroupId recovery semantics.
新增并行 QA Group 12 同步路径,支持 GI 写回、固定模型管理,以及基于 GroupId 的恢复语义。
中文: 补充 cardsInfo 读取与 deck 校验流程,让 marker 驱动的旧卡和本地状态漂移场景也能自愈迁移牌组;同时对标题末尾的 #标签 回跳做最小归一化,提升从 Anki 返回 Obsidian 标题定位的兼容性,并提交用于排查的查询脚本。
English: Add cardsInfo-backed deck verification so marker-backed existing notes and deck drift can self-heal during sync. Also normalize trailing heading tags in Obsidian backlinks to improve heading jump compatibility from Anki, and include the helper query scripts used for investigation.
- 将 marker、state、writeback 的 durable identity 改为 noteId
- Switch marker, state, and writeback durable identity to noteId
- 支持满足标题规则的旧 ID 卡片重接进并按当前 renderer 重渲染
- Reconnect legacy ID cards that match heading rules and rerender them with the current renderer
- 补充 schema migration、测试、构建验证与插件同步
- Add schema migration, tests, build verification, and plugin sync
中文: 修复空牌组清理时错误读取 Anki deck 统计的问题,改为按真实返回结构识别空牌组;同时增强清理弹窗,新增全选、全部不选、反选、已选计数和删除按钮禁用逻辑。
English: Fix empty-deck cleanup by matching Anki deck stats from the real response shape, and improve the cleanup modal with select all, clear all, invert selection, selection counts, and disabled delete when nothing is selected.
Introduced two new management commands: 'Clear currently synced cards' to reset sync state for the current file, and 'Cleanup empty decks' to remove unused decks from Anki. Both commands improve plugin maintenance and synchronization flow.
新增两个管理命令:'清空当前文件已同步卡片'用于重置当前文件的同步状态,'清理空牌组'用于从 Anki 中移除未使用的牌组。这两个命令改进了插件的维护和同步流程。