Commit graph

225 commits

Author SHA1 Message Date
ophir
c516fa448c add translations for grid 2020-06-21 13:06:38 +02:00
ophir
038e6d5259 Added "free online whiteboard" to the main title 2020-06-21 12:56:31 +02:00
ophir
d83461898c add an italian translation
Improve the spanish translation and
2020-06-21 12:46:40 +02:00
ophir
9b4649e58d Add a spanish translation
Thanks to @beccobunsen

See #94
2020-06-20 16:48:49 +02:00
Paolo Bolzoni
da5f40a75e
Pass over the string only once while escaping html special chars (#82)
Co-authored-by: Paolo Bolzoni <paolo@cagla.jp>
2020-05-27 10:11:30 +02:00
Ophir LOJKINE
3af91ce7ab Allow parentheses in board names 2020-05-15 14:09:39 +02:00
ophir
b77d26a9e8 Add a square as a secondary tool for the rectangle 2020-05-14 00:02:14 +02:00
finnboeger
740246528f
Add a whiteout tool as the secondary function of the pencil tool (#47)
* added whiteout icon made by Freeplk on flaticon.com

* added whiteout fluid icon (public domain).

* Added whiteout tool as secondary function of pencil tool.

Co-authored-by: Robert Beach <rdbeach@gmail.com>

* shrink icon width using stroke

* shrink whiteout icon properly

* shrink whiteout fluid icon

* reduce number of allowed messages

* simplify

* remove layer code

* renmove show/hide marker code

* change white to #ffffff

* make toggle function compatible with current implementation

* Revert changes unrelated to the whiteout tool

* Refactor secondary tool logic between ellipse and pencil

* Add translations for the whiteout pen

* Fix tests

Co-authored-by: Robert Beach <rdbeach@gmail.com>
Co-authored-by: ophir <pere.jobs@gmail.com>

(@rdbeach)
2020-05-13 22:15:11 +02:00
ophir
7cc186be80 Officially support node 8 2020-05-09 13:13:36 +02:00
finnboeger
3a85e45439
Add a svg export with proper rounding (#58)
* make live version render single-point paths the same as preview does

* implemented smoothing in server side rendering

* separate preview from export

* ensure correct handling of paths with only one child

* break out rendering of 3rd point and up into separate function

* changed test for 2 points to math current implementation and added a test for a bezier curve with 3 lines

* deduplicate code to extrapolate points for bezier curves

* fix merge

* Factor more code between the client and the server

Completely remove the straight line approximation foor paths

Vastly improve preview performance

* Add support for opacity in preview

* Stream board previews to the browser

Previously, svg board previews were generated in memory
and then pushed to the client.

They are now streamed to the client without blocking the main thread.

# Performance

## Before

$ ab -n 30 -c 15 http://localhost:8080/preview/ic3
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient).....done

Server Software:
Server Hostname:        localhost
Server Port:            8080

Document Path:          /preview/ic3
Document Length:        14352691 bytes

Concurrency Level:      15
Time taken for tests:   19.499 seconds
Complete requests:      30
Failed requests:        0
Total transferred:      430588920 bytes
HTML transferred:       430580730 bytes
Requests per second:    1.54 [#/sec] (mean)
Time per request:       9749.374 [ms] (mean)
Time per request:       649.958 [ms] (mean, across all concurrent requests)
Transfer rate:          21565.33 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:   727 8885 1561.6   9220    9817
Waiting:      718 5380 2668.8   5569    9549
Total:        727 8885 1561.6   9220    9817

Percentage of the requests served within a certain time (ms)
  50%   9220
  66%   9239
  75%   9245
  80%   9248
  90%   9560
  95%   9811
  98%   9817
  99%   9817
 100%   9817 (longest request)

## After

$ ab -n 30 -c 15 http://localhost:8080/preview/ic3
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient).....done

Server Software:
Server Hostname:        localhost
Server Port:            8080

Document Path:          /preview/ic3
Document Length:        14352687 bytes

Concurrency Level:      15
Time taken for tests:   17.647 seconds
Complete requests:      30
Failed requests:        0
Total transferred:      430588020 bytes
HTML transferred:       430580610 bytes
Requests per second:    1.70 [#/sec] (mean)
Time per request:       8823.254 [ms] (mean)
Time per request:       588.217 [ms] (mean, across all concurrent requests)
Transfer rate:          23828.86 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:   719 8212 1440.6   8657    8810
Waiting:      701 4666 2324.8   4788    8769
Total:        719 8212 1440.6   8657    8811

Percentage of the requests served within a certain time (ms)
  50%   8657
  66%   8670
  75%   8691
  80%   8790
  90%   8802
  95%   8808
  98%   8811
  99%   8811
 100%   8811 (longest request)

* Write the element id and opacity only when needed

* Fix a bug in wbo_pencil_point

* Rework the integration tests for the pencil tool

* Test server-side rendering in integration tests

* Remove unused function

* Remove unused id fallback

* set return types

* fix rectangle

* set fill for rect in stylesheet instead

Co-authored-by: Ophir LOJKINE <pere.jobs@gmail.com>
2020-05-08 21:15:39 +02:00
finnboeger
edace1c293
add option to block tools (#66)
* add option to block tools

* use tool name instead of computing an id

Co-authored-by: Ophir LOJKINE <ophir.lojkine@auto-grid.com>

* require comma separated list as input of blocked tools environment variable

Co-authored-by: Ophir LOJKINE <ophir.lojkine@auto-grid.com>

* Log attempts to use blocked tools

Co-authored-by: Ophir LOJKINE <ophir.lojkine@auto-grid.com>

* fix syntax

* require tool names to not have a comma in them

* Update server/configuration.js

Co-authored-by: Ophir LOJKINE <pere.jobs@gmail.com>
2020-05-08 12:19:52 +02:00
Ophir LOJKINE
e6811518dc Add missing allowed board name characters 2020-05-07 22:43:17 +02:00
Ophir LOJKINE
6f9ebf141c Rework the code for preview handling
- use promises instead of callbacks
  - avoid polluting stderr, and instead log rendering time in the standard log format
 - cache rendered boards for only 30 seconds
2020-05-07 22:29:48 +02:00
Ophir LOJKINE
fb93f09954 Merge branch 'master' of github.com:lovasoa/whitebophir 2020-05-07 22:10:52 +02:00
Ophir LOJKINE
5d74c2b47b Fix #72 2020-05-07 22:10:40 +02:00
finnboeger
c664d5bafe
Remove extra urlencode call (#70)
* remove extra urlencode call

* asser that board name only contains allowed characters

* Log the invalid board name on error

Co-authored-by: Ophir LOJKINE <pere.jobs@gmail.com>
2020-05-07 21:16:13 +02:00
Ophir LOJKINE
2aa00ce0ca Fix language detection when only a sub-locale is provided
Fixes #67
2020-05-05 15:31:10 +02:00
finnboeger
57a02c42d6
Improve compatibility with Internet Explorer (#63)
* include promise polyfill

* remove es6

* add viewBox to every icon

* change self closing to explicitly closing tags

* replace window.scroll.. with document.documentElement.scroll..

* verify document.activeElement.blur() is a function before calling

* fix visuals of color chooser (colorpicker still sometimes buggy)

* do not attach to mouseleave event in IE

* attempt removal with usecapture true in IE as well, this fixes the tool switching issue

* fix text tool for IE

* fix cursor for IE

* change curMode to boolean and rename to 'active'

* replace minified canvascolor with unminified code

* replace if else structure with switch statement

* compile polyfill for each browser individually

* remove static polyfills from board.js

* Fix broken js reference

* Fix unused variable and empty console log

* Allow serving non-minified polyfills for easier debugging

* Add proper caching for polyfill.js

This request is on the critical path, we should try to make it fast

* Include more polyfills

All the DOM polyfills were missing

* Update dependencies

* Add missing polyfill

Our custom polyfill was deleted, but the one from polyfill-library hadn't been added

* Remove feature detection for Node.contains

We now have the function in the polyfills

* Update polyfill caching logic

* Remove content-Length header

Co-authored-by: @lovasoa
2020-05-05 12:01:46 +02:00
finnboeger
3c453e15c2
Add an ellipse and circle tool (#40)
* Added Circle tool as alternative function of Rectangle tool

* change toggle function to work with new icon structure and toggle name

* split circle into separate tool and added ellipse as secondary function. Also added server side rendering for svg export

* change ellipse to be default

* change circle behaviour to same as inkscape

* toggle to alternative while holding shift

* append to drawing area instead of svg root

* don't update shape after it has been drawn

* Stop logging all rectangles

* Remove es6

* Remove more es6

* Fix a few bugs with circle to ellipse toggling

* Calculate the circle params at creation time, not at rendering time

* Make the behavior of the shift key consistent

When shift is pressed, the current function is reversed: the circle tool draws an ellipse and the ellipse tool draws a circle.
This makes the tool easier to grasp.

* Add required translations

* german translation

* Update the shape immediately when pressing shift

* Fix server-side ellipse rendering

* Add a test for the circle tool

Co-authored-by: Robert Beach <rdbeach@gmail.com>
Co-authored-by: Ophir LOJKINE <pere.jobs@gmail.com>
2020-05-03 17:53:44 +02:00
finnboeger
b9605acb87
Add option to change pen size with the scroll wheel (#54)
* add option to change pen size with the scroll wheel

* Update the cursor size immediately when changing the size

* Add a tooltip with the size change shortcut

Co-authored-by: ophir <pere.jobs@gmail.com>
2020-05-02 16:27:28 +02:00
finnboeger
70f45f0693
add a german translation (#62) 2020-05-02 16:00:05 +02:00
finnboeger
fce694df28
Add a cursor (#46)
* Added cursors

* Prepare cursor code for future settings to toggle cursors on or off.
Let cursor be the color the person has currently selected

* fix cursor on mobile (still won't display it in most cases as there is no hover on mobile but at least it won't throw errors)

* use correct size for cursor

* throttle cursor update rate to dramatically improve performance by eliminating congestion

* fix remote cursor size on desktop

* show own cursor by default and renove offset

* use svg as mouse cursor for pencil to be able to apply a reduced opacity to it and view our cursor

* don't throttle local cursor

* throttle local cursor at an independent higher rate. This could be made user adjustable for low power devices

* remove let and const from client-side code

* get emit count and emit count period from configuration

* reduce network cursor updates a lot to prevent instantly getting banned with the current defaults

* prevent eraser from deleting cursors

* use group inside of svg as drawing area and only delete elements inside it with the eraser

* use transform: translate to move cursors around instead of manipulating x and y directly

* fix: add socket ids to cursor messages

* fix incorrect remote cursor scaling and make local cursor visible again after it has been moved after being hidden due to inactivity

* create cursors in a proper fashion and keep them in a separate group

* scaling has been fixed in a1a5580

* move duplicated cursor creation code to function

* show cursors above content

* pass some of ther server configuration through to the client

* fix bug introduced in a833ce9

* allocate at most half of the allowed traffic to cursor updates

* remove debugging leftover

* use feature detection instead of ua sniffing

Co-Authored-By: Ophir LOJKINE <ophir.lojkine@auto-grid.com>

* fix regression where local cursor color was not updated on color change

* Define the cursor as a tool

* Remove the cursor tool from the UI

* Throttle remote cursor updates, not local ones

* Do not increment notification count on cursor move

* Use only one pencil icon

Use the same image for the pencil icon in the menu
and the pencil cursor that appears while drawing

* Add a test for the new cursor feature

* only stop drawing remote cursor when using some tools and always draw local cursor

* increase idle period before hiding cursor

* change idle duration back and set whether a cursor should be sent when using a tool in the respective tool

Co-authored-by: Robert Beach <rdbeach@gmail.com>
Co-authored-by: Ophir LOJKINE <ophir.lojkine@auto-grid.com>
Co-authored-by: ophir <pere.jobs@gmail.com>
2020-05-02 06:13:48 +02:00
finnboeger
0f0b333335
Allow running the app behind a reverse proxy (#57)
* change url to hide app behind a relative path

* pass some of ther server configuration through to the client

* serve static files and connect to socket.io correctly when a URL Prefix is set

* Revert the changes to opengraph meta tags

opengraph meta tags need to be absolute URLs

* Remove unused commented-out code

* fix background.png url

* use prefix path for open graph metadata

* Revert changes using server side url modifications

* get open graph and socket.io url from request url / window.location

* remove debug console.log

* Fix favicon when not running under "/"

* Add proxying instructions to the README

Co-authored-by: Laurent Mazet <mazet@softndesign.org>
Co-authored-by: ophir <pere.jobs@gmail.com>
2020-05-01 12:33:13 +02:00
Ophir LOJKINE
ff7a8edcb8 Properly cache board previews 2020-04-30 10:28:45 +02:00
ophir
2b64897733 Add an integration test 2020-04-27 23:50:15 +02:00
Takuya Arita
6b5760ed8e
Add Japanese translation (#43)
* Add Japanese translation

* Update Japanese translation.
2020-04-27 19:24:40 +02:00
ophir
723a87f753 Restore compatibility with old nodeJS versions
Node 8 is still the default on ubuntu 18.04.
See: 63db84f7dd
2020-04-26 19:20:30 +02:00
ophir
96fa16559e Index page translations 2020-04-26 17:59:41 +02:00
ophir
d2c3917ccc Fix board deletion error message in logs 2020-04-26 12:11:30 +02:00
Ingo Blechschmidt
8d71613e6b
Be more vigilant in validating file names (#36)
The behavior of `Date.parse` is implementation-dependent and hence
cannot be relied on for security purposes. In particular, the
implementation in Node.js does accept strings such as
`../../../etc/foobar-0` as valid (thanks to the trailing digit).

The failure to properly validate the filename is not exploitable, as
slashes will never be contained in `parts[2]` thanks to the foregoing
`split`, but it is probably still better to have a proper validation in
place.
2020-04-22 23:23:37 +02:00
Ophir LOJKINE
89162dcc91 Make the application more configurable
There are now several different configuration
variables through which WBO can be configured.

Thanks @iblech

Fixes #34
2020-04-22 12:53:40 +02:00
ophir
ebaaacde35 Improved i18n system 2020-04-22 10:14:12 +02:00
ophir
e2dde6c82f WIP: i18n of the index page 2020-04-20 23:40:38 +02:00
Ophir LOJKINE
6bcffe3dde Warning message on old version of NodeJS
See 63db84f7dd (commitcomment-38508311)
2020-04-15 15:18:38 +02:00
Ophir LOJKINE
63db84f7dd server: use async functions instead of callbacks
This makes the code more readable.
Also add the automatic deletion of empty board files.
2020-04-12 14:57:41 +02:00
Ophir LOJKINE
c34ccbb17a Update dependencies
Switch from the unmaintained node-static to serve-static.
2020-04-12 11:15:22 +02:00
Ophir LOJKINE
b74696fcb0 Fix crash when running the server on windows
Fixes  #28
2020-04-06 19:36:45 +02:00
Ophir LOJKINE
95ffa5d130 Better caching 2020-04-06 13:31:15 +02:00
Ophir LOJKINE
baa3b2a048 Better logging of server socket errors 2020-04-03 14:18:09 +02:00
ophir
55074124cf Reformat server.js 2019-07-21 23:15:05 +02:00
KIMB-technologies
caf67b9a87
Check name before passing to Filesystem 2019-07-17 22:17:19 +02:00
Ophir LOJKINE
45cf1e1406 Improve internationalization 2019-06-27 15:44:16 +02:00
Ophir LOJKINE
078db23d47 Prevent file corruption by writing to a backup file before writing to the real board file 2019-06-25 18:00:38 +02:00
Ophir LOJKINE
dc7ea2575f allow downloading board backups 2019-06-25 14:12:03 +02:00
Ophir LOJKINE
e038527115 Add loading message 2019-06-25 13:28:02 +02:00
Ophir LOJKINE
d473baba89 Fix invalid error handling 2019-06-24 00:23:48 +02:00
Ophir LOJKINE
6f8ade7ae1 New feature: randomly generated board names 2019-06-24 00:19:16 +02:00
Ophir LOJKINE
c5a44fda5d backup corrupted board data 2019-06-23 21:58:03 +02:00
Ophir LOJKINE
6d56d7b877 Fix crash on unsupported language language 2019-06-23 21:31:20 +02:00
Ophir LOJKINE
539125b423 More server-side translations 2019-06-23 10:14:13 +02:00
Ophir LOJKINE
3522c52d36 Server-side translations 2019-06-23 09:47:01 +02:00
Ophir LOJKINE
6493478362 Fix wrong variable name 2019-03-21 21:48:03 +01:00
Ophir LOJKINE
5fb9ddddd4 Improve logging messages 2019-03-21 18:53:54 +01:00
Ophir LOJKINE
7072974bec more readable logs 2019-03-21 18:26:47 +01:00
Ophir LOJKINE
55f53b48b6 Display the board name in the page title 2019-03-20 19:00:12 +01:00
Ophir LOJKINE
2691cc9397 Catch errors when trying to statically render a board 2019-01-08 16:54:04 +01:00
Ophir LOJKINE
1f3ceb3530 Store the lines with a better precision 2019-01-02 01:00:41 +01:00
Ophir LOJKINE
72767adc1a implement reconnection to the current board after a disconnection 2018-12-30 22:47:48 +01:00
Ophir LOJKINE
5eddc262bb change behavior on disconnection 2018-12-18 09:46:30 +01:00
ophir
b9aca0b00d Fix bug where a board would be used without being ready 2018-12-02 21:11:19 +01:00
ophir
32c0020dca Add support for transparency
Closes #5
2018-12-02 13:18:29 +01:00
ophir
21d18f3688 Remove debugging code 2018-12-01 20:55:56 +01:00
ophir
6902ba8fed Relax the restriction on the maximum number of elements to keep in a board 2018-12-01 10:40:46 +01:00
ophir
f5bb895486 Update the politeness logic 2018-12-01 10:26:50 +01:00
ophir
2dbb1414c0 Revert "Update the politeness logic"
This reverts commit fcac7acc38.
2018-11-30 21:22:01 +01:00
ophir
fcac7acc38 Update the politeness logic 2018-11-30 20:57:30 +01:00
Ophir LOJKINE
4a943b4446 Update the board cleaning rules (add a timestamp to objects) 2018-11-30 17:30:37 +01:00
Ophir LOJKINE
a72705dd7b Improve memory usage
Unload boards from memory when that last connected user goes away.
2018-11-30 16:52:43 +01:00
Ophir LOJKINE
88aa591e9a Improve initial rendering performance 2018-11-29 17:14:01 +01:00
Ophir LOJKINE
13f2ebba63 Improve logging 2018-11-29 14:42:17 +01:00
Ophir LOJKINE
518f565c5d log requests to the front page 2018-11-29 14:24:56 +01:00
Ophir LOJKINE
04f6e2d790 Log time on new requests 2018-11-29 14:24:20 +01:00
Ophir LOJKINE
03ca44da29 Remove spammy logs 2018-11-29 14:02:34 +01:00
Ophir LOJKINE
52ce58ca73 Log the current rate when banning people 2018-11-29 13:21:34 +01:00
Ophir LOJKINE
b0f339d564 Avoid loosing messages when the server is restarted 2018-11-29 13:18:50 +01:00
Ophir LOJKINE
dde5093fda Remove debug logging 2018-11-29 12:59:52 +01:00
Ophir LOJKINE
437ea4a612 Avoid limiting too much 2018-11-29 12:59:24 +01:00
Ophir LOJKINE
55a8fb5c4b Ban people who write too intensively 2018-11-29 12:03:04 +01:00
Ophir LOJKINE
8dde9fd473 Improve logging 2018-11-29 10:59:38 +01:00
Ophir LOJKINE
7570fd8095 Allow larger drawings 2018-11-29 10:40:29 +01:00
ophir
2eb62a2bf4 Add board limits 2018-11-29 09:20:38 +01:00
ophir
58061cf9a1 Lower the max number of items in a board 2018-11-29 08:29:00 +01:00
ophir
266e485503 Limit the maximum size of a board 2018-11-29 00:45:32 +01:00
ophir
2e698d4663 Improve the board serialization logic 2018-11-28 22:56:02 +01:00
ophir
f4fc7714b3 Improve error handling 2018-11-28 20:41:43 +01:00
Ophir LOJKINE
02c75ebac1 Do not try to save inexistant boards 2018-11-28 18:43:42 +01:00
Ophir LOJKINE
d8999eccee fix bug when saving inexistant board 2018-11-28 18:33:03 +01:00
Ophir LOJKINE
5d0901d4ff Add an apple-touch-icon 2018-11-28 18:27:08 +01:00
Ophir LOJKINE
ed05f515fe Reformat code 2018-11-27 15:29:14 +01:00
Ophir LOJKINE
8aa93cae04 Fix the 'open board' form 2018-11-27 15:25:46 +01:00
Ophir LOJKINE
a24fc79910 improve CSP 2018-11-27 11:31:09 +01:00
Ophir LOJKINE
7cfbb2c087 add a CSP 2018-11-27 11:07:46 +01:00
Ophir LOJKINE
cf58fe1045 Implement static rendering for rectangles and lines 2018-11-27 10:16:58 +01:00
Ophir LOJKINE
9f2272d930 Improve error handling on the server 2018-11-27 09:57:58 +01:00
Ophir LOJKINE
b8a49c2892 Fix bug in static renderer 2018-11-27 09:50:27 +01:00
Ophir LOJKINE
e2dea2fae3 add a preview endpoint 2018-11-26 18:43:53 +01:00
Ophir LOJKINE
7c9455717f fix canvas size in svg exporter 2018-11-26 18:14:13 +01:00
Ophir LOJKINE
687a8fa31f Read the port from the environment by default 2018-11-26 16:20:50 +01:00
Ophir LOJKINE
eaeac0bb4d Switch to socket.io 1.x 2015-07-20 22:03:55 +02:00
Ophir LOJKINE
b1f28e0550 Little code simplification 2015-07-20 15:54:56 +02:00
Ophir LOJKINE
dbc498acea Fix the board download feature 2015-07-20 14:28:31 +02:00
Ophir LOJKINE
f80b6b465f Send an X-UA-Compatible header for IE 2015-07-15 16:48:07 +02:00
Ophir LOJKINE
8573b58fa8 If no board name is given, go to the default board (anonymous). 2014-02-23 22:07:28 +01:00
Ophir LOJKINE
235475e502 Change colors 2014-02-23 19:35:50 +01:00
Ophir LOJKINE
50062881d7 Create an index page. It is ugly, but better than having an error page welcoming new users. 2014-02-22 21:38:33 +01:00
Ophir LOJKINE
bb165cd6e4 Allow multiple boards on a single wbo instance.
This is the last feature I wanted before switching to 1.0.
2014-02-22 20:49:14 +01:00
Ophir LOJKINE
c2024c6c7a prepare multiple boards (rooms) 2013-12-27 22:55:42 +01:00
Ophir LOJKINE
fce882a5c5 bug correction 2013-12-26 03:20:06 +01:00
Ophir LOJKINE
464a39f238 Performance logging 2013-12-26 03:07:04 +01:00
Ophir LOJKINE
b6f6c9d035 Add a converter between the json history format and svg. 2013-12-26 02:52:41 +01:00
Ophir LOJKINE
70b1519205 Bug corrections 2013-12-26 02:50:00 +01:00
Ophir LOJKINE
abf028efeb Correct a bug that occured when the history file could not be written. 2013-12-25 22:30:45 +01:00
Ophir LOJKINE
8a3bd2349e remove useless server things 2013-12-09 01:14:01 +01:00
Ophir LOJKINE
e57979276e remove debugging server log 2013-12-09 01:02:31 +01:00
Ophir LOJKINE
f6539cb87f Change socket.io configuration 2013-12-09 00:59:37 +01:00
Ophir LOJKINE
5690bd3cf0 Improve board architecture. Correct several bugs, including messages being drawn twice, and messages not being drawn at all. 2013-12-07 19:05:43 +01:00
Ophir LOJKINE
fd35a486b8 Rework the way the server stores data to make it handle updates and deletions more intelligentlty.
Some work was done on the client-side too, and board loading should now be much faster.
2013-12-07 04:46:31 +01:00
Ophir LOJKINE
8c188c2c26 Do not display date in logs (nodejitsu already does that) 2013-11-20 22:56:48 +01:00
Ophir LOJKINE
f744c91142 No functional change 2013-11-20 22:50:50 +01:00
Ophir LOJKINE
bcc2bcfcac Print origin ip address when the user is behind a proxy. 2013-11-14 20:56:56 +01:00
Ophir LOJKINE
8fcdb60795 Server: Better error catching, better logging. /download now forces the browser to initiate a file download. 2013-11-11 13:13:56 +01:00
Ophir LOJKINE
10c492c487 Add a feature to the server to allow downloading history. 2013-11-10 17:32:18 +01:00
Ophir LOJKINE
3601154abf Bug corrections and improvements 2013-10-06 12:16:45 +02:00
Ophir LOJKINE
fa7b451b94 Improve the way the history is saved. Correct errors in pencil.js 2013-10-05 03:50:09 +02:00
Ophir LOJKINE
7b4b5e24bc Add a better infrastructure, in order to prepare the introduction of new modules (called "tools"). 2013-09-27 12:39:47 +02:00