Skip to content

open-spaced-repetition/fsrs-browser

Repository files navigation

NPM Version

fsrs-browser

This project runs fsrs-rs in the browser with support for training FSRS parameters.

Versioning

fsrs-browser's major and minor version numbers will match the version of fsrs-rs used. The patch version number is reserved for fsrs-browser's use and may drift out of sync with fsrs-rs.

Building and demoing

Run ./dev.sh for fast builds or ./prod.sh for fast runs.

Run the /sandbox project to demo various behavior.

I highly encourage ./prod.sh if you intend to run training. On my machine training 24,394 revlogs on ./dev takes days, while ./prod.sh takes 3.5 seconds.

Updating the git submodules

This section is only relevant to devs who are updating the fsrs-browser branch of fsrs-rs or open-spaced-repetition/burn.

fsrs-browser git submodules the aforementioned for reasons given here. Changes to these submodules should be written in a style to reduce merge conflicts. For example:

  • Comment code or tests out using /* ... */ instead of deleting it.
  • Don't fix most warnings, no matter how sad clippy sounds.

Auto-mergeable code is much, much better than "clean code". This is not the place or time for "good code".

You should also ignore CI/CD in these submodules. fsrs-browser uses wasm-bindgen-rayon, which in turn uses target-feature=+atomics,+bulk-memory,+mutable-globals, which require nightly. Expecting CI/CD for the submodules to work with nightly is unreasonable, and fixing them only invites more opportunity for merge conflicts. The only CI/CD that matters is fsrs-browser's.