<feed xmlns='http://www.w3.org/2005/Atom'>
<title>org-drill/tests/test-org-drill-session-state.el, branch main</title>
<subtitle>Spaced-repetition flashcards for Org Mode
</subtitle>
<id>https://git.cjennings.net/org-drill/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/org-drill/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/'/>
<updated>2026-05-28T02:09:29+00:00</updated>
<entry>
<title>feat: add org-drill-on-timeout-action to drop unfinished cards at the time limit</title>
<updated>2026-05-28T02:09:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-28T02:09:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=88e248bcc4db4d47850a8eca914ffd4c6eb0249c'/>
<id>urn:sha1:88e248bcc4db4d47850a8eca914ffd4c6eb0249c</id>
<content type='text'>
Implements upstream #56. When org-drill-maximum-duration is reached, the session used to keep presenting the in-progress card and the again-queue until they drained, so the only way out was to finish them or interrupt. I added the defcustom org-drill-on-timeout-action with a discard-current value that ends the session as soon as the limit is hit, leaving the dropped cards untouched: they keep their existing scheduling and turn up again next session. The default, finish-current, preserves the old behavior.

The gate lives in org-drill-entries-pending-p, the single predicate the drill loop checks between cards. Under discard-current past the limit, the in-progress and again items stop counting as pending, so the loop ends instead of draining them.
</content>
</entry>
<entry>
<title>test: add session-state predicate coverage</title>
<updated>2026-05-05T09:16:21+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-05T09:16:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/org-drill/commit/?id=8a83694d8882a3a80328b7ffd8ddbc2c2c73f3ae'/>
<id>urn:sha1:8a83694d8882a3a80328b7ffd8ddbc2c2c73f3ae</id>
<content type='text'>
23 ERT tests covering the queue control flow:

- org-drill-entries-pending-p: empty session, current-item slot,
  again-entries bypassing limits, item-count limit interaction
- org-drill-pending-entry-count: empty, sums all queues, current-item
  marker check
- org-drill-maximum-duration-reached-p: nil-duration disables, cram
  bypasses, fresh session under limit, old session over limit
- org-drill-maximum-item-count-reached-p: nil disables, cram bypasses,
  under/at limit, includes-failed-items-p flag
- org-drill--entry-lapsed-p: feature flag gate, threshold respected
- org-drill-free-markers: explicit list, t-frees-everything
</content>
</entry>
</feed>
