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
Damien Elmes
5aba5c3ab9
drop the separate i18n backend
2020-03-20 21:15:23 +10:00
Damien Elmes
e5f883d1c3
support opening and closing the DB while keeping backend alive
...
This is safer than just dropping the backend, as .close() will
block if something else is holding the mutex. Also means we can
drop the extra I18nBackend code.
Media syncing still needs fixing.
2020-03-20 21:15:23 +10:00
Damien Elmes
c710580604
move media folder/db paths into collection
...
this breaks background media syncing for now
2020-03-20 21:15:23 +10:00
Damien Elmes
8c8674f57b
drop unused col_path
2020-03-20 21:15:23 +10:00
Damien Elmes
3cacc00fc3
make the collection optional
2020-03-20 21:15:23 +10:00
Damien Elmes
116f7fa3f1
support first_row_only
2020-03-20 21:15:23 +10:00
Damien Elmes
7e5f713f05
proper implementation of executemany(); drop executescript()
2020-03-20 21:15:23 +10:00
Damien Elmes
121687ea91
wrap the collection in a mutex so DB access is thread safe
2020-03-20 21:15:23 +10:00
Damien Elmes
e72d21e09e
move note code into notes.rs, add ability to rollback when unchanged
2020-03-20 21:15:23 +10:00
Damien Elmes
3f3a45e2ba
add Collection struct, and get media check working again
...
- media check no longer needs collection to be closed
- use savepoints for operations initiated by Rust, so they are
atomic without forcing a commit
2020-03-20 21:15:23 +10:00
Damien Elmes
700d713f80
add begin/commit/rollback, and support creating collections
...
all but one unit test is now passing
2020-03-20 21:15:23 +10:00
Damien Elmes
bd7ded18c3
drop the protobuf prototype
2020-03-20 21:15:23 +10:00
Damien Elmes
38d4ea5311
use (or)json for DB bridge
...
Some initial testing with orjson indicates performance varies from
slightly better than pysqlite to about 2x slower depending on the type
of query.
Performance could be improved by building the Python list in rspy
instead of sending back json that needs to be decoded, but it may make
more sense to rewrite the hotspots in Rust instead. More testing is
required in any case.
2020-03-20 21:15:23 +10:00
Damien Elmes
a129b8f8cf
initial work on DB handling in Rust
...
committing the Protobuf implementation for posterity, but will replace
it with json, as Protobuf measures about 6x slower for some workloads
like 'select * from notes'
2020-03-20 21:15:23 +10:00
Damien Elmes
1d6c084c2b
fix clippy lint on other platforms
2020-03-19 10:58:52 +10:00
Damien Elmes
0d9ea33389
bump version
2020-03-19 10:46:01 +10:00
Damien Elmes
eae07af576
correctly handle NFD content in media DB from older Anki versions
2020-03-19 10:20:42 +10:00
Damien Elmes
29f625b61e
add helper to duplicate a fluent string
2020-03-12 19:53:44 +10:00
Damien Elmes
0651aaa229
add media check window title, use consistent formatting in template
2020-03-12 18:02:22 +10:00
Damien Elmes
28edff2a5e
fix fallback preferences being used instead of English
...
Check needs to be done regardless of if we found a regional variant
or not.
2020-03-12 18:02:15 +10:00
Damien Elmes
b198ba8073
ignore remote file links in media check
2020-03-10 13:46:52 +10:00
Damien Elmes
e512199ace
add restore media action
2020-03-10 13:35:09 +10:00
Damien Elmes
cac9ccfa0d
add empty trash action in aqt
2020-03-10 12:49:40 +10:00
Damien Elmes
a6b1a32378
don't clean up the trash folder automatically
...
The media check now reports if any files are in the trash folder,
and a method has been exposed to clear the trash.
2020-03-10 12:02:38 +10:00
Damien Elmes
005a8831e1
add basic log rotation
2020-03-10 10:33:14 +10:00
Damien Elmes
387207cd86
log sync errors
2020-03-10 09:43:48 +10:00
Damien Elmes
80065f3ce2
tweak logging
2020-03-10 09:30:05 +10:00
Damien Elmes
6f9079a341
don't try to read file data when file marked as a deletion
...
If the user hadn't used the media check to clean up files with
invalid names on disk, the long filename would break the 'automatically
rename long filenames when syncing' functionality, causing the original
long filename to be uploaded to AnkiWeb as an addition instead of
a deletion
2020-03-10 09:29:36 +10:00
Damien Elmes
0a8fe2959c
fix missing newline in ftl files
...
https://anki.tenderapp.com/discussions/beta-testing/1836-problem-with-new-translations
2020-03-09 18:58:41 +10:00
Damien Elmes
f6d5d4ea26
rspy version
2020-03-06 19:15:02 +10:00
Damien Elmes
0aa0c42d20
update to failure 0.1.7
2020-03-06 15:08:58 +10:00
Damien Elmes
2e4fb4401f
fix incorrect mark_collection_modified()
...
- usn shouldn't be changed
- mtime is in milliseconds
2020-03-05 14:55:03 +10:00
Damien Elmes
0b4a7c1d10
work around bug in failure crate
2020-03-05 11:06:44 +10:00
Damien Elmes
ba97457e8a
add nfd tag fix to db check
...
we already normalize in the editor and importing, so perhaps these
tags were from an old version
https://anki.tenderapp.com/discussions/ankidesktop/39120-bug-filter-do-not-work-with-tags-which-contain-german-letters-like
2020-03-01 11:21:25 +10:00
Damien Elmes
c97b37b7ae
make logging explicit, and support logging to a file
2020-02-29 20:44:01 +10:00
Damien Elmes
36372991f7
bump rust toolchain for 1.41.1 fixes
2020-02-29 19:42:30 +10:00
Damien Elmes
42781a696f
remove some unused imports
2020-02-29 15:21:11 +10:00
Damien Elmes
e26860ad04
don't require a media scan after media deleted inside Anki
2020-02-29 14:45:16 +10:00
Damien Elmes
0810d9d5e0
fix display of years
2020-02-28 17:14:35 +10:00
Damien Elmes
7cfe33a099
fix rerun-if-changed paths
2020-02-27 20:52:17 +10:00
Damien Elmes
2f92c9a803
add support for embedding the qt translations
2020-02-27 20:38:34 +10:00
Damien Elmes
2de865d7f0
migrate strings with trailing newlines to fluent
2020-02-27 20:36:40 +10:00
Damien Elmes
3c304927c8
Merge pull request #465 from alanhdu/rust-deps
...
Upgrade some rust deps
2020-02-27 14:13:26 +10:00
Alan Du
a6751c893b
Update blake3 to 0.2
2020-02-26 22:50:48 -05:00
Alan Du
a6441dd4e0
Update prost-build version to 0.6
...
This is the same version as Prost, and lets us reduce the number of deps
we have to compile
2020-02-26 22:48:16 -05:00
evandrocoan
4a2456f62f
Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
...
# Conflicts:
# Makefile
2020-02-27 00:20:34 -03:00
Damien Elmes
3dc0567f89
add string for media log title, and add button in prefs to access it
2020-02-27 12:22:24 +10:00
Damien Elmes
5337ea457a
extra newline in network details
2020-02-27 11:22:48 +10:00
Damien Elmes
f20a23b1a9
use debug description for untranslated errors; fix template error
2020-02-27 11:07:18 +10:00
Damien Elmes
b030f2b40b
info is superfluous
2020-02-27 10:53:49 +10:00
Damien Elmes
83d894ac87
return a localized error for all error kinds
...
some errors are not yet localized, but now the Python code
doesn't need to think about which property to use
2020-02-27 10:46:24 +10:00
Damien Elmes
21c94c623c
add comment to sync.ftl
2020-02-27 09:18:49 +10:00
Damien Elmes
59328d9ade
tweak rounding
...
- avoid rounding minutes
- round the seconds taken in the card info screen
- provide different precise and imprecise modes, since we need
to display seconds to multiple decimals in some areas
2020-02-25 17:29:06 +10:00
evandrocoan
2d316748a7
Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
...
# Conflicts:
# Makefile
2020-02-25 03:16:57 -03:00
evandrocoan
9e690f80e7
Renamed FIND_EXEC to FIND, replaced IS_WINDOWS by specific commands
...
as PYTHON_BIN, ACTIVE_SCRIPT and INSTALL_PYAUDIO.
Fixed echo statements not using @ to suppress double message output.
Deprecated the usage of ECHOCMD := /bin/echo -e because it has no
effect: https://stackoverflow.com/questions/60387684/how-to-make-the-makefile-echos-to-use-bin-echo-e
# Conflicts:
# Makefile
2020-02-25 03:15:11 -03:00
Damien Elmes
64851afa5e
cap answer buttons to 1 decimal place
...
we can switch to NUMBER() instead in the future, but will need
to update all the translations at the same time
2020-02-25 13:24:29 +10:00
Damien Elmes
c2cfe70b9b
use Fluent's number formatting; don't show trailing zeros
...
We can add NUMBER() in the future for more control, but this will
do for the time being.
2020-02-25 13:22:41 +10:00
Damien Elmes
1f6e7805ec
add workaround for panic on 32 bit systems
...
https://anki.tenderapp.com/discussions/beta-testing/1817-failed-to-generate-operands-out-of-fluentnumber-could-not-convert-string-to-integer
2020-02-25 13:22:41 +10:00
evandrocoan
5be9a702cb
Fixed rslib/Makefile using find from Windows, instead from POSIX
2020-02-24 21:44:44 -03:00
Damien Elmes
db8da7d4b7
sort FStrings
...
- easier to read
- ensures things don't break when ankirspy and anki wheels built
on separate machines due to mismatched directory order
2020-02-25 08:26:20 +10:00
evandrocoan
6d16298254
Fixed development compilation with Windows 10
...
1. Documented on README.development how to setup the environment
for Windows.
2. Fixed qt/ts/package.json not working due usage of ; instead
of &&
3. Fixed copy-qt-files rsync using Windows paths instead of Unix
ones
4. Fixed Makefile's using Windows Linux Subsystem bash instead of
the Cygwin one.
5. Ensured running the correct pip module by using python -m pip
instead of just pip.
6. Fixed Makefiles using Windows `find` command, instead of the
Cygwin's one (POSIX find).
7. Fixed pyenv sourcing/activate using /pyevn/bin/ instead of
/python/Scripts/ on Windows.
8. Fixed pyaudio not installing/linking with portaudio on Windows
by installing for a patched fork at evandroforks/pyaudio
9. Forked and fixed portaudio not building with Visual Studio 2017
or superior and added the reference for the patched fork on
README.development at evandroforks/portaudio.
2020-02-24 14:59:11 -03:00
Damien Elmes
ea22296d4c
expand clozes before rendering LaTeX
...
https://anki.tenderapp.com/discussions/ankidesktop/39071-latex-media-windows-version-2121-0cd1ee92-fail-rendering-latex
2020-02-24 18:34:08 +10:00
Damien Elmes
4704dcc061
check depends on repo
2020-02-23 19:31:17 +10:00
Damien Elmes
024126b3be
support aqt-specific FTL files
2020-02-23 18:00:13 +10:00
Damien Elmes
c98247fa0f
translations no longer require an open collection
2020-02-23 14:57:02 +10:00
Damien Elmes
0d1a30c6d8
rework Fluent handling
...
- all .ftl files for a language are concatenated into a single file
at build time
- all languages are included in the binary
- external ftl files placed in the ftl folder can override the
built-in definitions
- constants are automatically generated for each string key
- dropped the separate StringsGroup enum
2020-02-23 13:22:50 +10:00
Damien Elmes
fba8a6ffed
fix message references
2020-02-22 21:48:14 +10:00
Damien Elmes
09e4e50751
add file prefix to fluent keys so we can merge the files at build
2020-02-22 20:26:15 +10:00
Damien Elmes
bff36141f0
make sure English takes priority if it's listed first
2020-02-21 22:01:35 +10:00
Damien Elmes
ecc055d2f4
fluent-rs git no longer required
2020-02-21 21:30:11 +10:00
Damien Elmes
72528ee41c
add deck config category
2020-02-21 20:53:20 +10:00
Damien Elmes
abc260b7c3
reviews
2020-02-21 20:36:22 +10:00
Damien Elmes
258a8a04f0
fix comment
2020-02-21 20:10:58 +10:00
Damien Elmes
e84fa7dee3
add next learning due time + remaining count to congrats screen
...
https://anki.tenderapp.com/discussions/ankidesktop/38000-v2-scheduler-learning-cards
2020-02-21 19:54:50 +10:00
Damien Elmes
3a83d9844a
add studied_today(), move to statistics.ftl
2020-02-21 18:01:15 +10:00
Damien Elmes
e3e376036f
add average-answer-time to Fluent
...
drop the 0.1 special case; we're using two decimals now
2020-02-21 17:42:55 +10:00
Damien Elmes
65f2131340
remove unused import
2020-02-21 15:29:38 +10:00
Damien Elmes
b851577063
fix revision pin
2020-02-21 15:29:38 +10:00
Damien Elmes
4e612cdd3b
add 'studied-today' to Fluent
...
The string has been constructed in parts so the old translations
could be preserved
2020-02-21 15:29:38 +10:00
Damien Elmes
74bff450e2
add non-abbreviated timespan translation; update existing short=True calls
...
- drop the '5m3s' special casing done in the card stats screen, and
just use decimals
- change alignment of the review log so that the non-abbreviated
spans are easier to read
2020-02-21 15:29:38 +10:00
Damien Elmes
11647daec1
move answer_button_time to the backend, split sched into separate module
2020-02-21 15:29:38 +10:00
Damien Elmes
2633d6db4b
move answer button labels into fluent
2020-02-21 15:29:38 +10:00
Damien Elmes
cf1824dac5
update to latest fluent-rs and add basic locale-aware decimals
...
- git version pinned at the moment until the concurrency fix
lands in 0.10.2
- currently float values are hard-coded at 2 decimal places;
we should switch to using NUMBER() in the future
2020-02-21 15:29:38 +10:00
Damien Elmes
5bb81a95c2
add 'new #' prefix to new cards in the due column
2020-02-18 11:16:15 +10:00
Damien Elmes
0cd1ee92ee
pin coarsetime for now, as .12 requires Sierra
2020-02-17 17:55:39 +10:00
Damien Elmes
302fc2b24e
fix deletion notices being sent unnecessarily
2020-02-17 17:21:58 +10:00
Damien Elmes
fd01cac4d7
split "Due" into three different contexts for translators
2020-02-17 14:41:01 +10:00
Damien Elmes
957a0fae75
media check required message is no longer required
2020-02-17 13:51:33 +10:00
Damien Elmes
b554ad8c1d
match older string
2020-02-17 13:41:02 +10:00
Damien Elmes
e898bd82f1
add some more comments
2020-02-17 11:43:18 +10:00
Damien Elmes
f40a00f0cb
localize some error messages
2020-02-17 11:38:22 +10:00
Damien Elmes
f6643eda53
use new i18n infrastructure for more media check / media sync strings
2020-02-17 10:18:20 +10:00
Damien Elmes
60fafd0457
add some comments to card-template-rendering.ftl
2020-02-17 09:06:54 +10:00
Damien Elmes
4b63a07c99
expose translations to Python
2020-02-17 08:40:17 +10:00
Damien Elmes
0260343c69
cache i18n categories
2020-02-17 08:40:17 +10:00
Damien Elmes
342c53a1e4
don't hard-code available ftl languages
...
Instead of trying to define which languages we support, just check
if an appropriate folder is available on disk. This allows users
to drop their own translations into the locale folder and have things
just work.
2020-02-17 08:40:17 +10:00
Damien Elmes
998b2c0f13
wrap i18n struct in a shared mutex so we can start caching
2020-02-17 08:40:17 +10:00
Damien Elmes
1f736239cd
pass progress back as translated string(s)
2020-02-17 08:40:17 +10:00
Damien Elmes
8450214cda
add ftl to the build process, and a sync-git script
...
also
- ensure po files are checked when updated
- add start of sync.ftl
2020-02-17 08:40:17 +10:00
Damien Elmes
78ffde32e1
expose StringsGroup enum in protobuf
2020-02-17 08:40:17 +10:00
Damien Elmes
43005f00a5
bump version
2020-02-17 08:40:17 +10:00
Damien Elmes
0869a78668
more frequent progress updates
2020-02-17 08:40:17 +10:00
Damien Elmes
dd635afc29
rename card-templates.ftl
2020-02-17 08:40:17 +10:00
Damien Elmes
ba0bc3086c
move empty card check into template code
2020-02-17 08:40:17 +10:00
Damien Elmes
0738ff46b6
make template errors translatable
2020-02-17 08:40:17 +10:00
Damien Elmes
834989a019
include report in MediaCheckOutput
2020-02-17 08:40:17 +10:00
Damien Elmes
36d2536262
add i18n support to Rust code using Fluent
2020-02-17 08:40:17 +10:00
Damien Elmes
8f34c720b8
remove redundant test_ prefix
2020-02-17 08:40:17 +10:00
Damien Elmes
afca40c83f
mark deletions in media DB when files are deleted
2020-02-17 08:40:17 +10:00
Damien Elmes
5e500775d4
ignore errors when file to delete is already gone
...
May be marked as pending upload or in media check screen, then removed
by user.
2020-02-17 08:40:17 +10:00
Damien Elmes
90e5bfcb0c
make sure we don't leave a trailing dot or space when truncating
2020-02-17 08:40:17 +10:00
Damien Elmes
0869fac03a
make sure renames generated during sync don't get immediately removed
2020-02-17 08:40:17 +10:00
Damien Elmes
311fb524a4
don't filter out invalid filenames when we're sending them as a deletion
2020-02-17 08:40:17 +10:00
Damien Elmes
56931467a9
fix the wrong named being returned when renaming in sync
2020-02-17 08:40:17 +10:00
Damien Elmes
0d1549c5bd
pt->pb for consistency with rsbackend.py
2020-02-17 08:40:17 +10:00
Damien Elmes
1383973753
shorten add_file_to_media_folder
2020-02-17 08:40:17 +10:00
Damien Elmes
89626c1a72
use media.trash for unused media deletion as well
2020-02-17 08:40:17 +10:00
Damien Elmes
d32e2fe6eb
add extract_latex to backend; use it for latex build
2020-02-17 08:40:17 +10:00
Damien Elmes
d557312f73
include LaTeX png/svg files when checking for unused media
2020-02-17 08:40:17 +10:00
Damien Elmes
e3bd06ec85
files with leading underscore are ignored
2020-02-17 08:40:17 +10:00
Damien Elmes
9700acbf18
include normalized filenames in the rename list
...
Since they'll need to be uploaded on the next sync, better not to
hide them from the list
2020-02-17 08:40:17 +10:00
Damien Elmes
790f3c9f72
plug new media check in
2020-02-17 08:40:17 +10:00
Damien Elmes
3d5f6a40b2
when adding hash suffix, need length in hex, not bytes
2020-02-17 08:40:17 +10:00
Damien Elmes
92b76a5ba7
gather field references in Rust; media check now mostly complete
2020-02-17 08:40:17 +10:00
Damien Elmes
edf60b10d4
backend stores media folder/db locations; don't need to pass them in
2020-02-17 08:40:17 +10:00
Damien Elmes
46bb6f1b92
catch trailing space/period as well
2020-02-17 08:40:17 +10:00
Damien Elmes
09aecc12e8
check [ instead of con in unit test, so test works on Windows as well
2020-02-17 08:40:17 +10:00
Damien Elmes
64e017da9a
run the TZ test only on Macs
2020-02-17 08:40:17 +10:00
Damien Elmes
e1f817a258
test shouldn't depend on dentry order
2020-02-17 08:40:17 +10:00
Damien Elmes
0da393da81
expire media trash after a week
2020-02-17 08:40:17 +10:00
Damien Elmes
a0680553ea
use our own trash folder instead of using the system trash
...
the trash crate was invoking external commands on Macs and Linux
which is slow and likely to fall over if a large number of files need
to be deleted at once.
2020-02-17 08:40:17 +10:00
Damien Elmes
27b783ac72
tidying
2020-02-17 08:40:17 +10:00
Damien Elmes
76a61b8adf
hold the DB open for the duration of the check
2020-02-17 08:40:17 +10:00
Damien Elmes
f1b0431cbd
DB check
...
Working, but should be refactored so media DB not re-opened
each time a file is renamed.
2020-02-17 08:40:17 +10:00
Damien Elmes
5ec977c74b
factor entry code out for later
2020-02-17 08:40:17 +10:00
Damien Elmes
1ca15c10d6
mgr didn't need to be mutable
2020-02-17 08:40:17 +10:00
Damien Elmes
2d859df88f
nfc helper
2020-02-17 08:40:17 +10:00
Damien Elmes
7079063855
ignore 0 byte files when picking up changes
2020-02-17 08:40:17 +10:00
Damien Elmes
62924237d3
don't add non-normalized files to media DB
2020-02-17 08:40:17 +10:00
Damien Elmes
88ac38fc55
media table doesn't need rowid
2020-02-17 08:40:17 +10:00
Damien Elmes
51e5d4b792
dirty index doesn't need to cover false case
2020-02-17 08:40:17 +10:00
Damien Elmes
742ab59edb
handle read errors during zip build
2020-02-17 08:40:17 +10:00
Damien Elmes
ef522b235a
clean up invalid media DB entries on the fly, instead of requiring DB check
2020-02-17 08:40:17 +10:00
Damien Elmes
9c60f2c77e
log media DB change registration progress, and allow aborting it
2020-02-17 08:40:17 +10:00
Damien Elmes
8e31068f0a
move change tracking into separate file
2020-02-17 08:40:17 +10:00
Damien Elmes
ef14b1a96b
simplify code by accumulating stats at the source
2020-02-17 08:40:17 +10:00
Damien Elmes
b21d24f6e8
move sync_media() into MediaManager
2020-02-17 08:40:17 +10:00
Damien Elmes
a769fb6172
update rslib version automatically
2020-02-17 08:40:17 +10:00
Damien Elmes
b62819092a
remove duplicate method
2020-02-17 08:40:17 +10:00
Damien Elmes
e352a6b95c
tidy up sync.rs
2020-02-17 08:40:17 +10:00
Damien Elmes
08eb9d70c8
handle concurrent modifications and ankiweb terminating early
2020-02-17 08:40:17 +10:00
Damien Elmes
3ee1d3f0da
update dirmod as files added during sync
2020-02-17 08:40:17 +10:00
Damien Elmes
775c83e89a
add debug line
2020-02-17 08:40:17 +10:00
Damien Elmes
00cd3be1a0
fix force_resync()
2020-02-17 08:40:17 +10:00
Damien Elmes
c0e7975fe7
rename non-normalized filenames when downloading
2020-02-17 08:40:17 +10:00
Damien Elmes
2c27c11584
comply with manylinux wheel requirements, and vendor sqlite on Windows
2020-02-17 08:40:17 +10:00
Damien Elmes
1f931a5b78
defer errors on upload to media check
2020-02-17 08:40:17 +10:00
Damien Elmes
2cecae4ca7
add proper version
2020-02-17 08:40:16 +10:00
Damien Elmes
77158760ff
use enums for some common errors
2020-02-17 08:40:16 +10:00
Damien Elmes
81262ffd95
defer media DB load until media action performed
...
This means a corrupt media DB will not prevent collection load.
2020-02-17 08:40:16 +10:00
Damien Elmes
b883b09414
pass in endpoint
2020-02-17 08:40:16 +10:00
Damien Elmes
738e415463
connect media sync progress to Python, add a progress dialog
2020-02-17 08:40:16 +10:00
Damien Elmes
50d8a40e23
add progress hook to media sync
2020-02-17 08:40:16 +10:00
Damien Elmes
e26ab9073b
send removed files to the trash
...
The way the trash crate implements deletion on a Mac is ugly, and
we may need to look into alternatives.
2020-02-17 08:40:16 +10:00
Damien Elmes
e764e68324
store sync state in a struct, and reuse ctx across methods
2020-02-17 08:40:16 +10:00
Damien Elmes
78bfbef863
media sync working, but unpolished
2020-02-17 08:40:16 +10:00
Damien Elmes
b2b8370477
bump nightly for the unwrap source line fix
2020-02-17 08:40:16 +10:00
Damien Elmes
973d8c56d6
more refactoring
2020-02-17 08:40:16 +10:00
Damien Elmes
7430d3c64f
rearrange some methods to make structure clearer
2020-02-17 08:40:16 +10:00
Damien Elmes
1acb3b86b9
backend init can now fail, and update media db when file is added
...
- Adding files inside Anki now updates the media DB, so a full file
scan at sync time is no longer required if no other changes have been
made.
- Use a protobuf message for backend initialization, and return a
string error if initialization fails.
2020-02-17 08:40:16 +10:00
Damien Elmes
6bf4b9e83e
port change tracking
2020-02-17 08:40:16 +10:00
Damien Elmes
4f08ae9e27
make sure results are checked
2020-02-17 08:40:16 +10:00
Damien Elmes
9bc38647e6
initial rs implementation of media database
2020-02-17 08:40:16 +10:00
Damien Elmes
c9a5ed3cc6
add add_file() and write_data()
2020-02-17 08:40:16 +10:00
Damien Elmes
9ec6d26db7
add another implementation of media.addFile() and cleanFilename() et al
...
Instead of adding an incrementing number in the conflict case,
the file hash is appended.
2020-02-17 08:40:16 +10:00
Damien Elmes
391a58077a
show which side the template error occurred on
2020-02-08 11:54:08 +10:00
Damien Elmes
fc3570c949
clearer error when closing tags transposed
2020-02-08 10:32:34 +10:00
Damien Elmes
86a580d820
reuse reveal_cloze_text() for LaTeX cloze expansion
2020-01-28 07:40:44 +10:00
Damien Elmes
d598ce45fe
move cloze-related code into a separate file
2020-01-27 20:41:23 +10:00
Damien Elmes
47bcb3845c
support speed control in tts tags
2020-01-26 14:31:07 +10:00
Damien Elmes
46c6a7f7e4
extract and flag AV tags as part of the render process
...
We can now show replay buttons for the audio contained in {{FrontSide}}
without having to play it again when the answer is shown.
The template code now always defers FrontSide rendering, as it wasn't
a big saving, and meant the logic had to be implemented twice.
2020-01-24 11:06:11 +10:00
Damien Elmes
faaecdb2c7
look through negated conditionals instead of just ignoring them
...
https://anki.tenderapp.com/discussions/ankidesktop/38220-bug-in-2119-regarding-computation-of-req
2020-01-23 17:27:07 +10:00
Damien Elmes
2ee8902bd9
added flag_av_tags() for replay button support
2020-01-21 14:44:27 +10:00
Damien Elmes
b0d2958721
add rank handling to TTS; parse TTS args in get_av_tags()
2020-01-21 12:41:37 +10:00
Damien Elmes
a85ad8b257
more TTS and sound work
...
- use provided language and voices when playing on Mac
- fix hang in waiting for termination
- allow players to return a rank for a given tag,
which will allow for the best matching player to be chosen
depending on the context (eg, prioritize one player for videos,
one tts player for certain voices, etc)
2020-01-21 11:34:25 +10:00
Damien Elmes
548ed31ef7
add a simple TTS field filter
...
This simply wraps the field in extra text that the frontend will
deal with. Also added some helpers for extracting and stripping
audio and TTS tags from the rendered text.
2020-01-20 19:16:24 +10:00
Damien Elmes
97dc39d0e0
workflow fix
2020-01-19 15:02:08 +10:00
Damien Elmes
c525a75fa3
drop plus_one test
2020-01-17 18:54:38 -07:00
Damien Elmes
a9378b1e99
_localOffsetForDate() was broken
...
It was including the elapsed time of day when calculating
the offset, leading to incorrect results
2020-01-17 18:52:36 -07:00
Damien Elmes
21098c43b5
save filters and field name separately
2020-01-16 18:47:21 +10:00
Damien Elmes
2e8bdb580a
show missing field errors in the same way as the other errors
2020-01-16 18:47:21 +10:00
Damien Elmes
52bd10063e
more useful template error message
2020-01-16 18:47:21 +10:00
Damien Elmes
ce77759177
allow an empty field name if filters are provided
...
This is to make it easier for add-ons to provide extra content that
degrades nicely on platforms that don't have the add-on.
2020-01-15 18:48:23 +10:00
Damien Elmes
c84c3bce72
fix overlapping clozes
2020-01-14 07:07:21 +10:00
Damien Elmes
8eceedd2e5
more template rendering tweaks
...
- The front and back are rendered in one call now. If the front
side contains no custom filters, we can bake {{FrontSide}} into the
rear side. If it did contain custom filters, we return the partially
complete rear template instead, and the calling code can inject
the FrontSide in after it has been fully rendered.
- Instead of modifying "cloze" into something like "cq-2", the card
ordinal and whether we're rendering the question or answer are now
passed in to the rendering filters as context.
- The Rust code doesn't need to support filter names split on '-'
anymore.
- Drop the "Show" part of hint descriptions so i18n support can be
deferred.
- Ignore blank filter names caused by user using two colons instead
of one.
- Fixed hint field and text transposition.
2020-01-12 21:34:07 +10:00
Damien Elmes
c486a4bf6d
fix type:cloze handling
2020-01-11 19:38:41 +10:00
Damien Elmes
524a27dd08
ignore extra { chars in replacement
...
This will still show a trailing } with {{{field}}}, but will at
least show the field content instead of 'unknown field'.
2020-01-11 18:02:24 +10:00
Damien Elmes
9028018277
static->const
2020-01-11 13:06:48 +10:00
Damien Elmes
41d155a6ee
drop unnecessary capitalized cloze handling
2020-01-11 13:03:43 +10:00
Damien Elmes
e7c3218724
handle mathjax+cloze case
...
instead of trying to selectively change clozes from c to C, just
strip HTML from inside the mathjax sections instead
2020-01-11 12:57:32 +10:00
Damien Elmes
cf5457da25
cloze: support
...
MathJax still to do
2020-01-11 12:07:06 +10:00
Damien Elmes
d671f091ff
type: and hint: support
...
We may need to keep handling hints in the Python code for now until
i18n is sorted out.
2020-01-11 09:35:41 +10:00
Damien Elmes
3510eb1861
add ruby filters
2020-01-10 21:04:52 +10:00
Damien Elmes
ab841d9ebe
add some text helpers
2020-01-10 21:01:23 +10:00
Damien Elmes
ca6793c940
add copyright headers to some files
2020-01-10 21:00:48 +10:00
Damien Elmes
f101c34df7
skip rslib doctests, we don't use them and they're slower
2020-01-10 18:06:21 +10:00
Damien Elmes
3a14c247c8
replace fields and apply standard filters in rslib
...
The filters still need to be implemented.
2020-01-10 18:02:26 +10:00
Damien Elmes
8f3df55da2
flatten->render; pass field content in
...
This is paving the way to move the standard filters into Rust.
Non-empty fields are now determined in Rust, using a single regex
instead of the overkill stripHTMLMedia(). The old implementation
has been moved into the Pystache code for now.
2020-01-10 14:59:29 +10:00
Damien Elmes
f3071df403
fix next_day_at being off by a day before the rollover
2020-01-10 08:21:52 +10:00
Damien Elmes
31ebf0473f
rework new timezone code
...
We now store the UTC offset that was in effect at creation time,
and use that to determine the starting date.
2020-01-09 16:58:27 +10:00
Damien Elmes
c0604c596b
ignore template closing characters outside of a tag
2020-01-08 20:29:04 +10:00
Damien Elmes
520275bea3
handle conditional replacement in Rust
...
This extends the existing Rust code to handle conditional
replacement. The replacement of field names and filters to text
remains in Python, so that add-ons can still define their own
field modifiers.
The code is currently running the old Pystache rendering and the
new implementation in parallel, and will print a message to the
console if they don't match. If you notice any problems, please
let me know.
2020-01-08 20:28:04 +10:00
Damien Elmes
3a27b2481f
fix days_elapsed moving backwards
2020-01-07 09:29:43 +10:00
Damien Elmes
2c5ee82dcf
add failing test for days_elapsed calculation
...
the current code was causing the day to move backwards:
at day 7 hour 23:59, elap is 1
at day 8 hour 0:59, elap is 0
at day 8 hour 1:59, elap is 0
at day 8 hour 2:59, elap is 1
at day 8 hour 3:59, elap is 1
at day 8 hour 4:59, elap is 2
as mentioned in https://github.com/ankitects/anki/pull/416
2020-01-07 09:29:43 +10:00
Damien Elmes
9057c8ec85
make sure rust tests rerun on source change; don't hide output
2020-01-07 09:29:43 +10:00
Damien Elmes
ddb304aad2
add some more protobuf messages
2020-01-06 12:18:20 +10:00
Damien Elmes
c88694333b
update readme, remove submodule readmes
2020-01-04 12:21:58 +10:00
Damien Elmes
c0438373dd
move license info into one place
2020-01-03 09:41:30 +10:00
Damien Elmes
2a00e0a6b0
tweaking the folder names again
...
hopefully that's the last of it
2020-01-03 07:48:38 +10:00