descriptionSImple SPAced REpetition (QT version)
homepage URLhttps://sgilles.net
ownersgilles@sgilles.net
last changeTue, 3 Sep 2024 21:23:42 +0000 (3 17:23 -0400)
content tags
add:
README
This is sispare-qt: SImple SPAced REpetition (QT version). You can use
it to do spaced repetition with flash cards with a modified version of
the Leitner system[1]. I wrote sispare[2] because I don't think Anki
should be 100MB+ of code, and I wrote sispare-qt because I was sick of
squinting at my terminal to read the kanji.

You need

 - Qt5 [ https://www.qt.io/ ]

 - A C++ compiler that supports C++20

To use it, run

   /path/to/sispare-qt [ -d <dir> ]

The <dir> argument defaults to ${XDG_DATA_HOME}/sispare or
${HOME}/.sispare .

Sispare-qt is mostly controlled by the data directory. It expects the
following layout:

   /path/to/sispare/dir/
    + cards/
    | + card_000/
    | | + side_A
    | | + side_B
    | | + level
    | + card_001/
    | | + side_A
    | | + side_B
    | | + level
    | + whatever name you like/
    |   + side_A
    |   + side_B
    |   + level
    + schedule/
      + 2031-08-12
      + 2031-08-13
      + 2031-08-16

When sispare-qt starts a session, it reads all the files in schedule/
whose names correspond to the current date or earlier. Each line in
those files will be something like "card_000" or "whatever name you
like".

All of those lines are collected and shuffled. For each line, the sides
of the corresponding card will be displayed in a window. If the user
marks the card as successfully remembered, the value stored in that
card's level file will be increased, which influences how much time
passes before the card is next reviewed. If the user marks the card as
failed, that card's level is reset to 1, and if the card is marked as
remembered with difficulty, the card's level is slightly reduced.

TODOs:

 - Decide on correct behavior for deleted cards, and possibly add a
   deletion option to the GUI. See the TODO in session.cc

 - Implement card-adding from within the GUI. Currently I do that using
   the CLI client, but it should be doable from here too. Better, even,
   because the GUI will let me provide nice text entry boxes.

[1] https://en.wikipedia.org/wiki/Leitner_system
[2] https://repo.or.cz/sispare.git
shortlog
2024-09-03 S. Gillesallow cards to shuffle out of rotationmaster
2024-09-03 S. Gilleshalve level instead of decrement on hard pass
2024-01-24 S. Gillesdo not crash on malformed schedule files
2023-07-07 S. Gillesinclude <optional>
2021-04-18 S. Gillescalculate dates for review correctly
2021-04-08 S. Gillesdelete cards from schedule files if they can't be loaded
2021-04-08 S. Gillesadd un/install targets
2021-03-29 S. Gillesinitial; functional, might as well release
heads
2 months ago master