st3v3nmw / obsidian-spaced-repetition

Fight the forgetting curve by reviewing flashcards & entire notes on Obsidian.md
https://www.stephenmwangi.com/obsidian-spaced-repetition/
MIT License
1.48k stars 184 forks source link

[FEAT] Track study history #674

Open shao-wang-me opened 1 year ago

shao-wang-me commented 1 year ago

Is your feature request related to a problem? Please describe. I like how things are designed now. They fit the note taking workflow very well and helped me a lot! On top of the current features, I would like to see how many efforts I have made into learning things. I use both flashcards and notes for simple things to remember and complex stuff (e.g. LeetCode problems) respectively. There is no such capability that I know of.

Describe the solution you'd like There are other Obsidian plugins that can display activity logs (e.g. Chronology). However, it is impossible to separate modifications to the content and learning a flashcard or note. Some possible features I would like to see:

  1. The flashcards or notes I reviewed each day, month, year or a specific date range.
  2. The learning history of a flashcard or notes, or such stats on a deck or folder.
  3. A burndown chart.

Additional context N/A.

bolutife-lawrence commented 1 year ago

Hello, @st3v3nmw and the Obsidian Spaced Repetition team. đź‘‹

First timer here, looking to grab a good first issue to ease me into the project as I’ve always wanted to be a part of it, and this caught my attention. Particularly because it offers a way to retrospect and measure progress which alone presents a myriad of benefits for study techniques like Spaced Repetition & Active Recall, and a sense of accomplishment in hindsight.

I’m going to regurgitate the problem and build on the proposed solutions just to ensure my understanding and flow of thoughts align with the requirements.

From what I understand, this might require a change to how reviews are stored and processed. Currently, new review data (i.e. next due dates, performance records, etc.) overwrites the previous. Therefore, one is only able to see as far back as the last review. The ability to see beyond just the last review/performance can supercharge and improve how people use the system. For one, it may reveal recurrent patterns, good or bad, in an individual’s learning and also inform their future learning outcomes.

To begin, I would employ some central data store; json file tucked away in the .obsidian dir, which tracks review responses per file/deck/note and per last review dates. I believe Anki has a similar design in place. Might look something like:

[
    {
        “file/deck/note”: “Note.md”
        “revisions”: [
            {
                “date”: “2023-06-03”,
                “metadata”: [] // may differ based on whether it’s a whole note or cards review.
            }
        ]
    }
]

I anticipate some performance bottlenecks as the json file grows, for which one might employ a cache(not sure how Obsidian’s internal cache works and how accessible it is-will check it out and update thread as required). Pointers and ideas are also most welcome.

This change would set the stage for both of your proposed features/solutions. It would allow for the querying of all the reviews, sorted by revision dates and/or other parameters, grouped by the week/month/year. In effect, it would create a solid base for a refined and flexible stats page/view with filters, time travel superpowers, and whatnot.

If this looks right, I’d be happy to dive right in.

maggaou commented 1 year ago

Hello, @st3v3nmw and the Obsidian Spaced Repetition team. đź‘‹

First timer here, looking to grab a good first issue to ease me into the project as I’ve always wanted to be a part of it, and this caught my attention. Particularly because it offers a way to retrospect and measure progress which alone presents a myriad of benefits for study techniques like Spaced Repetition & Active Recall, and a sense of accomplishment in hindsight.

I’m going to regurgitate the problem and build on the proposed solutions just to ensure my understanding and flow of thoughts align with the requirements.

From what I understand, this might require a change to how reviews are stored and processed. Currently, new review data (i.e. next due dates, performance records, etc.) overwrites the previous. Therefore, one is only able to see as far back as the last review. The ability to see beyond just the last review/performance can supercharge and improve how people use the system. For one, it may reveal recurrent patterns, good or bad, in an individual’s learning and also inform their future learning outcomes.

To begin, I would employ some central data store; json file tucked away in the .obsidian dir, which tracks review responses per file/deck/note and per last review dates. I believe Anki has a similar design in place. Might look something like:

[
  {
      “file/deck/note”: “Note.md”
      “revisions”: [
          {
              “date”: “2023-06-03”,
              “metadata”: [] // may differ based on whether it’s a whole note or cards review.
          }
      ]
  }
]

I anticipate some performance bottlenecks as the json file grows, for which one might employ a cache(not sure how Obsidian’s internal cache works and how accessible it is-will check it out and update thread as required). Pointers and ideas are also most welcome.

This change would set the stage for both of your proposed features/solutions. It would allow for the querying of all the reviews, sorted by revision dates and/or other parameters, grouped by the week/month/year. In effect, it would create a solid base for a refined and flexible stats page/view with filters, time travel superpowers, and whatnot.

If this looks right, I’d be happy to dive right in.

I'm just interested, what's your take on Anki? Why do we want to put a lot of effort developing a spaced repetition plugin if we can use separate software for it? A software that already offers solutions to many needs.