From 11e9b89cc05a33082774e6da61f18b3f3fd173c7 Mon Sep 17 00:00:00 2001 From: Luc Mcgrady Date: Wed, 3 Sep 2025 17:34:49 +0100 Subject: [PATCH] Fix/Invalid memory states after optimization for simulator --- ftl/core/deck-config.ftl | 1 + ts/routes/deck-options/FsrsOptions.svelte | 16 ++++++++++++++-- 2 files changed, 15 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..48f8d5025 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 initialParmas = [...fsrsParams($config)]; $: if (desiredRetentionFocused) { desiredRetentionEverFocused = true; } @@ -338,6 +339,17 @@ 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 ( + initialParmas.length === 0 || + fsrsParams($config).toString() === initialParmas.toString() + ) { + modal?.show(); + } else { + alert(tr.deckConfigFsrsSimulateSavePreset()); + } + } + let simulatorModal: Modal; let workloadModal: Modal; @@ -368,7 +380,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 +467,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
-