Commit graph

43 commits

Author SHA1 Message Date
Dusk
a9033664b8 Finalize pre-release cleanup 2026-04-27 19:54:49 +08:00
Dusk
c0c2551753 fix(settings): default scope to selected folders
中文: 将插件运行范围默认值改为仅在指定文件夹,并同步旧配置加载测试与构建产物。

English: Change the plugin run scope default to selected folders only, update persistence/default tests, and refresh the production bundle.
2026-04-26 22:42:38 +08:00
Dusk
8357992ee3 feat(sync): refine QA mappings and cloze output
中文: 优化问答题多级列表字段映射与解析,移除填空题兼容性误判,并调整填空题正文分隔符和设置页展示。

English: Refine QA group field mapping and parser behavior, remove stale cloze compatibility assumptions, and update cloze body separator plus settings UI copy.
2026-04-26 16:55:31 +08:00
Dusk
911949bedc fix(sync): make saved field mappings authoritative
中文: 统一已保存字段映射为同步权威来源,移除填空题对 isCloze 与命名猜测的阻断,并让多级列表问答按已保存 titleField 与 slots 同步。

English: Makes saved field mappings the sync authority, removes cloze blocking based on isCloze and name heuristics, and syncs QA Group cards with saved title and slot mappings.
2026-04-26 11:47:11 +08:00
Dusk
271253c484 fix(settings): regroup card deck settings
中文: 重组卡片牌组设置分组,统一中文牌组文案,并将文件夹及文件名映射设为默认牌组模式。

English: Regroups card deck settings, normalizes Chinese deck copy, and makes folder-and-file mapping the default deck mode.
2026-04-26 09:35:19 +08:00
Dusk
b6e59c8eec feat: 默认折叠设置卡片并迁移 cloze 默认识别 / collapse settings cards and migrate default cloze recognition 2026-04-25 23:16:40 +08:00
Dusk
d46ddb431d feat(settings): simplify QA group field mapping UI
中文: 将问答题(多级列表)的题目字段改为可选择下拉框,并将问题/答案字段摘要简化为只显示已识别组数;同步逻辑保留用户选择的题目字段。

English: Make the QA group title field selectable, simplify the Q/A slot summary to the detected pair count, and preserve the selected title field during sync and cache refresh.
2026-04-25 10:19:11 +08:00
Dusk
3136f50624 feat: automatic Anki note type migration during sync
- Support for QA Group and normal cards migration.
- Preservation of noteId and learning history.
- 自动同步过程中的 Anki 笔记类型迁移
- 支持问答组和普通卡片的迁移
- 保留笔记 ID 和学习历史记录
2026-04-25 09:53:30 +08:00
Dusk
3d82d7fb55 feat: QA Group 重构为用户模板驱动并支持自动字段映射 | Refactor QA Group to user-template-driven route with auto field mapping 2026-04-24 23:47:09 +08:00
Dusk
043a207149 perf(settings): batch cache Anki model fields
中文: 设置页手动读取 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.
2026-04-24 18:38:10 +08:00
Dusk
06492948d9 fix(settings): cache Anki note templates
中文: 优化设置页卡片类型布局,隐藏语义问答题与 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.
2026-04-24 14:59:22 +08:00
Dusk
0fdf9c8ef3 重构设置页为五卡片并统一识别配置 / Cardize settings page and unify recognition config
重构设置页采用五个卡片外壳,提升布局稳定性和局部刷新体验;通过 cardTypeConfigs 驱动各卡片的识别配置,并完成初步的功能测试与验证。 / Refactored settings page into five cards for better stability and partial refresh; unified recognition configurations via cardTypeConfigs with initial testing and verification.
2026-04-24 12:12:10 +08:00
Dusk
17e22fbaa5 feat(sync): render QA Group inline markdown and align QA note CSS / 功能:渲染 QA Group 行内 Markdown 并对齐 QA 样式 2026-04-24 09:48:14 +08:00
Dusk
b82e1dd53d feat: 支持可配置 Obsidian 回链显示名称与位置 / configurable Obsidian backlink label and placement
覆盖普通卡、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.
2026-04-23 23:08:00 +08:00
Dusk
978a8c1e02 fix(render): separate tag chip CSS from fields
中文: 移除 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.
2026-04-23 22:20:37 +08:00
Dusk
e45abb579f feat(sync): render Obsidian tags in Anki cards
中文: 增加 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.
2026-04-23 22:13:24 +08:00
Dusk
579899f7c8 feat: sync Obsidian tags and pure tag line cleanup / 功能:同步 Obsidian 标签并清理纯标签行
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 覆盖。
2026-04-23 16:43:06 +08:00
Dusk
4052eff0e7 feat: 新增 cardAnswerCutoffMode 卡片正文截止模式,支持 heading-block / double-blank-lines,并统一 marker/GI 写回归整规则
feat: add cardAnswerCutoffMode with heading-block / double-blank-lines and unify marker/GI writeback normalization.
2026-04-23 10:16:41 +08:00
Dusk
67854cf154 feat: implement full bilingual i18n and structured error rendering
- 新增完整双语 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
2026-04-21 13:34:27 +08:00
Dusk
a3c540a493 fix: clear current-file synced cards for semantic QA and QA groups / 修复当前文件清空已同步卡片覆盖 semantic QA 与 QA Group 2026-04-21 11:56:29 +08:00
Dusk
fbb289850a 清理 legacy sync 链与旧 syncRegistry 残留,保留 current manual-sync 主链 / Remove legacy sync chain and old syncRegistry remnants while preserving the current manual-sync path
删除已失效的 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.
2026-04-21 11:23:27 +08:00
Dusk
5023e8a4bb fix(qa-group): recreate missing notes on unchanged sync
中文: 修复 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.
2026-04-21 10:52:44 +08:00
Dusk
c8b7915c40 fix(markers): normalize spacing before and after synced ids
中文: 统一普通 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.
2026-04-20 22:43:01 +08:00
Dusk
472011c32f fix(qa-group): harden sync and backlink behavior
中文: 修复 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.
2026-04-20 22:14:59 +08:00
Dusk
bbe1eece12 QA Group 模型同步修复 / Fix QA Group model sync
- 修复 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
2026-04-20 15:20:20 +08:00
Dusk
4845c721d5 feat: add #anki-list QA Group 12 route / 新增 #anki-list QA Group 12 路线
Add a parallel QA Group 12 sync path with GI writeback, fixed model management, and GroupId recovery semantics.

新增并行 QA Group 12 同步路径,支持 GI 写回、固定模型管理,以及基于 GroupId 的恢复语义。
2026-04-20 13:42:30 +08:00
Dusk
b1b2051502 feat: add semantic QA list splitting / 支持语义 QA 列表拆卡 2026-04-19 22:00:36 +08:00
Dusk
f313f702ac fix(sync): self-heal deck drift and normalize tag backlinks
中文: 补充 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.
2026-04-19 20:16:03 +08:00
Dusk
e2f973dc46 refactor: 切换 manual-sync 主链到 ID noteId / refactor manual-sync mainline to ID noteId
- 将 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
2026-04-19 11:46:37 +08:00
Dusk
d4d73487a0 fix(deck-cleanup): detect empty decks correctly and improve selection modal
中文: 修复空牌组清理时错误读取 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.
2026-04-19 00:03:07 +08:00
Dusk
1682ce5fa0 fix(sync): fix deck stats structure, empty deck identification, and test false positives
修复了 deck stats 返回结构读取错误、修复了空牌组候选识别错误、修复了对应测试的假阳性问题。
2026-04-18 22:53:17 +08:00
Dusk
a5056dd71c fix: prevent treating unknown deck stats as cleanup candidates | 修复:防止把未知 deck 统计当成空牌组 cleanup candidates
English: Ensure that decks with unknown statistics are not incorrectly treated as empty candidates for cleanup.
中文:确保统计信息未知的牌组不会被错误地视为待清理的空牌组。
2026-04-18 22:37:08 +08:00
Dusk
412fddebc1 feat(management): add commands to clear synced cards and cleanup empty decks | 新增清空已同步卡片与清理空牌组管理命令
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 中移除未使用的牌组。这两个命令改进了插件的维护和同步流程。
2026-04-18 22:21:10 +08:00
Dusk
bd149b9d11 fix(deck): migrate existing cards when deck rules change 2026-04-18 21:39:15 +08:00
Dusk
960b87103d feat(deck): add configurable deck resolution modes
中文: 新增 deck 模式选择、文件级 deck 解析、文件夹映射、模板插入与 warning 汇总

English: Add deck mode selection, file-level deck parsing, folder mapping, template insertion, and warning aggregation
2026-04-18 20:14:29 +08:00
Dusk
cb968b1d17 feat: redesign folder scope settings 2026-04-18 13:42:01 +08:00
Dusk
a0ac404712 fix: tighten module 3 indexing identity and caching 2026-04-18 10:20:16 +08:00
Dusk
d3d356fb10 feat: implement module 3 manual sync architecture 2026-04-18 10:07:49 +08:00
Dusk
be0277d089 fix: harden marker writeback failures 2026-04-18 08:23:12 +08:00
Dusk
63aaf5f438 fix: stabilize batch AHS writeback 2026-04-18 08:16:30 +08:00
Dusk
7c2c6776bd feat: Module2 — AHS 写回与相关测试 2026-04-18 00:08:46 +08:00
Dusk
5099b39d3f chore: commit Module 1 changes — add NoteFieldMapping, mapping service, persistence, tests 2026-04-16 23:02:07 +08:00
Dusk
f854a3b581 chore: rebuild dist and sync 2026-04-16 18:02:02 +08:00