Commit graph

12251 commits

Author SHA1 Message Date
Abdo
71dfb6350d Run scheduled save before add 2025-10-18 03:53:00 +03:00
Abdo
7dc2d29136 Handle deeply nested OpChanges
Messages such as AddNotesResponse were not handled correctly.
2025-10-18 02:45:27 +03:00
Abdo
74c727e82c Remove log() 2025-10-18 01:37:09 +03:00
Abdo
9278da2c85 Formatting 2025-10-15 00:56:03 +03:00
Abdo
6248a71f2a Move .reload_note() calls 2025-10-15 00:53:37 +03:00
Abdo
9b28ed87f2 Fix undo of methods returning OpChanges directly not being handled correctly 2025-10-15 00:45:52 +03:00
Abdo
d0eb61acdb Fix notetype label not changing when default deck is set 2025-10-14 23:46:37 +03:00
Abdo
4ec88a8351 Handle operation changes from other screens 2025-10-14 23:46:31 +03:00
Abdo
fbfd2784d8 Merge branch 'main' into editor-3830 2025-10-13 13:38:14 +03:00
Abdo
6a27370b7a Remove unused CSS selector 2025-10-13 13:21:43 +03:00
Abdo
f10d48db47 Handle undo for all RPCs that return OpChanges 2025-10-13 13:09:49 +03:00
Lee Doughty
321e23acb2
Replace custom UUID function with crypto.randomUUID (#4384) 2025-10-13 09:37:30 +03:00
nav1s
ab2fe98c54
feat: add tooltips for sidebar items in the browse cards window (#4385)
* feat: add tooltips for all of the sidabar items in the browse cards window

* fix: add name to CONTRIBUTORS
2025-10-13 09:27:40 +03:00
Arold0
76d3237139
Fix notetype original_stock_kind using wrong enum (#4382)
Use OriginalStockKind instead of StockKind when setting
original_stock_kind for basic notetype variants. The two enums
have different numeric values, causing 'Restore to Default' to
restore the wrong template.

For example, StockKind::BasicTyping has value 3, but when read
back as OriginalStockKind, value 3 corresponds to
BasicOptionalReversed instead of BasicTyping (which is 4).

This fixes the off-by-one behavior where:
- Basic (type in the answer) → Basic (optional reversed card)
- Basic (and reversed card) → Basic (optional reversed card)
- Basic (optional reversed card) → Basic (and reversed card)

Fixes #4353
2025-10-09 01:50:50 +03:00
Arold0
d11b74fd38
Fix fatal error when double clicking Add button (#4377)
Prevent adding a note that has already been added by checking if
note.id is set before attempting to add it. This fixes a race
condition when the Add button is clicked multiple times quickly.

Fixes #4376
2025-10-05 15:58:16 +03:00
AmandaSternberg-creator
1f9d943c8d
Localize FSRS error message and update contributors (#4342)
Co-authored-by: Amanda Sternberg <mandis.sternberg@gmail.com>
2025-10-02 21:52:49 +07:00
user1823
1ba4512011
Fix launcher strings (#4375)
* Fix launcher strings

* Add prompt to press enter for installation

* Prompt should appear after ensuring that the OS is supported
2025-10-02 21:50:44 +07:00
GithubAnon0000
969c2b43b5
CHANGE launcher strings to clarify installing for novices (#4327)
* CHANGE strings to clarify for novices

* Update launcher.ftl including suggestions from @dae
2025-10-02 17:00:09 +07:00
matbe766
b2bb85b1a2
Avoid QProgressBar overflow by normalizing to kilobytes (fixes #4341) (#4354)
* qt: normalize large progress totals to kilobytes to avoid QProgressBar overflow (#4341); docs: update CONTRIBUTORS

* update

* revert: keep ProgressManager generic; no autoscaling in progress.py

* revert: keep ProgressManager generic; do scaling only in full sync

* Simplify sync progress update by scaling to KB, fix CONTRIBUTORS
2025-10-02 16:59:09 +07:00
Abdo
6165567238 Refresh fields after MathJax toggle
There's probably a more efficient solution for this but I couldn't
figure it out
2025-10-01 11:50:27 +03:00
Dan
0986af4f81
fix(Occlusion): remember toggle translucency setting (#4366)
* remember translucency

Adding myself to contributors

Added braces surrounding if statement to comply with ninja checks

* ninja fix format
2025-09-30 20:18:26 +03:00
Abdo
e5612b1340 Add back .empty MathJax styles 2025-09-30 16:35:37 +03:00
Abdo
fbd21ba7f1 Restore toggleMathjax for legacy editor 2025-09-30 15:53:45 +03:00
Abdo
6bd560ea3a Add setupColourPalette() to legacy editor 2025-09-30 15:36:00 +03:00
Abdo
28daa16bcf Merge branch 'main' into editor-3830 2025-09-30 15:31:26 +03:00
llama
a842ba1498
replace more hardcoded strings in the launcher with translations (#4368) 2025-09-30 00:13:09 +10:00
llama
f28018c5c6
fix(ci): pin cargo-license to 0.7.0 (#4367)
* pin cargo-license to 0.7.0

* ./ninja fix:minilints
2025-09-30 00:12:24 +10:00
Toby Penner
72d83ffc98
Add syntax for multi-card cloze deletions (#4333)
* Add multi-card cloze support

* Add Toby Penner to CONTRIBUTORS
2025-09-28 18:56:07 +03:00
Elias
f5f60548db
Fix browser search newlines and update CONTRIBUTORS (#4336) 2025-09-27 17:21:57 +10:00
Damien Elmes
e4b8cf3a5f Update translations 2025-09-27 14:09:15 +07:00
llama
e0b0d0d19b
feat: add i18n to launcher (#4361)
* add anki_i18n and locale_config crates to launcher

* add launcher.ftl

* add tr to state

* replace most hardcoded strings with translations

* add support for `launcher` rustcfg to trim translations

* use marker structs to denote type of translations

* move underscores into generated code

* Update cargo-license, which may fix the license order issue (dae)
2025-09-27 16:58:46 +10:00
user1823
b0665a8ef1
Fix/Ensure fuzz doesn't go backward during rescheduling (#4364)
* Fix/Ensure fuzz doesn't go backward during rescheduling

Fixes https://github.com/ankitects/anki/issues/2694

* Fix

* Get previous_interval from LastRevlogInfo

* Fix

* Format

* Format

* Exclude lapses

* Force reconfigure in CI

The cached build.ninja may reference files that don't exist in the PR.
On a local build this tends to auto-fix itself as the build scripts detect
a quick failure and re-run the configure, but CI tends to be too slow.

https://github.com/ankitects/anki/pull/4364#issuecomment-3338026129

* Rename min/max to make it clear they restrict interval, not fuzz

* Wording tweaks/comments for clarity

---------

Co-authored-by: Damien Elmes <gpg@ankiweb.net>
2025-09-27 16:43:34 +10:00
user1823
d8aa244a5a
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
2025-09-27 15:58:41 +10:00
Jarrett Ye
03f3a005f4
Fix/first and latest review dates should only consider entries with a rating. (#4360)
* Fix/first and latest review dates should only only consider entries with a rating.

* Update rslib/src/stats/card.rs

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

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
2025-09-27 15:46:50 +10:00
Jarrett Ye
3a5a2b1afb
Improve performance of reviews_for_fsrs function (#4339)
* Refactor reviews_for_fsrs function for improved performance

Replaced the previous implementation with a more efficient approach using a single loop and pre-allocated vectors. This change reduces the complexity of creating FSRSItems and enhances overall performance, especially for larger datasets.

* collapse `if` statement

* When not training, only create the final FSRS item
2025-09-27 15:37:24 +10:00
Hanni614
ee664b8fbb
Stats - Retention rate help box links to Deck Options manual page #4198 (#4329)
* stats: link retention help box to "Desired retention" section

* docs: use HTTPS for fsrs and desiredRetention links

* Add Hanna Nilsén to CONTRIBUTORS

* Apply suggestion from @user1823

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

---------

Co-authored-by: Hanna Nilsén <hannanilsen@macbookair.students.netlogon.liu.se>
Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
2025-09-27 14:46:11 +10:00
llama
436590f4c2
feat: add support for tag:nc:... searches (#4344)
* feat: add support for `tag:nc:...` searches

* add test
2025-09-25 07:11:07 +03:00
llama
c56e6e55ec
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)
2025-09-25 06:34:27 +03:00
Damien Elmes
04a0b10a15 Launcher now checks Windows version
https://forums.ankiweb.net/t/issue-with-installing-anki-launcher-into-custom-folder/66355
2025-09-23 19:50:40 +10:00
dependabot[bot]
99c67d39cb
Bump ammonia from 4.1.1 to 4.1.2 (#4355)
Bumps [ammonia](https://github.com/rust-ammonia/ammonia) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/rust-ammonia/ammonia/releases)
- [Changelog](https://github.com/rust-ammonia/ammonia/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-ammonia/ammonia/compare/v4.1.1...v4.1.2)

---
updated-dependencies:
- dependency-name: ammonia
  dependency-version: 4.1.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-23 18:14:05 +10:00
Damien Elmes
0d31c6de4a Hard-code more mime types
If I had a dollar for all the weird and wonderful ways Windows systems
can be broken, I'd be a very rich man.

https://forums.ankiweb.net/t/the-gear-icon-in-the-anki-interface-is-not-displaying-properly/66274
2025-09-23 18:00:55 +10:00
Damien Elmes
fb332c4fe1 Add Yiddish to language list 2025-09-21 23:33:15 +10:00
Damien Elmes
48f774c711 Add Kazakh to language list 2025-09-21 22:45:11 +10:00
Damien Elmes
3890e12c9e Bump version
.1 release skipped due to missing bugfix
2025-09-17 16:50:13 +10:00
llama
80cff16250
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>
2025-09-17 16:46:53 +10:00
Abdo
75d9026be5
Decode images asynchronously (#4320) 2025-09-17 09:06:42 +03:00
Damien Elmes
6854d13b88 Bump version 2025-09-17 15:50:16 +10:00
Damien Elmes
29072654db Update translations 2025-09-17 15:50:02 +10:00
jcznk
ec6f09958a
(UI polish) Improved margins in Card Browser's "Previewer" (#4337)
* Improved margins in Card Browser's "Preview" pane

* Alternate approach that looks good on Mac too

---------

Co-authored-by: Damien Elmes <gpg@ankiweb.net>
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
2025-09-17 15:30:22 +10:00
snowtimeglass
c2957746f4
Make timebox message translatable with flexible variable order (#4338)
* Make timebox message translatable with flexible variable order

Currently, the timebox dialog message is built from two separate strings,
each containing one variable:
"{ $count } cards studied in" + "{ $count } minutes."

As a result, translators cannot freely reorder the variables in their translations.

This change introduces a single string with both variables, allowing translators
to adjust the order for more natural expressions in their languages.

* Preserve old string for now

* Ensure message doesn't display over two lines

---------

Co-authored-by: Damien Elmes <gpg@ankiweb.net>
2025-09-17 15:13:59 +10:00