Skip to content

Releases: AnkingLin/EasyQuiz

1.1.4

Choose a tag to compare

@AnkingLin AnkingLin released this 27 Oct 17:47

回源与启动修复

  • 题面恢复成普通文本:题卡标题不再触发跳转,回源笔记只用右上角的铅笔。
  • 回源一定落在题面:打开题库后按题目所在行再定位一次,标题带知识点链接(^[[[笔记#小节]]])时也不会停在笔记顶部。
  • 题库列表启动时不再空白:列表会等 Obsidian 建好元数据索引再扫,索引就绪后自动重扫;同一次启动里也不会把题库解析两遍。

升级后首次加载会弹出一次更新说明。

1.1.3

Choose a tag to compare

@AnkingLin AnkingLin released this 27 Oct 16:39

文档修正(插件代码未变)

  • 两份 README 与 skills/easyquiz-authoring/SKILL.md 不再描述已经移除的 ![[题库#题面]] 题卡嵌入:图片、笔记小节一律按 Obsidian 原生方式渲染,题目引用只用「题目id」内联代码。
  • 源码结构、纯逻辑模块清单与测试条数(422)已与代码对齐。

main.js 与 1.1.2 完全相同(sha256 d9cb95b1c6e4ffd692808669c74d6d0e8a1e95cdf538fbfef50fed5b1f00bee8),本版只为让插件页面和仓库显示修正后的说明。

1.1.2

Choose a tag to compare

@AnkingLin AnkingLin released this 27 Oct 16:05

嵌入式编写

  • 题目引用改用「题目id」:在任意笔记里用内联代码写题目 id,题目会就地渲染成可作答的题卡;点题卡标题或右上角的铅笔即可回到题库笔记并定位到题面。
  • 不再接管 ![[...]] 嵌入:图片、笔记小节等一律按 Obsidian 原生方式渲染,题目引用只用「题目id」。

1.1.1

Choose a tag to compare

@AnkingLin AnkingLin released this 27 Oct 15:27

1.1.1

更顺手的跳转与提示

  • 题目引用改用「题目id」:在任意笔记里用内联代码写题目 id,题卡就地渲染,不必再写 ![[题库#题面]];旧写法继续兼容。
  • 题卡「编辑」按钮像反向链接一样跳到题目标题:编辑模式光标落在标题行,阅读视图滚动到标题并显示原生高亮;已打开的标签页会复用。
  • 「题面已变更」提示可在设置里关闭;在题卡上点「关闭提示」会直接关掉该设置,所有题卡的警告色一起恢复。

导航

  • 「清除本题记录」移到刷题导航右侧、与跳题输入框同一组,避免误触。

1.1.0

Choose a tag to compare

@AnkingLin AnkingLin released this 27 Oct 10:51

嵌入式编写(主题)

这个版本把「在笔记里写题、在笔记里做题、让 AI 帮忙写题」串成一条链路。

AI Skill

  • 新增 skills/easyquiz-authoring/SKILL.md:五种题型的骨架、选项锚点、降级规则、知识点链接约定;示例由测试真实解析并判分。
  • AI 可以按规范批量补题、修题,也可以在讲义里插入单道可作答的题卡(![[题库#题面]])。

题型编写

  • 标题匹配新增「自动匹配最近的标题」:任何自身章节里有 quiz 数据块的最近标题都会成为题目。
  • 数据块新增 question 字段可覆盖显示题面;新增 distractors 为选择题追加干扰项(个数 + 候选池,每次作答重抽)。
  • 题面按题型从目标段向上取:紧邻一段属于题面,再往上只有表格强制空行才继续;贴在选项上的说明进入「补充内容」,配对题只识别最近一张表,问答题 callout 与其上段落一起显示。
  • 表格、选项、解析、配对格子都按 Obsidian Markdown 渲染,答题页与预览一致。

刷题与题库

  • 题卡右上角新增编辑按钮,按原生内链跳回源笔记中的题目位置,已打开则复用标签页。
  • 切回已答题目会显示当时的作答,右上角统计同步更新。
  • 文件夹勾选框支持部分选中;题库列表返回时自动感知文件变化。
  • 题目和题库都能清除作答记录;命令面板可直接为当前题库开始一轮。

完整说明见 README。

1.0.10

Choose a tag to compare

@github-actions github-actions released this 22 Oct 07:20
chore(release): 1.0.10

1.0.9

Choose a tag to compare

@github-actions github-actions released this 21 Oct 13:25
chore(release): 1.0.9

1.0.8

Choose a tag to compare

@github-actions github-actions released this 17 Oct 11:15
chore(release): 1.0.8

Patch release: two practice-window layout fixes.

- The footer no longer leaves a strip of background under it. The scroll
  container's own bottom padding was pushing the sticky bar up; the breathing
  space now lives in the bar, so it sits flush with the bottom edge. The
  practice page's navigation bar had the same defect and is fixed with it.
- The settings panel's three rows now carry symmetric padding. Obsidian's
  `.setting-item` adds an 8px bottom margin and nothing on top, which showed up
  as a lopsided gap, and its 16px padding stacked onto the panel's own.

The README screenshot generator loaded `styles.css` before `theme.css`, the
reverse of Obsidian, so its approximate `.setting-item` rule was masking the
second defect in every committed screenshot; the order is corrected and the
three practice-window screenshots regenerated.

No question-format, degrade-rule or record-key changes, and minAppVersion
stays at 1.4.0. The suite grows from 381 to 383 cases.

1.0.7

Choose a tag to compare

@github-actions github-actions released this 16 Oct 08:49
EasyQuiz 1.0.7

Two rendering fixes and one new feature.

Fixes
- Choice options containing `~` lost it on the card. Options were written
  with the match-normalised text, which strips `* _ ` ~` so that `H~2~O`
  and `H2O` compare equal, and using that for display meant the stripped
  characters vanished: `H~2~O` rendered as `H2O` and `约 ~5%` as `约 5%`.
  Options now render as Markdown, so Markdown and literal symbols both
  survive. The same normalised string also reached the review list and the
  "answer is a (text)" hint, so a new display-only helper covers those: it
  strips only paired markers and keeps a lone `~` or `_`, because those are
  subject-matter symbols rather than markup.
- The practice window's **Shuffle** did not shuffle the choice options. It
  only ever reached the question order, so the toggle looked broken and a
  shuffled card had nothing to grade positionally - which is the reported
  "shuffled options are not graded against the right answer". Options now
  shuffle with the anchors travelling alongside them, so grading is
  unchanged and still anchor-based. The order is derived from the round's
  seed, so it holds still while reviewing an answer or stepping between
  questions and only re-rolls for a new round; a card whose options jump
  around reads as "the answer changed".

Changes
- `![[bank#question]]` renders an answerable question card inside any other
  note. The subpath is the stem heading without the trailing `^[[[]]]`
  knowledge link; answering writes back to the bank note as usual, and the
  card's knowledge-point link still points at the knowledge note. A review
  note or handout can therefore be assembled from questions that already
  exist, without copying their text and without the copies drifting.
  Anything that is not provably a question is left untouched, so ordinary
  `![[note#section]]` embeds keep Obsidian's behaviour.

Notes
- Obsidian's own heading embed cannot do this. A plain embed renders the
  section's Markdown, which for a question is the option list plus the raw
  `quiz` fence rather than a card; and Obsidian normalises punctuation when
  comparing headings, so the trailing knowledge link derails the match and
  it falls back to rendering the entire bank file.
- No question-format, degrade-rule or record-key changes. Existing banks
  and records keep working, and minAppVersion stays at 1.4.0.

Tests
- The suite grows from 344 to 381 cases. The option tests assert what
  actually reaches the renderer, the shuffle tests assert that a shuffled
  card still submits the right anchor and still marks the right row, and
  the embed tests cover src parsing, heading matching in both raw and
  link-flattened form, the claim boundary under nesting, and the recursion
  guard that keeps a self-referencing question from rendering forever.

1.0.6

Choose a tag to compare

@github-actions github-actions released this 15 Oct 11:38
EasyQuiz 1.0.6

The practice window's toolbar no longer carries a phantom left margin, and
the narrow-screen layout lines up.

Fixes
- The toolbar is no longer pinned right with `margin-left: auto`. In the
  practice page's header - a wrapping flex row holding the title, the hint
  and the toolbar - a flex container hands every bit of free space to auto
  margins, so once the toolbar wrapped onto its own line that space
  travelled with it as a ~149px left margin. It now aligns to the row's
  start via `align-self`, which only affects the cross axis and so is
  immune to wrapping.
- File rows in the narrow-screen list indented inconsistently. The row's
  text column kept a content-sized flex basis, so flex judged "does this
  fit?" by content width: rows with a long path pushed the whole text block
  onto a second line, indenting those rows by 40px while short-path rows
  sat at 12px in the same list. Every row now renders the same way.
- The toolbar and the footer actions wrap onto their own line using
  `width: 100%` rather than a percentage `flex-basis`. Both are also
  children of column flex containers, where a percentage basis resolves
  against height instead of width.
- The jump-question input was 40px next to 44px navigation buttons in a
  row that centres its items, leaving it visibly short at top and bottom.

Notes
- Stylesheet only: no question-format, record-key, settings or API
  changes. Existing banks and records keep working, and minAppVersion
  stays at 1.4.0.
- Three README screenshots are regenerated, because the practice-window
  scenes are captured at 520px, inside the narrow-screen breakpoint.

Tests
- The suite grows from 340 to 344 cases. jsdom has no layout engine and
  cannot see any of these defects, so the new assertions pin the
  declarations that cause them: no auto margin on the toolbar, no
  percentage flex-basis in the narrow-screen block, a zeroed file-row
  basis, and a jump input matching the nav buttons. Restoring any of the
  four old rules makes its assertion fail.