100 Commits
Author SHA1 Message Date
Luc Mcgrady 1516af9e4f fix(installer): add version to root folder (#5662)
closes #5621 

This will make the root folders name the format

`anki-26.9.2-linux-x86_64.tar` instead of just `anki-linux`
2026-09-21 21:46:02 +01:00
Luc Mcgrady 029c80aed1 refactor: use col.fsrs_enabled in more places (#5651)
closes #5652

`col.fsrs_enabled` should be usable in any place where we have access to
the collection (And that doesn't involve building the queue or modifying
the config).

c.c. @user1823
2026-09-21 15:17:09 +01:00
Luc Mcgrady 754ce3a25f fix: Card modified by stats screen (#5648)
fixes #5635

We could fix specifically the SM2 part of this bug with just the
"fsrs_enabled" part; but then if we encounter a card with the memory
state actually missing while reviewing I think we would get the same
error. So now any calculated memory state is only shown in the card info
and not writ to the database after being calculated.
2026-09-18 18:35:53 +03:00
Luc Mcgrady 910c92e90f fix: improve "Please restart to save changes" (#5641)
closes #5640 closes #5639
2026-09-17 19:53:36 +01:00
Luc Mcgrady c8b9417300 Force software rendering in safe mode (#5637)
Closes #5629

I decided to do this by moving safe mode to "app" rather than by moving
the rendering code to the main window
(2db70434ea1412b4513479236cd74464de986b6a)

If 2db70434ea1412b4513479236cd74464de986b6a is preferred then I'll
switch back to it
2026-09-17 20:04:10 +03:00
Luc Mcgrady 7447845b1a fix: Add redirects for mdbook pages (#5601)
closes #5598

I tried to use a glob but it didn't like redirecting based on it ending
in .html 😢

```json
    {
      "source": "/:glob.html",
      "destination": "/manual/:glob"
    }
```

```json
    {
      "source": "/:glob*.html",
      "destination": "/manual/:glob*"
    }
```

Does not work. So I brute forced it.
2026-09-15 16:22:39 +01:00
Luc Mcgrady 697e909719 refactor: add get_scheduling_states_inner (#5145)
closes  #5144


https://github.com/ankitects/anki/blob/fd65f20fcd277da9ed156ed72b534a549742096d/rslib/src/scheduler/answering/mod.rs#L231

This call to the db is made even though the card is already fetched from
the db by the function caller.
2026-09-14 20:12:06 +01:00
Luc Mcgrady 7941f546fc docs(fix): Revert "add redirect to english for missing translations" (#5559)
fixes #5558

We need to find a separate solution to this.
2026-09-11 16:45:49 +01:00
dea2a1f93a feat: Docs converter (#5483)
closes #5064 

Should let you quickly import to mintlify from the repos that use the
existing format.

a small problem that `DOCS_RELATIVE_LINK_REPLACEMENTS` needs to be set
manually for links between related translations but other than that
should be good.

I've run it on `en/addons` `en/faqs` `en/manual` and on `ar/manual`
`ar/faqs`. We might need to be careful to not overwrite any changes that
have been merged in this repo if there are any.

I've set it to copy only files where it can find them in the existing
mintlify docs because this allows us to more easily keep the site
structure. It does mean that there are some pages which aren't copied
and I'm going to have to look into that at some point.

But it should be good enough to look through and to import any remaining
changes left in the existing repos.

Example usage:
```
python tools/docs-converter.py [Source repo] [Target tab] [Target language code]
```

```
python tools/docs-converter.py ../anki-manual manual en
python tools/docs-converter.py ../anki-faqs faqs ar
```

---------

Co-authored-by: Abdo <abdo@abdnh.net>
Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com>
2026-09-10 15:10:22 +01:00
Luc Mcgrady 9f2e75d215 Fix: Change deck modifies all cards in deck (#5500)
fixes #5414

The DeckIdsWithoutChildren search is not surrounded by parentheses.

https://github.com/ankitects/anki/blob/d80273ea71d4e9a3cab91b5a2e5906366809e3ea/rslib/src/search/sqlwriter.rs#L127-L129

Maybe it would be best to surround all these searches with parentheses
to be safe?
2026-09-01 20:17:54 +03:00
Luc McgradyandLee Doughty 709689209b fix: constant font size for simulator graph (#5099)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->
## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
closes #4168

## Summary / motivation (required)

This PR makes it so that the font size of the text in the simulator
graph is consistent no matter how large the graph is.


## How to test (required)

Resize the graph in the simulator modals and the font size should remain
consistent

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->

## Before / after behavior (optional)

<!-- For bugfixes: behavior before vs after. For other types: N/A or a
short note. -->

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->

## UI evidence (required for visual changes; otherwise N/A)

<!-- Screenshot or short video -->

Before:


[Screencast_20260703_204727.webm](https://github.com/user-attachments/assets/fe918dfb-18f1-4102-bc15-2ea48ad56b97)

After:


[Screencast_20260703_204516.webm](https://github.com/user-attachments/assets/c8a8db4c-6d3c-4868-b1a4-a03d81b91036)


## Scope

- [X] This PR is focused on one change (no unrelated edits).

---------

Co-authored-by: Lee Doughty <32392044+leedoughty@users.noreply.github.com>
2026-08-27 16:28:14 +01:00
Luc McgradyandFernando Lins 608fa0b19c Fix: Ignore cards reviewed before settable to future values (#5294)
closes #5284

> (self quote) As I see it. I can't think of a use for setting the
ignore_reviews_before value in the future. It also seems to result in
undefined behaviour so I think we should prevent it from being set like
that.

---------

Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com>
2026-08-27 16:25:03 +01:00
Luc Mcgrady 29ffaaed47 fix: missing issue bot does not allow url in linked issues (#5287)
[Example](https://regex101.com/?regex=%5Cb%28closes%7Cclose%7Cclosed%7Cfixes%7Cfix%7Cfixed%7Cresolves%7Cresolve%7Cresolved%7Crefs%7Cref%7Creferences%29%3A%3F%5Cs%2B%28%3F%3A%28%3F%3A%5Ba-zA-Z0-9_.-%5D%2B%5C%2F%5Ba-zA-Z0-9_.-%5D%2B%29%3F%23%5Cd%2B%7Chttps%3F%3A%5C%2F%5C%2Fgithub%5C.com%5C%2F%5Ba-zA-Z0-9_.-%5D%2B%5C%2F%5Ba-zA-Z0-9_.-%5D%2B%5C%2Fissues%5C%2F%5Cd%2B%29&testString=closes+https%3A%2F%2Fgithub.com%2Fankitects%2Fanki%2Fissues%2F5285%0A&flags=gm&flavor=pcre2&delimiter=%2F)

closes #5286
2026-08-14 11:52:43 +01:00
Luc Mcgrady f086fe89fb feat: update memory state when card info opened. (#5326)
closes #3521

Previously when a card was moved between decks, it would be possible
that the FSRS data could be cleared from the card so that it wouldn't
display when the card stats were shown.

With this pr the memory state is attempted to be calculated when the
stats screen is opened if the state doesn't already exist.

## Testing steps

1. Create and review a card
2. Move it to a different deck
3. This card will now lack a memory state
4. Open the card stats
5. You will see the memory state there.

## Drawbacks
Notably means that the cards in the deck browser will still be missing
the memory state related columns after they're moved. It also introduces
an operation that modifies the card to the card_info function which
seems like a weird thing to do, although a similar thing is also done
when the user try's to simulate cards which are missing memory states.

This changed is predicated on what Dae said in the aformentioned issue:

> Deck changing is a common operation, and we don't want expensive
calculations every time it happens.
>
> Keeping the old memory state would require some extra flag so we know
to discard it at study time. And it would mean your stats are still
wrong - they'd just contain stale data, instead of missing data.

However with the memory state speed improvements introduced in #4335.
Maybe it is worth calculating the state when the cards are moved decks
rather than in this way?
2026-08-14 00:35:24 +01:00
Luc Mcgrady 5b1a2c322e fix: Hide ease when fsrs is enabled but there is no memory state (#5277)
closes #5285 

I noticed this was still causing some confusion
https://forums.ankiweb.net/t/ignore-cards-reviewed-before-question/70596?u=a_blokee

This adds an extra check to see if "desired retention" is set before
showing the ease value. It should prevent SM2 values from being shown
when FSRS is enabled.
2026-08-12 13:11:56 +01:00
Luc Mcgrady d6c108c0c7 test: fix_card_properties_last_review_time (#5146)
closes #5148
2026-08-10 16:00:27 -03:00
Luc McgradyandFernando Lins 0fba26bf22 test: simulate_workload_varies (#5150)
closes #5149

`simulate_workload` spawns ~30 threads so might be a little expensive
for a test in that regard. It seems to work ok though.

---------

Co-authored-by: Fernando Lins <fernandolins@users.noreply.github.com>
2026-08-10 15:59:43 -03:00
Luc McgradyandAbdo 7cf1d29896 docs: Replace docs/ with symlinks (#5031)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
closes #5001

This PR replaces the contents of `docs/` with symlinks to
`docs-site/developers/`

A caveat of this is that the metadata appears at the top of the file
instead of the title.
<img width="885" height="275" alt="image"
src="https://github.com/user-attachments/assets/430f9a71-e5a5-4412-983a-e4cfd7dc4714"
/>

We could either:
- Use ninja to copy the files from docs-site/developers and convert it
from .mdx to .md (Might be a problem with the symlink approach if mdx is
added to the contributor file later)
- Leave placeholder "For contribution instructions see: (link to
mintlify site)"s in the folder, which would have to wait until the
domain of the site is set. (Probably the best solution).

---------

Co-authored-by: Abdo <abdo@abdnh.net>
2026-08-04 22:01:31 +03:00
Luc Mcgrady db98bb675a feat: Experimental options in preferences (#5057)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->

closes #4871

## How to test (required)

Find "Labs" as a new option in the preferences

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->
I've implemented the "Labs" feature in a web-view as I presume we are
moving away from QT and
Currently these options have no function. Before we can add the
functionality we should try and come up with the pattern that we should
use to register new flags.

## UI evidence (required for visual changes; otherwise N/A)

<img width="746" height="736" alt="image"
src="https://github.com/user-attachments/assets/28c4fd28-a593-4599-b43e-c2c23881251e"
/>
<img width="746" height="736" alt="image"
src="https://github.com/user-attachments/assets/c1cd69f9-3d8d-4866-a784-030b4274b4e7"
/>

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-07-13 16:16:42 +03:00
Luc Mcgrady a0bf0b3e5e fix: dr incorrectly set in simulators (#5101)
closes #5100
2026-07-07 15:11:39 +03:00
Luc Mcgrady 1d12b11cdd fix(fsrs): Use fsrs config bool for set due date (#4792)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

fixes #4791
<!-- Fixes #123 / Closes #123 / Refs #123 -->

## Summary / motivation (required)

<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->

Previously, using set due date on a new card was broken for FSRS because
new cards didn't have a memory state which was how the set due date
function determined if FSRS is enabled or not. See
https://github.com/ankitects/anki/pull/4035#discussion_r2107488134.

This PR also makes it so that new cards behave as new cards after set
due date is used on them (Only while FSRS is enabled).

## Steps to reproduce (required, use N/A if not applicable)

<!-- Steps to reproduce: how to trigger the bug in the broken state (the
"before").
 - Mainly for bugfixes;
    - For bugs: numbered steps before the fix. For non-bugs: write N/A.
 - use N/A for features, refactors, docs, chore, etc.
-->

1. create a new card
2. set it's due date
3. set it's due date again
4. the due date won't change
5. use grade now
6. the card will be scheduled based on the future date due date rather
than now

## How to test (required)

<!--- How to test: how you verified the change (checks, unit tests,
manual steps, edge cases — the "after" or general validation). --->
I followed the reproduction steps and instead, after using set due date
the card remains in a new state, and the saved interval is the inputted
number (with a minimum of one to prevent it appearing as a reset)

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->

## Before / after behavior (optional)

<!-- For bugfixes: behavior before vs after. For other types: N/A or a
short note. -->

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->
If there are any ways I have not foreseen that an interval can be set to
0, then it may cause problems with this approach.

## UI evidence (required for visual changes; otherwise N/A)

<!-- Screenshot or short video -->

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-07-03 17:36:29 +03:00
Luc Mcgrady 2cdf314219 docs(chore): Replace certain pages with redirects (#5065)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
closes #5051

I used the regex 
```regex
---\W+please see
```
to find redirect pages. I then checked that there wasn't a structural
reason to leave them before I deleted them. If there are any pages that
this method of searching left out LMK.
2026-06-25 17:41:57 +03:00
Luc Mcgrady 3650ad8396 fix: Dont close deck config screen when optimizing all presets (#4981)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->

## Summary / motivation (required)
closes https://github.com/ankitects/anki/issues/4978

<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->

## Steps to reproduce (required, use N/A if not applicable)

<!-- Steps to reproduce: how to trigger the bug in the broken state (the
"before").
 - Mainly for bugfixes;
    - For bugs: numbered steps before the fix. For non-bugs: write N/A.
 - use N/A for features, refactors, docs, chore, etc.
-->

1. press "optimize all presets"
2. the window will save the current settings and cloze after it is done.

## How to test (required)

<!--- How to test: how you verified the change (checks, unit tests,
manual steps, edge cases — the "after" or general validation). --->
after pressing optimize all presets, you should be prompted if you want
to save. After confirming you want to save, the window will remain open
when the process completes.

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->

## Before / after behavior (optional)

<!-- For bugfixes: behavior before vs after. For other types: N/A or a
short note. -->

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->

## UI evidence (required for visual changes; otherwise N/A)

<!-- Screenshot or short video -->

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-06-25 16:42:39 +03:00
Luc Mcgrady 9a63b95230 Fix: text input refocues when list item shortcuts are pressed (#5007)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
fixes #5006

## Steps to reproduce (required, use N/A if not applicable)

<!-- Steps to reproduce: how to trigger the bug in the broken state (the
"before").
 - Mainly for bugfixes;
    - For bugs: numbered steps before the fix. For non-bugs: write N/A.
 - use N/A for features, refactors, docs, chore, etc.
-->

> I. Undo duplication
> 
> (1) Write into the editor “line”.
> 
> (2) In the non html editor, select this line, then press the
unordered/ordered list button in the tool bar (or use keyword shortcut);
the html field of the editor becomes
> 
> ```
> <ol><li>line</li></ol>
> 
> ```
> 
> (3) Press the undo shortcut (command + Z on Mac)
> 
> Result: the list is still there, but its content is duplicated after
the list; the html field reads:
> 
> ```
> <ol><li>line</li></ol>line
> 
> ```
> 
> Remark: the same bug occurs when we begin with multiple lines instead
of just one.

## How to test (required)

<!--- How to test: how you verified the change (checks, unit tests,
manual steps, edge cases — the "after" or general validation). --->
Follow the reproduction steps. Undo should remove the text in the order
that it appeared.

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->

Undoes some of the behaviour from #3483. I couldn't reproduce the bug he
mentioned with this patch but I'm not entirely sure this doesn't re
introduce https://github.com/ankitects/anki/issues/3338 as a bug.

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-06-22 18:30:13 +03:00
Luc Mcgrady 8fda6a3f4d docs: Re-add missing pages (#5049)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

These pages are in the repo but are not used by the docs.

closes #5050
2026-06-22 13:22:10 +03:00
Luc McgradyandAbdo a6b2457a42 docs: use relative links (#5048)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

closes #5011


All the "apps.ankiweb.net" Are broken in the form that they currently
exist which makes it difficult to confirm my changes would link to the
correct files so I've left them as they are in this pr.

---------

Co-authored-by: Abdo <abdo@abdnh.net>
2026-06-22 13:18:45 +03:00
Luc Mcgrady ff8e4f6e7a fix: move add_dynamic_styling_and_props_then_show to _on_load_finished (#4993)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
Fixes #4992

## Summary / motivation (required)

<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->
This prevents the webview refreshing from affecting the styling of the
page.

## Steps to reproduce (required, use N/A if not applicable)

<!-- Steps to reproduce: how to trigger the bug in the broken state (the
"before").
 - Mainly for bugfixes;
    - For bugs: numbered steps before the fix. For non-bugs: write N/A.
 - use N/A for features, refactors, docs, chore, etc.
-->

1. Load an anki webview
2. Refresh it (Using the ankiview web inspector addon or otherwise)
3. The body will have none of the classes on it and none of the other
styling will be applied

## How to test (required)

<!--- How to test: how you verified the change (checks, unit tests,
manual steps, edge cases — the "after" or general validation). --->
Follow the reproduction steps and the classes should be the same as
before

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->

## Before / after behavior (optional)

<!-- For bugfixes: behavior before vs after. For other types: N/A or a
short note. -->

Before (After a refresh):
<img width="644" height="103" alt="image"
src="https://github.com/user-attachments/assets/888c1794-ed1a-447f-8b14-6cc631a1a1d3"
/>
After (After a refresh):
<img width="644" height="103" alt="image"
src="https://github.com/user-attachments/assets/49a7d6af-0292-4907-8faa-258d94190663"
/>

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->

## UI evidence (required for visual changes; otherwise N/A)

<!-- Screenshot or short video -->

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-06-19 17:49:26 +03:00
Luc McgradyandAbdo e9ac48cac2 Docs: Set up Prettier for formatting Mintlify website (#5020)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

closes #5018
<!-- Fixes #123 / Closes #123 / Refs #123 -->

## Summary / motivation (required)

This prevents large diffs with prettier being used with the mintlify
editor

A caveat of this is that the docs generated by cog now have to be
prettier compatible. Also for some reason prettier has problems with the
{/* */} multi-line comment format so we have to use <!-- --> instead.

Sadly I don't have a good way to check that the Prettier config does not
differ between this PR and the editor.

---------

Co-authored-by: Abdo <abdo@abdnh.net>
2026-06-17 15:54:11 +03:00
Luc Mcgradyandmintlify[bot] 2fcaa56023 Docs: use "Getting started" as manual index page (#5013)
- Updated docs-site/manual/getting-started.mdx
- Deleted docs-site/manual/index.mdx
- Updated docs-site/docs.json

Mintlify-Source: dashboard-editor

Please note that the Mintlify editor seems to make formatting changes to
files which it edits which makes this diff large than necessary.

closes #5000 

Uses the introduction / getting started pages as the index for each
category rather than a list of links.

Also re-introduces some pages that were missing from the FAQ to use as
the index as well.

I'm sorry about the large diff but mintlify makes formatting changes
when you use the editor.

---------

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
2026-06-16 14:24:48 +03:00
Luc McgradyandAbdo 8546af7cdf feat: hash script for github actions (#4991)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
What I used to complete #4916

## Summary / motivation (required)

<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->
If we need to add more github actions in future this should make it easy

---------

Co-authored-by: Abdo <abdo@abdnh.net>
2026-06-12 23:13:08 +03:00
Luc McgradyandAbdo fbe2d93654 docs: include aqt in tree (#4984)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
closes #4983

## Summary / motivation (required)

<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->
This pr adds links to the aqt section of the docs.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->

## UI evidence (required for visual changes; otherwise N/A)

<img width="306" height="111" alt="image"
src="https://github.com/user-attachments/assets/39111e4f-8aa1-4865-b193-0da949967618"
/>

## Scope

- [X] This PR is focused on one change (no unrelated edits).

---------

Co-authored-by: Abdo <abdo@abdnh.net>
2026-06-10 20:40:29 +03:00
Luc Mcgrady fc5103bc33 chore(ci):Use commit SHAs for github actions (#4916)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
closes #4722

## Summary / motivation (required)

<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->
I used this nice script I found:
https://gist.github.com/onnimonni/3462f958c7d235417863651974514525

For the reasons behind this change see:
- #4722

## Steps to reproduce (required, use N/A if not applicable)

<!-- Steps to reproduce: how to trigger the bug in the broken state (the
"before").
 - Mainly for bugfixes;
    - For bugs: numbered steps before the fix. For non-bugs: write N/A.
 - use N/A for features, refactors, docs, chore, etc.
-->
(N/A)

## How to test (required)

<!--- How to test: how you verified the change (checks, unit tests,
manual steps, edge cases — the "after" or general validation). --->
See it run in my repo here:
https://github.com/Luc-Mcgrady/anki/actions/runs/26718877866

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->
## Before / after behavior (optional)

<!-- For bugfixes: behavior before vs after. For other types: N/A or a
short note. -->

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->

## UI evidence (required for visual changes; otherwise N/A)

<!-- Screenshot or short video -->

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-06-02 10:35:32 -03:00
Luc Mcgrady 0900370fc4 fix: add fallback value for startMemorized (#4796)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

<!-- Fixes #123 / Closes #123 / Refs #123 -->
fixes https://github.com/ankitects/anki/issues/4795

## Summary / motivation (required)

An error appeared in the console of the deck options. with this change
it doesn't.
<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->

## Steps to reproduce (required, use N/A if not applicable)

<!-- Steps to reproduce: how to trigger the bug in the broken state (the
"before").
 - Mainly for bugfixes;
    - For bugs: numbered steps before the fix. For non-bugs: write N/A.
 - use N/A for features, refactors, docs, chore, etc.
-->

1. open the deck options
2. check the console either by using the Anki command line or by using
[this addon](https://ankiweb.net/shared/info/31746032)

## How to test (required)

<!--- How to test: how you verified the change (checks, unit tests,
manual steps, edge cases — the "after" or general validation). --->
The console should be clear on the deck options page

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->

## Before / after behavior (optional)

<!-- For bugfixes: behavior before vs after. For other types: N/A or a
short note. -->

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->

## UI evidence (required for visual changes; otherwise N/A)

<!-- Screenshot or short video -->

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-05-12 13:51:47 +03:00
Luc Mcgrady d036c2ade4 feat: expose setParameterUnlockClickTimeoutMs (#4810)
<!--
Title (for the Pull Request title field at the top):
Use a short prefix so the change type is obvious. You do not need to
repeat it in the body below.

Examples:
- fix: — bugfix
- feat: — feature
- refactor: — internal change without user-facing feature
- docs: — documentation only
- chore: — tooling, CI, deps, build housekeeping
- test: — tests only
-->

## Linked issue (required)

closes https://github.com/ankitects/anki/issues/4809
<!-- Fixes #123 / Closes #123 / Refs #123 -->

## Summary / motivation (required)

<!-- What this PR does and why. For larger changes, add enough context
for reviewers. -->
This exposes a JS api to set the speed at which you click to unlock the
FSRS parameters (See #4372)

## Steps to reproduce (required, use N/A if not applicable)

<!-- Steps to reproduce: how to trigger the bug in the broken state (the
"before").
 - Mainly for bugfixes;
    - For bugs: numbered steps before the fix. For non-bugs: write N/A.
 - use N/A for features, refactors, docs, chore, etc.
-->

N/A

## How to test (required)

<!--- How to test: how you verified the change (checks, unit tests,
manual steps, edge cases — the "after" or general validation). --->
Open the console in the deck options and run
`anki.setParameterUnlockClickTimeoutMs(0)`. If you set it to 0 then it
will be impossible to unlock. if you set it to something very high it
will be very easy.

### Checklist (minimum)

- [X] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

<!-- Commands, manual steps, edge cases, and what you observed -->

## Before / after behavior (optional)

<!-- For bugfixes: behavior before vs after. For other types: N/A or a
short note. -->

## Risk / compatibility / migration (optional)

<!-- Breaking changes, rollout notes, or N/A for small / low-risk PRs
-->

## UI evidence (required for visual changes; otherwise N/A)

<!-- Screenshot or short video -->

## Scope

- [X] This PR is focused on one change (no unrelated edits).
2026-05-12 13:18:42 +03:00
Luc Mcgrady 922953acf4 Feat/Different method for ratio graph in Help Me Decide. (#4452)
Forum link:

-
https://forums.ankiweb.net/t/replace-cmrr-with-workload-vs-dr-graph-more/63234/27?u=a_blokee

@snorpdorp notified me that the logic behind the ratio graph is flawed
as it doesn't properly account for the number of cards that are
memorized to begin with.

I have implemented his (and @1DWalker's) proposed solution

<img width="1267" height="657" alt="image"
src="https://github.com/user-attachments/assets/41eded79-8f76-41dd-b98f-0bf1a968ab9b"
/>

Now the graph is inverted so that the higher the value, the more
efficient it is, in @snorpdorp's own words:

> The previous equation was flawed in that it displayed the total
knowledge at the end of the simulation, not the relative gain in
knowledge from the amount of studying done during the simulation
timeframe. The new (correct) equation is (relative gain in knowledge as
a result of studying during the simulation) / (time spent studying
during simulation) -
https://discord.com/channels/368267295601983490/1443273721878937650/1444447278344437833
2026-04-03 19:59:18 +03:00
Luc Mcgrady c12fe7c507 Feat/Quantiles for FSRS percentage stats (#4425)
* Added: Difficulty zoom

* Fix: quantiles, Extract: PercentageRange component
(I accidentally staged the second commit before comiting the first)

* Add to retrievability graph

* Fix: Typo

* Fix: Half the percentiles

* Remove 50% option

* Fix: Add minimum bin width

* Revert "Remove 50% option"

This reverts commit 372d15578f.

* Remove magic number

* Fix: tickSize not updated

* unfix sqlite.rs

* remove console.log
2026-02-11 16:37:55 +07:00
Luc Mcgrady bc646fadb4 Feat/Disable parameter editing until right clicked 3 times (#4372)
* Feat/Disable parameter editing until right clicked 3 times

* wording

* use left click

* Change placeholder to text

* use diabled agaain

* Add warning box

* FSRS

* Added: Timeout ms

* a11y

* Fix: typo

* Fix: Text selection issue
2026-02-11 15:12:30 +07:00
Luc McgradyandBrett Schwartz 70c8ce4cb3 Fix rounded corners on FSRS Simulator modal (#4535)
Co-authored-by: Brett Schwartz <brettschwartz871@gmail.com>
2026-02-09 21:10:50 +03:00
Luc Mcgradyanduser1823 62252f7216 Fix/Retrievability SQL (#4424)
* Fix/SQL Retrievability Underflow

* Added: Reminder

* ./check

* Apply code diff changes

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* Slight cleanup

* fix bug again

* extra label comment

* Update rslib/src/storage/sqlite.rs

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* Fix: Ignore new cards

* use const

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
2025-12-16 19:51:13 +03:00
Luc Mcgrady 5d4b00a11d Fix/Per deck retention not used when card is moved to filtered deck (#4413)
* Fix/Per deck retention not used for filtered decks

* improve error

* Perf: prevent double "home_deck" read

* Perf: prevent duplicate database read when home deck
2025-11-10 16:03:53 +03:00
Luc McgradyandAbdo dac26ce671 Fix/Exclude BackendFrontendService from write_python_interface (#4410)
* Fix/Missing python import in write_header

* Revert "Fix/Missing python import in write_header"

This reverts commit 7c736d984d.

* exclude BackendFrontendService

---------

Co-authored-by: Abdo <abdo@abdnh.net>
2025-10-29 20:15:56 +03:00
Luc Mcgrady 9e415869b8 Fix/Add lower review limit to health check. (#4334) 2025-09-17 14:04:27 +10:00
Luc Mcgrady dda730dfa2 Fix/Invalid memory states in simulator after parameters changed (#4317)
* Fix/Invalid memory states after optimization for simulator

* Update ts/routes/deck-options/FsrsOptions.svelte

* typo

* ./check
2025-09-04 14:35:00 +10:00
Luc Mcgrady 3521da3ad6 Chore/Remove CMRR from fsrs help modal (#4290)
* Remove cmrr from fsrs help sections

* move other strings
2025-09-01 14:58:20 +10:00
Luc Mcgrady 542c557404 Fix/Workload deck_size unset (#4283) 2025-09-01 14:18:30 +10:00
Luc Mcgrady 211cbfe660 Fix/Simulator intervals decending overflows (#4275)
* Fix/Simulator intervals decending overflows

* saturating_sub

* oops
2025-09-01 14:16:40 +10:00
Luc McgradyandDamien Elmes 2879dc63c3 Fix/Learn count not included in workload graph (#4274)
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
2025-08-20 02:58:25 +10:00
562cef1f22 Fix #4253 (#4259)
* Reapply "Fix/Retention help button bounds (#4253)" (#4258)

This reverts commit fb2e2bd37a.

* move div up slots instead of using condition

* Avoid tabbing

---------

Co-authored-by: Abdo <abdo@abdnh.net>
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
2025-08-20 01:19:25 +10:00
Luc McgradyandRoss Brown f3b4284afb Fix/System locale for simulator percentages (#4260)
Co-authored-by: Ross Brown <rbrownwsws@googlemail.com>
2025-08-11 06:44:11 +03:00
Luc Mcgrady f4266f0142 Feat/Neaten dr graph x-axis (#4251)
* Remove "Plotted on x axis"

* Add: X tick format

* fix formatx

* Fix: Regular simualtor x axis
2025-08-08 20:30:10 +10:00
Luc Mcgrady 5462d99255 Fix/Retention help button bounds (#4253)
* Move onTitleClick

* rename variable

* Fix: Tabbing issues
2025-08-08 10:56:50 +03:00
Luc Mcgrady 2d60471f36 Use space-around for tabbed values (#4252)
* space-around

* have your cake and eat it
2025-08-07 06:36:53 +03:00
Luc Mcgrady 402008950c Feat/expected_workload_with_existing_cards implementation (#4243)
* https://github.com/open-spaced-repetition/fsrs-rs/pull/355

* add is_included card

* bump version

* ./check

* update package.lock

* parallellify

* bump fsrs
2025-08-06 18:01:06 +10:00
Luc Mcgradyanduser1823 f7e6e9cb0d Feat/Card stats update review time (#4236)
* Feat/Card stats update review time

* Update rslib/src/stats/card.rs

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* fix

* self.storage.update_card

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
2025-08-06 17:55:50 +10:00
Luc Mcgrady 0d0c42c6d9 "Workload" variable typo (#4239) 2025-08-04 16:00:27 +10:00
Luc Mcgrady b76918a217 Feat/Show health check and already optimal at the same time (#4238) 2025-08-04 16:00:02 +10:00
Luc Mcgrady c947690aeb Feat/Use cached workload values (#4208)
* Feat/Use cached workload values

* Fix: Calculation when unchanged

* Modify constants

* Cache clearing logic

* Use function params

* use https://github.com/open-spaced-repetition/fsrs-rs/pull/352

* Revert "use https://github.com/open-spaced-repetition/fsrs-rs/pull/352"

This reverts commit 72efcf230c.

* Reapply "use https://github.com/open-spaced-repetition/fsrs-rs/pull/352"

This reverts commit 49eab2969f.

* ./check

* bump fsrs
2025-07-28 19:00:16 +10:00
1af3c58d40 Feat/Desired retention info graphs (#4199)
* backend part

* split memorised and cost

* slapdash frontend

* extract some simulator logic

* Add zoomed version of graph

* ./check

* Fix: Tooltip

* Fix: Simulator/workload transition

* remove "time"

* Update ts/routes/graphs/simulator.ts

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* Added: Mode toggle

* Disable Dr in workload mode

* keep button order consistant between modes

* dont clear points on mode swap

* add review count graph

* Revert "dont clear points on mode swap"

This reverts commit fc89efb1d9.

* "Help me pick" button

* unrelated title case change

* Add translation strings

* fix: missing translation string

* Fix: Layout shift

* Add: Experimental

* Fix Time / Memorized

* per day values

* set review limit to 9999 on open

* keep default at currently set value

* Do DR calculation in parallel (dae)

Approx 5x faster on my machine

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
Co-authored-by: Damien Elmes <gpg@ankiweb.net>
2025-07-28 18:55:08 +10:00
Luc Mcgrady 8a3b72e6e5 Fix/Help modal appears behind simulator modal (#4171)
* Fix/Help modal appears behind simulator modal

* Correct help modal keys (Doesn't work)
2025-07-07 16:21:46 +07:00
Luc Mcgrady d3e1fd1f80 Feat/Replace easy day table with display:grid (#4179)
* Feat/Replace easy day table with grid

* Add max width
2025-07-07 15:46:52 +07:00
Luc Mcgrady b16439fc9c Feat/Confirmation box for save options to preset (#4172) 2025-07-07 15:10:24 +07:00
Luc Mcgrady f5285f359a Feat/Add legacy evaluate config bool (#4149)
* Feat/Add legacy evaluate config bool

* Minor tweaks based on PR suggestions (dae)

New enabling command:

from anki.config import Config
mw.col.set_config_bool(Config.Bool.FSRS_LEGACY_EVALUATE, True)
2025-07-04 15:32:09 +07:00
Luc Mcgrady 4232185735 Feat/Add globe to help tooltip (#4148)
* Add global option to HelpItem

* Fix: Spacing

* add to more sections

* Fix: Spacing again
2025-07-04 14:42:40 +07:00
Luc Mcgrady 0739ea58f8 Add disclaimer to workload tooltip (#4131) 2025-06-29 14:41:35 +07:00
Luc Mcgrady ad0dbb563a Feat/Cmrr target selector (#4116)
* backend

* Add: Frontend

* us

* Added: Loss aversion

* change proto format

* Added: Loss aversion

* Added: Future retention targets

* update default fail cost multiplier

* Future Retention -> Post Abandon Memorized

* superfluous as const

* Fix: Wrong default

* Fix: Wrong import order
2025-06-27 16:44:19 +07:00
Luc Mcgrady e505ca032b Fix/Add check_output_timestamps to PythonEnvironment (#4113)
* Fix/explicitly set restat

* Revert "Fix/explicitly set restat"

This reverts commit ace2e5ef6a.

* add check_output_timestamps to python.rs
2025-06-27 16:41:50 +07:00
Luc Mcgrady ae6cf98f40 Fix/unapplied scss (#4103)
* deck options + change notetype

* graphs

* image occlusion

* congrats

* imports

* ./check

* style

* $lib

* delete unused index.ts files
2025-06-27 16:28:35 +07:00
Luc Mcgrady 630bdd3189 Fix/Optimize button alignment (#4117)
* Fix/Button alignment

* add hr
2025-06-25 16:44:47 +03:00
Luc Mcgrady 11cc9287ff Fix/Missing cardID special field (#4078) 2025-06-13 10:47:16 +07:00
Luc Mcgrady 6004616672 Feat/Health check tooltip (#4068)
* Feat/Health check tooltip

* Update ftl/core/deck-config.ftl

* split deckConfigHealthCheckTooltip

* wording change

* separate "(slow)"

* Add title to health check messages
2025-06-13 10:42:47 +07:00
Luc Mcgrady 83131cb48e Feat/Message at 100% progress for optimize (#4069) 2025-06-11 13:31:17 +07:00
55ecbc1125 Feat/Health check (#4047)
* Message on low log loss

* make console.log permanent

* Added: Health check option

* disable button

* change health check conditions

* i18n

* ./check

* Apply suggestions from code review

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* delete shadowed fsrs

* Update ts/routes/deck-options/FsrsOptions.svelte

Co-authored-by: llama <gh@siid.sh>

* Update ftl/core/deck-config.ftl

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* anon's suggestions

* snake_case

* capital slow

* make global

* on by default

* Adjusted loss values

* Show message on pass

* ./check

* ComputeParamsRequest

* update coefficients

* update thresholds

* fix thresholds

* Apply suggestions from code review

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
Co-authored-by: llama <gh@siid.sh>
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
2025-06-06 12:43:33 +07:00
Luc Mcgrady bbac90d97d Fix/Invalid parameter counts saveable (#4052)
* Add frontend check for parameters

* Fix backend

* ./check

* Fix: Wrong type
2025-06-03 16:27:04 +07:00
Luc Mcgrady a99beb71fe Feat/Card ID special field (#4046)
* Feat/Card ID special field

* remove clone
2025-06-02 16:35:13 +07:00
Luc Mcgrady 06c0e4c14a Fix/CMRR style (#4043) 2025-06-01 13:18:35 +07:00
f29bcb743b Feat/Desired retention warning improvements (#3995)
* Feat/90% desired retention warning

* Update ftl/core/deck-config.ftl

* show on newly enabled

* Show warning on focus

* Never hide warning

* Display relative change

* Add: Separate warning for too long and short

* Revert unchanged text changes

* interval -> workload

* Remove dead code

* fsrs-rs/@L-M-Sherlock's workload calculation

* Added: delay

* CONSTANT_CASE

* Fix: optimized state

* Removed "Processing"

* Remove dead code

* 1 digit precision

* bump fsrs-rs

* typo

* Apply suggestions from code review

Co-authored-by: Damien Elmes <dae@users.noreply.github.com>

* Improve rounding

* improve comment

* rounding <1%

* decrease rounding precision

* bump ts-fsrs

* use actual cost values

* ./check

* typo

* include relearning

* change factor wording

* simplify sql

* ./check

* Apply suggestions from code review

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* Fix: missing search_cids

* @dae's style patch

* Fix: Doesn't update on arrow keys change

* force two lines

* center two lines

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
2025-05-27 13:07:21 +10:00
Luc Mcgradyandllama 8694b3b410 Use non breaking spaces for names on about page (#4025)
* use non breaking spaces for names on about page

* Update qt/aqt/about.py

Co-authored-by: llama <gh@siid.sh>

---------

Co-authored-by: llama <gh@siid.sh>
2025-05-22 22:55:15 +10:00
Luc Mcgrady ed13a351b9 Fix/Prevent manual resize of params input (#4008) 2025-05-19 13:10:47 +10:00
Luc Mcgrady f7cdf4eb9e Fix/Leech suspended tooltip (#3992)
* Fix/Leech suspended popup

* extra check

* Fix: None check

* move comment
2025-05-15 15:14:10 +10:00
Luc Mcgrady e06852a0ed Fix/SQL retrievability underflow (#3980)
* Fix/Saturating sub called before u32 conversion

* more
2025-05-05 18:49:12 +10:00
Luc Mcgrady a66f8b2b5f Fix/Layout shift on CardCounts button hover (#3971) 2025-05-05 17:24:34 +10:00
Luc Mcgrady ad073ab10c Feat/CMRR uses simulate config (#3947)
* Added: simulate_request_to_config

* Use SimulateConfig for CMRR

* ./check

* Fix: ComputingRetention

* Use actual cards for optimal_retention
2025-04-27 21:02:37 +10:00
Luc Mcgrady 2406830ff9 Fix/no memory state revlogs in reverse order on card stats screen. (#3951) 2025-04-26 12:09:40 +10:00
Luc Mcgrady e861364092 Fix/Calculate missing memory states on simulate (#3940)
* Fix: Recalculate memory states on simulate

* Fix: Wrong cards included

* Save states to cards

* ./check

* Update rslib/src/scheduler/fsrs/simulator.rs
2025-04-24 19:32:31 +10:00
Luc Mcgrady a2e0060470 Chore/Simulator modal i18n (#3927)
* Chore: Simulator i18n

* Buttons should be Title Case (dae)
2025-04-24 19:17:04 +10:00
Luc Mcgradyanduser1823 781a23c6c4 Feat/Ignored before card count (#3910)
* GetIgnoredBeforeCount

* get_card_count_with_ignore_before

* Included / total

* Respect search

* Get frontend hooked up

* Fix: Malformed sql and search

* Variable names

* Added: Alert colours

* i18n

* ./check

* Remove console.log

* Fix: Tooltip showing for default value

* Update ftl/core/deck-config.ftl

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* Fix: Multiple backend calls

* Message: (Approximately)

* Fix: Bouncing info message

* Added: Change delay

* Added: ignore_before_updated

* ./check

* Fix typing, camelCase and improve wording

* Temporarily enable the check on startup

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
2025-04-15 20:21:54 +10:00
Luc Mcgrady 79b6f658c3 Feat: Simulator suspend after lapse count (#3837)
* Added: Leech suspend to simulator

* Added: leech threshold spin box

* Update git rev

* Added: Save to preset options

* ./check

* Added: "Advanced settings" dropdown

* Removed: Indent

* Added: Easy days

* Added: Sticky header

* Removed: Easy Day updating without saving

* un-nest disclosure

* bump fsrs

* Update a VSCode setting to match recent releases

* Move Easy Days above the Advanced settings

I think it's a bit more logical to have Advanced come last.

* Ensure graph fits inside screen height

* Bump fsrs version
2025-03-15 17:28:15 +07:00
Luc Mcgrady cad6e0b0bf Added: Max interval too low warning. (#3847)
* Added: Max interval too low warning.

* Lower threshold to 180

* Add self to about.py
2025-03-10 16:14:35 +07:00
Luc Mcgrady 5d07eca327 Fix: Close cards missing "copy card info" button (#3811) 2025-02-16 16:10:04 +07:00
Luc Mcgrady 4459e06f74 Copy card debug info (#3801)
* Added: Copy card debug info button

* Fix: Button margins

* Added: More info

* Deleted useless info

* Added: Revlog rows

* Added: cardRow

* Replaced button with shortcut

* Fix: Copying new cards info error

* ./check

* Added: Rollover

* Format outputted json

* neatened imports

* make linter happy

* revert button changes

* Value Error -> Assert

* preserve normal copy functionality
2025-02-16 16:06:12 +07:00
Luc Mcgrady dda5973fdc Remove forgetting curve radio buttons when only one radio button (#3804) 2025-02-09 15:53:05 +03:00
Luc Mcgrady dd93691b9c Added: SpinnerBox percentage symbol. (#3777)
* Added: Padded percentage symbol

* Added: Floating percentage

* ./check

* half finished comment

* Removed: redundant toStringValue function

* Removed: Accidental import

* Improved pointer-events:none

* Improve percentage alignment

* Improve leftmost percentage alignment

* Fix: Percentage sticks to left

* ./check

* Fix: IOS css

* ./check
2025-02-06 14:21:26 +07:00
Luc Mcgrady 93032cdceb Delete y-axis titles for graphs (#3789)
* Remove simulator y axis labels

* Remove forgetting curve y-axis title

* ./check

* Mark the card-stats string as deprecated as well (dae)
2025-02-06 14:17:39 +07:00
Luc Mcgrady f038d6726a Fix: Simulator Ignores New Cards Already Introduced (#3760)
* Subtract introduced:1 count from learn count of first day of simulator.

* Fix: Cards filtered

* Tidy up

* Fix: Cards filtered (2)

* ./check

* Removed unnecessary filter

* Fix: Doesn't work for real new cards

* ./check

* Fix: .is_none()

* Limit to 1 day

* Removed "days_to_simulate" argument from convert
2025-01-25 21:16:25 +11:00
Luc Mcgrady 146a0b2dcf "Copy template as markdown" button. (#3719)
* Added: Copy template info button

* Consistent with Ankidroid

* Fix: Missing newline

* Renamed variables

* ./check

* Fix: Remove ``` from templates

* Stylistic changes

* ./check
2025-01-15 20:29:35 +11:00
Luc Mcgrady 59391e96fb Added colour to simulator tooltip (#3692)
* Added colour to simulator tooltip

* ./check
2025-01-09 21:44:54 +11:00
Luc Mcgrady 16514727ff Simulator legend tooltip (#3676)
* Added: Tooltip to simulator legend

* Added: Memorised tooltip

* Add: Per day text

* Added: Group name to tooltip
2025-01-09 20:33:10 +11:00
Luc Mcgrady f057ee465d Prevent simulate button spam (#3670) 2025-01-07 16:58:22 +03:00
Luc Mcgrady c985acb9fe Add memorized option to FSRS simulation graph (#3655)
* Added: Memorized option to graph

* Count -> Reviews

* Added: Margin to radio button input

* Fix: Labels

* ./check

* Check errors?

* bump fsrs to 1.4.6

* ./ninja fix:minilints

* Added: Don't show hidden simulator values.

* Bump to fsrs 1.4.7
2024-12-22 11:40:51 +10:00
Luc Mcgrady 482874d4f0 Fix Fsrs simulator input problems (#3642)
* Fix: min value for Additional new cards not 0

* Fix: New cards/day default value not starting value

* Preset defaults for review intervals and per day.

* Fix: "Additional new cards to simulate" localisation

* Revert "Fix: "Additional new cards to simulate" localisation"

This reverts commit 9be61d9f93.
2024-12-18 23:43:51 +11:00