Commit Graph

428 Commits

Author SHA1 Message Date
Wu Cheng-Han c3a96ff112 Fix migration script of revision lacks of definition of primary key 2017-01-02 11:00:40 +08:00
Wu Cheng-Han 99628a5662 Fix to not use diff_cleanupSemantic, bug report refer to https://code.google.com/p/google-diff-match-patch/issues/detail?id=67 2017-01-02 11:00:08 +08:00
Wu Cheng-Han f6d8e3ab00 Remove LZString compression for data storage 2017-01-02 10:59:53 +08:00
Wu Cheng-Han c904083d1f Remove manual LZString compression for partial socket io event data 2017-01-02 10:52:47 +08:00
bananaappletw 96fb3743f3 Use dburl to configurate 2016-12-22 21:51:48 +08:00
bananaappletw 3a091ff9a5 Simplify code for heroku 2016-12-22 19:42:00 +08:00
bananaappletw acaeef172a Fix #293 2016-12-22 13:23:17 +08:00
Florian Rhiem fdea226159 Fixed typo: anonmyous 2016-12-21 14:36:54 +01:00
Wu Cheng-Han d140a140de Fix possible user is undefined in realtime events 2016-12-20 20:33:46 +08:00
Wu Cheng-Han ae2db1da16 Fix email option in config not parse correctly 2016-12-20 10:47:37 +08:00
Wu Cheng-Han 39521f25a7 Mark as 0.4.6 2016-12-19 17:30:33 +08:00
Wu Cheng-Han 62eccd48e5 Try to fix when server have heavy loading cache might not update to db properly 2016-12-18 22:52:30 +08:00
Wu Cheng-Han 5bb3de2675 Add support of allow free url config option with correspond modifications 2016-12-16 15:38:05 +08:00
Wu Cheng-Han 4b7b902806 Fix typo 2016-12-16 15:37:01 +08:00
Wu Cheng-Han 5c7eb48319 Add support of allow anonymous config option with correspond modifications 2016-12-15 14:11:23 +08:00
alecdwm 3491f97f7e LDAP auth use email if provided 2016-12-14 13:24:25 +01:00
alecdwm 3007163799 Tokens not required for ldap auth 2016-12-14 12:38:03 +01:00
alecdwm 6ba9a2f039 Added HMD_LDAP_TLS_CA env variable 2016-12-14 11:49:33 +01:00
alecdwm 02e9927714 Initial support for LDAP server authentication
Limitations as of this commit:

- tlsOptions can only be specified in config.json, not as env vars
- authentication failures are not yet gracefully handled by the UI
  - instead the error message is shown on a blank page (/auth/ldap)
- no email address is associated with the LDAP user's account
- no picture/profile URL is associated with the LDAP user's account
- we might have to generate our own access + refresh tokens,
  because we aren't using oauth. The currently generated
  tokens are just a placeholder.
- 'LDAP Sign in' needs to be translated to each locale
2016-12-13 22:41:07 +01:00
Yukai Huang 5282bf491e Update sequelize init condition 2016-12-12 11:12:59 +08:00
Yukai Huang 74c1da4536 Simplify output with sequelize database argument 2016-12-12 10:36:24 +08:00
Wu Cheng-Han a73d9ce39e Update to support optional email register and signin 2016-12-02 01:58:14 +08:00
Max Wu bd3d4958e4 Merge pull request #248 from hackmdio/file-upload-options
Support other options for image uploading
2016-11-27 10:54:00 +08:00
Wu Cheng-Han 71a356552f Update to auto generate meta description based on content in publish note and slide 2016-11-26 23:04:29 +08:00
Wu Cheng-Han 9d4ede4cff Fix possible XSS in yaml-metadata and turn using ejs escape syntax than external lib [Security Issue] 2016-11-26 22:55:31 +08:00
Wu Cheng-Han f86a9e0c4b Fix slide might trigger script when processing markdown which cause XSS [Security Issue] 2016-11-26 22:46:08 +08:00
Wu Cheng-Han c671d54d67 Add dmp worker to leverage CPU intensive calculation to child process 2016-11-18 12:09:58 +08:00
Yukai Huang 46a4fe10ab Add env config prefix 2016-11-17 16:28:02 +08:00
Yukai Huang 2b2c593531 Config s3 through env variables 2016-11-16 14:44:42 +08:00
Wu Cheng-Han c58162a2e7 Revert "Add workers for notes to leverage CPU intensive work loading"
This reverts commit 4ccfdfa538.
2016-11-16 13:58:59 +08:00
Wu Cheng-Han 7adb78aba8 Revert "Add workers for history to leverage CPU intensive work loading"
This reverts commit b5920fbbd1.
2016-11-16 13:58:54 +08:00
Yukai Huang 518a4a120b upload image to s3 2016-11-16 12:05:24 +08:00
Yukai Huang a5dad29300 support filesystem image upload 2016-11-14 17:07:07 +08:00
Wu Cheng-Han b5920fbbd1 Add workers for history to leverage CPU intensive work loading 2016-11-07 21:30:53 +08:00
Wu Cheng-Han 4ccfdfa538 Add workers for notes to leverage CPU intensive work loading 2016-11-07 21:30:40 +08:00
Wu Cheng-Han e6dfc749f6 Fix config.js use cdn option not parse properly and add missing cdn resources 2016-10-23 22:42:47 +08:00
Wu Cheng-Han d37321e28d Change use cdn config option default to be true 2016-10-23 22:27:02 +08:00
Wu Cheng-Han 223c0726cd Change to raise socket io timeout, heartbeat interval and timeout to lower offline period 2016-10-23 21:42:27 +08:00
Wu Cheng-Han 1e6de0b90e Change revision saving policy period 2016-10-15 13:54:16 +08:00
Wu Cheng-Han 1418b7a801 Fix socket disconnect might interrupt loop issue 2016-10-14 17:36:04 +08:00
Wu Cheng-Han c98d263928 Fix to handle undefined document on update history 2016-10-12 17:50:36 +08:00
Wu Cheng-Han 07673f0726 Fix note extract tags might get encoded HTML entity 2016-10-12 13:14:59 +08:00
Wu Cheng-Han c06b2f4838 Fix history time should save in UNIX timestamp to avoid time offset issue 2016-10-11 16:46:50 +08:00
Wu Cheng-Han 9a15cad42d Mark as 0.4.5 2016-10-11 11:01:05 +08:00
Wu Cheng-Han 510b125432 Fix new note with empty content not saving to history and remove debug code 2016-10-11 01:22:08 +08:00
Wu Cheng-Han bc74c1f0cb Fix doc updating revision not stringify and compress authorship before save 2016-10-11 00:55:38 +08:00
Wu Cheng-Han dfc8aeeba0 Add more environment variables for server configuration, update related section in README.md 2016-10-10 21:16:58 +08:00
Wu Cheng-Han b734eb9c85 Try to fix memory leaks by clear OT server before disconnect note 2016-10-10 21:05:49 +08:00
Wu Cheng-Han 12d5ed43a7 Update to support delete note 2016-10-10 21:04:24 +08:00
Wu Cheng-Han d6d2cf978a Update to send note title on emit check and refresh event 2016-10-10 20:56:22 +08:00
Wu Cheng-Han 36a1900ce3 Update to make note history count in server-side when user logged 2016-10-10 20:55:33 +08:00
Wu Cheng-Han 1d2a9826af Update to improve history api error and bad request handling 2016-10-10 20:52:31 +08:00
Wu Cheng-Han af77bb8f59 Update to add cache to history 2016-10-10 20:51:46 +08:00
Wu Cheng-Han b54b3cbe69 Add more comments in the code and remove unused code file 2016-10-10 20:48:56 +08:00
Wu Cheng-Han a090008d4a Update to make OT socket io handle error better, use delay to avoid wrong reversion on client 2016-10-10 20:40:45 +08:00
Wu Cheng-Han 11a8c0f9cf Workaround cheerio text method shouldn't preserve html tags on fetching note title 2016-10-10 20:38:14 +08:00
Wu Cheng-Han 55ac4dcccb Update to allow CORS as API on revision actions 2016-10-10 20:33:48 +08:00
Wu Cheng-Han 3175616573 Update to support showing owner on the infobar 2016-10-10 20:32:20 +08:00
Wu Cheng-Han 1cae0c5b7f Update to prevent duplicate socket push in queue in order to lower down server loading 2016-10-10 20:25:48 +08:00
Wu Cheng-Han d23ced1fba Update to move authorship calculation code to note model and support update authorship after making revision of docs 2016-10-10 20:23:33 +08:00
Wu Cheng-Han 79fd2d1364 Update to add revision saving policy 2016-09-18 16:50:20 +08:00
Wu Cheng-Han 0470a266fd Update to prevent caching and crawling status 2016-09-18 16:23:56 +08:00
Wu Cheng-Han 87f4d05e8e Update to use proper way to render view and fix upload image error should response with code 2016-08-19 11:31:23 +08:00
Wu Cheng-Han 4d7c3d2120 Add info api for note 2016-08-19 11:24:36 +08:00
Wu Cheng-Han a013c9d3bc Update slide mode to show extra info and support url actions and support disqus via yaml-metadata 2016-08-15 11:25:27 +08:00
Wu Cheng-Han e94810ff94 Update to change the last change user saving strategy 2016-08-15 11:01:35 +08:00
Wu Cheng-Han 9bf7b92707 Fix meta might be null issue 2016-08-15 10:59:40 +08:00
Wu Cheng-Han 3bcb36b46c Improve index layout and UX with UI adjustments and better wording 2016-08-15 10:56:14 +08:00
Wu Cheng-Han be81ee22ec Update slide mode, now respect all meta settings and update default styles 2016-08-14 15:02:05 +08:00
Wu Cheng-Han 8d24d9e97f Update to make doc only update while the filesystem content not equals db content 2016-08-14 11:22:54 +08:00
Wu Cheng-Han f35aa94b41 Mark as 0.4.4 2016-08-02 17:17:33 +08:00
Wu Cheng-Han 67474aa1d4 Update realtime check and refresh event, compress data using LZString UTF16 to minimize network delay 2016-08-02 17:16:01 +08:00
Wu Cheng-Han b367e110b6 Update to support slideOptions in the YAML metadata 2016-08-01 00:08:22 +08:00
Wu Cheng-Han f69a5361cb Update to make random color more discrete 2016-07-30 11:31:29 +08:00
Wu Cheng-Han d4804f7aa5 Fix user color is not following the author color 2016-07-30 11:29:03 +08:00
Wu Cheng-Han a14e7953b5 Add support of showing authorship in editor and adjust related styles 2016-07-30 11:28:24 +08:00
Wu Cheng-Han d5549c6a84 Add support of saving authorship to revision 2016-07-30 11:24:20 +08:00
Wu Cheng-Han 2f117a22cd Add support of saving authors and authorship 2016-07-30 11:21:38 +08:00
Wu Cheng-Han 44fd0a617b Fix typo 2016-07-30 11:15:44 +08:00
Wu Cheng-Han 725e98288b Fix realtime on forbidden not clean up properly and handle on updating note which already been clean up 2016-07-30 11:10:43 +08:00
Wu Cheng-Han 0f4f270193 Fix yaml metadata title should pass to generateWebTitle 2016-07-30 11:01:07 +08:00
Wu Cheng-Han b3ba512cea Fix potential memory leaks on realtime client disconnect not clean up server properly 2016-07-13 10:41:49 +08:00
Wu Cheng-Han 40478f4eff Fix realtime on finishConnection might not clear and connect next socket in queue and should use shift instead of pop on remove invalid socket in queue 2016-07-05 16:11:18 +08:00
Wu Cheng-Han da7b6a340d Reduce realtime timeout and heartbeat interval to handle stale clients quicker 2016-07-02 16:15:05 +08:00
Wu Cheng-Han 858b30c20c Try to solve potential memory leaks 2016-07-02 16:12:48 +08:00
Wu Cheng-Han 95c8f25fb5 Update response to force note, publish note, publish slide redirect to their expected url 2016-07-02 16:11:30 +08:00
Wu Cheng-Han 458d07dde7 Update to change server-side pre-rendering engine from marked to markdown-it 2016-07-02 16:11:06 +08:00
Wu Cheng-Han d39f1fc700 Update to make slide mode support all extra syntax and change it's rendering engine 2016-07-02 16:09:26 +08:00
Wu Cheng-Han d7d83c102b Mark as 0.4.3 2016-06-28 09:38:31 +08:00
Cheng-Han, Wu 558304ff62 Update to support new metadata: title, description, tags and google-analytics (GA) and refactor render publish slide response function 2016-06-21 21:42:03 +08:00
Cheng-Han, Wu ad6982e77e Remove robot meta on note edit page and html template, add prevent crawling header to enhance note privacy 2016-06-21 21:37:56 +08:00
Cheng-Han, Wu a125f80535 Fix pdf tmp path is missing a folder slash before timestamp 2016-06-17 16:33:58 +08:00
Cheng-Han, Wu 614a97376d Try to solve realtime connection get stock when lots of client try to connect at same moment 2016-06-17 16:32:33 +08:00
Cheng-Han, Wu 73f6d383b5 Add minimumCompatibleVersion and update refresh modal to show more detail informations 2016-06-17 16:31:36 +08:00
Cheng-Han, Wu 03e68f92eb Fix locked or private permission should block any operation if owner is null 2016-06-17 16:29:45 +08:00
Cheng-Han, Wu 18f7eb281c Fix create new note should not use default note created time 2016-06-17 16:28:04 +08:00
Cheng-Han, Wu 8e351e7e33 Add revision api 2016-06-17 16:11:14 +08:00
Cheng-Han, Wu dbc126b156 Add support of saving note revision and improve app start and stop procedure to ensure data integrity 2016-06-17 16:09:33 +08:00
Cheng-Han, Wu 03bdee23ff Update note model on create doc will use the created time of the doc in filesystem 2016-06-01 23:19:47 +08:00
Cheng-Han, Wu c439797efd Mark as 0.4.2 2016-06-01 20:44:19 +08:00
Cheng-Han, Wu 16d5e3ea80 Add maintenance mode and update to gracefully exit process on signal 2016-06-01 14:18:54 +08:00
Cheng-Han, Wu dfd2c6297c Update note model if doc in filesystem have newer modified will update it in db 2016-05-30 12:43:51 +08:00
Cheng-Han, Wu 16990e35a2 Update slide template using ejs instead of mustache to reduce similar package dependency 2016-05-29 17:54:24 +08:00
Cheng-Han, Wu 20fbc9957f Update project title 2016-05-28 01:51:45 +08:00
Cheng-Han, Wu f3418a619c Update to use bigger size of profile image 2016-05-21 22:48:21 +08:00
Cheng-Han, Wu 6405bb5056 Add support of google signin 2016-05-21 22:48:00 +08:00
Cheng-Han, Wu d74d7bc31b Update to use dropbox api version 2 2016-05-21 22:40:54 +08:00
Cheng-Han, Wu 40967ce7e2 Update to make user profile auto update on authentication 2016-05-20 03:02:07 +08:00
Cheng-Han, Wu bbc7e26e77 Update to use bigger avatar image and twitter now use screen_name based profile image url 2016-05-20 02:13:22 +08:00
Cheng-Han, Wu eb5873a94d Update to move gitlab api path to sub path and fix its find user method for PR #121 2016-05-16 18:16:45 +08:00
Cheng-Han, Wu 6b521b99d4 Fix code styles and user refreshToken might need update when accessToken not match 2016-05-16 12:46:48 +08:00
Cheng-Han, Wu baa946968d Add db migrations for PR #121 2016-05-15 12:20:42 +08:00
Cheng-Han, Wu 93c6205aa6 Fix merge conflicts 2016-05-15 11:17:02 +08:00
Cheng-Han, Wu 8a01b7242c Merge branch 'gitlab_snippets' of https://github.com/jccrofty30/hackmd into jccrofty30-gitlab_snippets
# Conflicts:
#	lib/response.js
2016-05-15 11:02:15 +08:00
Cheng-Han, Wu 73835763c6 Merge PR #118 2016-05-15 10:58:41 +08:00
Cheng-Han, Wu a70ebf7762 Update to move dropbox app key setting to common.js and will auto load client-side related scripts 2016-05-15 10:54:24 +08:00
Jason Croft 0adc0864d5 Retrieve GitLab avatar. 2016-05-12 13:26:50 -04:00
Jason Croft b96cc4eb94 Retrieve GitLab avatar. 2016-05-12 13:26:28 -04:00
Jason Croft a3876dfc92 Start extending to support GitLab authentication.
Add necessary dependency.
Add baseURL parameter for self-hosted GitLab
Add necessary require.
Add block for GitLab auth.
Fix typo
Update font-awesome dependency for GitLab icon.
Use a color closer to GitLab orange.
More direct TODO
2016-05-11 21:02:53 -04:00
Jason Croft e545de72a6 Add accessToken saving. 2016-05-11 17:06:05 -04:00
Jason Croft 17daf32239 Remove skeleton functions 2016-05-11 17:04:55 -04:00
Jason Croft a443490ee6 Add accessToken column 2016-05-11 17:04:45 -04:00
Jason Croft 521f96fb11 Skeletons for GitLab actions. 2016-05-09 17:07:23 -04:00
Jason Croft 079822dfec Start extending to support GitLab authentication.
Add necessary dependency.
Add baseURL parameter for self-hosted GitLab
Add necessary require.
Add block for GitLab auth.
Fix typo
Update font-awesome dependency for GitLab icon.
Use a color closer to GitLab orange.
More direct TODO
2016-05-09 16:27:35 -04:00
Jannik Lorenz 404e44649f
Fix error page (missing googleDrive config) 2016-04-23 14:15:24 +02:00
Jannik Lorenz d7648e9cea
Hide Dropbox and Google Drive in Import/ Export when disabled 2016-04-23 12:58:24 +02:00
Cheng-Han, Wu 60046200f8 Update to support when domain not provided will use relative path 2016-04-22 03:33:24 +08:00
Cheng-Han, Wu ff4698caf5 Update to support DOMAIN and URL_PATH environment variables 2016-04-22 03:33:09 +08:00
Cheng-Han, Wu 49b51e478f Refactor server with Sequelize ORM, refactor server configs, now will show note status (created or updated) and support docs (note alias) 2016-04-20 18:03:55 +08:00
Cheng-Han, Wu b6ca50072e Updated to add headers to prevent search engine crawl some unnecessary paths 2016-03-15 10:54:21 +08:00
Cheng-Han, Wu c5f6c2bab3 Updated to handle user address when server behind other services 2016-03-15 10:54:04 +08:00
Cheng-Han, Wu 845ef9bad6 Support export to and import from Google Drive 2016-03-04 23:17:35 +08:00
Cheng-Han, Wu c183002c14 Fixed note title might get wrong 2016-03-04 23:12:03 +08:00
Cheng-Han, Wu b2b1be3dda Support set url path and use relative url, move raphael to bower and fixed minor issue in history 2016-02-16 20:08:44 -08:00
Cheng-Han, Wu 3f2f063e9b Fixed export gist title might null and fake referer that redirect to gist html_url 2016-02-16 19:54:29 -08:00
Cheng-Han, Wu 4c4a0e0f3f Fixed prevent XSS might break lots of tags and only need after rendered 2016-02-11 03:45:13 -06:00
Cheng-Han, Wu 6700f033ab Prevent XSS in markdown rendering 2016-02-11 02:36:52 -06:00
Cheng-Han, Wu 1fb42bd276 Updated to allow CORS in download as API 2016-02-01 00:41:28 -06:00
Cheng-Han, Wu ff2fc76491 Supported export to gist 2016-01-31 15:42:26 -06:00
Cheng-Han, Wu 16dcd27b78 Fixed potential bug in realtime startConnection and bugs in note findOrNewNote, response showNote 2016-01-20 23:20:50 -06:00
Wu Cheng-Han 96931e6e3a Upgrade all dependencies and fixes afterward issues 2016-01-19 09:57:58 -06:00
Wu Cheng-Han 49c7dded45 Added private permission and clean up codes, solved potential race condition in realtime.js 2016-01-17 09:51:27 -06:00
Wu Cheng-Han 2ecec3b59a Support show last change user with profile and support YAML config inside the note with robots, lang, dir, breaks options 2016-01-12 08:01:42 -06:00
Wu Cheng-Han f5010af4f1 Added 404 and 403 status on routes 2015-12-30 00:33:36 -05:00
Wu Cheng-Han 5467e6da8d Fixed socket session secure might not apply properly 2015-12-30 00:31:39 -05:00
Wu Cheng-Han 411ce1343e Now accept all users whether authorize or not without log errors to allow anonymous usage 2015-12-30 00:30:54 -05:00
Wu Cheng-Han 031c96c72d Updated slide mode 2015-12-18 09:40:52 -06:00
Wu Cheng-Han 3fa264a43a Fixed readFromDB error might cause excpection 2015-12-11 00:16:09 -06:00
Wu Cheng-Han d3a23ad72f Fixed realtime.js finishConnection user might be undefined issue 2015-12-06 11:24:47 -06:00
Wu Cheng-Han b070de8fa9 Updated and merge reveal.js to use bower 2015-11-29 01:04:20 -06:00
xnum f51b7370f0 Add Slide Mode
using reveal.js
and some part of reveal-md
2015-11-23 20:38:26 +08:00
Wu Cheng-Han 75ae505a15 Updated response.js, the render url now using config getserverurl() 2015-11-17 01:19:01 +08:00
Wu Cheng-Han 53f26a7771 Fixed cleaner might not clean user not in connected list and handle if the user socket not exist 2015-10-05 14:32:05 +08:00
Wu Cheng-Han 2c31b8d809 Fixed realtime cleaner, socket should defined and notename is not a necessary in disconnect 2015-09-27 11:43:55 +08:00
Wu Cheng-Han ab6d6c77f1 Updated realtime to clear socket queue in all exceptions of connect and disconnect 2015-09-27 11:43:33 +08:00
Wu Cheng-Han 332413bcaa Fixed if using splice in loop should always decrement index or might out of array range 2015-09-26 10:25:00 +08:00
Wu Cheng-Han 3683a6dd34 Added more infos about connection and disconnection in realtime "getStatus" 2015-09-26 10:24:44 +08:00
Wu Cheng-Han c2f9970ef0 Fixed a possible exception 2015-09-25 17:37:09 +08:00
Wu Cheng-Han 523048f111 Fixed to handle startConnection and finishConnection undefined exceptions 2015-09-25 16:57:18 +08:00
Wu Cheng-Han 1733b6db8a Fixed doc length should only limit when "both the doc length exceed the doc max length" and "the new doc length is more than previous doc" 2015-09-24 11:45:17 +08:00
Wu Cheng-Han f1a0dff9e6 Fixed user might not disconnect from server properly, handle more uncaught exceptions 2015-09-24 11:40:08 +08:00
Wu Cheng-Han 43a175e710 Added cleaner in realtime.js, to clean up users which aren't in any rooms in a interval 2015-09-24 11:38:55 +08:00
Wu Cheng-Han 950d978fe8 Updated realtime.js, use socket.io built-in broadcast function instead self iterate to avoid extra issues 2015-09-24 11:36:41 +08:00
Ikumi Shimizu 7fc7325f87 fixed a bug in response.js:useCdn 2015-09-23 10:25:42 +09:00
Wu Cheng-Han b6c758f2fc Added server option "useCdn", use template statement to route resources' source 2015-09-22 12:06:13 +08:00
Wu Cheng-Han d14c5bdc9c Added document max length limit, enforceMaxLength on change and show modal when reach the limit. 2015-07-16 22:46:06 +08:00
Wu Cheng-Han 57253d28a7 Using util.inspect instead of JSON.stringify to avoid "TypeError: Converting circular structure to JSON" 2015-07-16 08:47:33 +08:00
Wu Cheng-Han 4e61728a6a JSON.stringify error object for logging 2015-07-14 23:52:24 +08:00
Wu Cheng-Han 1b92300445 Handle when OT throw Error, will log it then disconnect socket client 2015-07-14 23:38:51 +08:00
Wu Cheng-Han bbcc64af6b Handle an server getNotenameFromSocket referer undefined exception 2015-07-12 17:19:07 +08:00
Wu Cheng-Han 556338a9c6 Added support of operational transformation 2015-07-11 12:43:08 +08:00
Wu Cheng-Han 04eef71b11 Change note action "share" to "publish" to avoid misleading 2015-07-06 13:51:55 +08:00
Wu Cheng-Han 85c67212ad Added profile image on onlineList 2015-07-04 22:19:09 +08:00
Wu Cheng-Han 01685c255f Updated codemirror to 5.4.0 2015-07-04 11:31:01 +08:00
Wu Cheng-Han 10c9811fc5 Jump to 0.3.1 2015-07-02 00:10:20 +08:00
Wu Cheng-Han f7f8c901f4 Marked as 0.2.9 2015-06-01 18:04:25 +08:00
Wu Cheng-Han 4e64583a0b Marked as 0.2.8 2015-05-15 12:58:13 +08:00
Wu Cheng-Han 4b0ca55eb7 First commit, version 0.2.7 2015-05-04 15:53:29 +08:00