-
Notifications
You must be signed in to change notification settings - Fork 75
/
TODO
579 lines (421 loc) · 22.3 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
https://github.com/mnemosyne-proj/mnemosyne/issues/241
- force reupload logs?
- replace setup.py.
- put all of Mnemosyne in a separate thread?
- more Azure plugins?
- postpone indefinitely/stop scheduling/postpone 100 years/remove from learning process?
Android:
- better way to use sdcard
- look into fixes reported by dashboard
- check 'redraw now'
- setting to allow choosing the database location?
- revisit multiple database option?
- 'sync' button should sync directly without going through the sync settings
dialog. Put the settings in a settings window instead.
http://alvinalexander.com/android/android-tutorial-preferencescreen-preferenceactivity-preferencefragment
-make sure Android uploads logs as well
-set default grade?
-plugin to hide card, i.e. no longer show it?
-video
-gestures?
-option to globally increase / decrease font size with respect to desktop
-custom fonts?
Minor bugs / issues:
- change colour of divider if the background is black
- handle to change Q/A split?
- make QA in one window default
- replace size heuristic by off-screen rendering again? https://stackoverflow.com/questions/53524652/is-it-possible-to-render-qwebenginepage-qwebengineview-offscreen
- Kamil Jońca: https://mnemosyne-proj.org/cards/latin. Make sure to Export 1::foo before 1::foo::bar
- better checkmack icon in stylesheet for learning modes in menu
- no sync conflicts between edit and review
- renaming saved sets only changing case does not work.
- datetime.datetime.now() does not seem to respect DST inside Mnemosyne, but it does work in a standalone Python programme.
-saving of folded tree state also from 'activate cards' dialog
-test speed of new cheroot
-editing a tag by clicking in the tree does not get saved
- wheelock anki deck:
- where does div on import appear? e.g. numerus
- searching for div turns up wrong results?
- empty ()
- checking for unused tags scales badly when deleting 1500 cards
- can result in deleting same tag twice?
-Are the configuration settings properly synced? Especially when creating a new clone.
-Better video support?
-Delete current card which is sentence card with only a sentence field does not
seem to work.
-when saving the position and the selection in the card browser, would it be
better to store ids rather than row numbers? This affects the case where
there are filters active, whose state changes due to the edit. But what
then if the edit removes the current selection from the filter?
-Adding the "enabled" tag does not automatically get rid of the cross-out in the
card browser.
-Prevent commas in tag names also when using 'create_new_cards' in script.
-Incoming sync when card browser is open does not work.
-Add cloze from card browser, preview does not update correctly
to show new number of cards
-If there are more than 200 failed words, they are always taken at random, rather than x at a time.
-For Latex on OSX: try and have OSX search system paths, or otherwise edit config.py
latex = "/Library/TeX/texbin/latex -output-format=dvi -interaction=nonstopmode"
dvipng = "/Library/TeX/texbin/dvipng -D 200 -T tight tmp.dvi"
-Anki: Q and A align top, no boundaries around content: document how to add CSS
to fix this?
-sometimes scheduled counter goes negative? Hard to reproduce...
-migrate sync server / web server / sync dialog to qt_worker_thread
infrastructure.
-strip HTML when doing rlt check?
-decrease size of installer by seeing if more libraries can be removed.
-example plugin for new learning modes
-run tests in different threads
-keeping a key pressed after 'grade answer' proceeds to show the question
-RTL still does not work for first cloze, in the case the sentence is more than
1 line
http://dotancohen.com/howto/rtl_right_to_left.html
-after sync, a cloze card type displays all hints
-sister card not automatically updated when pg-dwn through card browser
-"A <audio> B" displays only "A"
-test if initial sync on Android download archive files download, using a custom
dot_test directory
-merge and edit dialog: if the cards contain too much info, the window is so
large that the buttons are not visible.
-edit card to update a media file, sync with 'check for updated media files on
client fails'
-server.py imports from libmnemosyne.utils
-import/export dialog alignment does not look nice
-Select saved set, switch tab to other criterion (deselects set) and switch
back to original one.The set should then be autoselected again.
-layout of "add clone" is not optimal under Windows
-select saved set, delete that set: set name is still visible in windows header
-sync of changed saved set does not update title on target machine
-colon in filename https://github.com/mnemosyne-proj/mnemosyne/issues/195
-creating a new clone does not generate appearance setting events for sync
-Related: create a new cardtype through *.cards import, setting font, does not
seem to sync across?
-if the sync changed the appearance settings, the current card's question still
shows the old appearance
-underline and overline don't work together in review window.
-note: sync from a to b and then to c adds latex files to the media table. Is
this aproblem? Can the table become corrupt?
-heartbeat in headless server: if a sync request comes in while this is running,
it will fail because of threading issues.
-Michael Campbell: I changed the background color of Mnemosyne to something
other than white, and I noticed that it uses that color when adding new
content. However, when that window does not have focus, it turns white again.
-tag on client, same tag on server, then sync.
Tag names get renamed, but original tag is set inactive.
-cloze deletion in combination with latex or html does not pick up any open
environments
-don't switch to text entry field when changing card type with the keys.
-when the server thread hangs and the main program is terminated, the cleanup
code gets called from the main thread as opposed to from the server thread,
and will therefore fail. (The server thread should release its connection
itself)
-if last card had unequal split, learn ahead of schedule message does not go
back to 50/50 split.
-webserver: map card type does not really hide the question box, just blanks the
question
-corner case: If M > 0 and k < 0 then (a,b) is a local maximum
If M > 0 and k > 0 then (a,b) is a local minimum: eats < ... >
-move button group in review widget to designer code after pyqt upgrade.
Also possible in add cards?
*These were all reported using Qt4, and probably no longer apply:
-Qt bug? different font size in edit box and in css
-Qt bug? Cannot restore scroll_to column in card browser after tag rename.
-Qt bug? Cntl+a select all in card browser only selects all the prefetched
entries
-Qt bug? insertAtTop on tags combobox in add_cards does not seem to work
-Qt bug? cursor is always black, also on a black background
https://bugreports.qt.nokia.com/browse/QTBUG-52
-Qt bug? error dialogs don't allow copying the text from it on all platforms
-Qt bug? svg Mnemosyne watermark for tip and getting started does not work under
Linux
-Qt bug? review widget: frame.scroll does not seem to work reliably for PageUp
-Qt bug? clicking on web widget in preview dialog eats escape keypress
-Qt bug? QGraphicsWebView.loadFinished sometimes fires before images are loaded?
-Qt bug? bulleted lists: bullets are always aligned left, not centered:
Milesteiner
<ul><li>Focuses 20 to 30cm away</li>
<li>Eyes wander and occasionally cross</li>
</ul>
-Qt bug? text + linebreak + video + linebreak + text2 does not show text2
-Qt bug? Windows titles not shown?
-Qt bug? When setting Arial as initial font to the FontDialog, it is always
made bold.
-Qt bug? In default_criterion_widget, need to reinitialise text of label
-Qt bug? When installing the translator, need to reset window title manually.
-Qt bug? keypressEvent for 'yet to learn' works for enter, return, y, but not
0 or 1.
-Qt bug? main_widget.set_window_title seems to work only if no title was
defined in the ui file.
-Qt bug? cannot define sq escape character to search for literal _
-Qt bug? Kanji does not scale, but latin does
厳é‡?ã?ªè¦æˆ’<span style="font-size:24pt;">test 厳é‡?ã?ªè¦æˆ’</span>
-Qt bug
1. Add new card
2. Enter "test" on front
3. Enter "« test »" (alt+174, alt+175) on back
The card gets closed the moment one has hit the alt+..5 key and a new card is
created with just the "»" symbol.
-Qt bug: enabling word wrap on tag label breaks setting of stretch factors in
q and a
-Qt issue: toggling a tag in the card browser using 'space' does not update the
card list. Catched itemChanged instead of itemClicked would solve this in
theory, but this would cause a lot of spurious updates if you toggle the parent
of a big hierarchy. ItemActivated only seems to catch double clicks
-Qt issue: font size is rounded up to the nearest default integer in font
selection dialog.
-component_manager:deactivate_all: https://bugreports.qt.io/browse/QTBUG-52988
-tag browser editor of tag names does not capture focus out event, so card
count is not redrawn.
-Qt performance problem with selectRow
-Qt bug: cntro-Tabbing to different windows eats keyboard shortcuts: *-Tab to
"Current card", *-Tab stops working and the Statistics window will not close
with Escape.
-grep through TODO's in source code
-flake8
Other features:
- https://github.com/open-spaced-repetition/fsrs4anki
- 'not' operator in searches
- switch to PyOxidizer when it supports PyQt?
-check for required fields when using the Anki card type.
-first doing a count and then the actual a query is not a good idea:?
time 'number_of_log_entries_to_sync_for' vs 'number_of_log_entries'
-don't generate card edited logs when importing a card and no change occurs
in a card
#if (eval(log_entry["extra"]) == orig_card.extra_data) && \
# tags, unless extra tags on import
# card type
# factview
# Important: fact,
media, tag (check all 'already_imported' statements)
- broccoli integration? https://github.com/epfl-dlab/broccoli-plugin
-status bar: scheduled: x / not memorised: x / goal new cards: x/y
-new cards goal can overshoot, e.g. 7/5
-save state upon exit, reset at midnight
-config: goal_new_cards, new_cards_today
-Android
Other learning modes:
-add 'difficult' tag, and add 'cram difficult?'
-mixture of learn new / cram recent?
-config: cram recent: X days, only new cards vs new + relearned cards,
ratio between new and recent
-for 'cramming' cards, show yes/no buttons instead of 0-5
as visual indicator
-log that the card is crammed
-Unify review controllers and widgets, taking cramming buttons into account?
-forgotten only?
-generate end message for new learning modes. (learn ahead of schedule is not
always relevant)
-new scheduler Bayesian: https://github.com/fasiha/ebisu
- Mandarin / Chinese
- merge http://abananablog.com/2016/12/31/anki-trace/
- pretty HSK charts, html here https://hanzicraft.com/lists/freque
-type answer
-option to search in tag tree?
-new learning modes for initial learning of tag? multiple choice? Select audio?
-gamification? userinfuser, habitica
-dropbox integration
-mplayer to mpv?
-Improve tag completion box: does not work when clicking in the box, and does
not work when going back to a previous tag, e.g. if you have a,b,c and want
to go back to an expansion on a
-daily goals: memorise x, review y, streak chart, ...
-add creation date / modification date to current card statistics
-duplicate check on answer too? Needs to check whether all necessary fields are
marked as unique, also in F2B and B2F, vocabulary
-profile testsuite
-increase coverage
-disable latex version check in testsuite
-rework make windows-installer so as not to require keypress, so that it can be
used from qtconsole
-option to turn off card count per tag?
-do create_database in a separate thread (see compact_database_dlg.py)
-factor out duplication of threaded UI stuff in sync and compact
-merging cards: should give an option to go back and edit?
-add login to webserver?
-clickable links in card browser (difficult, as after drawing Q or A, only the
bitmap is saved,not the browser widget)
-settings in config.py don't play well with syncing: if the user does not
update config.py on the target machine as well, these settings will get reset
by the default config.py there. So, get rid of config.py and move it to an
advanced settings plugin?
-activate cards: 'having any of these tags:' is not aligned with tag with tag
tree
-command line switch for headless server not to check for updated card types.
-option to move dividers in edit field (e.g. for large font sizes)
-for the sentence card type without hints, use the 'meaning' font for Q in
production, instead of the sentence font?
-optimisation: change card type for many facts which calls
'delete_facts_and_their_data' does checking for unused tags multiple times.
-fine tuning: when merging a database, merge also the 'active' tag instead of
just looking at the deactivated fact views? Probably more general and also
more future proof in case of new criteria.
-menu option to copy database to USB key?
-Database locking mechanism can be circumvented if the first Mnemosyne copy
is in the browser (or apparently has just done file-new) (Scott Youngman)
-replace locking mechanism by switching to running instance of Mnemosyne?
-do honour delete media events under sync, by checking if there are no later
'added_media' events with the same file.
-when converting f2b to map through the card browser 'change card type',
check if it's at all possible to convert (enough fields), before showing
correspondence dialog.
-with full sync, option to skip media sync
-Possible to get rid of unloading in python / reloading in Qt?
-speed up science log parser?
http://lesswrong.com/r/discussion/lw/ivw/what_should_normal_people_do/9yuy
suggests that there's some SQLite3 functionality relating to the
'union' operator which could massively speed up insertion, pointing to
http://stackoverflow.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-a-time-in-an-sqlite-database_is_
-optimise away DISTINCT and do it at the python level
-more sqlite profiling
!./bin/python /home/pbienst/apswtrace.py ./bin/nosetests -v tests/test_sync.py:TestSync.test_add_tag
-archive old learning data, check interplay with sync
-index on cards._fact_id to speed up e.g. sister_card_count_scheduled_between?
-profile different versions of sister_card_count_scheduled_between
-try apsw again, but make sure every statement is inside a transaction
-save cookies
http://stackoverflow.com/questions/3382640/how-can-i-load-session-information-into-qtwebkit
-Jiri Palacek: conflict resolution at card level, e.g. if 1 card causes
conflict, but both database a and b have different non-conflicting new cards,
merge the non-conflicting cards ond keep one of the conflicting version.
-add debug information for conflict detection?
-automatic font size adjustment:
http://www.spookandpuff.com/examples/dynamicTextSize.html
-synonym checking just like duplicate checking?
-option to pick location of backups in config? Also shows you where the datadir
is. Backup config too? Or explicit 'backup' option?
-bundle grades criterion? add criterion names i.e. type. Fix bug saving sets.
Other mechanism to skip scheduled cards? What happens to saved set after
disabling plugin?
-integrate with forvo
-insert latex tags shortcut and menu (phyTech)
-plugin for interval multiplication factor
-when exporting, progress bar when creating latex?
-add up and down arrows on browsing through the preview window?
-remove TMP adding of default o_id in sync
-circadian rythm plugin
-bundle more of the example plugins?
-'duplicate card' option in menu and browser? Or as plugin?
-default input method/keyboard layout per field?
-remove hack to preview cloze cards in card type appearance.
-plugin to reset active cards to unlearned
-make statistics refer to active cards only. Profile. (Dan Schmidt)
-add plugin example on card type specific renderer
-add doc on how to write plugin to sfinx doc
-leech detection
-Faq about how to pronounce Mnemosyne
-Optimisation: Adding a tag to a set of cards which already have this tag
generates unneccesary log events
-card appearance: show preview live?
-store all xml as debug information during sync?
-find and replace in card browser
-way to escape [] in latex cloze cards, so as not be interpreted as cloze?
-docs on dealing with synonyms and words which have multiple meanings
(if implemented, update card converter too) check fonts for new meanings,
check decorators
-removing plugin with criterion should not happen if it is in use.
-warn when syncing and the other criterion plugin is not present?
-make 'grade activity criterion' an official plugin? Add tests?
-hook up all dialogs in UDP
-pinyin sort
-scrape from websites: https://bitbucket.org/nosklo/supymemo/downloads
-also allow scrolling webview widgets using up and down keys? Will probably
require global event filter and slow everything down
-install kde translator to translate file dialogs and color dialogs
-different translators for different users?
-drag and drop in card browser, within tag tree
-worthwhile to apply same tricks from card browser to criterion applier, i.e.
inverting selection to go from 'in large set' to 'not in small set'?
Max time 0.6 secs, so perhaps not needed that much
-condition coverage
http://lautaportti.wordpress.com/2011/05/07/test-coverage-analysis/
-have hierarchy in plugin names
-heising card type (radical, number of strokes)
-http://www.mblondel.org/journal/2008/08/01/web-canvas/
-infrastructure to make it easier to type certain symbols
-zooming on statistics?
-minimalist mode, without toolbar, extra text in review window.
F11 to move fullscreen
-partial implementation of type answer (none/all/special tag? Db Attribute?
Button?)
-draw answer, make configurable by card type
-more plugin examples: file format, custom tag, activate all cards,
last grade filter
-if dialog like edit card or browse cards is open on server, try to close it
when sync comes in?
-when pasting from a webpage, font formatting in 'add cards' is inconsistent.
-copy card and create a new one that way
-explain license on our website
-make filters more efficients by using regex instead of loops.
-easier function to do tag detection in plugin
-join add tags/remove tags in a single dialog? http://bit.ly/oOK27n
-Cramming scheduler changes card on heartbeart. Make something like
'reset_and_add_current_card_to_queue_if_needed'?
-when deleting cards, only mention sister cards if there are actually sister
cards
-allow users to show/hide/rearrange columns
-show full text on mouseover in case text does not fit in column
-integrate sqlite with ICU for unicode/chinese sorting:
http://stackoverflow.com/questions/611459/how-to-sort-text-in-sqlite3-with-specified-locale
-ellisis in QTextDocument in card browser?
-rewrite card browser in C++, or at least delegate? In that case, move
question and answer gettingto data, and eliminate the text colors at selection
using Qt.
-inline editing in card browser?
-editing names of card type clones, also in browser
-"Browse Cards" dialog box. "Preview card" option should have a keyboard
shortcut.
-option purge history, refactor logging test. Should only happen in no other
sync partners are interested in it
-synchronise history folder to guard against mobile clients not uploading their
logs, even though they set upload_logs=True?
-skritter/cpod interop mail
-better supermemo import
-API for statusbar widgets
-detect wrong current date (last review in the future or way past)
-improve sphinxdocs: autoclass='both', document module members
-show latex errors in GUI?
-hover over extra hanzi information, hanzi statistics
-plugin for midi files
-chinese pod plugin
-"reschedule" cheating plugin
-improve learn ahead, by learing ahead per day and prioritising within each day
-http://lost-theory.org/python/ltchinese/
-download media files when giving URL
-synonym handling plugin?
-regular expression search?
-add 'add card' option to deck manager?
-animated strokes: http://lost-theory.org/ocrat/
-congratulations screen
-scheduler with minute granularity?
-change file suffix when changing export format
-sound recorder
-store _fact_ids_learned in config, such that they persist over sessions?
-paste from clipboard
-font and color comboboxes instead of dialogs in card appearance?
-preselect all in some text fields, so that the users can start typing
immediately
-feedback about uploads in GUI / add time-out
-drag and drop of pictures, sound files
-autoupgrade, or at least notify of available upgrade (needs a separate thread)
-undo last grade + keyboard shortcut. Disable undo after logs have been purged.
or through SQL checkpointing after changing isolation level?
-http://labs.trolltech.com/blogs/2009/03/12/wysiwyg-html-editor/
-research papers: http://act-r.psy.cmu.edu/people/index.php?id=11
-Refactor build process so that all files/directories created by
`make setup`, `make`, `make test`, and `make coverage`, etc, all
end up under a single 'build' directory. See https://goo.gl/Nrd5nz
Multiuser statistics analysis:
-break out card id strings to a different table and use integer _id in the
rest of the database to save space
-move times from a later start date to save space?
-investigate origin of ._ logs
-don't do card checks for post 2.0
Design warts:
- config storage, is now scattered over 3 places (config.db, config.py,
database.db). At least config.py should go and be replaced by an
advanced settings menu. Document a standard way for plugins to
save settings. Rework everything better in the sync protocol.
Other issue related to storage is that built-in CardTypes like Sentence cannot store extra_data, so we resorted to e.g.
storing the language info in config.db
- related: config().card_type_property(): refactor to be members of card_type as
opposed to of config.py