Proto commits in ankitects/anki

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:1f95d03
Author:Yaoliang Chen
Committer:GitHub

feat(scheduler): add from_queue flag to CardAnswer (#3976) Co-authored-by: Yaoliang <yaoliang.ch@gmail.com>

The documentation is generated from this commit.

Commit:ad073ab
Author:Luc Mcgrady
Committer:GitHub

Feat/CMRR uses simulate config (#3947) * Added: simulate_request_to_config * Use SimulateConfig for CMRR * ./check * Fix: ComputingRetention * Use actual cards for optimal_retention

Commit:e096c46
Author:Jarrett Ye
Committer:GitHub

Feat/FSRS-6 (#3929) * Feat/FSRS-6 * update comment * add decay to Card * ./ninja fix:minilints * pass check * fix NaN in evaluation * remove console * decay should fallback to 0.5 when it's None. * Update SimulatorModal.svelte * Update a few comments * Update FSRS decay defaults to use constants for better maintainability and clarity * Update rslib/src/storage/card/data.rs

Commit:efaaae8
Author:Arthur Milchior
Committer:GitHub

Cloze button get disabled outside of cloze field (#3879) * NF: replace `disabled` by `enabled` This allows to remove the negations and, in my opinion, make the code easier to understand and edit. * Cloze button get disabled outside of cloze field More specifically, if the user focus in a field that is not a cloze field, the button are still there but appear as disabled. The shortcut instead of adding the cloze context shows an alert explaining why this can't be done. While this message is already displayed when the user tries to add a note with cloze in non-cloze field, I suspect it will save time to stop the user as soon as possible from making mistake. This should make very clear what is authorized and what is not. It'll also be a reminder of whether the current field is a cloze or not. In order to do this, I added a back-end method (that I expect we may reuse in ankidroid) to get the index of the fields used in cloze. This set is sent to the note editor, which propagates it where needed. In mathjax, the cloze symbol is removed when the selected field is not a cloze field.

Commit:781a23c
Author:Luc Mcgrady
Committer:GitHub

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>

Commit:ccab18b
Author:llama
Committer:GitHub

Modify card rendering output to specify if rendered card is empty (#3890) * modify render_card to return whether card was empty * plumbing * add flag to proto message * plumbing: pass flag along to PartiallyRenderedCard * add tests * Use a custom return type for clarity (dae)

Commit:acdf486
Author:Yuki
Committer:GitHub

Refactor: Make Load Balancer Optional Throughout Codebase (#3860) * Refactoring: load balancer * Update about.py * Refactoring: load balancer * Update about.py * Clean the code * Remove config check from get_scheduling_states * Backend method for the load balancer * Refactor backend method for the load balancer

Commit:0e31efa
Author:Jarrett Ye
Committer:GitHub

Feat/grade now (#3840) * Feat/grade now * pass ci * fix from_queue * Refactor card answering to support from_queue flag - Add `from_queue` field to `CardAnswer` struct and proto message - Modify `answer_card_inner` to handle queue updates based on `from_queue` - Remove `grade_card` method and consolidate card answering logic - Update related test cases to set `from_queue` flag * fix current_changes() called when no op set * Optimize queue updates for batch card processing - Refactor `grade_now` to collect processed card IDs first - Add new `update_queues_for_processed_cards` method for efficient batch queue updates - Improve queue management by removing entries and updating counts in a single pass - Remove individual queue update method in favor of batch processing * pass ci * keep the same style * remove ineffective code * remove unused imports

Commit:79b6f65
Author:Luc Mcgrady
Committer:GitHub

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

Commit:a6426be
Author:Jarrett Ye
Committer:GitHub

Feat/support load balance and easy days in FSRS simulator (#3829) * Feat/support load balance and easy days in FSRS simulator * format * consider LoadBalancerEnabled * use fsrs::PostSchedulingFn * add load balance and easy days to compute_optimal_retention * move simulator to a pop-over * fix incorrect simulationNumber when error 500 * Feat: Save to Preset Options * update tabs when update newPerDay & reviewsPerDay * don't reset deckSize & daysToSimulate when save options * fix missing easy days * plan to support review priority * Fix graph line rendering with non-scaling stroke * simplify review priority function with helper wrapper * fallback to default ReviewPriority for Added & ReverseAdded * Update ts/routes/deck-options/SimulatorModal.svelte Co-authored-by: Luc Mcgrady <lucmcgrady@gmail.com> * Wrap review priority function in Arc for thread-safe sharing * more granularity for R sorting * Add graph smoothing option to FSRS simulator * Improve graph resize handling in FSRS simulator * simplify review priority calculation * Add review order selection to FSRS simulator modal * Refactor review priority function using macro for conciseness * Add copyright and license header to SimulatorModal.svelte * cargo clippy * ./ninja fix:eslint * update fsrs-rs * Update FSRS dependencies and refactor load balancing functions - Update fsrs-rs dependency to latest commit - Modify retention and simulator modules to use Arc instead of Box - Update function signatures and imports in simulator module - Simplify review card order handling with direct enum usage * resolve reviewed changes * replace .unwrap() with ? * move simulating into SimulatorModal * add (crate) to interval_to_weekday * Update FsrsOptions.svelte * format --------- Co-authored-by: Luc Mcgrady <lucmcgrady@gmail.com>

Commit:43e8607
Author:Jarrett Ye
Committer:GitHub

Fix/re-optimize FSRS if short-term param is weird (#3742) * Fix/re-optimize FSRS if short-term param is weird * Reset progress when another run is required (dae) * only count the same-day steps * Fix flicker when optimizing again (dae)

Commit:1b5b685
Author:Damien Elmes

Remove unused proto import

Commit:b6d7bb1
Author:llama
Committer:GitHub

Fix IO editor always starting in "hide all, guess one" mode (#3709) * update backend * set hideAllGuessOne in mask editor instead

Commit:c4ad27a
Author:Jarrett Ye
Committer:GitHub

Feat/support new cards ignore review limit in simulator (#3707) * Feat/support new cards ignore review limit in simulator * ./ninja fix:minilints & ./ninja format * use published crate * make newCardsIgnoreReviewLimit reactive * format --------- Co-authored-by: Damien Elmes <gpg@ankiweb.net>

Commit:d7fc98d
Author:Arthur Milchior
Committer:GitHub

Deck options without bridge (#3571) * NF: Modify CONTRIBUTORS Just so that I stop getting the warning * NF: Create `deckOptionsReady` * NF: rename _close to require_close The method will have to be used outside of this class, so can't be private * NF: simplify slightly some code * NF: remove bridge command from deck options * Remove unused import * Remove superfluous comment with a typo

Commit:cee04bf
Author:OuOu2021
Committer:GitHub

Apply gradient effect to forgetting curve (#3604) * Add gradient color for forgetting curve * Add desiredRetention prop for CardInfo * update CONTRIBUTORS * Formatting * Tweak range of gradient * Tweak: salmon -> tomato * Get desired retention of the card from backend * Add a reference line for desired retention * Fix: Corrected the steel blue's height & Hide desired retention line when yMin is higher than desiredRetentionY * Add y axis title * Show desired retention in the tooltip * I18n: improve translation and vertical text display * Revert rotatation&writing-mode of vertical title * Tweak font-size of y axis title * Fix: delete old desired retention line when changing duration * Update ftl/core/card-stats.ftl --------- Co-authored-by: Damien Elmes <dae@users.noreply.github.com>

Commit:01c3686
Author:Damien Elmes

Remove remaining remnants of unused error; fix CI

Commit:ba1f5f4
Author:Damien Elmes
Committer:Damien Elmes

Flag server messages so AnkiDroid can handle them separately

Commit:b646f09
Author:Damien Elmes
Committer:GitHub

Add descending retrievability (#3559) * "relative overdueness" -> "retrievability ascending" * Add 'retrievability descending'

Commit:6adbd92
Author:Damien Elmes
Committer:Damien Elmes

Rename remaining 'weights' references to 'params'

Commit:c45fa51
Author:Damien Elmes
Committer:Damien Elmes

Use separate field to store FSRS params Will allow the user to keep using old params with older clients

Commit:26ae51f
Author:Jarrett Ye
Committer:GitHub

Create a new kind of revlog entry for reschedule cards on change (#3508) * create a new kind of revlog entry for Reschedule cards on change * add comments * exclude the rescheduled case in reviews graph

Commit:b0eb2a2
Author:Jarrett Ye
Committer:GitHub

Feat/Estimated Total Knowledge By Note & Daily Load (#3507) * Feat/Estimated Total Knowledge By Note & Daily Load * Update rslib/src/stats/graphs/retrievability.rs * Update rslib/src/stats/graphs/future_due.rs

Commit:6ff309e
Author:Jarrett Ye
Committer:GitHub

Feat/option to enable FSRS short-term scheduler when (re)learning steps run out && speed up features based on simulation (#3505) * Update to FSRS-rs v1.3.2 * add fsrs_short_term_with_steps_enabled to config * ./ninja fix:minilints * fix defaults_for_testing * if current parameters are invalid, skip comparison fix #3498 * fix redundant_field_names * cargo clippy --fix * Update to FSRS-rs v1.3.3 * Update to FSRS-rs v1.3.4 * Avoid an extra config lookup on each card answer (dae)

Commit:b09326c
Author:Jarrett Ye
Committer:GitHub

Feat/export dataset for research (#3511) * Feat/export dataset for research * add comment Co-authored-by: Damien Elmes <dae@users.noreply.github.com> * target_path is required * format * improve efficiency to look up parent_id * move `use` down

Commit:f00211d
Author:Jarrett Ye
Committer:GitHub

add get_revlogs API && fix the style of tooltipText of ReviewsGraph (#3490) * add get_revlogs API * fix tooltipText of ReviewsGraph the style of true-retention shouldn't affect the style of tooltipText of ReviewsGraph * More verbose wording (dae)

Commit:a982720
Author:Jarrett Ye
Committer:GitHub

Feat/Easy Days (#3442) * Feat/Easy Days * format * add easy_days_percentages to deck_config * configure Easy Days via table * remove unused code * add translatable strings & add default of easy days * don't check easy_days_percentages when deserialize * pass test::all_reserved_fields_are_removed * consider next_day_at when interval_to_weekday * remove y-axis-title created in last simulation * EstimatedTotalKnowledge should be integer * Reorder deck option sections (dae) - Move FSRS to bottom left, to move it closer to the top, and so the left and right columns appear roughly balanced when FSRS is enabled. - Move Easy Days above Advanced * Don't crash if wrong number of days (dae) * Use lower field number (dae) Repeated fields are more compactly stored in the first 15 fields.

Commit:e2124cd
Author:a.r
Committer:GitHub

typeanswer: [type:nc] – ignores combining characters (#3422) * typeanswer: fix cleanup Fix: Add prepare_expected back in for the 'nothing typed' & 'correctly typed' cases. This also makes expected_original redundant again. Style: %s/provided/typed/g Style: rename one ch → c Testcase: whitespace_is_trimmed: added a check for the "correctly typed" path and renamed it to tags_removed (there's no whitespace?) Testcase: empty_input_shows_as_code: changed to also check that tags get trimmed * [type:nc] – ignores combining characters Adds a comparison variant to [type] which ignores when combining characters of the expected field are missing from the provided input. It still shows these characters in the 'expected' line for reference. It's useful for languages with e.g. diacritics that are required for reference (such as in dictionaries), but rarely actually learned or used in everyday writing. Among these languages: Arabic, Hebrew, Persian, Urdu. The bool 'combining' controls it as new final parameter of both relevant compare_answer functions. On the Python side, it's set to true by default. Use on the note templates: [type:nc:field] (only the front needs to include :nc) This also removes the need to have both variants of words/sentences present as separate fields, to show them redundantly, etc. * typeanswer: simplify by using nfkd throughout Requires adjusting two testcases, but both render exactly the same in Anki itself. On NFC vs. NKFD: https://stackoverflow.com/a/77432079 * typeanswer: 'simplify' by removing normalize_typed (requiring a bool parameter) I'd prefer to keep this extra method. * typeanswer: micro-optimize vectors Should get rid of most relocations, at the expense of over-allocating. On Vec's (String's) behavior: https://stackoverflow.com/a/72787776 * Mark `combining` as private typeCorrect is not marked as private either, but we can at least do the right thing for newly-added code. * Revert "typeanswer: micro-optimize vectors" This reverts commit 9fbacbfd196f159cbcf339aab6d8aa0830a455a5. * Revert "typeanswer: 'simplify' by removing normalize_typed (requiring a bool parameter)" This reverts commit df2dd3394eedab4b6a53acfac44db52d5728105f.

Commit:7959273
Author:Jarrett Ye
Committer:GitHub

Feat/forgetting curve in card info (#3437) * add elapsed time into revlog-table * add stability into revlog-table * add Graph of forgetting curve * fix eslint * add radio buttons of timeRange * add revlog filter && return [] for new card * format * translatable string & disable if using SM-2 * elapsedTime should skip manual or filtered review * add HoverColumns * fix eslint * add stability to tooltip & use timeSpan * reuse translatable strings * distinguish daysSinceFirstLearn and elapsedDaysSinceLastReview * Date x-axis & toLocaleString * Temporarily hide elapsed/stability columns (dae) https://github.com/ankitects/anki/pull/3437#issuecomment-2378851900

Commit:3912db3
Author:Jarrett Ye
Committer:GitHub

Feat/true retention stats (#3425) * Feat/true retention stats * ./ninja fix:minilints * use translatable strings & update style * remove card couts & add more translatable strings * Update statistics.ftl Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com> * add Estimated total knowledge (cards) --------- Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

Commit:77fb0fb
Author:Ben Nguyen
Committer:GitHub

Possible to show “last” subdeck name in Browser? (#3387) * elide middle of deck names * Update CONTRIBUTORS * made elide mode enum * add elide mode field * fix enum number * remove dataclass decorator * Update CONTRIBUTORS * format rust code * Update CONTRIBUTORS * formatting * Update CONTRIBUTORS * fix type hint * Update CONTRIBUTORS

Commit:880c7d3
Author:Abdo
Committer:GitHub

Fix graph averages (#3406) * Fix graph averages * Fix formatting

Commit:ce2f413
Author:Arthur Milchior
Committer:GitHub

Empty cards become undoable (#3386) * Empty cards is undoable If there was a reason for this operation not to be undoable, I can't easily guess it. My main hyposhesis was that the number of deleted card may be too big. But I realized that deleting a deck is undoable and may delete as many note. As you may know, I realized that only the undoable operations triggered notification in AnkiDroid that we may have to update the UI. And while I just wanted to trigger more notifications, some reviewers thought it would be nicer if the operation were returning a OpChanges. So here it's done. If you would please consider merging it. I decided to introduce a new string because the closest strings I could find currently are "Empty cards..." and the trailing commas don't seem nice in "undo". And the title, which we may not be able to reuse in all language * Don't count cards that have already been removed (dae)

Commit:c6cb4e4
Author:Jake Probst
Committer:GitHub

load balancer! (#3230) * start of load balancer * add configuration options; option to load balance per deck * formatting * clippy * add myself to contributors * cleanup * cargo fmt * copyright header on load_balancer.rs * remove extra space * more formatting * python formatting * ignore this being None only doing this cause python has awful lambdas and can't loop in a meaningful way without doing this * only calculate notes on each day if we are trying to avoid siblings * don't fuzz intervals if the load balancer is enabled * force generator to eval so this actually happens * load balance instead of fuzzing, rather than in addition to * use builtin fuzz_bounds rather than reinvent something new * print some debug info on how its load balancing * clippy * more accurately load balance only when we want to fuzz * incorrectly doublechecking the presence of the load balancer * more printfs for debugging * avoid siblings -> disperse siblings * load balance learning graduating intervals * load balancer: respect min/max intervals; graduating easy should be at least +1 good * filter out after-days under minimum interval * this is an inclusive check * switch load balancer to caching instead of on the fly calculation * handle case where load balancer would balance outside of its bounds * disable lb when unselecting it in preferences * call load_balancer in StateContext::with_review_fuzz instead of next to * rebuild load balancer when card queue is rebuilt * remove now-unused configuration options * add note option to notetype to enable/disable sibling dispersion * add options to exclude decks from load balancing * theres a lint checking that the link actually exists so I guess I'll add the anchor back in later? * how did I even update this * move load balancer to cardqueue * remove per-deck balancing options * improve determining whether to disperse siblings when load balancing * don't recalculate notes on days every time * remove debug code * remove all configuration; load balancer enabled by default; disperse siblings if bury_reviews is set * didn't fully remove caring about decks from load balancer sql query * load balancer should only count cards in the same preset * fuzz interval if its outside of load balancer's range * also check minimum when bailing out of load balancer * cleanup; make tests happy * experimental weight-based load balance fuzzing * take into account interval when weighting as it seems to help * if theres no cards the interval weight is just 1.0 * make load balancer disableable through debug console * remove debug prints * typo * remove debugging print * explain a bit how load balancer works * properly balance per preset * use inclusive range rather than +1 * -1 type cast * move type hint somewhere less ugly; fix comment typo * Reuse existing deck list from parent function (dae) Minor optimisation

Commit:520564d
Author:Abdo
Committer:GitHub

Integrate AnkiHub Sign-in (#3232) * Add AnkiHub section to preferences screen * Add short intro for AnkiWeb and AnkiHub to syncing section * Add AnkiHub login screen * Implement login methods in backend * Set minimum dialog width * Add missing colon * Respect the ANKIHUB_APP_URL env var This is used by the add-on. * Simplify login error reporting * Fix from_prefs_screen not passed to subcall * Add missing ankihub_pb2 import * Install AnkiHub add-on after sign-in * Avoid .exec() * Update ftl/core/sync.ftl Co-authored-by: Damien Elmes <dae@users.noreply.github.com> * Split translation string * Support login by username/email * Fix entered username/email not being passed back to on_done * Remove unused import * Move to 'Third-party services' section * Tweak login dialog's heading * Remove 'third-party' from intro text * Tweak copy * Prefix profile keys * Tweak strings * Remove description from login dialog * Remove signup links * Clear credentials in ankihub_logout() * Call .adjustSize() * Title Case * Add padding to third-party services, and fix tab order from other PR

Commit:52ce6e6
Author:Jarrett Ye
Committer:GitHub

Feat/FSRS-5 (#3298) * Feat/FSRS-5 * adapt the SimulatorConfig of FSRS-5 * update parameters from FSRS-4.5 * udpate to FSRS-rs v1.1.0 * ./ninja fix:minilints * pass ci * update cargo-deny to 0.14.24 * udpate to FSRS-rs v1.1.1 * update to fsrs-rs v1.1.2

Commit:06f7aa3
Author:Abdo
Committer:GitHub

Add a preference to toggle LaTeX generation (#3218) * Add a preference to toggle LaTeX generation * Fix test * Remove LaTeX security restrictions * Show existing LaTeX images regardless of preference * Lift config check out of loop (dae) * Shift option to review settings; display warning when disabled (dae)

Commit:9e3a34f
Author:Voczi
Committer:GitHub

Add support for custom certificates (#3203) * Add support for custom certificates * Update lints * Update licenses * Changes after feedback * More changes

Commit:22ac778
Author:Abdo
Committer:GitHub

Show review count for Evaluate/Optimize button (#3170) * Revert "Show review count with FSRS evaluation results (#3165)" This reverts commit b7e782c7e1b41445750bf8dd9eaefef57ae28688. * Show review count for Evaluate/Optimize button

Commit:b7e782c
Author:Abdo
Committer:GitHub

Show review count with FSRS evaluation results (#3165)

Commit:d8f2782
Author:Loudwig
Committer:GitHub

Feature Show Reminder before answer (#3064) (#3119) * Feature Question Action Show Reminder (#3064) Added a option in the deck config that allow the user to choose in Autoupdate mode between showing a reminder or revealing the card. Also added my name to the contributors * Update ftl/core/deck-config.ftl

Commit:10d567f
Author:Jarrett Ye
Committer:GitHub

Update to FSRS-rs v0.6.1 (#3106) * update to FSRS-rs 0.6.0 * update to crates.io version * format * update to FSRS-rs v0.6.01 * ./ninja fix:minilints * update python backend code

Commit:1550632
Author:Jarrett Ye
Committer:GitHub

rename sm2 retention to historical retention (#3101) * rename sm2 retention to historical retention * ninja format * keep sm2_retention in DeckConfSchema11 * update wording * Update schema11.rs

Commit:8d197a1
Author:Jarrett Ye
Committer:GitHub

Feat/fsrs simulator backend part (#3075) * [WIP] FSRS simulator * add desired_retention as input * cargo fmt * fix format * add standard copyright header * support existing cards * fix format * pass days_elapsed into Card::convert & return None

Commit:e9d3b46
Author:Damien Elmes
Committer:Damien Elmes

Shift FSRS optimization into top level; shown optimize all tip after 30 days

Commit:8c9d7d6
Author:Jarrett Ye
Committer:GitHub

refactor optimal retention to minimize workload per memorization & fix progress goes backwards (#3065) * Feat/optimal retention for minimal workload per memorization * ./ninja fix:minilints * update to FSRS-rs 0.5.2 * update to FSRS-rs 0.5.3 * ./ninja fix:minilints * 'estimated retention' -> 'predicted optimal retention'; add warning (dae)

Commit:055b6e3
Author:Jarrett Ye
Committer:GitHub

update FSRS-rs to 0.5.0 & export benchmark API (#3056) * update fsrs to 0.4.5 * update to fsrs 0.4.6 * add benchmark API * update fsrs to 0.5.0 * cargo fmt * ./ninja fix:minilints * ./ninja format * Add a brief comment about the new method (dae)

Commit:9228c87
Author:Abdo
Committer:GitHub

Show preset and original deck in card info (#3055) * Show preset and original deck in card info * Make original_deck optional

Commit:60f8399
Author:Abdo
Committer:GitHub

Show total review count when optimizing FSRS parameters (#3027) * Show total review count when optimizing FSRS parameters * Do not expose items

Commit:6843d65
Author:Abdo
Committer:GitHub

Check required review count for FSRS after filtering (#3019) * Check for required review count for FSRS after filtering * Remove unreachable check * Update minimum review count in optimal retention calculation * Fix review check in optimal retention routine too

Commit:8b18a08
Author:Luc Mcgrady
Committer:GitHub

FSRS - Ignore revlogs before date while optimizing (#2922) * Added: Date input button * Added: ignoreDate to config * Added: Backend * Optimize function passes value * Fix: Spelling * Moved: filter logic from revlog_for_srs to update_memory_state * fmt * Copyright header * ./check * Fix: Test * Renamed: Ignore_date -> Ignore_before_date * Neaten parameters * evaluate weights * ./check * Optimize all presets * Added: Label localizations * Removed globe label * Added: Tooltip * Changed error type * fmt * Moved filter to own function * missing function call replacement * Fix: Typo * Apply suggestions from code review Co-authored-by: Damien Elmes <dae@users.noreply.github.com> * timestamp * 1000 -> timestamp_millis * ignoreBefore -> ignore_before * clarified ignore_before variables * i64 -> TimestampMillis * Un-traitified remove_revlogs_before * Added: ms == 0 guard * Added: Ignore_before affects scheduling * Moved filter to fsrs_items_for_training * removed filter from revlog_for_srs * Tuple -> UpdateMemoryStateEntry * Removed unused function * Removed superfluous _ms from variables * cid -> id * Different ignore method * Added: Unit test * cid -> id * Test: Exact ms edge case * ./check * Fix: re-learns could be before ignore date in cards without learning steps * getignoreRevlogsBeforeMs -> getIgnoreRevlogsBeforeMs * Removed pub(crate) * Clarified unit test * last_learn_entry -> first_of_last_learn_entries * @user1823's method * IOS fix * ./check * Fix: width defined twice

Commit:4ef389b
Author:Abdo
Committer:GitHub

Keep previous FSRS parameters if they get worse when optimizing (#2996) * Update to fsrs-rs 0.3.0 * Keep previous FSRS parameters if they get worse when optimizing

Commit:80c14aa
Author:Abdo
Committer:GitHub

Maintain original IO cloze order in editing mode (#2987) * Maintain original IO cloze order in editing mode * Fix ordinal propery name

Commit:eab5c02
Author:Abdo
Committer:GitHub

Add by creation date review sort order (#2957) * Add by creation date review sort order * Order by template after nid in ReverseAdded of filtered decks too

Commit:bf06020
Author:Damien Elmes
Committer:GitHub

Use card.reps - 1 when calculating fuzz (#2933) https://github.com/open-spaced-repetition/fsrs4anki-helper/issues/343#issuecomment-1879584562 https://forums.ankiweb.net/t/reschedule-is-inconsistent-with-normal-schedule-in-fuzz/39363

Commit:4678b0c
Author:Damien Elmes

Use seconds instead of minutes for preview delay Since this is not compatible with older clients, preview_delay has been brought back so the configured value will still sync.

Commit:e778cba
Author:Damien Elmes

Allow user to configure hard/good buttons when rescheduling off Closes #2858

Commit:6326063
Author:Gustaf-C
Committer:GitHub

Include elapsed_secs in learning card state (#2862) * Include elapsed_time in learning card state * Suggested updates, elapsed_time -> elapsed_secs * Remove outdated comment

Commit:063b6f6
Author:Damien Elmes

Rework error dialog - Hide traceback - Include full add-on info in 'copy debug info' button, like about screen - Link to troubleshooting page - Use non-modal pop-up in the common case, to avoid potential conflicts with other modals. Closes #2830

Commit:8b6abd3
Author:Damien Elmes
Committer:Damien Elmes

Switch FSRS reschedule to a global option; don't persist A global is easier to use in conjunction with the 'optimize all' action. The value is no longer persisted, as doing so makes it too easy for users to generate a lot of revlog entries when playing with different FSRS weights/retention settings, such as in https://forums.ankiweb.net/t/possible-syncing-limitation-by-fsrs-manual-scheduling-data-accumulation/37610

Commit:452e012
Author:Damien Elmes
Committer:Damien Elmes

Add option to calculate all weights at once

Commit:be1f889
Author:Mani
Committer:GitHub

fixes: remove unfinished shapes, remove selectable and make shapes remain inside canvas (#2809) * remove unfinished polygon and remove selectable for shapes in polygon mode * make group and polygon position remain inside canvas area * click through transparent area in grouped object * add some shortcuts for basic usages * tools button icon in center & switch mode border * fix load svg image * basic rtl support, panzoom have issues in rtl mode * better zoom option both in ltr and rtl * handle zoom event in mask editor * add h button to handle toggle mask * add more mime type * use capital M (shift+m) for toggle mask * allow io shortcuts in mask editor only * make other shapes also remain in canvas bound area * better zoom implementation, zoom from center add zoom to resize event listener * add a border to corner to handle blend of control * add refresh button to go to selection menu * add tooltip to shortcuts and also add shortcut for other tools * make opacity remain in same state when toggled on * opacity for group/ungroup objects * update shortcuts implementation

Commit:366f787
Author:Damien Elmes

Include next_day timestamp in revlog export

Commit:a9d73fc
Author:Damien Elmes

Add a method for exporting revlogs in binary

Commit:390935d
Author:Abdo
Committer:GitHub

Persist FSRS weights search in preset (#2827)

Commit:39a60bc
Author:RumovZ
Committer:GitHub

Allow applying limits of inactive parents (#2824) * Allow applying limits of inactive parents * Tweak label/help text (dae)

Commit:f200d62
Author:RumovZ
Committer:GitHub

Allow im-/exporting with or without deck configs (#2804) * Allow im-/exporting with or without deck configs Closes #2777. * Enable webengine remote debugging in launch.json * Reset deck limits and counts based on scheduling Also: - Fix `deck.common` not being reset. - Apply all logic only depending on the source collection in the gathering stage. - Skip checking for scheduling and only act based on whether the call wants scheduling. Preservation of filtered decks also depends on all original decks being included. - Fix check_ids() not covering revlog. * Fix importing legacy filtered decks w/o scheduling * Disable 'include deck options' by default, and fix tab order (dae) * deck options > deck presets (dae)

Commit:ae7b14b
Author:Abdo
Committer:GitHub

Add auto-advance options to deck preset (#2765) * Move stop-timer-on-answer strings to correct section * Add auto-advance options to deck preset * Implement answer actions * Fix error when last card is answered before timeout * Fix deserialization of answerAction * Add answerAction to reserved key list * Fix inverted boolean * Add option to wait for audio to finish * Add auto-advance toggle * Add shortcut * Disable auto-advance when main window state changes * Start auto-advance timer after option is toggled * Disable auto-advance when main window loses focus * Use existing translations * Add Answer Hard and Show Reminder

Commit:6a2d1f9
Author:Abdo
Committer:GitHub

Move anki.utils.html_to_text_line() to backend (#2816)

Commit:9268dce
Author:Damien Elmes

Expose fuzz delta for FSRS add-on

Commit:e071fb4
Author:Gustaf-C
Committer:GitHub

Allow creation of empty filtered decks (#2788) * Add new button to UI * Add bool to allow creating empty filtered in back end * Implement logic into front end for passing on bool * Hide option on old decks * Show option again if any settings are changed * Revert "Show option again if any settings are changed" This reverts commit 094acd9c65936823fa206594da5c1f3e4eb09248. * Revert "Hide option on old decks" This reverts commit d20a9a240b4fd85d080e8cc52d94318416ca753f. * Update string * Update ftl/core/decks.ftl --------- Co-authored-by: Damien Elmes <dae@users.noreply.github.com>

Commit:633d246
Author:Damien Elmes

Don't lock collection while generating TTS

Commit:14940a6
Author:Abdo
Committer:GitHub

Fix IO groups breaking upon editing (#2766) * Fix IO groups breaking upon editing * Emit change signal after group/ungroup

Commit:9bbc6c9
Author:Damien Elmes
Committer:Damien Elmes

Add image occlusion to stock notetypes

Commit:c828a2e
Author:Aristotelis
Committer:GitHub

Add APIs for IO card rendering (#2739) * Refactor: Add index to shapes package * Add shape draw callback API to setupImageCloze * Expose IO drawing API, switch away from image cloze naming We currently use "image occlusion" in most places, but some references to "image cloze" still remain. For consistency's sake and to make it easier to quickly find IO-related code, this commit replaces all remaining references to "image cloze", only maintaining those required for backwards compatibility with existing note types. * Add cloze ordinal to shapes * Do not mutate original shapes during (de)normalization Mutating shapes would be a recipe for trouble when combined with IO API use by external consumers. (makeNormal(makeAbsolute(makeNormal())) is not idempotent, and keeping track of the original state would introduce additional complexity with no discernible performance benefit or otherwise.) * Tweak IO API, allowing modifications to ShapeProperties * Tweak drawShape parameters * Switch method order For consistency with previous implementation * Run Rust formatters * Simplify position (de)normalization --------- Co-authored-by: Glutanimate <glutanimate@users.noreply.github.com>

Commit:bba67fd
Author:Abdo
Committer:GitHub

Fix misleading warning when changing notetype from/to cloze (#2744)

Commit:5cde4b6
Author:Abdo
Committer:GitHub

Remove v1/v2 support from the backend (#2727) * Remove v1/v2 support from deck list * Remove v1/v2 support from most routines and show error * Remove scheduler_version from preferences * Fix formatting * Remove v1/v2 conditionals from Python code * Fix legacy importer * Remove legacy hooks * Add missing scheduler checks * Remove V2 logic from deck options screen * Remove the review_did_undo hook * Restore ability to open old options with shift (dae)

Commit:003cdfd
Author:Damien Elmes
Committer:Damien Elmes

Use sm2 retention when deriving memory state Closes #2702

Commit:9e147c6
Author:Abdo
Committer:GitHub

Add text tool to image occlusion (#2705) * Add text tool to IO * Remove unnecessary parentheses * Fix text objects always grouped * Remove log * Fix text objects hidden on back side * Implement text scaling * Add inverse text outline * Warn about IO notes with only text objects This will result in a different error message than the case where no objects are added at all though, and the user can bypass the warning. Maybe this is better to avoid discarding the user's work if they have spent some time adding text. * Add isValidType * Use matches! * Lock aspect ratio of text objects * Reword misleading comment The confusion probably comes from the Fabric docs, which apparently need updating: http://fabricjs.com/docs/fabric.Canvas.html#uniformScaling * Do not count text objects when calculating current index * Make text objects respond to size changes * Fix uniform scaling not working when editing * Use Arial font * Escape colons and unify parsing * Handle scale factor when restricting shape to view * Use 'cloned' * Add text background * Tweak drawShape's params

Commit:c052be9
Author:Abdo
Committer:GitHub

Add a backend method to extract static media references (#2716) * Add a backend method to extract static media references * Extract into Notetype.gather_media_names()

Commit:23f29a6
Author:RumovZ
Committer:GitHub

Invalid sorting (#2709) * Rollback if toggling state fails Previously, if the search triggered by a state toggle failed, the switch and the model would move to the new state, while the table would remain in the previous state. * Fix reversed sort orders of FSRS columns * Add sep. default sort orders for notes and cards * Add test for consistent default sort orders * Add launch config for debugging in VSC * Extend launch config for macOS and Linux

Commit:9fd8a8b
Author:Damien Elmes

Add stability graph

Commit:072cd37
Author:Damien Elmes
Committer:Damien Elmes

Support rescheduling on weight/retention change

Commit:50c8a1b
Author:Damien Elmes

Update FSRS - up to 10x performance increase in optimal retention - expose loss aversion - use SpinBoxes

Commit:b8390d0
Author:Damien Elmes

Shift weight calculation to backend so it can be run in parallel

Commit:1f55ad1
Author:Damien Elmes
Committer:GitHub

Expose the ability to train weights from items (#2687)

Commit:ab7e648
Author:Abdo
Committer:GitHub

Implement "stop timer on answer" as a preset option (#2686) * Implement "stop timer on answer" as a preset option * Hide timer setting on AnkiMobile (dae)

Commit:baae685
Author:Damien Elmes

UI tweaks https://forums.ankiweb.net/t/anki-23-10-beta-1/34912/19

Commit:e6aaeb8
Author:Damien Elmes

Expose memory state computation to Python Closes #2676

Commit:9cc4720
Author:Damien Elmes
Committer:Damien Elmes

Support fetching new cards by deck then random note https://forums.ankiweb.net/t/feature-request-option-for-new-card-gather-order-that-prioritizes-subdecks-closer-to-top-but-gathers-cards-randomly-from-each-subdeck/23178

Commit:2126ff9
Author:Damien Elmes

Gate graph display on fsrs status

Commit:03edb7b
Author:Damien Elmes
Committer:Damien Elmes

Store desired retention in card data If we want to be able to factor the desired retention into a sort based on relative overdueness, having the values accessible on the card makes things easier.

Commit:c78de23
Author:Damien Elmes
Committer:Damien Elmes

Convert FSRS to a global option Allowing some decks to be FSRS and some SM-2 will lead to confusing behavior when sorting on SM-2 or FSRS-specific fields, or when moving cards between decks.

Commit:f78c591
Author:Abdo
Committer:GitHub

Add an option to stop the timer on answer (#2673) * Add an option to stop the timer on answer * Fix tab order

Commit:c2b1ab5
Author:Abdo
Committer:GitHub

Skip template checks in Fields screen (#2670)

Commit:6074865
Author:Damien Elmes
Committer:Damien Elmes

Calculate parameters automatically Logic derived from https://github.com/open-spaced-repetition/fsrs-rs/commit/d8e2f6a0ffe4f5e8a3ffd0a387089be32a6adc47 Closes #2661

Commit:a7b4c90
Author:Damien Elmes
Committer:Damien Elmes

Use field tags instead of hard-coding occlusion fields + Don't protect the comments field It's not required by our current code. We can remove the protection from Header and Back Extra in the future too, once we no longer depend on them. Closes #2621

Commit:f0be697
Author:Damien Elmes

Protect image occlusion fields and cloze field

Commit:1e37c80
Author:Damien Elmes
Committer:Damien Elmes

Add support for tagging + protecting fields

Commit:59759b4
Author:Damien Elmes

Start on a 'get params' button