~kevang/mnemosyne-proj/grade-shortcuts-improvements

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
archiving old log:

* include machine id in log name?
* add testcase
* include syncing
* how to handle full sync
* run automatically


Android:

-double check what happens if you have no saved sets
-revisit multiple database option?
-set default grade
-check 'redraw now'
-check functionality for map card types

-check syncing with old server does not seem to fire

-gestures
-'sync' button should sync directly without going through the sync settings dialog. Put
 the settings in a settings window instead.
-option to globally increase / decrease font size with respect to desktop
-custom fonts?


-creating a new clone does not generate appearance setting events for sync

-prevent holding of number keys to register as two keypresses (Killian Evang)

-duplicate check on answer too? Needs to check whether all necessary fields are marked as unique,
 also in F2B and B2F, vocabulary
 
-fix multiple audio files and start/stop (Ansgar Bohmann) 

-better in dialog explanation for hold n cards in your hand?

-option to turn off card count per tag?

-windows 'python setup.py install': missing share locale path when starting configure
-profile testsuite

-remote webserver sometimes does not want to send multiple pictures
-sometimes, need to click website buttons twice

-merging cards: should give an option to go back and edit?

-sometimes adding and deleting a card gives a wrong id for the deleted card in the log?

-add login to webserver?

-running a headless sync server in an empty datadir does not create a default database.

-a crash during a full sync can lead to 'sync cycle' detected

-starting the program when no cards are shown does not draw a border around the
 Q field
 
-reverse arabic plugin no longer seems to work?
 http://mpcabd.igeex.biz/python-arabic-text-reshaper/
 
-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
-layout of "add clone" is not optimal under Windows
-splitters on XP are not visible
http://stackoverflow.com/questions/2545577/qsplitter-becoming-undistinguishable-between-qwidget-and-qtabwidget

-if the sync changed the appearance settings, the current card's question still
 shows the old appearance
 
-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.

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

-why trying new fonts, sometimes the fonts get automatically accepted even
 when clicking 'cancel'?

-mass convert to cloze

-website font size under windows

-move to qt5?

-profile test suite



-make sure the mobile client can work without all the statistics (60 mb file
 takes 10 seconds to backup on a N7)

-cloze deletion in combination with latex or html does not pick up any open
 environments
 
-check past schedule info when changing a lot between card sets

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

-unlearned cards can be listed as overdue in the browser

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

-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
 and 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?

-When making a changes in the selection in the (de)activate dialog, the warning
 that you have learned 15 cards does not show

-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?
-criterion to select last X added cards, useful for cramming

-apply button on edit window as called from the card browser?

-don't switch to text entry field when changing card type with the keys.

-plugin for card types with prefilled data?

-merge translations (del en_gb, am, vi)


-add idea for plugin to export today's audio

-check sync timeout when both client and server check for updated media files.
 (was 10, is now 30)
 
-integrate with forvo.com?

-insert latex tags shortcut and menu (phyTech)

-errors in scripting engine related to main_widget

-replace locking mechanism by switching to running instance of Mnemosyne?

-plugin for interval multiplication factor

-make doc: errors related to _

-card templates?

-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

-if last card had unequal split, learn ahead of schedule message does not go
 back to 50/50 split.

-fix race condition in test_sync where dot_sync_test does not get created

-circadian rythm plugin
-plugin to move basedir to dropbox?
-bundle more of the example plugins?

-'duplicate card' option in menu and browser? Or as plugin?


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

-default input method/keyboard layout per field?

-remove hack to preview cloze cards in card type appearance.

-plugin to reset active cards to unlearned

-really fix sync test suite races: after first client request fails and client
 goes to sleep, sometimes server cannot create socket.

-make statistics refer to active cards only. Profile. (Dan Schmidt)

-Windows makefile: ln -s pyuic4.bat pyuic, full path to python, py2exe needed, rename mnemosyne to mnemosyne.py, numpy
-py2exe: downloads 64 bit by default
-py2exe: download: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
-put __init__.py in numpy.distutils.test
-set default matplotlib backend: http://www.py2exe.org/index.cgi/MatPlotLib
-run test suite under windows
-document on how to make mnemosyne scripts run on Windows

-add plugin example on card type specific renderer
-add doc on how to write plugin to sfinx doc

-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? Windows: progress bars for sync often crash when they get called too quickly
 (reproduce: download_binary_database for HTTP 1.0)
-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? preview dialog does not pass on keypressevents it does not handle
-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


-coverage bug?: default_controller().sync() does not seem to get picked up.

-leech detection

-adding facts with strange characters (e.g. chr(1) from TRS) trips up the sync
 protocol

-text to speech plugin google

-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

-http://gitorious.org/hooq/hooq? Qt4 testing
 http://www.fredemmott.co.uk/blog/2010/01/18/Qt4%20GUI%20Testing%20with%20Hooq

-Select saved set, switch tab to other criterion (deselects set) and switch back to original one.
 The set should then be autoselected again.
-being able to edit existing set, replace input box by combobox with old sets
-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?

-integrate webserver in GUI, login mechanism, session_token, cookies
-add webserver in testsuite, case when the database is empty
-make empty lines respect font size

-card formatting options on remote web server: act on config info that the client sent across
 Add hook in set_partner_info
-check if online username is still free
-threading/multiprocess for sync and review servers? Threading prob. works automatically if persistent
 connections are supported (CherryPy), perhaps also for multiprocess. Multiprocess probably only useful
 to get round the GIL, which is only useful on a dedicated server.
-sync to empty webserver (add 'database_is_empty' to server and act upon it)
-add support for error messages on protocol mismatch, expired credit
-add support for render chain selection
-media handler?
-create latex dir in filter plugin?
-media on dropbox?

-drag and drop in card browser, with 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?

-mark/star cards plugin, also on desktop, also with right click
-edit/delete card on right click

-minimalist mode, without toolbar, extra text in review window. F11 to move fullscreen

-move button group in review widget to designer code after pyqt upgrade.
 Also possible in add cards?

-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

-grep through TODO's in source code

-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'?


pylint:
	find ./mnemosyne/libmnemosyne/ -name \*.py | while read f ; do echo $f;pylint $f 2>&1|grep ^E:; done

-compression on backup to reduce write time to SD card?
-move from httplib to urllib2 to make use of automatic proxy detection? However, could have
 an impact on performance/streaming upload.

-if there are actual card based clients, remove pragma: no cover and test these as well

-try adding images to card browser.
http://developer.qt.nokia.com/faq/answer/how_can_i_add_a_non-resource_image_to_a_qtextdocument
using Qwebit http://stackoverflow.com/questions/3142132/how-to-use-a-qgraphicswebview is not
a good alternative, as it does not obey selection coloring
-Tree widgets: save expanded/collapsed state of nodes
-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 getting
 to data, and eliminate the text colors at selection using Qt.
-inline editing in card browser?
-editing names of card type clones, also in browser
-tag browser editor of tag names does not capture focus out event, so card count is not redrawn.
-save selection state (not checkstate) in tag and card type browser through hibernation
-Qt performance problem with selectRow
-"Browse Cards" dialog box. "Preview card" option should have a keyboard
 shortcut.

-send across cards as pictures (see stubs in client.py and server.py). Add resolution to filename? (device rotation)
-Tim's gogorender plugin
-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?
-adding latex cards on non-latex device currently requires 2 syncs with main server to
 show the images

-add media to a card but then abandoning/editing the card keeps the media in
 media directory (they are not referenced in the database, though)

-pythoscope? http://pypi.python.org/pypi/pythoscope/0.2.1
http://pythoscope.org/
-pyflakes?

-prevent presses 2 different keys at the same time

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


-control B format character in supermemo import?

-make autosuggest in tag dialog also work for the second tag after the comma.
 (see calibre implementation)


Multiuser statistics analysis:

-break out card id stringss to a different table and use interger _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

-download media files when giving URL

-webserver: map card type does not really hide the question box, just blanks the question

-synonym handling plugin?

-regular expression search?

-add 'add card' option to deck manager?

-active alert as plugin

-animated strokes: http://lost-theory.org/ocrat/

-congratulations screen

-language text based card types, with 'graduating' from word cards once they are learned enough,
 and only keeping sentence cards (mail by querido, scheduler feedback needed)

-scheduler with minute granularity?

-widget to create new card types. Makes sure the criteria updating code gets called.


* Miscellaneous:

-change file suffix when changing export format

-sound recorder

-store _fact_ids_learned in config, such that they persist over sessions?

-auto identifying similar cards

-clean up interval when importing from txt

-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

-importing cards from rss feed

-swac plugin, smart.fm

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