From dda730dfa2d37e7e530e77f76df373fe4b287d26 Mon Sep 17 00:00:00 2001 From: Luc Mcgrady Date: Thu, 4 Sep 2025 05:35:00 +0100 Subject: [PATCH] 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 --- ftl/core/deck-config.ftl | 1 + ts/routes/deck-options/FsrsOptions.svelte | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ftl/core/deck-config.ftl b/ftl/core/deck-config.ftl index 43d03c6bb..e365d9553 100644 --- a/ftl/core/deck-config.ftl +++ b/ftl/core/deck-config.ftl @@ -498,6 +498,7 @@ deck-config-desired-retention-below-optimal = Your desired retention is below op # cards that can be recalled or retrieved on a specific date. deck-config-fsrs-simulator-experimental = FSRS Simulator (Experimental) deck-config-fsrs-simulate-desired-retention-experimental = FSRS Desired Retention Simulator (Experimental) +deck-config-fsrs-simulate-save-preset = After optimizing, please save your config before running the simulator. deck-config-fsrs-desired-retention-help-me-decide-experimental = Help Me Decide (Experimental) deck-config-additional-new-cards-to-simulate = Additional new cards to simulate deck-config-simulate = Simulate diff --git a/ts/routes/deck-options/FsrsOptions.svelte b/ts/routes/deck-options/FsrsOptions.svelte index a166f2081..48124771f 100644 --- a/ts/routes/deck-options/FsrsOptions.svelte +++ b/ts/routes/deck-options/FsrsOptions.svelte @@ -53,6 +53,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html let desiredRetentionFocused = false; let desiredRetentionEverFocused = false; let optimized = false; + const initialParams = [...fsrsParams($config)]; $: if (desiredRetentionFocused) { desiredRetentionEverFocused = true; } @@ -338,6 +339,14 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html state.save(UpdateDeckConfigsMode.COMPUTE_ALL_PARAMS); } + function showSimulatorModal(modal: Modal) { + if (fsrsParams($config).toString() === initialParams.toString()) { + modal?.show(); + } else { + alert(tr.deckConfigFsrsSimulateSavePreset()); + } + } + let simulatorModal: Modal; let workloadModal: Modal; @@ -368,7 +377,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html class="btn btn-primary" on:click={() => { simulateFsrsRequest.reviewLimit = 9999; - workloadModal?.show(); + showSimulatorModal(workloadModal); }} > {tr.deckConfigFsrsDesiredRetentionHelpMeDecideExperimental()} @@ -455,7 +464,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
-