Mistake Notebook

by Adobiz
5
4
3
2
1
Score: 50/100

Description

Mistake notebook: mask answers (blur/white/mosaic/black), click to reveal, auto-split long answers to a linked page, insert at cursor, question emphasis, minimal mode. Data stays in plain Markdown — no lock-in.

Reviews

No reviews yet.

Stats

1
stars
198
downloads
0
forks
46
days
45
days
45
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
13
commits

Latest Version

2 months ago

Changelog

📊 仪表盘驾驶舱

左侧边栏仪表盘全面升级:

  • 错题列表:按最近活动排序,点击直接打开对应笔记
  • 状态快切:列表内一键切换 待复习 / 已复习
  • 筛选联动:点学科条 / 状态胶囊,列表与统计同步过滤
  • 热力图增强:近 26 周 ↔ 近一年、按录入 ↔ 按更新可切换
  • 周趋势柱状图:近 8 周每周新增一目了然
  • 积灰提醒:超过 30 天未碰的错题数量橙色提示
  • 空状态一键「新建错题」

🔁 复习机制重构:两态 + 块级完成

  • 状态简化为两态:待复习 / 已复习(旧数据自动兼容,无需迁移)
  • 块级完成(按你的题数计数):页面总题数 = 答案块数;每题一个「完成复习」入口, 完成集合去重计数——全部完成才算页面复习完成,单题完成不再误标整页
  • 已完成块显示「已复习 ✓」,重复点击不重复计数;揭晓答案可自动记录(可关)
  • 新建 / 就地插入的错题自动携带完成入口

🧘 简化模式

设置新增「简化仪表盘和复习相关」:一键隐藏仪表盘的复习区域、笔记内完成入口与揭晓自动记录,回归纯粹的统计与录入视图。

🛠 工程

80 个单元测试全绿;Release 由 CI 自动构建(含构建来源证明)。


English (v1.0.4): Dashboard cockpit — mistake list with click-to-open, one-tap status toggle (Pending / Reviewed), linked subject & status filters, heatmap range & source switching, weekly trend bars, and stale-mistake warnings. Review reworked to two states with per-mistake completion: total = answer blocks on the page, each mistake tracked independently in a deduped done-set — a page is reviewed only when ALL mistakes on it are done. New "Simplify dashboard & review" toggle hides review sections when you just want statistics. 80 unit tests; CI-built release with attestations.

README file from

Github

📓 Mistake Notebook

Turn mistakes into reviewable assets: mask the answer, think first.

Answer masking · Click to reveal · Long-answer splitting · Insert at cursor · Minimal mode

English | 简体中文

Release CI License: MIT Obsidian


A mistake notebook (错题本) for Obsidian, built for exam-driven studying: whenever you get a question wrong, capture it — then review with the answer masked until you can solve it yourself.

✨ Features

  • 🎭 Answer masking, four styles — blur / white / mosaic / black. Answers stay masked during review; click the block to reveal, and use "re-mask" in the title bar to test yourself again.
  • ✂️ Automatic long-answer splitting — answers over a threshold (400 chars by default, configurable) or containing display math are split into a dedicated answer page; the question keeps a single link to it, with a "back to question" link on the answer page.
  • 📥 Insert mistakes in place — insert a mistake (question + answer block) at the cursor of any note, no new file required; keep knowledge summaries and their mistakes on the same page.
  • 🟥 Question emphasis frame — questions are wrapped in a black-outlined callout that visually pairs with the answer block; select text and right-click to toggle it manually.
  • 🧘 Minimal mode — one command hides properties, backlinks and other chrome; the capture form reduces to just question and answer.
  • 🖼 Paste screenshots — ⌘V an image straight into the answer field; it is saved to your configured attachment folder and linked automatically.
  • 📊 Mistake dashboard — a left-sidebar view with subject distribution, counts, review status, and a GitHub-style grid of your capture activity over the last 26 weeks.
  • 📂 No lock-in — one mistake is one plain Markdown note + frontmatter: editable, scriptable, exportable.

🚀 Install

Community plugins (after review): Settings → Community plugins → Browse → search "Mistake Notebook" or 「错题本」.

Manual: download main.js, manifest.json and styles.css from Releases into

<vault>/.obsidian/plugins/mistake-notebook/

then enable Mistake Notebook in Community plugins. Beta versions are also available via BRAT.

📖 Usage

Commands

Command Description
新建错题(含答案遮罩) Open the capture modal and create a standalone mistake note
在当前位置插入错题(含答案遮罩) Insert a mistake at the cursor of the current note
把当前笔记的内联答案拆分为答案页 Split the inline answer of the active note into an answer page
切换极简模式 Toggle minimal mode (less chrome, simpler capture)

Right-click inside the editor for quick access: 插入错题 (insert here / new mistake page) and 题目显示强调 (toggle emphasis on selected text).

Capturing

The form supports Markdown and LaTeX. Paste a screenshot with ⌘V directly into the answer field — it is saved following your Obsidian attachment-folder settings and embedded automatically. Answer length is shown live; the split checkbox is pre-checked when a split is recommended.

Settings

Setting Default Description
Default mask style Blur Used when a note doesn't set maskStyle in frontmatter
Long-answer threshold 400 Answers longer than this are recommended for splitting
Split on display math On $$…$$ blocks count as long answers
Split on images Off Photo answers stay inline for masked reveal
Split behavior on capture Ask Pre-check the split checkbox in the modal
Answer pages follow question folder Off Create answer pages next to the question note
└ Subfolder inside question folder Off Put answer pages in question-folder/答案/
Hide properties on mistake notes On Hide the frontmatter panel on question/answer pages
Minimal mode Off Less chrome; capture form reduced to question + answer

📂 Data structure

One mistake = one Markdown note:

---
id: "mt-20250212-数学-a1b2c3"
subject: "数学"
answerMode: "page" # inline=same page; page=split to answer page
maskStyle: "auto" # auto/blur/white/mosaic/black
status: "pending" # pending/reviewing/mastered/archived
---

# 函数单调性

> [!mt-question] 题目
> 题干……

> [!answer] 查看完整答案(答案较长,已拆分答案页)
> [[函数单调性-数学-20250212-080509-答案|查看完整答案 →]]

Answer pages carry an mt-answer-of backlink and a "back to question" link. Conventions are documented in docs/ADR.

🛠 Development

npm install
npm run dev        # watch build → main.js (copy into your vault's plugin folder)
npm run verify     # typecheck → lint → prettier → vitest → build (must pass before merging)
npm run test:watch # unit tests in watch mode

Layering: src/domain is pure TypeScript with zero dependencies (no "obsidian" imports) and is unit-tested in Node; the Obsidian API only appears in the adapter and UI layers. Business rules (split thresholds, naming, dedup) live in src/domain with *.test.ts files. Releases are built by CI from the tag — never attach local artifacts by hand.

🗺 Roadmap

  • M1: capture (text/screenshots) + answer masking + click to reveal + long-answer splitting
  • M1.5: insert in place, question emphasis, minimal mode, hidden properties
  • M2: review mode (self-test: remembered / forgot) + spaced repetition scheduling
  • M3: per-subject default mask style, statistics dashboard

🤝 Contributing

Issues and PRs are welcome — please run npm run verify before submitting. Commit messages follow Conventional Commits.

License

MIT © Adobiz