Henrik Giesel
27dfb57ce7
Reset ease to 0 for after rescheduling cards as new
2021-01-08 18:15:24 +01:00
Damien Elmes
61583aae03
fix reposition not honoring provided order, and add unit test
2021-01-08 20:38:49 +10:00
Damien Elmes
4b9e5f425b
Merge pull request #904 from hgiesel/propdue
...
Streamlining `is:due`, `prop:due`, and the FutureDue graph
2021-01-08 16:34:53 +10:00
Damien Elmes
ba665b0e02
handle SortOrderProto conversion separately, and use enum getter
...
In most cases we can just fall back on the default enum value instead
of caring if it's missing/invalid.
2021-01-08 15:56:20 +10:00
Damien Elmes
f20a8f71b7
convert sort_kind_from_pb into from impl
2021-01-08 09:42:54 +10:00
Damien Elmes
336cb3595b
convert from protobuf enum, rather than the underlying i32
2021-01-08 09:24:03 +10:00
Henrik Giesel
66da8549cd
Add comment about integer division
2021-01-07 20:10:25 +01:00
Henrik Giesel
6f9adbe8fd
Restate rslib unit test
2021-01-07 19:56:36 +01:00
Henrik Giesel
8fcf88e606
Search for Learn and PreviewRepeat cards when using prop:due
2021-01-07 19:01:10 +01:00
Henrik Giesel
0d02b1f2f0
Include PreviewRepeat cards in is:due
2021-01-07 17:24:10 +01:00
RumovZ
991a3c1596
Add native enum for concatenate_search's separator
2021-01-07 12:50:57 +01:00
RumovZ
b8f7bb8807
Add Position in PropertyKind match of writer.rs
2021-01-06 23:29:09 +01:00
RumovZ
ac4d254793
Merge branch 'master' of https://github.com/ankitects/anki into norm-search
2021-01-06 20:57:24 +01:00
RumovZ
0b1eec9cd8
Add tests for writer.rs
...
Also minor adjustments to concatenate_searches.
2021-01-06 19:39:34 +01:00
RumovZ
f061ccfb02
Implement search replacing via Ctrl+Shift combo
...
Also switch to using the new backend functions for concatenating and
negating searches.
2021-01-06 18:32:29 +01:00
RumovZ
1c257047b6
Implement replace_search_term
2021-01-06 14:03:43 +01:00
RumovZ
5a9e905b22
Implement concatenate_searches
...
Fix minor stuff in writer.rs.
2021-01-06 14:00:47 +01:00
RumovZ
576ffc2b0a
Implement negate_search
2021-01-06 13:57:35 +01:00
Damien Elmes
e62201c621
Merge pull request #895 from hgiesel/newlearn
...
Change meaning of "is:learn" to filter on type, not queue
2021-01-06 19:13:59 +10:00
Henrik Giesel
453dad18fe
Change meaning of "is:learn" to filter on type, not queue
2021-01-05 17:36:55 +01:00
Damien Elmes
ceca13516b
no need to log card resets when exporting
2021-01-05 11:11:37 +10:00
abdo
85a1c732db
Rename prop:order to prop:pos
2021-01-02 13:35:10 +03:00
abdo
ab8736b37f
Support prop:order to search for new cards by order
2021-01-01 04:36:51 +03:00
Damien Elmes
4b70dc287e
Merge pull request #879 from Arthur-Milchior/Tex_keep_alt
...
Add Alt text to latex image
2020-12-31 12:02:40 +10:00
Damien Elmes
5a87175127
fix clippy error in unit test
2020-12-31 09:48:05 +10:00
Arthur Milchior
f19592b27f
Add Alt text to latex image
...
I'm trying to go over accessibilities issues in AnkiDroid. Since we'll use rust backend, I thought I might as well go
over it in rust directly. The only side effect in anki is that, if you copy a text with the image, you'll get the LaTeX
copied instead of nothing. Alas, it seems qt does not show alt text.
2020-12-30 18:00:06 +01: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
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
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
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
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
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
4c7c78a2f1
fix compilation of rslib outside Bazel
...
fixes code completion
2020-11-24 18:51:19 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
c03d3f6c7f
add some extra help to the json decode error
2020-08-07 13:13:11 +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
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
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
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
9ec58c10ec
strip unwanted control characters when writing fields
...
closes #661
2020-07-24 09:18:05 +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
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
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
06d9f64dea
lint fixes
2020-06-29 15:53:56 +10:00
Damien Elmes
693fcfce7d
i18n card counts
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
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
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
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
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
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