Damien Elmes
26c13f6dba
add aarch64 Linux to cargo; update deps
2020-12-30 13:33:16 +10:00
RumovZ
6ad500db55
Make function names more explicit and add docs
2020-12-29 11:18:49 +01:00
RumovZ
6a2f1fc6aa
Make normalized search syntax more explicit
...
Also fix a bug with NoCombining and WordBoundary searches.
2020-12-29 11:06:53 +01:00
Arthur Milchior
98276f1e71
NF: test # / and ^ can remains at end of string
2020-12-28 07:58:15 +01:00
Damien Elmes
e2be0c2cbd
simplify NoteField init in test; add other bad chars
2020-12-28 13:19:37 +10:00
Damien Elmes
e14198fad7
fix comment and add basic unit test
2020-12-28 13:14:49 +10:00
Damien Elmes
ed32a66a6b
Merge pull request #870 from Arthur-Milchior/trim_start_field_name
...
Trim the start of field name if it is #, /, ^ or a whitespace
2020-12-28 13:06:57 +10:00
Arthur Milchior
98d0136921
Trim the start of field name if it is #, /, ^ or a whitespace
...
I actually need to trim whitespace again to deal with a field name of the form "# foo"
2020-12-28 03:32:05 +01:00
Damien Elmes
2074bb03b6
update prost to new 0.7 release+auto stage changes
...
Allows us to drop slow git repo.
2020-12-28 10:12:35 +10:00
RumovZ
54964c5fa6
Don't escape isolated -
2020-12-22 11:52:17 +01:00
RumovZ
08c77107a0
Fix format and tests
2020-12-22 11:32:53 +01:00
RumovZ
b7d49d26d2
Expose search writer
2020-12-22 11:06:55 +01:00
RumovZ
37c4ac6524
Add search writer
2020-12-22 11:04:38 +01:00
Damien Elmes
8ebd2073a8
fix sync indicator turning blue after startup sync
...
https://forums.ankiweb.net/t/why-is-my-sync-button-blue/2078/26?u=dae
2020-12-22 10:46:50 +10:00
Damien Elmes
004078e59e
don't pass BUILDINFO into build script
...
It was causing the build script to be recompiled each time a commit was
made, even though buildinfo.txt was not changing.
2020-12-21 16:04:29 +10:00
Damien Elmes
2f4ebe11e5
add some code editing/completion docs
2020-12-16 14:16:08 +10:00
Damien Elmes
94ff0f53b1
fix reposition not being applied in browser sort order
...
https://forums.ankiweb.net/t/reposition-function-not-working/5817
Also changed id->cid in the non-sorting case, as otherwise when
using all_searched_cards() on a sorted list, the results will be wrong.
2020-12-16 10:58:46 +10:00
Damien Elmes
7ebedb26c9
Merge pull request #848 from cecini/rslibdep
...
Update Rust deps, and nom to v6
2020-12-15 20:04:02 +10:00
cecini
77a94c8a45
Update rslib dep nom
2020-12-15 08:19:52 +00:00
abdo
45d07275e5
Fix duplicate check not decoding entities
...
This is a regression introduced in 35bfd20240
See https://forums.ankiweb.net/t/bug-duplicates-not-detecting-on-paste/5753
2020-12-14 15:13:00 +03:00
Damien Elmes
3973266596
plural rules and decimal separator should use bundle's language
...
Instead of providing the list of languages in preferred order, when
creating a bundle we need to specify the bundle language as the first
language, so that the correct plural rules are used. Fluent's docs
are misleading here; I will submit a PR to fix them.
The old behaviour caused:
https://forums.ankiweb.net/t/bug-in-review-intervals-for-some-languages-in-number-of-cards/5744
2020-12-14 14:23:49 +10:00
Damien Elmes
f7b87bb716
minor doc updates
2020-12-11 22:37:12 +10:00
Damien Elmes
ae742417a1
fix filtered decks not honoring sort order
...
https://forums.ankiweb.net/t/2-1-36-filtered-decks-bug/5649/
2020-12-09 22:50:49 +10:00
Damien Elmes
15f697aa30
bump rust deps
2020-12-09 15:34:43 +10:00
Damien Elmes
46bd8fb341
update rules_rust for separate compile_data arg
2020-12-01 16:48:45 +10:00
Damien Elmes
1315d8b3c1
update Rust deps incl. Pyo3
...
This includes the refcount bug fix from pyo3 0.12.4
2020-12-01 16:48:45 +10:00
Damien Elmes
3d0b4b4446
deck renaming tweaks
...
- normalize name prior to creating parents
- always mark modified
https://github.com/ankitects/anki/pull/831#issuecomment-730064858
2020-11-30 10:09:23 +10:00
Damien Elmes
00f827f976
fix duplicate search not checking first field
...
Thanks to abdo for the initial solution. Closes #838
2020-11-30 09:27:10 +10:00
RumovZ
6c3c617b64
Comment fix
2020-11-27 22:12:36 +01:00
RumovZ
59bbbd53b8
Revert implementation of r: prefix
2020-11-27 22:10:37 +01:00
Damien Elmes
775dae874d
fix new Clippy lints
2020-11-25 09:12:19 +10:00
Damien Elmes
29b3ee13e8
fix clippy lints
2020-11-24 20:13:05 +10:00
Damien Elmes
dc810c7339
manual tag on rslib was preventing clippy lints
2020-11-24 20:10:16 +10:00
Damien Elmes
4c7c78a2f1
fix compilation of rslib outside Bazel
...
fixes code completion
2020-11-24 18:51:19 +10:00
Damien Elmes
2f9ddadf2c
switch to workspace for Rust code
2020-11-24 18:41:03 +10:00
RumovZ
2cf97dc554
Add tests for conversion functions in text.rs
2020-11-20 09:45:53 +01:00
RumovZ
ab2cf9f457
Replace text.rs/text_to_re with text.rs/to_re
2020-11-20 09:23:25 +01:00
Damien Elmes
4043bd90bb
Merge pull request #823 from RumovZ/rework-search-parser
...
Rework search parser
2020-11-20 16:22:12 +10:00
Damien Elmes
717969862b
mark created deck parents as modified
...
Thanks to cecini for the original report. Closes #831 :
https://github.com/ankitects/anki/pull/831
2020-11-19 08:48:43 +10:00
RumovZ
a6fe08f662
Revert changes to normalisation handling
...
Handle norm calls individually in write_search_node_to_sql again.
2020-11-18 23:46:27 +01:00
RumovZ
6290e09b89
Implement the prefix r: to search for raw input
2020-11-18 22:26:51 +01:00
RumovZ
f05e70a03e
Merge branch 'master' into rework-search-parser
...
Conflicts:
rslib/src/search/sqlwriter.rs
2020-11-18 09:04:04 +01:00
Damien Elmes
2f1d5cd38b
move ftl into top level ftl/ folder; make it source of truth for aqt
...
This avoids the need to modify the external repo before new strings
can be used in aqt.
2020-11-18 16:20:58 +10:00
Damien Elmes
d1a23fd65a
fix browser updateTitle()
2020-11-18 13:40:21 +10:00
Damien Elmes
7e655614b2
fix remaining _() references; remove unused imports
2020-11-18 12:43:46 +10:00
RumovZ
add3fea6c3
Make - escapable
...
Treat unescaped - as before but make it escapable with \ to distinguish
the literal from the negator.
2020-11-17 18:38:27 +01:00
RumovZ
96845421d8
Fix RE in to_custom_re of text.rs
...
Match every single (potentially escaped) character of the string, so
they can be escaped properly.
2020-11-17 15:39:54 +01:00
Damien Elmes
dac8daf113
begin plural string migration
2020-11-17 23:29:08 +10:00
RumovZ
64bf14f1e9
Split unescaping between parser and writer
...
* Unescape wildcards in writer instead of parser.
* Move text conversion functions to text.rs.
* Implicitly norm when converting text.
* Revert to using collection when comparing tags but add escape support.
2020-11-17 12:49:37 +01:00
Damien Elmes
1781e83252
merge pylib references
2020-11-17 19:23:06 +10:00
Damien Elmes
066b1498ae
merge bulk of qt/ - designer files still to do
2020-11-17 17:42:43 +10:00
abdo
35bfd20240
Make dupe search operate on non-stripped text
...
See https://github.com/ankitects/anki/pull/822/
2020-11-16 04:01:04 +03:00
RumovZ
c4bea9e3c0
Use enforced re to parse deck
...
Fix write_deck not recognising escaped deck name separators:
\:\: -> ::
2020-11-15 21:32:36 +01:00
RumovZ
065d9e939b
Annotate RegEx for invalid-escape check
2020-11-15 14:22:16 +01:00
RumovZ
e1ddc3d63a
Extend tests for new search parsing
...
(Also fix indentation)
2020-11-15 12:00:20 +01:00
RumovZ
6d4d1369d4
Fix escape check for escaped backslash
2020-11-15 11:57:11 +01:00
RumovZ
2e54817870
Move whitespace check for tags from to sqlwriter
...
Instead of not parsing a tag containing whitespace, check for spaces
when writing sql and if there are any, explicitly match nothing.
2020-11-15 11:54:21 +01:00
RumovZ
022efd5956
Always use regex for tag search
...
Don't distinguish between the glob and no-glob cases when comparing
tags but always use regexp. Thus, avoid problems with SQL wildcards in
registered tags.
2020-11-15 09:52:00 +01:00
Damien Elmes
fd4c1edc7f
add native-tls in preparation for Linux-only ring
2020-11-15 14:02:53 +10:00
RumovZ
d65b1f96f7
Fix tests for new search parsing (and reformat)
2020-11-14 19:13:09 +01:00
RumovZ
59f0010783
Fix whitespace in write_tag and parser/whitespac0
2020-11-14 19:10:56 +01:00
RumovZ
baf3dd9dde
For deck searches, unescape quotes only
...
For now, revert to the old handling of deck names using text_to_re from
text.rs and have parser.rs only unescape quotes.
2020-11-14 19:06:37 +01:00
RumovZ
c27175238c
Fix 'escaped' parser for empty string
...
Fix a bug where 'escaped' parsers (nom) accepted the empty
string by wrapping them in 'verify' parsers.
2020-11-14 18:28:24 +01:00
RumovZ
e09486d088
Fix bugs and inconsistencies in the search parser
2020-11-12 17:27:50 +01:00
Damien Elmes
a4af59fc4d
format_fix -> format; rename svelte-check for consistency
2020-11-12 20:19:32 +10:00
Damien Elmes
f83f0f08e2
drop El Capitan support
2020-11-12 20:03:41 +10:00
Damien Elmes
5ab4cbfd63
prep for i18n updates
...
Update scripts will be split into separate repo
2020-11-11 16:18:28 +10:00
Damien Elmes
8147c9996a
Merge pull request #793 from nwwt/object-audio-tags-support
...
Audio & object tag support
2020-11-11 10:33:31 +10:00
Andreas Reis
81d6d21ae3
cleanup / renames
...
・ soundRegexps → sound_regexps
・ htmlRegexps → html_media_regexps
・ HTML_TAGS → HTML_MEDIA_TAGS
・ escapeImages → escape_media_filenames + alias
・ strip_html_preserving_image_filenames → strip_html_preserving_media_filenames
2020-11-10 14:53:04 +01:00
Damien Elmes
434fdae4f0
Merge pull request #805 from cecini/duecounts
...
align rslib get_subnode impl with anki pythonapi find_deck_in_tree
2020-11-06 10:57:49 +10:00
Damien Elmes
aaa950f66c
handle notes with invalid utf8
2020-11-06 10:21:51 +10:00
Damien Elmes
e049062147
fix missing buildinfo on Windows
2020-11-05 11:21:27 +10:00
Damien Elmes
f738053c35
fixes for consuming rust lib from external repo
2020-11-04 19:20:49 +10:00
Damien Elmes
f24d80bac5
update to latest fluent libs, and integrate maximum digit handling
...
We now limit number of digits in our formatter, instead of relying
on an upstream patch.
2020-11-03 14:10:45 +10:00
Damien Elmes
a001029961
add shallow_since to a bunch of git deps
2020-11-03 11:42:11 +10:00
Damien Elmes
6cde50e475
ues native roots with rustls
2020-11-03 10:42:20 +10:00
Damien Elmes
c6e6c8a54d
update env_logger, and minor dep updates
2020-11-03 09:04:57 +10:00
Damien Elmes
c62e2e1e58
reqwest was missing default-features = false
...
Still needed until we fix OpenSSL compilation on Linux
2020-11-02 21:53:24 +10:00
Damien Elmes
f620bfc3bf
update rusqlite and pin-project
...
Thanks to Alan for the heads up
2020-11-02 18:26:19 +10:00
Damien Elmes
db0e0e78f8
update cargo deps; add script to copy them from rslib/
2020-11-02 18:17:26 +10:00
Damien Elmes
7c27c4b9a0
move backend.proto into rslib/
2020-11-02 16:28:31 +10:00
Damien Elmes
3632c22feb
clippy lint
2020-11-01 16:19:08 +10:00
Damien Elmes
cfbbb69648
trailing newline .ftl check can happen at build time
...
Removes the need to build ripgrep for CI
2020-11-01 14:59:45 +10:00
Damien Elmes
f9171eb3d3
remove old makefiles
2020-11-01 14:41:01 +10:00
Damien Elmes
ce3b08ac58
initial Bazel conversion
...
Running and testing should be working on the three platforms, but
there's still a fair bit that needs to be done:
- Wheel building + testing in a venv still needs to be implemented.
- Python requirements still need to be compiled with piptool and pinned;
need to compile on all platforms then merge
- Cargo deps in cargo/ and rslib/ need to be cleaned up, and ideally
unified into one place
- Currently using rustls to work around openssl compilation issues
on Linux, but this will break corporate proxies with custom SSL
authorities; need to conditionally use openssl or use
https://github.com/seanmonstar/reqwest/pull/1058
- Makefiles and docs still need cleaning up
- It may make sense to reparent ts/* to the top level, as we don't
nest the other modules under a specific language.
- rspy and pylib must always be updated in lock-step, so merging
rspy into pylib as a private module would simplify things.
- Merging desktop-ftl and mobile-ftl into the core ftl would make
managing and updating translations easier.
- Obsolete scripts need removing.
- And probably more.
2020-11-01 14:26:58 +10:00
cecini
e12c09bd11
align rslib get_subnode impl with anki pythonapi find_deck_in_tree, fix nestdeck due counts issue
2020-10-29 23:53:26 +08:00
Andreas Reis
c77ac81e9d
Add audio & object tags to media check
...
Makes the media check recognize files in <audio> and <object> tags as used.
They've been observed/supported by the WebView (checked: Anki, AnkiDroid) since just about forever already and are extremely useful if one knows a thing about web dev.
2020-10-25 13:09:57 +01:00
abdo
29d17bf608
Ensure non-empty names
...
https://github.com/ankitects/anki/pull/801/
2020-10-22 16:11:06 +03:00
abdo
69da22a2b9
Strip double quotes from names
...
Strip double quotes from all kinds of names
https://github.com/ankitects/anki/pull/798
2020-10-21 21:48:49 +03:00
Damien Elmes
791894d2d0
fix new clippy lints
2020-10-09 21:35:53 +10:00
Damien Elmes
d3de0bbaff
reindex when checking database
...
Came across a user with a corrupt index:
sqlite> pragma integrity_check;
integrity_check = wrong # of entries in index ix_revlog_cid
integrity_check = wrong # of entries in index ix_cards_sched
This is not picked up by a quick check, and a vacuum does not
fix it, but a reindex does.
AnkiWeb currently performs a full check when a file is uploaded
to it, so this was leading to "corrupt" to show up when syncing
the collection, with a local DB check not reporting/fixing the issue.
2020-10-05 17:40:43 +10:00
Damien Elmes
2ed1507162
bump version
2020-10-02 10:22:21 +10:00
Damien Elmes
61bbe6a604
fix * handling in unqualifed text as well
...
https://forums.ankiweb.net/t/anki-2-1-desktop-searching-with-only-when-limited-to-a-field/3789/4
2020-09-29 21:18:19 +10:00
Damien Elmes
2e7c71b415
fix escaping of * in field search
...
mentioned in
https://github.com/ankitects/anki/pull/769
2020-09-27 16:04:08 +10:00
Damien Elmes
1a619073d7
bump version
2020-09-24 10:52:24 +10:00
Damien Elmes
b39612eb33
rename downgrade method for clarity
2020-09-22 15:53:26 +10:00
Damien Elmes
ea7b8c5e49
update schema to fix default initial ease in deck configs
...
Closes #766
- changes the on-disk representation from % to a multiplier,
eg 250 -> 2.5, as this is consistent with the other options
- resets deck configs at or below 1.3 to 2.5
- for any cards that were using a reset deck config, reset their
current factor if it's at or below 2.0x. The cutoff is arbitrary,
and just intended to make sure we catch cards the user has rated
Easy on multiple times. The existing due dates are left alone.
2020-09-22 08:16:39 +10:00
Damien Elmes
4d66bafc51
stop is:due gathering learning cards that are not due yet
...
https://forums.ankiweb.net/t/how-to-avoid-rebuilding-filtered-decks-to-skip-learning-cards-steps/3551/
2020-09-21 11:41:54 +10:00
Damien Elmes
2a5ebad11f
fix incorrect SQL in previous change
2020-09-19 12:27:00 +10:00
Damien Elmes
35470fdcf3
congrats_info() failed if learning card had negative due
...
https://forums.ankiweb.net/t/integralvalueoutofrange-for-filtered-deck/3353
2020-09-18 20:14:35 +10:00
Damien Elmes
717ea6db3d
sched_timing_today() needs a default rollover hour
...
When unset it was reverting to the V1 code.
https://forums.ankiweb.net/t/daily-counts-are-reset-on-sync/3441/16
2020-09-18 19:13:47 +10:00
Damien Elmes
779a8930e7
check original due in card stats
...
https://forums.ankiweb.net/t/how-come-some-of-my-cards-are-showing-retrospective-due-dates/3434/6
2020-09-17 14:36:18 +10:00
Aleksa Sarai
21769bfa68
rust: switch to stable compilers
...
The only dependency which required nightly compilers was pyo3, which
supports stable Rust (1.39.0 and later) since version 0.11.0. Supporting
stable Rust makes it easier to package Anki for distributions. No other
code changes were required.
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2020-09-05 19:39:51 +10:00
Aleksa Sarai
da040372da
rslib: disable bzip2 feature
...
We can't link against libzip2.so.1 when building manylinux wheels, but
the only dependency which required this was "zip" and we don't appear to
make use of bzip2 in Anki.
This fixes the following "make build" error on Linux:
x maturin failed
Caused by: Failed to ensure manylinux compliance
Caused by: Your library is not manylinux compliant because it links the following forbidden libraries: ["libbz2.so.1"]
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2020-09-05 19:39:11 +10:00
Aleksa Sarai
96da137314
rs: remove most &mut references in BackendService
...
The previous implementation had some slightly questionable memory safety
properties (older versions of PyO3 didn't uphold the Rust aliasing rules
and would thus create multiple &mut references to #[pyclass] objects).
This explains why Backend has internal Mutex<T>s even though all of its
methods took &mut self.
The solution is to simply make all methods take &self, which luckily
doesn't pose too make issues -- most of the code inside Backend already
has sufficient locking. The only two things which needed to be
explicitly handled where:
1. "self.runtime" which was fairly easy to handle. All usages of
the Runtime only require an immutable reference to create a new
Handle, so we could switch to OnceCell which provides
lazy-initialisation semantics without needing a more heavy-handed
Mutex<tokio::runtime::Handle>.
2. "self.sync_abort" was simply wrapped in a Mutex<>, though some of the
odd semantics of sync_abort (not being able to handle multiple
processes synchronising at the same time) become pretty obvious with
this change (for now we just log a warning in that case). In
addition, switch to an RAII-style guard to make sure we don't forget
to clear the abort_handle.
As a result, we now no longer break Rust's aliasing rules and we can
build with newer versions of PyO3 which have runtime checks for these
things (and build on stable Rust).
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2020-09-05 19:37:59 +10:00
Aleksa Sarai
1f95cb3139
rslib: auto-format protobuf code
...
prost-build doesn't generate rustfmt-safe code, so we had to add it to
the ignore list for rustfmt on "make check". However, the ignore list
isn't supported by stable rustfmt, so we have to work around this some
other way -- in this case, just do "rustfmt" on the generated file in
"build.rs" (this way, formatting errors in checked-in source code are
still caught but generated code doesn't cause spurrious errors).
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2020-09-04 16:30:06 +10:00
Damien Elmes
cce0ee2b03
handle quoted html chars in media check
...
https://forums.ankiweb.net/t/unable-to-play-longer-audio-on-cards/1313/30
2020-09-04 09:36:38 +10:00
Damien Elmes
f32d773e25
set_deck()
2020-09-03 17:42:46 +10:00
Damien Elmes
f7d4bf8489
support did:[deck id] search
2020-09-03 16:43:22 +10:00
Damien Elmes
32759a55e4
log 0 day interval as 1 day
...
Allows distinguishing it from resetting to new, and is treated as
a one day delay when answering anyway.
2020-09-03 16:00:06 +10:00
Damien Elmes
7c169daa95
move card sorting and resetting to backend
2020-09-03 15:54:15 +10:00
Damien Elmes
72142d51c4
set local offset when saving preferences
2020-09-03 12:43:18 +10:00
Damien Elmes
366c5c4774
log manual reschedule, but ignore the log entry in the stats
2020-09-02 17:56:23 +10:00
Damien Elmes
31b7d7d645
move reschedCards() to backend
2020-09-02 17:56:23 +10:00
Damien Elmes
396081d329
move filtered deck empty/fill to backend
...
emptying of individual card ids still to be done
2020-09-02 17:56:23 +10:00
Damien Elmes
7f42500e53
rename some card+note fields in backend
2020-09-01 10:24:38 +10:00
Damien Elmes
9f51347e1e
move bury/suspend into backend
2020-09-01 10:24:38 +10:00
Damien Elmes
988b3c00c1
move unbury/unsuspend routines into backend
2020-09-01 10:24:38 +10:00
Damien Elmes
4894025cfc
add separate sched/user bury searches, and fix bury enums
2020-09-01 10:24:38 +10:00
Damien Elmes
2a6206be91
handle null return from sum() in other columns
2020-09-01 10:24:38 +10:00
Damien Elmes
999b659c3a
reimplement congrats screen in Rust+Typescript
2020-09-01 10:24:38 +10:00
Damien Elmes
f3c6d565b0
bump version
2020-08-31 11:07:54 +10:00
Damien Elmes
55ae49e251
fix nonbreaking spaces breaking media
...
https://forums.ankiweb.net/t/unable-to-play-longer-audio-on-cards/1313
2020-08-30 11:23:12 +10:00
Soren Bjornstad
0614642052
fix unanchored regex in bulk tag add routine
...
Previously, it was not possible to add a substring of an existing tag.
For example, with the tag "foobar", you could not add the tag "foo",
"bar" or "oob".
Because the match was unanchored, the regex checking whether the tag
already existed determined that the tag was present when it was not.
2020-08-28 16:21:23 -05:00
Damien Elmes
7cfeb6cbb3
check if we need to unbury at the start of the sync process
...
https://forums.ankiweb.net/t/bug-buried-cards-in-filtered-decks-not-being-unburied-next-day/2541/24
2020-08-28 21:09:07 +10:00
Damien Elmes
b9f6bde2dc
catch leading/trailing boolean operators
...
https://forums.ankiweb.net/t/is-it-only-me-anki-giving-corrupt-collection-error/2424/20
2020-08-27 09:59:29 +10:00
Damien Elmes
41a47fcf01
fix some clippy lints
2020-08-26 19:02:56 +10:00
Damien Elmes
ed1af61fa6
use commit hash in reqwests dependency
2020-08-26 18:50:25 +10:00
Damien Elmes
fb4105013f
add escape hatch for very slow connections
2020-08-26 18:44:20 +10:00
Damien Elmes
8c7c2eeda3
specify I/O timeout
...
We need to be a bit conservative here due to buffer bloat - in the
upload case on a slow link, it can appear that no I/O is happening
when a buffer is draining.
2020-08-26 18:30:51 +10:00
Damien Elmes
2e923b0990
vendor reqwest for now, to support read/write timeouts
...
https://github.com/seanmonstar/reqwest/issues/870
adding back now that fix has been applied to a fork of tokio-io-timeout
2020-08-26 13:24:51 +10:00
Damien Elmes
2f6d816cdc
bump version
2020-08-26 08:05:45 +10:00
Damien Elmes
a6f5d48cca
Revert "vendor reqwest for now, to support read/write timeouts"
...
This reverts commit b3edeaac86 .
The separate read and write timeouts were causing syncs to fail - a
long full upload would time out due to no read activity for example.
Reverting until a better fix can be put in place.
2020-08-25 13:28:54 +10:00
Damien Elmes
58c8609332
bump version
2020-08-24 11:28:22 +10:00
Damien Elmes
3b8c7f22d2
don't crash when upgrading collection with ntid of 0
2020-08-23 14:14:44 +10:00
Damien Elmes
8c558e4e5d
normalize field before checking duplicates
...
https://forums.ankiweb.net/t/unicode-normalisation/2531
2020-08-23 12:09:55 +10:00
Damien Elmes
e281d8947d
ensure we don't crash on a zero field notetype
2020-08-23 12:09:36 +10:00
Damien Elmes
db92548987
fix empty cards not ignoring <br>
...
https://forums.ankiweb.net/t/bug-report-empty-cards-are-not-recognized/2555
2020-08-23 11:44:49 +10:00
Damien Elmes
3a2031272b
catch timeout error
2020-08-21 19:03:23 +10:00
Damien Elmes
b3edeaac86
vendor reqwest for now, to support read/write timeouts
...
https://github.com/seanmonstar/reqwest/issues/870
2020-08-21 18:50:00 +10:00
Damien Elmes
3421ddf6e5
average ease + add % to ease ticks
2020-08-21 13:00:16 +10:00
ANH
233e6abc55
add custom-study-must-rename-deck to Fluent
2020-08-19 18:27:14 +03:00
Damien Elmes
26e69d5070
ensure tag replacements fully match
...
https://anki.tenderapp.com/discussions/private/5180-anki-desktop-bug-removing-a-tag-removes-all-substrings
2020-08-19 15:35:20 +10:00
Damien Elmes
cb68958b59
strip nuls from tags as well
...
https://forums.ankiweb.net/t/unable-to-sync-between-macbook-and-my-iphone/2405
2020-08-19 15:34:21 +10:00
Damien Elmes
724005386c
catch attempt to update missing note
...
https://forums.ankiweb.net/t/bug-report-editor-updating-non-existing-card/2117/4?u=dae
2020-08-17 19:44:27 +10:00
Damien Elmes
2e7ecfb1d2
allow setting sort field before add
2020-08-17 19:44:09 +10:00
Damien Elmes
cb821a9e3c
fix globs not working in bulk tag add/remove
2020-08-17 18:14:00 +10:00
Damien Elmes
692164df7c
journal mode was not being set on media db
2020-08-17 12:30:14 +10:00
Damien Elmes
54bb782809
handle <%foo%> inside {{#conditional}}
...
https://forums.ankiweb.net/t/the-latest-version-of-ios-cannot-display-the-template-normally/2142
2020-08-12 19:28:26 +10:00
Damien Elmes
d0d2ba15e2
generate extra templates when recovering notetype
2020-08-10 13:42:37 +10:00
Damien Elmes
a4c8825aeb
show ordinal if card template missing
2020-08-10 13:41:22 +10:00
Damien Elmes
ea2c5c6920
deauth -> log out
2020-08-09 14:44:03 +10:00
Damien Elmes
4629dd38fb
bump version
2020-08-09 13:44:59 +10:00
Damien Elmes
ffd1638400
fix assertion failure when recovering notetype
...
Notes need to have their notetype ID updated to reflect the
newly created notetype.
https://forums.ankiweb.net/t/anki-crashes-on-sync-study-export/1978
2020-08-08 12:26:00 +10:00
Damien Elmes
bdf6e2b87d
handle negative review times in sync
2020-08-07 15:02:03 +10:00
Damien Elmes
60730af9f4
fix negative review times in DB check
2020-08-07 14:37:44 +10:00
Damien Elmes
1436278f2c
clarify 'add mobile class'
2020-08-07 13:24:04 +10:00
Damien Elmes
c03d3f6c7f
add some extra help to the json decode error
2020-08-07 13:13:11 +10:00
Damien Elmes
8fff6092a9
"average over period"
2020-08-05 16:06:24 +10:00
Damien Elmes
a93e180d3d
fix unterminated section
2020-08-04 16:29:22 +10:00
Damien Elmes
55af7e81e9
formatting and new strings in scheduling.ftl
2020-08-04 16:19:49 +10:00
Damien Elmes
f332ff0c80
added graph table
2020-08-04 16:01:11 +10:00
Damien Elmes
a59270f6f0
fix plural
2020-08-04 15:28:49 +10:00
Damien Elmes
56b59b24ab
add textual data to reviews graph
2020-08-04 14:28:46 +10:00
Damien Elmes
bbadbca157
add some extra graph strings
2020-08-04 12:01:31 +10:00
Damien Elmes
176ab312da
handle some instances of floats when an integer is expected during sync
2020-08-03 17:47:15 +10:00
Damien Elmes
99140fb189
fix conditional negation being lost on field rename
...
https://forums.ankiweb.net/t/anki-force-changes-all-to/1694
2020-08-02 10:09:24 +10:00
Damien Elmes
bd37a7e17e
fix moves into/out of a filtered deck not syncing
...
the mtime comparison should have only been done if the object in the
local collection was also pending
2020-07-31 15:39:30 +10:00
Damien Elmes
58d3127d3c
remove 'invert', as night mode is on when checkbox is on
2020-07-31 14:35:18 +10:00
Damien Elmes
b93b44a009
title case
2020-07-31 14:24:08 +10:00
Damien Elmes
9c2cb8bc2a
fix button display on Macs
2020-07-31 14:23:56 +10:00
Damien Elmes
b5c72ac201
Merge branch 'master' into master
2020-07-31 14:14:10 +10:00
Damien Elmes
1bb256483c
i18n some card template strings
...
https://forums.ankiweb.net/t/untranslated-strings/1623
2020-07-31 13:33:41 +10:00
Damien Elmes
47d3666ad0
fix hour graph not handling timezones west of UTC
...
https://forums.ankiweb.net/t/statistics-bugs-after-update-2-1-5-to-2-1-29/1620
2020-07-31 13:33:41 +10:00
Damien Elmes
c5f7a3aa21
tweak card template message
...
also shown when importing an invalid file
https://anki.tenderapp.com/discussions/private/4937-importing-decks
2020-07-31 13:33:41 +10:00
ANH
2a5131a5d3
use 'Preview Settings' as a label for the new options button
2020-07-30 18:04:50 +03:00
ANH
393403ffbf
add night mode and mobile class toggles in card layout screen
2020-07-30 15:39:02 +03:00
Damien Elmes
a93145c4c7
handle preview repeat in deck list
2020-07-30 09:11:13 +10:00
Damien Elmes
3da7884e19
reject double comma in id list
...
https://forums.ankiweb.net/t/anki-2-1-29-and-below-2-small-bugs/1496
2020-07-29 13:05:34 +10:00
Damien Elmes
f4bd143050
handle multiple clozes in cloze-only filter
...
https://forums.ankiweb.net/t/built-in-tts-not-reading-multiple-clozes/1516
2020-07-29 12:54:29 +10:00
Damien Elmes
55891fc8f7
clearer message when template error is preventing save
2020-07-29 12:53:03 +10:00
Damien Elmes
d3653ab6d5
bump version
2020-07-28 12:59:56 +10:00
Damien Elmes
3099edf8ee
show card stats in reverse order like older Anki versions
2020-07-28 09:49:27 +10:00
Damien Elmes
8f470ce23d
fix note/card ids being flipped in card stats
2020-07-28 09:49:11 +10:00
Damien Elmes
d460549b8f
ask user to check db when graphs fail to load
2020-07-24 09:56:28 +10:00
Damien Elmes
9ec58c10ec
strip unwanted control characters when writing fields
...
closes #661
2020-07-24 09:18:05 +10:00
Damien Elmes
684f63b78e
clarify comment
2020-07-24 09:01:14 +10:00
Damien Elmes
67845fa401
use short form for time units in graph axis
2020-07-22 12:59:56 +10:00
Damien Elmes
7e78d12b99
bump version
2020-07-21 15:54:14 +10:00
Damien Elmes
61f0c3eec0
add cloze-only filter
...
https://anki.tenderapp.com/discussions/ankidesktop/42383-two-feature-suggestions
2020-07-21 12:59:28 +10:00
Damien Elmes
ce2c553840
i18n some sync errors
2020-07-16 13:55:59 +10:00
Damien Elmes
e471497bd2
add platform version back into sync metadata
2020-07-16 10:12:41 +10:00
Damien Elmes
56833f0ac7
panic fix was merged into hyper 0.13.7
2020-07-16 09:09:13 +10:00
Damien Elmes
22a87a4f3b
vendor coarsetime so we can get the use after free fix
2020-07-13 13:34:37 +10:00
Damien Elmes
bbc75cdf5d
update rslib/rspy deps
2020-07-12 11:38:25 +10:00
Damien Elmes
d35bc85ead
is:review should include relearning cards
...
https://forums.ankiweb.net/t/anki-2-1-28-beta/629/36
This issue appears to have existed since the V2 scheduler was
introduced - the old Python search code was ignoring Relearn as well.
2020-07-09 11:07:50 +10:00
Damien Elmes
c22040f33d
drop 1 month period
2020-07-06 19:16:03 +10:00
Damien Elmes
214ba8ead9
update title
2020-07-06 19:16:03 +10:00
Damien Elmes
097d91d143
add 'no data' overlay when graph empty
2020-07-06 19:16:03 +10:00
Damien Elmes
3a75161778
fix deck tree with a day delta, and support arbitrary timestamps
2020-07-06 19:16:03 +10:00
Damien Elmes
71dbbd9fa8
set schema on collection creation
2020-07-03 11:55:27 +10:00
Damien Elmes
9bb45673a8
show clearer error when media db locked
...
should not happen frequently during a sync, but may happen during
the initial change checking stage
https://forums.ankiweb.net/t/error-when-adding-audio-file/495/2
2020-07-01 11:19:06 +10:00
Damien Elmes
f43aa54ed9
fix media db conflict aborting immediately instead of after 5s
...
https://forums.ankiweb.net/t/error-when-adding-audio-file/495/2
2020-07-01 11:17:33 +10:00
Damien Elmes
8cfafdbc32
supported edited:n
...
https://forums.ankiweb.net/t/feature-request-advanced-broswer-search-by-edited/268
2020-07-01 10:17:57 +10:00
Damien Elmes
33317d41b3
update edited/changed column labels
...
https://github.com/ankitects/anki/pull/674/files
2020-06-29 18:34:03 +10:00
Damien Elmes
06d9f64dea
lint fixes
2020-06-29 15:53:56 +10:00
Damien Elmes
24cf78b68b
group strings by graph
2020-06-29 15:48:01 +10:00
Damien Elmes
275817a558
add remaining tooltip i18n
2020-06-29 15:48:01 +10:00
Damien Elmes
a7ce130941
i18n some tooltips
2020-06-29 15:48:01 +10:00
Damien Elmes
35e706d53a
drop axis labels + add subtitles
...
This leaves more room for the graphs and avoids issues with large values
overlapping the labels. We can improve the subtitle wording to make
things clearer in the future, and the hover tooltips should also
clarify what the axes represent.
2020-06-29 15:48:01 +10:00
Damien Elmes
2994cadcb0
i18n some axis labels, and support vertical CJK text
2020-06-29 15:48:01 +10:00
Damien Elmes
042a9ff68b
i18n graph titles
2020-06-29 15:48:01 +10:00
Damien Elmes
1a16e2306f
i18n ranges
2020-06-29 15:48:01 +10:00
Damien Elmes
693fcfce7d
i18n card counts
2020-06-29 15:48:01 +10:00
Damien Elmes
cebf22d749
i18n today section
2020-06-29 15:48:01 +10:00
Damien Elmes
349eca843b
get i18n working in typescript
2020-06-29 15:48:01 +10:00
Damien Elmes
618fc65282
handle revlog entries with negative review times
2020-06-29 15:48:01 +10:00
Damien Elmes
4be8e7923a
fix partially quoted text not handling escaped quotes
...
https://forums.ankiweb.net/t/how-to-search-for-cards-containing-quotes/500/10
2020-06-29 15:48:01 +10:00
Damien Elmes
fefc6dbdc2
bump rust nightly version
2020-06-29 15:48:01 +10:00
Damien Elmes
0293f2220c
qt's js code now shares ts/node_modules; more graph work
2020-06-29 15:48:01 +10:00
Damien Elmes
4d88b6521d
cards added graph
2020-06-29 15:48:01 +10:00
Damien Elmes
1e9901e9bd
experiment with exposing raw card/revlog data to frontend
2020-06-29 15:48:00 +10:00
Damien Elmes
fd258d15c5
some initial work on updating the graphs
2020-06-29 15:48:00 +10:00
Damien Elmes
df8be64da3
protobuf package should be in PascalCase
2020-06-29 15:48:00 +10:00
Damien Elmes
61efce295e
fix v2 scheduler cutoff being used if previously activated
2020-06-23 12:46:40 +09:00
Damien Elmes
710e5ecce2
formatting fix
2020-06-22 11:58:31 +10:00
Damien Elmes
cec1fdece5
move revlog out of sync code, and add enums
...
and remove type=4, which does not appear to be used
2020-06-16 16:31:36 +10:00
Damien Elmes
f5694a7e4a
migrate card stats to backend
...
Currently this renders the HTML directly like the previous Python
implementation - doing it in JS would probably make more sense in the
future.
2020-06-15 17:22:16 +10:00
Damien Elmes
965fd848d1
on upgrade, mark decks modified that are renamed
2020-06-14 14:48:58 +10:00
Damien Elmes
07874f8328
handle db errors the same way as other backend requests
2020-06-12 20:39:02 +10:00
Damien Elmes
dc8297644b
pass db json back as bytes
2020-06-12 20:20:29 +10:00
Damien Elmes
1773c6eec9
don't exclude the default deck from the normal name list
...
https://forums.ankiweb.net/t/issue-backend-get-deck-names-doesnt-return-default-deck/52
2020-06-11 14:36:00 +10:00
Damien Elmes
4092da9dbe
use vendored hyper for panic fix
2020-06-11 13:30:35 +10:00
Damien Elmes
8f9d2f592e
extra strings for empty cards
2020-06-10 19:29:25 +10:00
Damien Elmes
5bd66d485f
add check database title
2020-06-10 08:44:57 +10:00
Damien Elmes
d5cd9af53b
fix review cards with high intervals not being reset properly
...
would lead to a "fixed .. with invalid card property" message that
didn't go away
2020-06-09 20:11:26 +10:00
Damien Elmes
a11d803030
switch default leech action to tag only
2020-06-09 12:03:47 +10:00
Damien Elmes
6d7be475e6
catch invalid regex in search
...
https://github.com/ankitects/anki/pull/652
2020-06-09 11:46:07 +10:00
Damien Elmes
c6e5dc0ef6
check full upload return text
2020-06-09 08:50:16 +10:00
Damien Elmes
6207b1012f
Revert "use trust-dns in reqwest"
...
This reverts commit f15abb5c58 .
trust-dns has introduced its own issues, such as when resolv.conf is
inaccessible, or contains hostnames with certain characters
2020-06-08 22:03:24 +10:00
Damien Elmes
75471224fa
add progress to db check
2020-06-08 21:07:36 +10:00
Damien Elmes
e74e5c604b
add daily count updating to backend
2020-06-05 19:49:53 +10:00
Damien Elmes
55f8b87548
support generating a due tree for a different date
2020-06-05 09:38:31 +10:00
Damien Elmes
c5e65d02e1
add note/card removal to backend
2020-06-04 18:21:04 +10:00
Damien Elmes
f15abb5c58
use trust-dns in reqwest
...
The default DNS resolution, if interrupted by an Abortable, will
cause a panic:
57ef271500/src/client/connect/dns.rs (L144)
2020-06-03 15:47:54 +10:00
Damien Elmes
cb7d78dde5
"Template" special field should have been called "Card"
2020-06-02 16:47:30 +10:00
Damien Elmes
c8b585b3e4
automatically abort the media sync on full sync
2020-06-02 16:22:53 +10:00
Damien Elmes
7dc8df748b
ensure sync indicator updates after download
2020-06-02 15:10:41 +10:00
Damien Elmes
7536a3b899
fix full download on Windows
2020-06-02 15:06:23 +10:00
Damien Elmes
ca704187c6
skip note update if unchanged
2020-06-02 13:32:36 +10:00
Damien Elmes
d7a2e78c0b
change sync label to indicate sync state
...
- blue for normal sync, red for full sync required
- refactor status fetching code so we don't hold a collection lock
during the network request, which slows things down
- fix sync spinner restarting when returning to deck list
2020-06-02 13:23:01 +10:00
Damien Elmes
42c34b60c0
use a shared async runtime instead of recreating each time
2020-06-02 09:35:27 +10:00
Damien Elmes
a3e5068952
add some syncing tests - please see alpha2 notes before syncing
2020-06-01 19:44:25 +10:00
Damien Elmes
c6712cbf2c
fix \n in buildhash
2020-06-01 19:38:45 +10:00
Damien Elmes
80210ab6bd
handle missing counts in sanity check
2020-06-01 19:38:41 +10:00
Damien Elmes
300769aac7
if both sides empty, allow either
2020-06-01 18:11:43 +10:00
Damien Elmes
2ca3108bee
don't put dyn=False in schema11 dconf's "other"
2020-06-01 18:11:40 +10:00
Damien Elmes
da2dc7bd8c
tell AnkiWeb to abort on interrupt
2020-06-01 13:57:10 +10:00
Damien Elmes
ad3082d1c8
handle aborting normal sync
...
- Use a separate abort handle, as the media sync is running
in the background and we need to be able to target them separately.
The current progress handling is going to need a rethink if we introduce
any other background tasks in the future.
- Roll back the transaction when interrupting.
2020-06-01 13:57:10 +10:00
Damien Elmes
da1e0527ca
report normal sync progress
...
Also:
- provide a way for the progress handler to skip the throttling so that
we can ensure progress is updated at the end of a stage
- show 'checking' at the end of full sync
2020-06-01 13:57:10 +10:00
Damien Elmes
1c52d11133
rework usn handling in sync
2020-06-01 13:57:10 +10:00
Damien Elmes
1303013ad6
add due counts to sanity check
2020-06-01 13:57:10 +10:00
Damien Elmes
0787381a99
login/full up/full down plugged in
2020-06-01 13:57:10 +10:00
Damien Elmes
aaed0464e5
rework progress handling
...
- client now polls status instead of backend pushing it
- supports multiple threads
- update throttling happens in one place
2020-06-01 13:57:10 +10:00
Damien Elmes
c4032c0176
another snapshot of sync work
...
progress handler is going to need to be reworked to function across
threads
2020-06-01 13:57:10 +10:00
Damien Elmes
b5284e8993
make sure we invalidate cache after direct update
2020-06-01 13:57:10 +10:00
Damien Elmes
2114fdf6f5
more syncing work
...
no checks yet
2020-06-01 13:57:10 +10:00
Damien Elmes
4d1e8d678d
full upload/download HTTP code
2020-06-01 13:57:10 +10:00
Damien Elmes
f17dec9f2a
start on HTTP client for syncing
2020-06-01 13:57:10 +10:00
Damien Elmes
91e3256e6a
move dupe check to backend
2020-05-24 19:48:56 +10:00
Damien Elmes
0606bee2c5
fix rebuilding being done unnecessarily
2020-05-24 18:41:25 +10:00
Damien Elmes
e9fea26d1c
use keyword args for calls with more than one argument
2020-05-24 09:12:47 +10:00
Damien Elmes
bbcc566e6d
migrate the remaining methods
2020-05-24 08:36:50 +10:00
Damien Elmes
93f18c14d4
migrate more scheduling/media/etc
...
almost there
2020-05-23 21:34:19 +10:00
Damien Elmes
8b93a0c19d
migrate notetypes, update GIL list
2020-05-23 20:43:55 +10:00
Damien Elmes
35489d5fa7
add some more newtypes to the RPC defs
2020-05-23 16:58:01 +10:00
Damien Elmes
8df2ab65fb
migrate cards and notes
2020-05-23 16:19:48 +10:00
Damien Elmes
32a071cf79
migrate decks and dconf methods
2020-05-23 15:09:16 +10:00
Damien Elmes
927ed25b02
more methods
2020-05-23 14:01:36 +10:00
Damien Elmes
d57ded706f
migrate more methods to service
2020-05-22 22:09:33 +10:00
Damien Elmes
36024ed086
start reworking protobuf handling
...
Will allow us to cut down on boilerplate by automatically generating
code from RPC service definitions
2020-05-22 20:56:15 +10:00
Damien Elmes
3f8a3afb78
fix extending limits in custom study
...
https://anki.tenderapp.com/discussions/beta-testing/1967-2126-189-g7384df8f-crash-at-note-types-fields-save
2020-05-20 14:13:40 +10:00
Damien Elmes
c78e8425aa
automatically omit notes or cards table when possible
2020-05-19 11:27:02 +10:00
Damien Elmes
5e1583df59
fix unit test bug triggered by low resolution win32 timer
...
We don't yet have a remove_note(), so just remove all cards for now.
2020-05-18 19:02:54 +10:00
Damien Elmes
facbe53649
fix cutoff adjustment test in other timezones
2020-05-18 14:08:02 +10:00
Damien Elmes
01ebe964e9
bytes->blob in sql
2020-05-18 13:36:45 +10:00
Damien Elmes
3e156fdb49
bump version
2020-05-18 12:50:20 +10:00
Damien Elmes
4438be2c8d
protobuf tidyups
2020-05-18 09:26:14 +10:00
Damien Elmes
e894125620
use empty buffer if the other map is empty in dconf
2020-05-18 08:12:27 +10:00
Damien Elmes
ef88cb59e6
fix syncing
2020-05-17 20:52:02 +10:00
Damien Elmes
e6379bc4d0
update current note type in backend
2020-05-17 20:01:16 +10:00
Damien Elmes
e230f360e9
ensure notetype name unique on add as well
2020-05-17 19:41:47 +10:00
Damien Elmes
b676522e5c
fix renaming corner cases and decks.update()
...
- .update() should update a single deck and preserve usn by default,
as that's what existing code expects
- decks are automatically renamed when they conflict with an existing
name
2020-05-17 19:07:15 +10:00
Damien Elmes
2c19e171ed
handle deletion of default deck in backend; use + instead of _
2020-05-17 15:22:19 +10:00
Damien Elmes
336349d8d1
update before_upload()
2020-05-17 14:13:21 +10:00
Damien Elmes
a682865169
move deck config to protobuf
2020-05-17 13:28:41 +10:00
Damien Elmes
e85911c4e4
add option to limit deck tree counts to a particular node
2020-05-17 08:38:49 +10:00
Damien Elmes
17efa85d75
update rusqlite
2020-05-16 19:49:08 +10:00
Damien Elmes
e36e23b563
when merging day# in deck, make sure to reset older values
2020-05-16 15:58:25 +10:00
Damien Elmes
2e5f745b85
use the latest day when converting from legacy deck
2020-05-16 14:58:14 +10:00
Damien Elmes
70afc782ca
add a unit test for deck counts
2020-05-16 14:07:48 +10:00
Damien Elmes
c60229779c
switch to new deck tree in deck browser
...
Saves us having to look up collapsed/filtered as we render, and gives
us type completion.
2020-05-16 10:52:14 +10:00
Damien Elmes
cbfc9d5a87
handle default deck and filtered deck suppression in the backend
2020-05-15 21:21:10 +10:00
Damien Elmes
dc6471ad40
fetch stock notetypes from backend
2020-05-15 17:08:24 +10:00
Damien Elmes
91e71ae044
show (Deck) when card hasn't been added
2020-05-15 15:01:28 +10:00
Damien Elmes
8dcb7fd2ba
check for empty cloze cards when rendering as well
2020-05-14 21:56:45 +10:00
Damien Elmes
6dd31341f8
add "fill empty" checkbox
2020-05-14 20:58:45 +10:00
Damien Elmes
4c52d41632
use group box instead of tabs in card layout screen
2020-05-14 17:26:40 +10:00
Damien Elmes
4a00ad075c
drop availOrds(), and use backend for getting cloze numbers
2020-05-14 12:14:00 +10:00
Damien Elmes
257e893d95
update the card layout screen
...
- changes are now committed in bulk when closing the dialog,
and can be canceled
- it's not necessary to save the note to the database to preview it
- duplicate fields are now shown as duplicates in the top list
- redraw preview more quickly
- use + instead of _ when deduplicating names, as the latter is a
glob character
2020-05-13 17:24:49 +10:00
Damien Elmes
4815010da0
don't hide static template text when card is empty
2020-05-13 11:17:44 +10:00
Damien Elmes
14c0a5891b
fetch template and note fields in backend during normal card render
...
Saves having to serialize the note fields and q/a templates, which
is particularly a win when rendering question/answer in the browse
screen.
Also some work towards being able to preview notes without having to
commit them to the database.
2020-05-13 10:38:49 +10:00
Damien Elmes
a95fbe73c3
handle decks set to random new order
...
It probably makes more sense to randomize on queue build in the future,
but for now this imitates the previous Anki behaviour.
2020-05-12 21:13:34 +10:00
Damien Elmes
9c3f982c3b
return resolved deck to facilitate random order mode
2020-05-12 21:13:34 +10:00
Damien Elmes
21ac2c14a7
handle scheduling preferences in the backend
2020-05-12 21:13:34 +10:00
Damien Elmes
2eaa759478
fetch timing_today() params in backend
2020-05-12 21:13:34 +10:00
Damien Elmes
1018204e4f
switch server back into a bool and rely on config
2020-05-12 21:13:34 +10:00
Damien Elmes
befa66fb27
fix default rollover
2020-05-12 21:13:34 +10:00
Damien Elmes
dc9200e639
add tests for the other checks, and fix new card due limiting
2020-05-12 21:13:34 +10:00
Damien Elmes
c77bc74a2b
rename SortMode arg to match enum
2020-05-12 21:13:34 +10:00
Damien Elmes
bdf5daa422
add tests for card fixes; implement deck recovery
2020-05-12 21:13:34 +10:00
Damien Elmes
c227298565
stop using memory for sqlite temp store
...
On large collections this can end up consuming hundreds of megabytes
of RAM on operations like a vacuum.
2020-05-12 21:13:34 +10:00
Damien Elmes
d7f9bccd1e
rewrite DB check
...
- notes with wrong field count are now recovered instead of
being deleted
- notes with missing note types are now recovered
- notes with missing cards are now recovered
- recover_missing_deck() still needs implementing
- checks required
2020-05-12 21:13:34 +10:00
Damien Elmes
b03dcd2643
fetch notes in nid order
...
May reduce the amount of seeking on conventional disks. Chunking and
fetching batches of notes at once would improve things further, at the
cost of more memory use.
2020-05-12 21:13:34 +10:00
Damien Elmes
667f9e6554
bulk tag add/remove/update; canonify on note save
...
also remove the tag list updated hook - we'll need a better solution in
the future than having the library code call back into the GUI code
2020-05-12 21:13:34 +10:00
Damien Elmes
5d493b6ab8
add the Extra field back to cloze deletions as "Back Extra"
...
Originally removed because some users were adding cloze deletions to
it, but removing it just replaced that problem with a new problem where
users add the field but don't add it to their card templates.
2020-05-12 21:13:34 +10:00
Damien Elmes
0a87b1ef2c
support disabling unicode normalization in notes
2020-05-12 21:13:34 +10:00
Damien Elmes
85528cabc5
use backend for genCards() and updateFieldCache()
2020-05-12 21:13:34 +10:00
Damien Elmes
8c04718541
update find&replace in browser
...
sadly the UI still stutters on large selections - the calls
to get the selected rows from Qt are really slow.
2020-05-12 21:13:34 +10:00
Damien Elmes
ad1c519d1c
move find&replace to backend
2020-05-12 21:13:34 +10:00
Damien Elmes
2e971da79e
properly handle negated conditionals outside of req generation
2020-05-12 21:13:34 +10:00
Damien Elmes
2d0a6283e4
add an index on notes(mid) so we can avoid the tablescan
2020-05-12 21:13:34 +10:00
Damien Elmes
3abd72564a
fix sort field check on save
2020-05-12 21:13:33 +10:00
Damien Elmes
e32be05451
catch attempts to overwrite notetype with older version
2020-05-12 21:13:33 +10:00
Damien Elmes
7ef72aba04
use the backend for the deck due tree
...
- approx 3x faster on a large test deck
- counts are no longer capped to 1000 in the tree
2020-05-12 21:13:33 +10:00
Damien Elmes
267be1b050
add missing decks in backend
...
- need to compare parents with unicode case folding
- duplicate check enforced by the DB
2020-05-12 21:13:33 +10:00
Damien Elmes
97e857a41c
add browserCollapsed as part of tree build
2020-05-12 21:13:33 +10:00
Damien Elmes
13d23cd24b
speed up browser load by rendering deck tree in Rust and skipping counts
2020-05-12 21:13:33 +10:00
Damien Elmes
611959e5a8
switch primary key to deck id
2020-05-12 21:13:33 +10:00
Damien Elmes
46e0469991
rework aux table sorting
...
Instead of inserting text into the aux table and sorting on the fly
(which does a binary sort), we insert the ids in unicase-sorted order,
and then sort based on the automatically assigned rowids - giving
us faster sorts, and proper unicase folding.
2020-05-12 21:13:33 +10:00
Damien Elmes
c727a9e3f1
fix case sensitivity of notetype/template searches
2020-05-12 21:13:33 +10:00
Damien Elmes
c9db36bc82
update searching code to use decks table
2020-05-12 21:13:33 +10:00
Damien Elmes
87551574c0
add partial index on odid, and search odid as well
...
the odid != 0 check in cards_for_deck.sql is necessary for sqlite
to be able to take advantage of the index
2020-05-12 21:13:33 +10:00
Damien Elmes
24ef0cc6f1
add separate decks table, and start on moving deck handling to Rust
...
The Python tests are passing, but there are still a number of issues
to work through, and the table/protobuf schema is not yet finalized.
2020-05-12 21:13:33 +10:00
Damien Elmes
cbfe20712e
add (currently disabled) check for missing/empty decks on card add
2020-05-12 21:13:33 +10:00
Damien Elmes
082f9c95fd
split decks into module
2020-05-12 21:13:33 +10:00
Damien Elmes
8481d224d6
remove notetype from cache when removing
2020-05-12 21:13:33 +10:00
Damien Elmes
2a17f99eaa
remove unused _updateRequired and associated code
2020-05-12 21:13:33 +10:00
Damien Elmes
22440f32d7
remove :{} and leading/trailing whitespace from field names on save
2020-05-12 21:13:33 +10:00
Damien Elmes
d1cc4684d2
hook the empty cards code up to the GUI
2020-05-12 21:13:33 +10:00
Damien Elmes
d812853656
sort empty cards by notetype name
2020-05-12 21:13:33 +10:00
Damien Elmes
ed4c75c6c1
don't include non-empty notes in the list
2020-05-12 21:13:33 +10:00
Damien Elmes
c989e23012
handle negative due numbers when gathering existing cards
2020-05-12 21:13:33 +10:00
Damien Elmes
21d7df9473
empty card handling
2020-05-12 21:13:33 +10:00
Damien Elmes
4edeca6ed9
fix use counts not including unused note types
2020-05-12 21:13:33 +10:00
Damien Elmes
4cc070a240
note type removal
2020-05-12 21:13:33 +10:00
Damien Elmes
7106af61ff
update template on field removals as well
2020-05-12 21:13:33 +10:00
Damien Elmes
3b07885911
handle changed sort field index
2020-05-12 21:13:33 +10:00
Damien Elmes
549f98340a
update template when fields renamed
2020-05-12 21:13:33 +10:00
Damien Elmes
8dad5cc3ab
switch to owned strings in ParsedTemplate
...
will make it easier to cache the parsed results in the future,
and handle field renames & other transformations
2020-05-12 21:13:33 +10:00
Damien Elmes
6578767c4e
only compare to previous note type if it exists
2020-05-12 21:13:33 +10:00
Damien Elmes
b7bfe57de1
adjust sort index on save
2020-05-12 21:13:33 +10:00
Damien Elmes
c8cbc13bba
start on exposing notes and individual note type methods
...
changes to note:
- add_note() now takes a provided deck id instead of looking it up
in the notetype
- note type use counts fetched using a single table scan
- make sure note type changes are persisted
- expose optionalness of ords in templates and fields json
2020-05-12 21:13:33 +10:00
Damien Elmes
f95fe72795
mod schema if field/templates changed
...
Instead of throwing an error if schema not marked as changed,
just mark it changed, as that way it can be included as part of
the same transaction.
2020-05-12 21:13:33 +10:00
Damien Elmes
eaecfca7d1
normal note types now generate a dummy card if required
...
In the cloze deletion case, we already created a dummy card 0 when
no cloze deletions were found. This change makes normal note types
behave the same way - if no cards would be generated, a dummy card
0 is added to allow the note to be added.
This also applies when modifying note types - it is now possible
to delete card templates even if some notes only use that template,
as a dummy card 0 will be generated for notes that end up with no
cards left.
2020-05-12 21:13:33 +10:00
Damien Elmes
db09122ec5
use default deck for new note types
2020-05-12 21:13:33 +10:00
Damien Elmes
9451d0e9ef
cloze generation
2020-05-12 21:13:33 +10:00
Damien Elmes
d810ba5db9
template changes and card generation
...
Cloze cards are not yet supported, missing decks are not handled,
and more testing is still required.
2020-05-12 21:13:33 +10:00
Damien Elmes
3af6905ad0
fix infinite loop on unclosed {{/<%
2020-05-12 21:13:33 +10:00
Damien Elmes
0c8763edf3
cache notetypes
2020-05-12 21:13:33 +10:00
Damien Elmes
7ff6226a0e
always fetch full notetype
2020-05-12 21:13:33 +10:00
Damien Elmes
d47e83c989
embed enum to avoid conflicts
2020-05-12 21:13:33 +10:00
Damien Elmes
6b8a45bcb6
more work towards note adding
...
Still a prototype at this stage - we'll likely want a caching layer
for note types, and I'm not sure of the merit of having fields in
a separate table, since they're almost always required.
2020-05-12 21:13:33 +10:00
Damien Elmes
da09c7781e
handle legacy syntax in parser instead of modifying original template
...
Simplifies things for the caller, and ensures legacy handling doesn't
get accidentally forgotten
2020-05-12 21:13:33 +10:00
Damien Elmes
4a2256aecb
the start of note adding, and note type changes
2020-05-12 21:13:33 +10:00
Damien Elmes
6e554e6585
add separate search_notes_only()
2020-05-12 21:13:33 +10:00
Damien Elmes
cbb76290c2
start work on field changes, and add search_cards to col
2020-05-12 21:13:33 +10:00
Damien Elmes
638e69af91
move note db code to storage
2020-05-12 21:13:33 +10:00
Damien Elmes
53fc3c2f9a
move latex header and styling into separate files
2020-05-12 21:13:33 +10:00
Damien Elmes
3807dcacd5
native struct for CardTemplate
2020-05-12 21:13:33 +10:00
Damien Elmes
91767fc87b
native struct for NoteField
...
ord is made optional so we can keep track of changes in the future
2020-05-12 21:13:33 +10:00
Damien Elmes
9c41210cf4
use native struct for NoteType
2020-05-12 21:13:33 +10:00
Damien Elmes
4566a35085
expose stock notetypes
2020-05-12 21:13:33 +10:00
Damien Elmes
65f12eeda2
add stock note types in backend
2020-05-12 21:13:33 +10:00
Damien Elmes
5e49ace907
add default note type translations to ftl
2020-05-12 21:13:33 +10:00
Damien Elmes
96300f5858
migrate the schema11 usages to new structs/sql queries
2020-05-12 21:13:33 +10:00
Damien Elmes
4b39a8b727
move schema11 note type code into separate file
2020-05-12 21:13:33 +10:00
Damien Elmes
475478cec5
split note types into separate tables
...
- store the config in protobuf instead of json
- still loading+saving in bulk for now
- code using the schema11 structs needs to be migrated
2020-05-12 21:13:33 +10:00
Damien Elmes
8a423e05fe
ignore empty sound tags
...
https://github.com/ankitects/anki/pull/612
2020-05-12 20:53:50 +10:00
evandrocoan
49bb585338
Also bump rslib version on make_check
...
f2b1796e22
2020-05-11 13:29:12 -03:00
Damien Elmes
f2b1796e22
update crate version
...
make check was missing this
2020-05-11 20:41:16 +10:00
Damien Elmes
36ac3244c2
fix a unit test
2020-05-08 17:27:41 +10:00
Damien Elmes
a1e7690f35
fix dupe search with included formatting
...
https://anki.tenderapp.com/discussions/ankidesktop/41286-2125-doesnt-show-duplicates
2020-05-08 15:26:45 +10:00
evandrocoan
d62787aa49
Fixed rspy check not being called
...
# Conflicts:
# Makefile
2020-05-01 22:51:17 -03:00
Damien Elmes
2c102f87c4
update rslib version
2020-05-02 10:46:58 +10:00
Damien Elmes
4c0d80ceae
tolerate decks with missing mtime exported by third party software
2020-05-02 10:18:08 +10:00
Damien Elmes
722df62452
fix some clippy lints
2020-05-02 08:55:27 +10:00
Damien Elmes
e2c57b54a2
reset due on load if outside i32 bounds
...
Some third party clients that create apkg files appear to be saving
a millisecond timestamp into this column. While this could also be
solved by increasing this field to a 64 bit number, some older clients
expect this column to be a 32 bit number.
2020-04-30 11:57:35 +10:00
Damien Elmes
f2876cbd42
preserve entities when stripping HTML for MathJax
...
https://anki.tenderapp.com/discussions/ankidesktop/40987-how-to-render-angled-brackets
2020-04-30 11:17:38 +10:00
Damien Elmes
65a9eaa418
expose clock hack via env var
...
closes #594
2020-04-30 09:33:02 +10:00
Damien Elmes
76d60430d9
report filename when unable to read data
2020-04-30 08:02:08 +10:00
Damien Elmes
07b9671012
don't throw an error when a file is greater than MAXPATH
...
https://anki.tenderapp.com/discussions/ankidesktop/40931-check-media-error
2020-04-30 08:01:45 +10:00
Damien Elmes
39070abb89
drop type answer requirement special case
...
While it makes no sense to have the typing box on the front without
another non-empty field, "the front of this card is empty" when
a typing box is on the template seems to be confusing some users, so
it is clearer to show them the box.
2020-04-29 21:29:16 +10:00
Damien Elmes
6d404f1999
AnkiDroid expects timer to be an integer
...
https://github.com/ankidroid/Anki-Android/issues/6089#issuecomment-621110598
2020-04-29 20:52:00 +10:00
evandrocoan
15deb17737
Added an warning that rslib/build.rs is automatically generated file
2020-04-29 01:21:49 -03:00
Damien Elmes
91248aa8cf
bump version
2020-04-28 08:57:56 +10:00
evandrocoan
e85c48298c
Fixed make clean rule not working on Windows
2020-04-26 03:02:02 -03:00
Damien Elmes
811bcda14c
support globbing chars inside word boundary search
2020-04-25 09:43:08 +10:00
Damien Elmes
2f8396a951
add w: shortcut for searching on word boundaries
2020-04-25 08:48:01 +10:00
Damien Elmes
93152043e1
report the missing filename in media check
...
https://anki.tenderapp.com/discussions/ankidesktop/40578-check-media-error
2020-04-17 17:17:42 +10:00
Damien Elmes
e051d8ab75
older clients require 'separate' on filtered decks
...
the deckconf['new']['separate' property is unused, but older code
assumes filtered['separate'] exists, even though it doesn't do anything
with it
https://anki.tenderapp.com/discussions/beta-testing/1868-anki-2124-beta#comment_48240796
2020-04-15 15:02:12 +10:00
Damien Elmes
f5f2782e3b
embed sort kind enum to avoid future namespace conflicts
2020-04-14 20:31:10 +10:00
Damien Elmes
351c7b6a82
fix dyn being serialized as bool
...
If you were running from git in the last ~30 hours, please load
your collection using the latest git, review one card, then force
a full upload to fix compatibility with other clients.
2020-04-10 18:07:59 +10:00
Damien Elmes
b7696e6381
merge the 12-14 upgrade code
2020-04-10 17:46:57 +10:00
Damien Elmes
9b66ecd12d
add socks support
2020-04-09 14:28:36 +10:00
Damien Elmes
76ecc9739e
update rusqlite
2020-04-09 12:45:51 +10:00
Damien Elmes
0538d9b764
(de)serialize decks in backend
2020-04-09 12:41:59 +10:00
Damien Elmes
bca49bd054
load/save note types in backend
...
This allows us to normalize bad data, and is the first step towards
splitting note types into separate tables.
2020-04-08 10:05:07 +10:00
Damien Elmes
29d66cb717
skip terminal logging unless LOGTERM defined
...
seems to be quite slow on Windows
2020-04-07 10:25:47 +10:00
Damien Elmes
68142ed32e
Cow<str> workaround no longer required
2020-04-07 10:08:03 +10:00
Damien Elmes
b0ea1c24d0
update rusqlite for param count assert fix
2020-04-07 08:54:57 +10:00
Damien Elmes
f4a6a12c6f
avoid warning on int sortBackwards from older Anki versions
2020-04-06 17:11:03 +10:00
Damien Elmes
02d0d9a670
add separate json error
2020-04-06 16:29:31 +10:00
Damien Elmes
a9fd2da243
log to the terminal as well
2020-04-06 15:57:13 +10:00
Damien Elmes
913c5b9854
use bytes for deck config proto
2020-04-06 15:39:47 +10:00
Damien Elmes
6471adafcc
use bytes for config proto
2020-04-06 15:39:47 +10:00
Damien Elmes
3ef959856f
display warning when config load fails
2020-04-06 15:39:47 +10:00
Damien Elmes
d05722aa82
use blobs for config
2020-04-06 15:39:47 +10:00
Damien Elmes
b5022ad354
store config in separate DB table
...
- mtime is tracked on each key individually, which will allow
merging of config changes when syncing in the future
- added col.(get|set|remove)_config()
- in order to support existing code that was mutating returned
values (eg col.conf["something"]["another"] = 5), the returned list/dict
will be automatically wrapped so that when the value is dropped, it
will save the mutated item back to the DB if it's changed. Code that
is fetching lists/dicts from the config like so:
col.conf["foo"]["bar"] = baz
col.setMod()
will continue to work in most case, but should be gradually updated to:
conf = col.get_config("foo")
conf["bar"] = baz
col.set_config("foo", conf)
2020-04-06 15:39:47 +10:00
Damien Elmes
9bce844df7
fix duplicates search
2020-04-04 17:38:35 +10:00
Damien Elmes
3c7eabc51e
add flag to skip downgrade on collection close
...
Disabled for now; when enabled it will allow faster collection
open and close in the normal case, while continuing to downgrade
when exporting or doing a full sync.
Also, when downgrading is disabled, the journal mode is no longer
changed back to delete.
2020-04-04 17:21:45 +10:00
Damien Elmes
ea2a3d7586
use separate schema version for tag changes
...
Will prevent issues if user upgrades after an unclean shutdown
2020-04-04 10:14:51 +10:00
Damien Elmes
6c9a6cde2b
use case folding when sorting in canonify
2020-04-03 19:34:46 +10:00
Damien Elmes
ac54f85840
update tag handling
...
- tag list stored in a separate DB table
- non-wildcard searches now do full unicode case folding
(eg tag:masse matches 'Maße')
- wildcard matches do simple unicode case folding
- some functions haven't been updated yet, so ascii folding will
continue to be used in some operations
2020-04-03 19:34:46 +10:00
Damien Elmes
07c414692e
preserve mtime/usn when syncing deck config, and add snake_case names
2020-04-03 19:34:46 +10:00
Damien Elmes
83c50488fd
use support URL and point to source repo
2020-04-03 08:44:59 +10:00
evandrocoan
30107ab09d
Created the GitHub Actions step Upload to PyPi to run only on
...
tagged releases of anki:
https://anki.tenderapp.com/discussions/ankidesktop/40025-anki-in-python-package-index
2020-04-02 02:57:34 -03:00
Damien Elmes
001226050d
fix is:due search
2020-04-02 09:33:05 +10:00
Damien Elmes
ddefffceda
return interrupted err when media sync aborted
2020-04-01 21:40:14 +10:00
Damien Elmes
f195296106
fix push-i18n-ftl
2020-04-01 18:20:31 +10:00
Damien Elmes
8f427dbbd7
FString -> TR
2020-04-01 18:16:43 +10:00
Damien Elmes
15ba839003
translate default deck config name
2020-04-01 17:49:25 +10:00
Damien Elmes
7e7ac42384
add fixme
2020-04-01 17:36:33 +10:00
Damien Elmes
7b201fe7e6
ignore .DS_Store in trash
...
https://anki.tenderapp.com/discussions/ankidesktop/40035-anki-2123-on-macos-ds_store-files-in-new-anki-trash
2020-04-01 13:37:57 +10:00
Damien Elmes
5bb4d798c1
add some timeouts
...
I'm waiting to hear back from the reqwests author on the best way to
handle this. For now, this change just adds short timeouts
to the quick requests, and will wait for up to an hour when sending/
receiving files to allow for the slow connection+large file case.
2020-04-01 10:03:54 +10:00
Damien Elmes
284ee0860b
allow aborting a media sync while http req in flight
...
The progress handling code needs a rethink, as we now have two separate
ways to flag that the media sync should abort. In the future, it may
make sense to switch to polling the backend for progress, instead of
passing a callback in.
2020-04-01 09:49:25 +10:00
Damien Elmes
cffe146397
split deck config into separate SQL table
...
- on collection load, the schema is upgraded to 12
- on collection close, the changes are reversed so older clients
can continue to open the collection
- in the future, we could potentially skip the reversal except
when exporting/doing a full sync
- the same approach should work for decks, note types and tags in the
future too
- the deck list code needs updating to cache the deck confs for the
life of the call
2020-03-30 20:01:16 +10:00
Damien Elmes
089a68eb43
move deck conf handling to backend
2020-03-30 14:39:46 +10:00
Damien Elmes
d41124343d
initial work on undo support
2020-03-29 17:52:16 +10:00
Damien Elmes
3924dedbb7
remove usn cache
...
SqliteStorage no longer contains any mutable state
2020-03-29 12:50:38 +10:00
Damien Elmes
cbbbced59e
cache timing_today in collection, update it when cutover reached
2020-03-29 12:26:24 +10:00
Damien Elmes
0451a4d4e0
drop separate RequestContext/StorageContext
2020-03-29 12:12:35 +10:00
Damien Elmes
c4a78ffd82
roll back the vec cache changes
...
prepare_cached() is sufficiently fast, and allowing the vec cache
to persist across calls is complicated due to lifetime restrictions
2020-03-29 09:26:09 +10:00
Damien Elmes
cb03c87f8b
Revert "add benchmark for vec cache"
...
This reverts commit 0247d65ccd .
2020-03-29 09:16:11 +10:00
Damien Elmes
36314f3b6f
Merge pull request #528 from evandroforks/create_actions_for_windows_macos
...
Create actions for Windows and Mac OS
2020-03-27 15:26:22 +10:00
Damien Elmes
fc846ac4e4
use add_card()
2020-03-27 15:11:07 +10:00
Damien Elmes
1112fc8e8b
add (unused) add_card, and move sql to separate files
2020-03-27 14:48:25 +10:00
Damien Elmes
0247d65ccd
add benchmark for vec cache
...
test storage::sqlite::bench::bench_hash_cache ... bench: 399 ns/iter (+/- 27)
test storage::sqlite::bench::bench_no_cache ... bench: 4,854 ns/iter (+/- 499)
test storage::sqlite::bench::bench_vec_cache ... bench: 0 ns/iter (+/- 0)
2020-03-27 09:59:48 +10:00
Damien Elmes
d1c44ec06d
store cached statements in a vec instead of separate optionals
2020-03-27 09:51:19 +10:00
evandrocoan
f1fe0209f6
Merge remote-tracking branch 'danielelmes/master' into create_actions_for_windows_macos
2020-03-26 19:31:01 -03:00
Damien Elmes
62be1b2688
update card in transaction
2020-03-27 07:58:25 +10:00
Damien Elmes
e28fdde984
handle mtime/usn bump in backend, and tweak integer sizes
2020-03-26 20:55:04 +10:00
Damien Elmes
aa33bf85ef
report invalid type/queue
2020-03-26 19:32:35 +10:00
Damien Elmes
0510ab7c9c
update_card()
2020-03-26 18:54:20 +10:00
Damien Elmes
b2fba4e1ff
use backend to get card
2020-03-26 17:47:43 +10:00
Damien Elmes
1af3de6f70
DeckID, CardID
2020-03-26 15:10:40 +10:00
Damien Elmes
4150480709
NoteTypeID
2020-03-26 15:00:24 +10:00
Damien Elmes
3395a565a6
newtype NoteID
2020-03-26 14:42:43 +10:00
Damien Elmes
bb0b817d9c
use a macro for newtype defs
2020-03-26 13:50:20 +10:00
Damien Elmes
d95cb93d7a
usn newtype
2020-03-26 13:06:02 +10:00
Damien Elmes
bfc0287e51
use newtypes for distinguishing between second and millisecond stamps
2020-03-26 12:59:51 +10:00
evandrocoan
964cc1a11a
Merge remote-tracking branch 'danielelmes/master' into create_actions_for_windows_macos
...
# Conflicts:
# .github/scripts/trailing-newlines.sh
# .github/workflows/checks.yml
# Makefile
# pylib/Makefile
# qt/Makefile
# qt/tools/typecheck-setup.sh
# rspy/Makefile
2020-03-24 22:49:49 -03:00
Damien Elmes
2bd99127e9
add newline to mear clearly separate different ftl files
2020-03-25 08:53:42 +10:00
Damien Elmes
6aced5f125
handle fields with embedded nuls
2020-03-24 14:53:33 +10:00
evandrocoan
4fcecaed9f
Created the .github/workflows/windows.yml
...
# Conflicts:
# .github/scripts/trailing-newlines.sh
# Makefile
# qt/tools/typecheck-setup.sh
# react/Makefile
# rspy/Makefile
# svelte/Makefile
# tslib/Makefile
2020-03-23 19:51:03 -03:00
Damien Elmes
7a67f73183
convert asc to desc instead of appending desc to the end of the order
...
as the latter doesn't work when sorting on more than one column
https://anki.tenderapp.com/discussions/beta-testing/1868-anki-2124-beta#comment_48174812
2020-03-23 19:53:57 +10:00
Damien Elmes
4563fe36bc
rename long filenames in fields if files renamed in a previous sync
2020-03-23 18:38:45 +10:00
Damien Elmes
b7fdb8aeb4
fix setting of wal
2020-03-23 13:52:57 +10:00
Damien Elmes
17f7a69830
handle trailing whitespace inside group
2020-03-22 18:52:44 +10:00
Damien Elmes
7c91d3e414
accept now_mins_west for v2 legacy timing as well
2020-03-22 17:33:14 +10:00
Damien Elmes
e02f032a47
use backend for v1 and v2 cutoff calculations
...
this should also fix the CI failures, which were happening because
the datetime module wasn't matching the shifted time.time()
2020-03-22 14:28:26 +10:00
Damien Elmes
01f9845b27
exclude autogenerated src from build deps
...
prevents unnecessary rebuilds
2020-03-22 03:39:38 +00:00
Damien Elmes
c0a4a1cb66
possible fix for CI failure
2020-03-22 13:17:00 +10:00
Damien Elmes
b8aaa8fba4
add enum for controlling sort order
...
eg col.find_cards("", order=BuiltinSortKind.CARD_DUE)
2020-03-22 12:59:24 +10:00
Damien Elmes
2060577ede
handle collections with sortBackwards set to 0 instead of a bool
2020-03-22 10:26:09 +10:00
Damien Elmes
e22c3f6723
remove debugging line
2020-03-21 18:29:04 +10:00
Damien Elmes
3392fe8708
increase the rated search cap to 365, and allow searches for ease 0
...
An add-on appears to use ease 0 when rescheduling cards, and it may
make sense for Anki to do the same in the future as well.
2020-03-21 16:05:17 +10:00
Damien Elmes
cf50821d3b
add search that ignores combining chars
...
On a test of a ~40k card collection, the 'ignore accents' add-on
takes about 1150ms, and this code takes about 70ms.
2020-03-21 15:15:59 +10:00
Damien Elmes
32efd1789b
support regexp search in single field
2020-03-21 13:06:46 +10:00
Damien Elmes
d53c8f18ad
support wildcard in field*:val search
2020-03-21 12:45:25 +10:00
Damien Elmes
0a6c5dd240
don't require wildcard for unicode case folding in search
2020-03-21 12:44:56 +10:00
Damien Elmes
982e1a811d
add unicase collation
...
sqlite's like is hard-coded to use ASCII comparisons, so we can't
take advantage of this yet
2020-03-21 12:40:20 +10:00
Damien Elmes
9dd5fef0a1
support regex searches
2020-03-21 12:00:48 +10:00
Damien Elmes
e0e7560d2b
add regexp() to sqlite
2020-03-21 10:23:11 +10:00
Damien Elmes
861139ea9e
support deck:"foo bar" style searches
2020-03-21 09:34:24 +10:00
Damien Elmes
0089f0149a
add note searching
2020-03-21 09:00:05 +10:00
Damien Elmes
a1853db3d8
fix formatting and unit test
2020-03-21 08:17:24 +10:00
Damien Elmes
e060e0daee
handle escaped tag searches and tag:* special case
2020-03-21 08:09:28 +10:00
Damien Elmes
551aa135d6
check for child decks case-insensitively
2020-03-21 07:57:07 +10:00
Damien Elmes
798ea78a37
don't crash when card:0 passed in
2020-03-21 07:56:55 +10:00