These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | e758aa0 | |
|---|---|---|
| Author: | Luc Mcgrady | |
Merge remote-tracking branch 'upstream/main' into labs
| Commit: | 643187a | |
|---|---|---|
| Author: | Abdo | |
| Committer: | GitHub | |
Shift editor control to TypeScript (#4029) Closes https://github.com/ankitects/anki/issues/3830 --------- Co-authored-by: Fernando Lins <fernandolins@users.noreply.github.com>
The documentation is generated from this commit.
| Commit: | 0279230 | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Merge remote-tracking branch 'origin' into editor-3830
The documentation is generated from this commit.
| Commit: | 5f386da | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
feat: Labs interface backend (#5071) closes #5073 Saves the values set in - #5057 Saves it to the currently open collections json config. I'm not sure if this approach might have problems with https://github.com/ankitects/anki/pull/4289#discussion_r2544738518. A situation where the main window has Anki API access while also displaying user supplied JavaScript would be terrible so we should be careful with this. Test by enabling the "ping" labs option and then reload Anki or switch profile to the same profile.
| Commit: | 3f3fac5 | |
|---|---|---|
| Author: | Fernando Lins | |
| Committer: | Fernando Lins | |
Merge branch 'main' of github.com:ankitects/anki into editor-3830
The documentation is generated from this commit.
| Commit: | 83d711f | |
|---|---|---|
| Author: | user1823 | |
| Committer: | GitHub | |
Feat: Expose card's decay and DR to custom scheduler (#4880) I wanted to use the card's decay in my custom scheduling script. But, Anki doesn't expose it to JS. This small change exposes the values to JS.
| Commit: | 751e3f5 | |
|---|---|---|
| Author: | Andrew Sanchez | |
| Committer: | GitHub | |
Merge branch 'main' into editor-3830
| Commit: | 5a9b54e | |
|---|---|---|
| Author: | Andrew Sanchez | |
| Committer: | GitHub | |
Briefcase Installer (#4629) migrates Anki Desktop packaging from the legacy NSIS/uv-based installer to [BeeWare Briefcase](https://briefcase.readthedocs.io/). This branch integrates work from many related issues and PRs to deliver cross-platform native installers (MSI on Windows, .app on macOS, PyInstaller on Linux) with code signing, notarization, and file association support. ## Integrated PRs - #4585 — Set up Briefcase - #4596 — Add Briefcase icons - #4598 — Handle Briefcase file associations - #4601 — Add Briefcase app permissions - #4609 — Customize Briefcase's MSI installer - #4616 — Set up Briefcase code signing and notarization - #4618 — Fix Briefcase packaging for x86 Macs - #4623 — Customize Briefcase's Linux template - #4627 — List required Debian packages for Briefcase installer - #4630 — Update Briefcase's Windows template - #4631 — Rewrite Linux install/uninstall scripts for PyInstaller - #4638 — Use PyInstaller on Linux - #4645 — Update installer docs - #4654 — Disable Briefcase's universal builds for macOS - #4672 — Deal with existing NSIS installations in MSI installer - #4676 — Remove duplicate Briefcase icons - #4677 — Tweak Linux scripts for new installer - #4709 — Add anki-console.bat to Briefcase's Windows package ## Related Issues - #4557 — Evaluate BeeWare Briefcase for Anki packaging and distribution - #4678 — Support native Windows ARM64 builds for Briefcase - #4688 — Linux installer: migrate to PyInstaller and rewrite install scripts - #4689 — Investigate startup performance with Briefcase - #4690 — Specify required Linux system packages for Briefcase - #4691 — Investigate Windows ARM64 support with Briefcase - #4692 — Test on Linux ARM with Briefcase - #4693 — Separate ARM and Intel macOS releases - #4694 — Update developer documentation for Briefcase installer - #4695 — Support upgrade/downgrade with the Briefcase installer - #4696 — Update user documentation for new installer - #4702 — Update Briefcase's Windows template with upstream security fix and OS version check - #4703 — Follow-up tweaks to Linux install/uninstall scripts ## Related PRs - #4619 — Enable Windows ARM64 support - #4632 — Release action --------- Co-authored-by: Abdo <abdo@abdnh.net> Co-authored-by: Andrew Sanchez <andrewsanchez@users.noreply.github.com> Co-authored-by: Fernando Lins <1887601+fernandolins@users.noreply.github.com>
| Commit: | 8d4a986 | |
|---|---|---|
| Author: | Abdo | |
| Committer: | GitHub | |
feat: Support upgrades for Briefcase packages (#4725) ## Linked issue #4695 ## Summary This adds support for app upgrades for Briefcase/PyInstaller packages. This is done by downloading the latest GitHub release (stable or prerelease depending on the user's current version) and opening the installer. ## How to test 1. Change the `ALL_RELEASES_URL`/`LATEST_RELEASE_URL` constants defined in github.rs to reference my fork so you have some recent releases to test with: https://github.com/abdnh/anki/releases 2. Use _Tools > Check for Updates_ and confirm you're prompted to update to 26.04. 3. Accept the prompt and wait for the download to finish and installer to open. If you're on Linux, you'll be redirected to the direct download URL on your browser (extraction/installation is not handled for simplicity). 4. Change .version to `26.04b1` and check for updates again. Confirm you're prompted to update to 26.04b3. ### Checklist - [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 - Anki's automatic update check is left untouched for now. It fetches the latest release from AnkiWeb, which might (intentionally) lag a few releases behind GitHub. - Updates are downloaded and cached to `updates` under the `AnkiProgramFiles` folder (used for the uv launcher). ## UI evidence The existing prompt is reused: <img width="281" height="182" alt="image" src="https://github.com/user-attachments/assets/d52900b7-645f-4b91-a195-9d5ce016b981" /> <img width="312" height="101" alt="image" src="https://github.com/user-attachments/assets/069f3eba-5f03-4de1-a962-59bbdc6c1e39" /> ## Scope - [x] This PR is focused on one change (no unrelated edits).
| Commit: | 4652d86 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | 922953a | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
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
| Commit: | 0130fb7 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | db81135 | |
|---|---|---|
| Author: | user1823 | |
| Committer: | GitHub | |
Fix/Make descending R a pure R sort (#4400) * Feat/Add pure R-based review sorting orders https://forums.ankiweb.net/t/follow-up-make-descending-retrievability-a-pure-r-sort/67082 * cleanup * fix * Update test
| Commit: | 7c6fa98 | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Add RPCs for Fields/Cards dialogs
| Commit: | 7dc2d29 | |
|---|---|---|
| Author: | Abdo | |
Handle deeply nested OpChanges Messages such as AddNotesResponse were not handled correctly.
| Commit: | f10d48d | |
|---|---|---|
| Author: | Abdo | |
Handle undo for all RPCs that return OpChanges
| Commit: | 28daa16 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | d8aa244 | |
|---|---|---|
| Author: | user1823 | |
| Committer: | GitHub | |
Export last_interval to Python (#4365) * Export last_interval to Python * Add last_interval field to StatsRevlogEntry * Implement last_interval_secs function * Update last_interval field type in stats.proto * Update last_interval to use last_interval_secs
| Commit: | c56e6e5 | |
|---|---|---|
| Author: | llama | |
| Committer: | GitHub | |
feat: show saved custom colours as options in fill tool colour picker on mobile (#4348) * add GetCustomColours rpc method * save colours as rgb instead of argb * show saved custom colours as possible options in colour picker this is primarily for mobile clients, as qt currently ignores this * save custom colours on colour picker change (for desktop)
| Commit: | 80cff16 | |
|---|---|---|
| Author: | llama | |
| Committer: | GitHub | |
fix: persist colour picker's custom palette in profile (#4326) * add SaveCustomColours rpc method * restore custom colour palette on editor init * save custom colour palette on colour picker open and input there doesn't seem to be an event fired when the picker is cancelled/closed, so it's still possible for work to be lost * save colours on `change` instead of `input` `input` is supposed to be fired on every adjustment to the picker whereas `change` is only fired when the picker is accepted, but qt seems to treat both as the latter, so this is currently a no-op * Store colors in the collection One minor tweak to the logic while I was there: an invalid color no longer invalidates all the rest. --------- Co-authored-by: Damien Elmes <gpg@ankiweb.net>
| Commit: | 6f93bfa | |
|---|---|---|
| Author: | Abdo | |
Move retrieve_url to backend
| Commit: | 5280cb2 | |
|---|---|---|
| Author: | maxr777 | |
| Committer: | GitHub | |
Enable nc: to only search in a specific field (#4276) (#4312) * Enable nc: to only search in a specific field * Add FieldSearchMode enum to replace boolean fields * Avoid magic numbers in enum * Use standard naming so Prost can remove redundant text --------- Co-authored-by: Damien Elmes <gpg@ankiweb.net>
| Commit: | 355e5f2 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | 153b972 | |
|---|---|---|
| Author: | llama | |
| Committer: | GitHub | |
Show the number of cards added when adding (#4310) * modify `generate_cards_for_note` to return count * modify `add_note` to return count * show the number of cards added when adding
| Commit: | 93f3892 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | 2b55882 | |
|---|---|---|
| Author: | Jarrett Ye | |
| Committer: | GitHub | |
Fix/use real step count to simulate (#4240) * Fix/use real step count to simulate * Update licenses.json
| Commit: | c947690 | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
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 72efcf230c273b0eb9f1f294d21e4b9f959e3dde. * Reapply "use https://github.com/open-spaced-repetition/fsrs-rs/pull/352" This reverts commit 49eab2969f56568296289b63b0a7146118d848b3. * ./check * bump fsrs
| Commit: | 1af3c58 | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
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 fc89efb1d954ce331002b4dd0b464109938b8a35. * "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>
| Commit: | 46bcf4e | |
|---|---|---|
| Author: | Jarrett Ye | |
| Committer: | GitHub | |
Feat/per-deck desired retention (#4194) * Feat/per-deck desired retention * Refactor desired retention logic in Collection implementation Updated the logic for retrieving deck-specific desired retention in both `memory_state.rs` and `mod.rs` to handle cases where the deck's normal state may not be available. This change ensures that the default configuration is used when necessary, improving the robustness of the retention handling. * Refactor desired retention handling in FsrsOptions.svelte Updated the logic for effective desired retention to use the configuration default instead of the deck-specific value. This change improves consistency in the retention value used throughout the component, ensuring that the correct value is bound to the UI elements. * refactor the logic for obtaining deck-specific desired retention by using method chaining * support deck-specific desired retention when rescheduling * Refactor desired retention logic to use a dedicated method for improved clarity and maintainability.
| Commit: | 9a054d6 | |
|---|---|---|
| Author: | Abdo | |
Complete noteCanBeAdded()
| Commit: | f379aa7 | |
|---|---|---|
| Author: | Abdo | |
Implement History button
| Commit: | c91f943 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | 1f7f7bc | |
|---|---|---|
| Author: | Jarrett Ye | |
| Committer: | GitHub | |
Fix/FSRS simulator fallback to memory_state_from_sm2 when converting cards (#4189) * Fix/FSRS simulator fallback to memory_state_from_sm2 for after setting “Ignore cards reviewed before” * add comment to fsrs_item_for_memory_state * Add historical retention field to FSRS review request and update related logic - Added `historical_retention` field to `SimulateFsrsReviewRequest` in `scheduler.proto`. - Updated `simulator.rs` to use `req.historical_retention` instead of the removed `desired_retention`. - Modified `FsrsOptions.svelte` to include `historicalRetention` in the options passed to the component. * Update rslib/src/scheduler/fsrs/memory_state.rs Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com> * Update rslib/src/scheduler/fsrs/simulator.rs Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com> * pass ci * Update rslib/src/scheduler/fsrs/simulator.rs Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com> * format * Update rslib/src/scheduler/fsrs/simulator.rs Co-authored-by: Luc Mcgrady <lucmcgrady@gmail.com> * format * Fix condition in is_included_card function to check CardType instead of CardQueue --------- Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com> Co-authored-by: Luc Mcgrady <lucmcgrady@gmail.com>
| Commit: | c2374dc | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Implement help button
| Commit: | a8a2e4e | |
|---|---|---|
| Author: | Abdo | |
Implement close button
| Commit: | b177189 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | 80ff9a1 | |
|---|---|---|
| Author: | llama | |
| Committer: | GitHub | |
Allow creating deck via `#deck:...` if non-existent when importing (#4154) * add deck name field to metadata protobuf msg * fallback to creating new deck specified in `#deck:...` * update tests * create deck if it doesn't exist * plumbing * allow creating deck via `#deck:...` * apply suggestion for protobuf
| Commit: | 037dfa1 | |
|---|---|---|
| Author: | Jarrett Ye | |
| Committer: | GitHub | |
Add `last_review_time` to card data for performance and accuracy (#4124) * Add `last_review_time` to card data * cargo clippy * Calculate days elapsed since last review time in add_extract_fsrs_relative_retrievability * expose last_review_time to Card in Python * Fix last_review_time assignment in Card class to use last_review_time_secs * format * Update last_review_time assignment to exclude filtered preview state in Card class
| Commit: | f5285f3 | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
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)
| Commit: | d0bb1ff | |
|---|---|---|
| Author: | Abdo | |
Tweak naming
| Commit: | dbd8737 | |
|---|---|---|
| Author: | Abdo | |
Fix undo ops of add_note/update_notetype
| Commit: | da90705 | |
|---|---|---|
| Author: | Damien Elmes | |
| Committer: | Damien Elmes | |
Re-expose legacy RMSE calculations Closes #4143
| Commit: | b22b331 | |
|---|---|---|
| Author: | Damien Elmes | |
| Committer: | Damien Elmes | |
Revert "Feat/Cmrr target selector (#4116)" This reverts commit ad0dbb563a520baef1a72c0c6b43af845cce8c82. https://forums.ankiweb.net/t/anki-25-06-beta/62271/156
| Commit: | 1f00213 | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Add a basic fieldsAreBlank()
| Commit: | 230fb3c | |
|---|---|---|
| Author: | Abdo | |
Use CamelCase consistently for Protobuf names
| Commit: | dd67385 | |
|---|---|---|
| Author: | Abdo | |
Go back to using QClipboard
| Commit: | 5bfae11 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | ad0dbb5 | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
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
| Commit: | fa0c4b1 | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | a4c95f5 | |
|---|---|---|
| Author: | Jarrett Ye | |
| Committer: | GitHub | |
include decay in ComputeMemoryStateResponse (#4102) * include decay in ComputeMemoryStateResponse * Add decay attribute to ComputedMemoryState and update Collection methods * Refactor decay calculation into a helper function for improved readability and maintainability in memory state management * format & clippy
| Commit: | cf099ea | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Move Record Audio button
| Commit: | 70a69cf | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Move context menu logic
| Commit: | 13c2dd2 | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Move more image occlusion calls
| Commit: | 99396e5 | |
|---|---|---|
| Author: | Abdo | |
Start work on copy & paste handling
| Commit: | 55ecbc1 | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
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>
| Commit: | 2de0c79 | |
|---|---|---|
| Author: | Jarrett Ye | |
| Committer: | GitHub | |
Feat/evaluate FSRS with time series split (#3962)
| Commit: | 2ee708f | |
|---|---|---|
| Author: | Abdo | |
Formatting
| Commit: | 15cbbee | |
|---|---|---|
| Author: | Abdo | |
Move setTagsCollapsed()
| Commit: | 9395b89 | |
|---|---|---|
| Author: | Abdo | |
Move setColorButtons()
| Commit: | 3ae7484 | |
|---|---|---|
| Author: | Abdo | |
Merge branch 'main' into editor-3830
| Commit: | f29bcb7 | |
|---|---|---|
| Author: | Luc Mcgrady | |
| Committer: | GitHub | |
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>
| Commit: | 3073ef0 | |
|---|---|---|
| Author: | Abdo | |
Remove editorReady() bridgeCommand() looks cleaner here
| Commit: | 1809e79 | |
|---|---|---|
| Author: | Abdo | |
| Committer: | Abdo | |
Move note saving to TS
| Commit: | 5cbb524 | |
|---|---|---|
| Author: | Abdo | |
Move editor code to ts/routes
| Commit: | 48a0640 | |
|---|---|---|
| Author: | Damien Elmes | |
Revert "feat(scheduler): add from_queue flag to CardAnswer (#3976)" This reverts commit 1f95d030bbc7ebcc004ffe1e2be2a320c9fe1e94. Buggy: https://github.com/ankitects/anki/pull/3983
| Commit: | 1f95d03 | |
|---|---|---|
| Author: | Yaoliang Chen | |
| Committer: | GitHub | |
feat(scheduler): add from_queue flag to CardAnswer (#3976) Co-authored-by: Yaoliang <yaoliang.ch@gmail.com>
| 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