File: TODO

package info (click to toggle)
mnemosyne 2.6.1+ds-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 8,268 kB
  • sloc: python: 32,145; ansic: 837; xml: 625; makefile: 249
file content (552 lines) | stat: -rw-r--r-- 20,250 bytes parent folder | download | duplicates (2)
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
Android:

-look into fixes reported by dashboard
-integrated error reporting:
https://developers.google.com/analytics/devguides/collection/android/v4/exceptions
http://stackoverflow.com/questions/11552963/how-to-get-crash-dialog-with-report-button
-check 'redraw now'
-Cramming widget for Android
-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?

check into automated import of translations

if pyinstaller has been updated: upgrade PyQt5

Minor bugs / issues:

-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
-update dev instructions linux, windows
-run tests in different threads
-make sure initial settings are synced using binary sync.
-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
-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
-sync failed because of version mismatch seems to result in requirement for
 full sync?
-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:

-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)



-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)


-drawing canvas Gnome

-disable vocalisation, but only when not showing answer
 jonas.vonderhagen@gmail.com

-Qt's own translation

-Qt SDK: back to webkit? https://github.com/annulen/webkit
 https://github.com/annulen/webkit/releases
 Make use of 'print to pdf' for resizing?
 custom context menu
 open links in external browser, QWebEnginePage::acceptNavigationRequest()

-speed up non-latin font size increase

-memrise importer

-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