Popup Review for Spaced Repetition

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

Description

Popup Review for Spaced Repetition

Reviews

No reviews yet.

Stats

0
stars
52
downloads
0
forks
31
days
1
days
3
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
34
commits

Latest Version

4 days ago

Changelog

1.0.4

Added

  • New cards per day (default 10): never-reviewed cards previously could not enter the review cycle through popups at all. Now, when nothing is due, up to N new cards per day are introduced (due cards always take priority). Set to 0 for the old due-cards-only behavior. This replaces the "Due cards only" toggle.
  • Persistent diagnostics log: every scheduler decision and popup lifecycle event is appended to diagnostics.log inside the plugin folder (size-capped, auto-trimmed), so "popups seemed to stop" can be investigated after the fact.

Fixed

  • The settings schedule line now reports the internal wait state honestly (e.g. after a nothing-due check) instead of promising a popup within a minute.

追加

  • 「1日の新規カード導入枚数」(デフォルト10):未レビューの新規カードがポップアップ経由で復習サイクルに入れない問題を解消。期限カードを常に優先しつつ、期限がないときに1日N枚まで新規カードを導入します。0で旧「期限カードのみ」挙動。旧トグルはこの設定に置き換えられました
  • 診断ログの永続化:全ての判定とポップアップの動作がプラグインフォルダ内の diagnostics.log に記録されます(サイズ上限・自動トリム付き)

修正

  • 設定画面の「ポップアップ予定」が内部の待機状態(対象カードなし後の再チェック待ち等)を正直に表示するようになりました

README file from

Github

Popup Review for Spaced Repetition

日本語版 README はこちら / Japanese README

Review your Spaced Repetition flashcards without opening Obsidian: a small always-on-top popup appears at regular intervals, shows one due card, and lets you reveal the answer and rate it (Again / Hard / Good / Easy) right in the popup.

Ratings are written through the Spaced Repetition plugin's own review pipeline (the same code path as its review modal), so your scheduling data stays fully consistent — no re-implementation of SM-2 or FSRS.

Tested with Spaced Repetition v1.15.4.

How it works

  1. A scheduler checks at your configured interval (default: every 2 hours) whether any cards are due.
  2. If so, a frameless popup appears at the bottom-right of your primary display — without stealing focus. Obsidian can stay minimized.
  3. Read the question, click Show answer (or press Space), then rate the card with the four buttons (or keys 14).
  4. The rating is saved through Spaced Repetition itself, and the popup closes. Closing the popup without rating writes nothing — the card simply stays due.

Requirements

  • Obsidian desktop (Windows / macOS / Linux; the popup uses an Electron window, so mobile is not supported)
  • The Spaced Repetition plugin, installed and enabled

Installation

  1. Open Settings → Community plugins → Browse.
  2. Search for Popup Review and install Popup Review for Spaced Repetition.
  3. Enable it in Settings → Community plugins.

Manual

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Put them into <your vault>/.obsidian/plugins/sr-popup-review/.
  3. Reload Obsidian and enable Popup Review for Spaced Repetition.

Using the popup

Interaction Effect
Click Show answer / press Space or Enter Reveals the answer in place
Click Again / Hard / Good / Easy / press 14 Saves the rating and closes
Click / press Esc Closes without saving anything
Click (next to ✕) Options menu: pause until resumed, or snooze popups for 30 min / 1 h / 3 h
Drag the header Moves the popup

The rating buttons use the labels you configured in the Spaced Repetition plugin. Card text is rendered as Markdown, and cloze deletions are masked exactly as in the normal review modal.

You can also open a popup at any time with the command "Show review popup now" (via the command palette).

To pause automatic popups, click the bell icon in the status bar (bottom right), use the "Toggle popup pause" command, or flip the toggle in settings — all three control the same switch. The manual show-popup-now command still works while paused.

Settings

Setting Default Description
Language Obsidian's default Interface language of this plugin (English / 日本語)
Pause popups off Temporarily stop automatic popups (also toggled by the status-bar bell icon and a command)
Popup interval (minutes) 120 How often a popup may appear (minimum 5)
Do not disturb on, 01:00–09:00 Toggle plus a time range with no popups; supports ranges across midnight
Auto-close (seconds) 90 Closes an untouched popup (nothing is written); 0 disables
New cards Up to a daily limit (10/day) When nothing is due, never-reviewed cards are introduced into the cycle: don't introduce / up to a daily limit / unlimited
Randomize deck order on Pick each popup card from a random deck (weighted by due count) so every due card has a roughly equal chance; off follows Spaced Repetition's sequential deck order
Skip popups during fullscreen apps on Postpones popups while Windows reports a fullscreen app or presentation (games, slideshows, F11); the card appears within a minute after fullscreen ends. Windows only
Deck filter All decks All decks or Only listed decks
Deck list Dual-list picker: move decks between available and target with the add/remove buttons (double-click works too); a target deck also covers its subdecks. Empty target list = all decks
Show deck name on Shows the deck path and due count in the popup header
Check shortly after startup off Runs one check ~15 s after Obsidian starts

The settings tab also shows whether the Spaced Repetition integration is working, and why not if it isn't.

Data safety

  • Ratings go through Spaced Repetition's own review sequencer — identical writes to pressing the buttons in its modal (scheduling comment, sibling burying, load balancing, FSRS/SM-2, all of it).
  • This plugin depends on internals of the Spaced Repetition plugin, so it probes every internal it needs before each use. If a future Spaced Repetition version changes them, popup reviews are disabled with a notice — the plugin never writes through an unknown code path.
  • Dismissing or auto-closing a popup writes nothing.

Known limitations

  • Popups appear only while Obsidian is running (minimized is fine).
  • The popup is a custom always-on-top window, not an OS notification: it does not appear in the notification center and ignores Focus Assist itself. Fullscreen apps and presentations are detected separately and skipped (see settings).
  • Position is fixed to the bottom-right of the primary display for now.

Development

npm install
npm run dev    # one-shot build into ../sr-popup-test-vault (see esbuild.config.mjs)
npm run watch  # same, but watch mode
npm run build  # typecheck + production build to repo root

Development builds are emitted directly into a dedicated test vault (C:/work/sr-popup-test-vault). Never point dev builds at a real vault — this plugin writes to SR scheduling data.

License

MIT