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
Damien Elmes
25c4b8466e
handle * in single-field search
2020-03-21 07:56:32 +10:00
Damien Elmes
c173e4a175
fix ease search
2020-03-21 07:56:09 +10:00
Damien Elmes
23717089e9
add the ability to provide a custom sort order; use backend for find
2020-03-21 07:55:21 +10:00
Damien Elmes
46851d7aa9
support sorting on tags
...
I don't personally understand it, but some users seem to want it.
2020-03-20 21:15:23 +10:00
Damien Elmes
9810b584d5
support sorting on note type, card template and decks
2020-03-20 21:15:23 +10:00
Damien Elmes
a004563d19
search order
2020-03-20 21:15:23 +10:00
Damien Elmes
13f726fe8f
fix is:new/is:review
2020-03-20 21:15:23 +10:00
Damien Elmes
46cd7f23f5
added needs to use milliseconds
2020-03-20 21:15:23 +10:00
Damien Elmes
089e059951
tolerate some string IDs
2020-03-20 21:15:23 +10:00
Damien Elmes
1e21fa325b
handle empty searches and leading/trailing whitespace
2020-03-20 21:15:23 +10:00
Damien Elmes
61391a760c
add remaining tests and fix some clippy lints
2020-03-20 21:15:23 +10:00
Damien Elmes
ed009e4fbb
fix rated and state searches
2020-03-20 21:15:23 +10:00
Damien Elmes
986f6c4437
fix tags, more tests
2020-03-20 21:15:23 +10:00
Damien Elmes
274e0ef315
fix cards
2020-03-20 21:15:23 +10:00
Damien Elmes
c3c56d7cf2
fix decks
2020-03-20 21:15:23 +10:00
Damien Elmes
518836e434
fix added
2020-03-20 21:15:23 +10:00
Damien Elmes
3fb5066152
fix qualified search
2020-03-20 21:15:23 +10:00
Damien Elmes
ac8534f4ee
fix escape handling, and handle sql wildcards
2020-03-20 21:15:23 +10:00
Damien Elmes
8f38ad8aa2
avoid extra sql binding in unqualified search
2020-03-20 21:15:23 +10:00
Damien Elmes
b087ebc845
start on search tests
2020-03-20 21:15:23 +10:00
Damien Elmes
f36857ae27
prototype of integration
...
no ordering yet, and no tests
2020-03-20 21:15:23 +10:00
Damien Elmes
6c469a96eb
finish the remaining searches
...
Searches that require multiple deck or note type lookups won't perform
very well at the moment - it either needs caching or to be split up
at the DB level.
Nothing tested yet.
2020-03-20 21:15:23 +10:00
Damien Elmes
a85646bb05
ctx->req
2020-03-20 21:15:23 +10:00
Damien Elmes
3227fc1b9b
add timing to search
2020-03-20 21:15:23 +10:00
Damien Elmes
4f1c85bf8a
add v1 and v2 legacy timing code
2020-03-20 21:15:23 +10:00
Damien Elmes
1b2ebfcf6f
deck searching
...
A bit more complicated than it needs to be, as we don't have the
full deck manager infrastructure yet.
2020-03-20 21:15:23 +10:00
Damien Elmes
91270251bf
address some clippy lints
2020-03-20 21:15:23 +10:00
Damien Elmes
490e2b3cd3
move html stripping out of field_checksum into caller
2020-03-20 21:15:23 +10:00
Damien Elmes
eef158b20c
add field_at_index() sql func
2020-03-20 21:15:23 +10:00
Damien Elmes
445fa4876a
more searching work
2020-03-20 21:15:23 +10:00
Damien Elmes
3b6fef5613
add card queue/type enums
2020-03-20 21:15:23 +10:00
Damien Elmes
4217031780
separate out template ordinal and name search
2020-03-20 21:15:23 +10:00
Damien Elmes
0b33131971
use .eq_ignore_ascii_case() to avoid allocating
2020-03-20 21:15:23 +10:00
Damien Elmes
1b2af8054a
field_checksum needs to strip HTML
2020-03-20 21:15:23 +10:00
Damien Elmes
819d432e12
start of searching sql
2020-03-20 21:15:23 +10:00
Damien Elmes
4014e054a9
ensure rated ease in range
2020-03-20 21:15:23 +10:00
Damien Elmes
28defd2b3c
ensure id list not empty
2020-03-20 21:15:23 +10:00
Damien Elmes
02af7b2ab1
decode search terms in parser
2020-03-20 21:15:23 +10:00
Damien Elmes
c12ebc6124
split up searches with a qualifier
2020-03-20 21:15:23 +10:00
Damien Elmes
43f21b8135
basic search parsing
2020-03-20 21:15:23 +10:00
Damien Elmes
82dbbe7211
add string about waiting for completion
2020-03-20 21:15:23 +10:00
Damien Elmes
5a20d9da79
release mutex before beginning media sync
...
And check media sync is not running on close
2020-03-20 21:15:23 +10:00
Damien Elmes
a321efe9db
fix media sync being logged to console
2020-03-20 21:15:23 +10:00