Commit graph

571 commits

Author SHA1 Message Date
Damien Elmes
11cd9af5ca commit before attempting to change page size 2009-03-15 01:48:51 +09:00
Damien Elmes
bc7b4e4d18 remove tag replace from find&replace 2009-03-14 11:11:02 +09:00
Damien Elmes
fc66e909ae make sure to copy tags on saveas 2009-03-14 10:19:29 +09:00
Damien Elmes
b4b01f9fc4 fix initial tag setting when adding cards 2009-03-14 10:06:22 +09:00
Damien Elmes
f14ad8521d update initial tag priorities when creating deck 2009-03-14 10:02:25 +09:00
Damien Elmes
9eca0221f1 reset undo on check db 2009-03-14 09:42:42 +09:00
Damien Elmes
440321459a take out an exclusive lock on the deck 2009-03-14 09:38:58 +09:00
Damien Elmes
52cfef6e6c remove trailing undo barrier on end 2009-03-14 05:23:59 +09:00
Damien Elmes
0743f87187 add progress information to deck upgrade, fix legacy file format = 1 2009-03-13 05:36:44 +09:00
Damien Elmes
b527d31499 fix the review history growing bug properly 2009-03-12 17:21:11 +09:00
Damien Elmes
004030af0d don't fail if progress handler unavailable or tags table existing 2009-03-10 23:38:29 +09:00
Damien Elmes
c266248edb fix review early bug, update indices on deck load 2009-03-10 12:28:36 +09:00
Damien Elmes
343b76da05 if utc offset is 24, set new utc offset and rebuild 2009-03-10 07:38:59 +09:00
Damien Elmes
fa513cab72 remove duplicates from review history 2009-03-04 12:10:50 +09:00
Damien Elmes
4763e41180 add/delete tags should update card ids, not fact ids 2009-03-04 11:59:34 +09:00
Damien Elmes
da3d25e2d6 bulk delete cards when template deleted, add progress info on field delete 2009-03-04 11:52:41 +09:00
Damien Elmes
9d16b89c7d refresh after add/remove tags, don't use comma 2009-03-04 11:45:54 +09:00
Damien Elmes
32c621de32 fix low priority support 2009-03-04 10:58:44 +09:00
Damien Elmes
1234420cb7 add tags based on user's priorities 2009-02-28 16:57:11 +09:00
Damien Elmes
83e27a12ce fix extra suspend tags 2009-02-26 00:49:54 +09:00
Damien Elmes
0ffc634094 update on openSession() 2009-02-26 00:11:37 +09:00
Damien Elmes
14bb30becb expire after delete 2009-02-24 13:03:27 +09:00
Damien Elmes
529ddef63a max=0 to progress support 2009-02-24 01:12:37 +09:00
Damien Elmes
7026ef9bd8 update card tags after model changed 2009-02-24 00:13:32 +09:00
Damien Elmes
7a12888eb2 report new cards as new always, make sure they come before vhp if 'show first' 2009-02-21 18:23:55 +09:00
Damien Elmes
12f73ef52a fix priority rebuild 2009-02-21 18:05:29 +09:00
Damien Elmes
3878a3eef2 allow partial priority rebulid for activeTags, speed up db with cache/page size 2009-02-20 17:25:41 +09:00
Damien Elmes
0d2429bee8 fix updatePriorities(), etc 2009-02-20 00:14:04 +09:00
Damien Elmes
780010ad68 fix unit tests, turn off some debugging 2009-02-19 17:27:13 +09:00
Damien Elmes
e4354181c4 db progress handler, work on tag cache 2009-02-19 16:01:04 +09:00
Damien Elmes
deffd752c5 fix failed card policy being set as custom 2009-02-17 23:20:05 +09:00
Damien Elmes
0dfe83cd85 refresh deck after model change 2009-02-15 20:33:07 +09:00
Damien Elmes
58fd0f253c add cloneFact() back, it's still used by previewing 2009-02-15 15:49:04 +09:00
Damien Elmes
e3805476af remove obsolete cardsDueSoon 2009-02-14 22:21:06 +09:00
Damien Elmes
deed322c53 only bump deck mod time if there were reviewed-ahead cards 2009-02-14 20:09:50 +09:00
Damien Elmes
c81098c037 check due after resetting early 2009-02-14 20:08:40 +09:00
Damien Elmes
724c1354a8 return number of changed facts in find&replace 2009-02-14 01:11:27 +09:00
Damien Elmes
8892ad9f90 expire instead of expunging 2009-02-14 00:12:28 +09:00
Damien Elmes
f6b24b6d9a find&replace 2009-02-13 21:38:11 +09:00
Damien Elmes
231b5fe9e7 only use failedcardmax with 'soon' failed card setting, fix tag unit test 2009-02-10 13:22:45 +09:00
Damien Elmes
55cf34e8ee make sure card model tags are included in allTags(), fix upgrade code 2009-02-09 20:21:34 +09:00
Damien Elmes
6d7ef66640 more upgrade fixes 2009-02-08 04:54:59 +09:00
Damien Elmes
fa1713e9ee fix upgrade code 2009-02-08 04:36:27 +09:00
Damien Elmes
9b4da171fe accept kwargs in tagslist 2009-02-08 03:21:16 +09:00
Damien Elmes
d127ae4175 separate tags with spaces 2009-02-08 03:13:37 +09:00
Damien Elmes
28f738f069 tweak order of failed card options 2009-02-07 21:34:46 +09:00
Damien Elmes
a342c73887 improve failed card handling 2009-02-07 21:31:44 +09:00
Damien Elmes
3b2ba252cd remove debugging code 2009-02-07 16:21:25 +09:00
Damien Elmes
50e9885c15 faster allTags() 2009-02-07 14:55:48 +09:00
Damien Elmes
d35320364a add progress bar for deleting cards 2009-02-06 19:30:39 +09:00
Damien Elmes
4d4e7afcff add undoredo hook 2009-02-06 19:12:03 +09:00
Damien Elmes
09dbbecf3a fix suspended card msg when review early term early, tweak fin msg 2009-02-06 15:59:35 +09:00
Damien Elmes
8c9803e638 dynamic index generation, sort new in rev order 2009-02-06 01:28:21 +09:00
Damien Elmes
b91b458c6d Reverting "add 'make due now' option" 2009-02-05 16:41:57 +09:00
Damien Elmes
45829f9acc add 'make due now' option 2009-02-05 11:58:10 +09:00
Damien Elmes
3a1c79e1ce only update priorities on due cards 2009-02-05 00:52:05 +09:00
Damien Elmes
608b899e58 bugfix for change model 2009-02-04 22:05:16 +09:00
Damien Elmes
e2676c238f tweak review order wording 2009-02-04 21:55:51 +09:00
Damien Elmes
ca8e592840 handle x->y & y->x in card model rename, big speed increase for update qa 2009-02-04 21:46:14 +09:00
Damien Elmes
d44c3792e9 model changing support 2009-02-04 20:43:54 +09:00
Damien Elmes
b2832b2363 get rid of spaces in congrats 2009-02-02 15:35:34 +09:00
Damien Elmes
40ed30b4ea don't show spaced cards notice if no new cards are left 2009-01-31 03:58:58 +09:00
Damien Elmes
479f38fab2 background colour, reduce default spacing to a minute, tweak finished msg 2009-01-31 02:18:46 +09:00
Damien Elmes
275d962cb4 make sure not to create undo log on new deck 2009-01-27 03:09:12 +09:00
Damien Elmes
c1e5e657b6 cards>interval in docs 2009-01-24 04:17:03 +09:00
Damien Elmes
a6b4252428 fix graph dividing, make sure to display 'x cards waiting' msg 2009-01-22 23:47:31 +09:00
Damien Elmes
94184cbdf5 unset typeanswer on upgrade 2009-01-21 21:23:08 +09:00
Damien Elmes
913fe96c07 ignore priority when reviewing early 2009-01-21 15:48:09 +09:00
Damien Elmes
222503ea8f store field to compare against in type answer 2009-01-21 01:43:23 +09:00
Damien Elmes
28b0a7b8d3 rescheduling support 2009-01-21 00:27:04 +09:00
Damien Elmes
098cc98471 translation patches from Piotr 2009-01-20 23:33:50 +09:00
Damien Elmes
bebac30811 hide status if deck integrity bad 2009-01-20 23:31:50 +09:00
Damien Elmes
1da037ba90 more polish translations and bugfixes from Piotr Kubowicz 2009-01-18 14:48:07 +09:00
Damien Elmes
835b4b5969 make sure learn ahead only looks at review cards 2009-01-17 19:04:26 +09:00
Damien Elmes
c1d778971f always fix current model problem 2009-01-17 16:41:10 +09:00
Damien Elmes
75d6123dc3 identify temp files as anki, quiet lame 2009-01-17 16:29:45 +09:00
Damien Elmes
334d126237 recording & noise profile support on linux 2009-01-17 01:05:39 +09:00
Damien Elmes
f515a6c5f9 more precision on undo progress 2009-01-16 21:24:26 +09:00
Damien Elmes
6015dbec04 add progress to export, speed up export, tweak undo progress 2009-01-16 19:23:23 +09:00
Damien Elmes
87fbd896fc fix undo bugs, add progress, improve progress of check media db 2009-01-16 18:54:32 +09:00
Damien Elmes
240d311ca0 optimize add/deleteTag(), add progress callbacks and check (media) db 2009-01-16 18:17:36 +09:00
Damien Elmes
8bd84d4dfe better learn-ahead handling 2009-01-16 16:24:38 +09:00
Damien Elmes
fe17d6c53e improve upgrade code 2009-01-16 13:14:40 +09:00
Damien Elmes
3670a0cb7b review early, learn more, tweak finished msg 2009-01-15 04:37:27 +09:00
Damien Elmes
93332079b5 add model copy support 2009-01-14 15:28:27 +09:00
Damien Elmes
8e71b5fbbf add change card model, fix bug in check db 2009-01-14 14:10:07 +09:00
Damien Elmes
6e63bdfc7c make sure runHook is imported 2009-01-07 18:49:12 +09:00
Damien Elmes
f87c02f7a4 run deck closed hook in libanki 2009-01-07 12:48:44 +09:00
Damien Elmes
8dfeb01de6 remove superfluous statement 2009-01-07 12:32:26 +09:00
Damien Elmes
7c764763d2 sqlalchemy 0.5 compat 2009-01-07 11:37:01 +09:00
Damien Elmes
afa9565d12 make sure to copy media table on saveas 2009-01-07 09:47:54 +09:00
Damien Elmes
57a49e9b08 fix ordering, add index 2009-01-07 09:25:42 +09:00
Damien Elmes
f60a536159 record last session start 2009-01-07 08:51:27 +09:00
Damien Elmes
7ad0e99b59 fix problem with null card model props 2009-01-06 12:16:32 +09:00
Damien Elmes
36ae6df933 default to a ten minute session 2009-01-06 09:15:57 +09:00
Damien Elmes
68b7991492 fix default session limits 2009-01-05 17:06:56 +09:00
Damien Elmes
36a715fd17 add type in answer support 2009-01-05 15:38:26 +09:00
Damien Elmes
2319cbcc71 timeboxing, delay lapsed 2009-01-05 13:41:19 +09:00
Damien Elmes
7e74fe3844 fix media dir problem on win32, fix unicode issues with media 2009-01-05 08:20:49 +09:00
Damien Elmes
2aecbffafe fix backup on win32 2009-01-05 06:51:47 +09:00
Damien Elmes
8750b9bbbb don't convert to system encoding prior to converting to utf8 2009-01-05 06:40:08 +09:00
Damien Elmes
91e90d8092 card model > card template 2009-01-05 06:10:10 +09:00
Damien Elmes
e3feff6ca6 revert undo log to temporary table, fix slowdown on big undo log 2009-01-04 13:48:48 +09:00
Damien Elmes
5efb6910ef fix name() on in-memory db 2009-01-04 08:05:42 +09:00
Damien Elmes
0f129f7aea fix saveas with no media dir 2009-01-04 07:43:45 +09:00
Damien Elmes
9765fdae73 support media for memory backed files 2009-01-04 07:40:32 +09:00
Damien Elmes
c973c1eb4f new decks now default to in-memory storage until saveas
- undo needs fixing
- media support needs to be changed to work with in-memory db
2009-01-04 07:13:30 +09:00
Damien Elmes
a5d64aaa7f make sure allowEmptyAnswer is a bool 2009-01-04 05:30:15 +09:00
Damien Elmes
ee71c66cdb document need to call refresh after merging models 2009-01-04 05:17:58 +09:00
Damien Elmes
429e4252cb delete undo log outside of session 2008-12-27 16:14:43 +09:00
Damien Elmes
c0f49f1373 delete undo log and vacuum on close 2008-12-27 15:57:30 +09:00
Damien Elmes
b3be3772fb change to media dir when it's created 2008-12-24 14:58:17 +09:00
Damien Elmes
95f1779130 make undo log permanent 2008-12-23 22:09:33 +09:00
Damien Elmes
ac15b666ef untitled>mydeck, don't remove on saveas 2008-12-23 20:38:19 +09:00
Damien Elmes
48257368cc make sure congrats screen is displayed using standard whitespace 2008-12-23 18:48:42 +09:00
Damien Elmes
3b3fef4ebc refactor latex into media support 2008-12-23 18:00:12 +09:00
Damien Elmes
41fe0c92be rename function 2008-12-23 15:44:29 +09:00
Samson Melamed
9a9082529b mass un/tagging now updates modified cards 2008-12-23 15:43:58 +09:00
Damien Elmes
75dd6d4420 update card models table earlier in deck open 2008-12-23 15:38:36 +09:00
Damien Elmes
f903288c59 add support for 'allow blank answer', default to allow 2008-12-23 13:42:22 +09:00
Damien Elmes
1ee40d0869 update new card order label 2008-12-20 15:41:01 +09:00
Damien Elmes
943e006322 support new cards first 2008-12-20 15:37:42 +09:00
Damien Elmes
cb765bcb72 deck stats should show all new cards, not just due 2008-12-17 00:41:13 +09:00
Damien Elmes
daeba6f78b fix a problem saving over a deck with an existing media folder 2008-12-13 16:44:59 +09:00
Damien Elmes
f1a2fc7feb new failed card eta from nick cook 2008-12-13 15:25:43 +09:00
Damien Elmes
33257c38bc close deck after copy in saveas 2008-12-11 01:14:02 +09:00
Damien Elmes
071d861c3e fix congrats new cards link 2008-12-11 00:37:55 +09:00
Damien Elmes
5dc05735c5 rename default deck to untitled, delete on saveas 2008-12-11 00:19:19 +09:00
Damien Elmes
e1aa79336c show only user tags by default, provide model and card model as options 2008-12-10 20:05:49 +09:00
Damien Elmes
2d5e58ac99 routines for determining current new/rev card order 2008-12-10 18:03:34 +09:00
Damien Elmes
78a15ab652 update priorities when adding/removing tags 2008-12-09 01:57:28 +09:00
Damien Elmes
c3c7c6e43c flush after delete 2008-12-09 01:23:49 +09:00
Damien Elmes
8c9f883e68 dupe fact on add to avoid session issues 2008-12-07 11:38:35 +09:00
Damien Elmes
02a124b66d thinko in last change 2008-12-06 17:17:55 +09:00
Damien Elmes
d480e42f55 rebuild counts after undo, rebuild counts more efficiently 2008-12-06 16:13:34 +09:00
Damien Elmes
4b19cff16b 30 backups, not 100 2008-12-05 18:57:47 +09:00
Damien Elmes
0c5f65c1ea after deleting a field, make sure to update card models 2008-12-05 18:51:38 +09:00
Damien Elmes
5e5381d66f make sure to update counts after addcards() 2008-12-04 01:50:52 +09:00
Damien Elmes
02e1fed2ef behave nicer if undo disabled 2008-12-04 01:14:11 +09:00
Damien Elmes
78f3c8b4ba refresh after undo 2008-12-04 00:55:51 +09:00
Damien Elmes
21b59408cd refactor features to use hooks, update stdmodels, update findTags()
- remove description from fields, cards and models
- remove features and use field names instead
2008-12-03 19:22:15 +09:00
Damien Elmes
e84c0072b0 don't commit deck on load if count hasn't changed 2008-12-03 02:06:58 +09:00
Damien Elmes
ada1cd04b7 check for null sources 2008-12-02 16:41:25 +09:00
Damien Elmes
0f8762c3fe forget deletions before deleting anything in fixIntegrity() 2008-12-01 12:51:35 +09:00
Damien Elmes
bf10f96cc2 python 2.4 compat 2008-12-01 01:37:54 +09:00
Damien Elmes
a7a40bd241 disable undo debugging 2008-12-01 01:07:34 +09:00
Damien Elmes
55df77e0d1 handle unique better 2008-12-01 01:00:01 +09:00
Damien Elmes
a83b41b939 add most of fieldmodels 2008-12-01 00:25:51 +09:00
Damien Elmes
0ff3b41745 don't add layers of undo barriers 2008-12-01 00:17:43 +09:00
Damien Elmes
320d1fa758 conditionally enable undo 2008-11-30 05:47:15 +09:00
Damien Elmes
373e161a6c undo/redo support 2008-11-30 05:40:36 +09:00
Damien Elmes
dff358383a consider failures when calculating eta 2008-11-28 20:01:48 +09:00
Damien Elmes
cd64b0db9e add user tags list, sort tags in canonify 2008-11-28 18:53:04 +09:00
Damien Elmes
8f2efd83b3 fix ref to traceback, make sure to only delete existing indices 2008-11-28 17:15:22 +09:00
Damien Elmes
5119e46e7b replace add missing active cards with selectable version 2008-11-28 17:13:47 +09:00
Damien Elmes
8147e5002a update indices, make sure to build and analyze 2008-11-28 15:47:52 +09:00
Damien Elmes
0b52e2f0ec customizable revision order, refactor failed cards handling 2008-11-28 15:09:13 +09:00
Damien Elmes
75a61a00cc remove card tags 2008-11-28 14:40:27 +09:00
Damien Elmes
e5126d7c3c preview support 2008-11-23 07:50:31 +09:00
Damien Elmes
6299e5f665 close other windows on reset() 2008-11-22 16:17:13 +09:00
Damien Elmes
fbcdae4c51 make 2->3 work better for larger 2 2008-11-21 20:39:44 +09:00
Damien Elmes
447985fc87 update q/a cache after bulk tag update 2008-11-21 16:05:39 +09:00
Damien Elmes
0617e229a8 don't catch error reading deck 2008-11-21 15:35:44 +09:00
Damien Elmes
f49459fdfb del missing error ref 2008-11-21 13:08:24 +09:00
Damien Elmes
eff388974b refactor errors on load 2008-11-21 13:03:27 +09:00
Damien Elmes
cd383174c6 fix handling of delay1/2 2008-11-17 10:55:33 +09:00
Damien Elmes
1b69992e8f fix getCards() new card handling logic 2008-11-17 09:53:17 +09:00
Damien Elmes
9bbb240d37 fix order of cards table to fix saveas bug 2008-11-17 08:46:04 +09:00
Damien Elmes
f1d61bc832 create intermediate dirs (for ipod) 2008-11-16 04:37:14 +09:00
Damien Elmes
26ad7e8149 rebuild due counts after sync 2008-11-16 04:20:14 +09:00
Damien Elmes
e09a29fe0e fix delay defaults 2008-11-16 02:38:48 +09:00
Damien Elmes
8ec77ebd53 add alternative failed card handling 2008-11-16 02:15:00 +09:00
Damien Elmes
420fd4ec77 refactor deck/backup location 2008-11-16 00:36:27 +09:00
Damien Elmes
d2ee2521bd if there's an error upgrading, try fix integrity and try again 2008-11-15 20:12:14 +09:00
Damien Elmes
9b25fcc7a2 always generate deck queue 2008-11-15 18:58:42 +09:00
Damien Elmes
48dc09db5b add relativeDelay on upgrade - we don't need it, but old code does 2008-11-15 18:38:17 +09:00
Damien Elmes
4316c93b79 don't dirty cards when upgrading 2008-11-15 18:19:01 +09:00
Damien Elmes
095aa6dc84 check daily stats in check due, no need to call separately 2008-11-15 17:56:54 +09:00
Damien Elmes
4e937bf72a fix seen card count in kanji, fix display bug 2008-11-15 17:50:46 +09:00
Damien Elmes
80fb6c5230 check due before rebuilding counts 2008-11-15 17:44:46 +09:00
Damien Elmes
6ec7fba13f catch errors adding columns 2008-11-15 17:38:35 +09:00
Damien Elmes
cdce18f5c0 set new card modulus on new cards at end deck 2008-11-15 04:56:52 +09:00
Damien Elmes
91114a72c5 no tag searching, add index to db.py 2008-11-14 19:48:47 +09:00
Damien Elmes
6658b47661 add capitalized tags field, don't use cardmodelname in tags 2008-11-14 14:33:11 +09:00
Damien Elmes
2aaaa2d4ad change default deck location 2008-11-14 01:58:42 +09:00
Damien Elmes
f64a5c4b51 tidy 2008-11-13 17:42:45 +09:00
Damien Elmes
61972d32d7 remove 'tomorrow' special case, add boost for initial 2 2008-11-13 17:16:27 +09:00
Damien Elmes
b6471b15e8 support short eta, don't send same factId in getCards() 2008-11-13 12:43:51 +09:00
Damien Elmes
5eae130b29 capitalize tomorrow 2008-11-13 03:31:38 +09:00
Damien Elmes
07956d9e24 new bulk card handling, fix count bugs, next int generation 2008-11-13 03:19:19 +09:00
Damien Elmes
ca413a1a88 apply missing merge from master 2008-11-12 18:46:08 +09:00
Damien Elmes
e9dc034b9a add refs to relativeDelay again 2008-11-08 20:05:39 +09:00
Damien Elmes
6cb968c10a fix bugs in merge, fix slow spacedCardCount() 2008-11-08 17:41:40 +09:00
Damien Elmes
014896478f Merge branch 'master' into htmlcache
Conflicts:

	anki/deck.py
2008-11-08 17:26:45 +09:00
Damien Elmes
4558a36d3a obsolote relativeDelay in favour of interval desc, should fix ubuntu too 2008-11-08 16:30:41 +09:00
Damien Elmes
b2d0e5d3df wip 2008-11-07 18:44:49 +09:00
Damien Elmes
e066ea3681 optimize for large number of new cards 2008-10-23 02:24:05 +09:00
Damien Elmes
3d026bb882 make 2 progress too 2008-10-20 20:19:00 +09:00
Damien Elmes
c0e5bed6a6 sync sources, support media syncing in import/export again 2008-10-18 20:20:43 +09:00
Damien Elmes
06799ad300 refresh in different place 2008-10-16 00:41:30 +09:00
Damien Elmes
12e4953dc9 add short interval alternatives 2008-10-16 00:02:34 +09:00
Damien Elmes
1eb20be6e3 make sure to consider tags when checking if cards empty 2008-10-13 23:11:36 +09:00
Damien Elmes
3933e14c1b default to new cards in order 2008-10-13 17:53:12 +09:00
Damien Elmes
8ea5f06ea6 fix bug in conditional card generation 2008-10-12 07:08:57 +09:00
Damien Elmes
189ca06492 remove debug statement 2008-10-12 03:49:08 +09:00
Damien Elmes
225e31f470 conditional card generation 2008-10-12 03:42:52 +09:00
Damien Elmes
2a3f653d0e possible fix for add cards error 2008-10-12 03:21:53 +09:00
Damien Elmes
838ed803f7 prevent merging/deletion of public models, add source id 2008-10-12 02:59:31 +09:00
Damien Elmes
e25feed0af support 4am rollover 2008-10-12 04:02:33 +09:00
Damien Elmes
23379cd600 get rid of 'deck is empty message' 2008-10-12 00:19:58 +09:00
Damien Elmes
e40cdb9608 default to 10 minutes for ease 1 2008-10-07 01:12:06 +09:00
Damien Elmes
e69522f120 ensure order of received cards 2008-10-06 18:41:50 +09:00
Damien Elmes
472eb4581a public decks wip 2008-10-04 14:48:23 +09:00
Damien Elmes
4434665d94 add safety check to interval calcuation 2008-10-03 18:13:01 +09:00
Damien Elmes
1561655461 start of one way syncing 2008-10-02 17:57:44 +09:00
Damien Elmes
6d721a3d86 fail gracefully if id doesn't exist 2008-10-02 17:08:00 +09:00
Damien Elmes
85c72a9ddb forget deletions in integrity check 2008-10-01 03:16:52 +09:00
Damien Elmes
35fc4fbd3f track full card time, not just question. use failed cnt for average 2008-09-29 14:15:46 +09:00
Damien Elmes
b43bba1d46 only remove session if currently active 2008-09-28 16:16:06 +09:00
Damien Elmes
6bb24d8a16 delete session before closing deck 2008-09-28 16:12:05 +09:00
Damien Elmes
5da3a0f5d3 initial commit from hg 2008-09-27 23:50:03 +09:00