l3kn / org-fc

Spaced Repetition System for Emacs org-mode
https://www.leonrische.me/fc/index.html
GNU General Public License v3.0
258 stars 31 forks source link

Concept of "new" cards and limiting the number of "new" reviews per day #80

Open cashpw opened 1 year ago

cashpw commented 1 year ago

Does org-fc have a concept of a "new", never before reviewed, card? I was looking for a setting like Anki's "New cards/day".

cashpw commented 1 year ago

As far as I can tell:

  1. The equivalent of an Anki card is a "position"
  2. A new position would be one with an interval of 0
l3kn commented 1 year ago

There is a similar concept of “learning” cards based on the box value of the card. It's possible to determine if a card was never reviewed by comparing the due date of a position with the time the card was created. The two are only the same for cards that were never reviewed.

As far as I know, Anki also supports cards with cloze deletions (multiple positions per card, in org-fc terminology) but I'm not sure if each of these would get its own spacing parameters in Anki.

What are you trying to accomplish with a “New cards/day” setting? In case you have created a file with many new cards but want to gradually introduce them to the review sessions, the approach I'm using is to suspend all cards, then un-suspend a given number of cards once I feel like I've learned the previous cards.

cashpw commented 1 year ago

What are you trying to accomplish with a “New cards/day” setting?

I'd like to spread new reviews out to avoid spikes in daily review counts. Your suggestion ("... suspend all cards, then un-suspend a given number of cards ...") works; however, I'd like something that doesn't require manual intervention.

It's possible to determine if a card was never reviewed by comparing the due date of a position with the time the card was created.

Perfect, thanks! This should be the last piece I need to get it working (https://github.com/cashweaver/org-fc/tree/cards-and-positions).

The two are only the same for cards that were never reviewed.

I created a card today which had a creation time one second behind its position(s). I haven't looked at the init code but I assume it grabs a fresh (current-time) for each card and position.

l3kn commented 1 year ago

Looking at the code, the CREATED property and the review data drawer are created separately and comparing the two will also fail if a new position was added to a card after its creation or if it was previously suspended.

In that case, without parsing the review history file there is no way to tell apart positions that failed the previous review and ones that haven't been reviewed at all.

Adding a separate “new” field to the review drawer would require a lot of effort because it would need to be backwards compatible. One workaround I can think of is to start with an initial box value of -1 and treat it the same as 0 everywhere in the review-spacing logic.