Commit graph

12101 commits

Author SHA1 Message Date
llama
353b55f7a4
Merge 32020a5f68 into dac26ce671 2025-11-06 15:21:07 +08:00
llama
32020a5f68
fix(import): support variable field count with notetype column 2025-11-06 15:16:49 +08:00
Luc Mcgrady
dac26ce671
Fix/Exclude BackendFrontendService from write_python_interface (#4410)
* Fix/Missing python import in write_header

* Revert "Fix/Missing python import in write_header"

This reverts commit 7c736d984d.

* exclude BackendFrontendService

---------

Co-authored-by: Abdo <abdo@abdnh.net>
2025-10-29 20:15:56 +03:00
jariji
da5b8cb5b4
Show text on occlusion cards regardless of occludeInactive (#4387)
* Show text on occlusion cards regardless of `occludeInactive`.

Before this change, on an image occlusion card, a text box was visible
during editing but not visible during review. This change makes text
visible even if other shapes would be hidden.

* Move fix to render_image_occlusion()

---------

Co-authored-by: jariji <jariji>
Co-authored-by: Abdo <abdo@abdnh.net>
2025-10-29 08:51:55 +03:00
llama
739e41ce16
fix(launcher): apply cache settings to all uv invocations (#4404) 2025-10-27 19:42:45 +07:00
Eltaurus
9eb6ec4db8
Fix unescaped HTML in correct type-in answers (#4407)
* Fix unescaped HTML in correct type-in answers

* unit test for correct answer escaping

* fix string conversion
2025-10-27 19:41:40 +07:00
jcznk
23d0657a01
(UI polish) Filtered decks: replace maximumSize with sizePolicy in "Limit to" QSpinBox (#4398)
* Fix (UI) / Increase width of "Limit to" QSpinBox (Filtered Decks)

Increased the width from 60 px to 75 px, so that there is always enough space, even in the case of large numbers (e.g., 99999).

* Update filtered_deck.ui (replace maximumSize with sizePolicy)
2025-10-27 19:35:07 +07:00
Abdo
510a3b3533
Update VS Code config (#4397) 2025-10-27 19:31:59 +07:00
Abdo
d3ca0cd0b3
Update PyCharm docs (#4389)
* Add .idea.dist

* Update PyCharm docs
2025-10-27 19:27:50 +07:00
user1823
62c950120c
Fix(launcher)/Exclude pre-release if a newer major_minor exists (#4388)
The current main produces a list like "25.09.2, 25.08b5, 25.07.5, 25.06b7, 25.02.7"
Here, 25.08b5 and 25.06b7 should be filtered out for the same reason this code filters out the older patch releases.
2025-10-27 19:26:09 +07:00
llama
a05c90cbce
fix: make uv use system certstore (#4386) 2025-10-27 19:19:28 +07:00
llama
23263caea2
feat: show launcher if different version was installed (#4381) 2025-10-27 19:08:40 +07:00
dependabot[bot]
9f9bafa66c
Bump vite from 6.3.6 to 6.4.1 (#4405)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.6 to 6.4.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@6.4.1/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.4.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-27 18:30:23 +07:00
Ranjit Odedra
d24d2e3394
Fix sync login dialog not using newly-set custom sync server #4395 (#4396)
* Fix sync login with custom server URL

Call update_network() before showing login dialog to ensure
the custom sync server URL is saved before attempting login.

Previously, the custom URL was only saved when closing the
preferences dialog, causing login to fail on first attempt.

Fixes #4395

* Add contributor info
2025-10-18 01:11:50 +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
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
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
Luc Mcgrady
9e415869b8
Fix/Add lower review limit to health check. (#4334) 2025-09-17 14:04:27 +10:00
Emil Hamrin
7e8a1076c1
Updated Dockerfile to use Ninja build system (#4321)
* Updated Dockerfile to support ninja build

* Install python using uv

* Bumped python version

* Add disclaimer (dae)
2025-09-17 14:02:09 +10:00