summaryrefslogtreecommitdiff
path: root/doc/design/assistant/webapp.mdwn
blob: aa7b5fd6a28fa0313948bbeaeff3af723b09fc59 (plain)
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
The webapp is a web server that displays a shiny interface.

## performance

Having the webapp open while transfers are
running uses significant CPU just for the browser to update the progress 
bar. Unsurprising, since the webapp is sending the browser a new `<div>`
each time. Updating the DOM instead from javascript would avoid that;
the webapp just needs to send the javascript either a full `<div>` or a 
changed percentage and quantity complete to update a single progress bar.

(Another reason to do this is it'll cut down on the refreshes, which 
sometimes make browsers ignore clicks on UI elements like the pause button, 
if the transfer display refreshes just as the click is made.)

## other features

* there could be a UI to export a file, which would make it be served up
  over http by the web app
* there could be a UI (some javascript thing) in the web browser to
  submit urls to the web app to be added to the annex and downloaded.
  See: [[todo/wishlist:_an_"assistant"_for_web-browsing_--_tracking_the_sources_of_the_downloads]]
* Display the `inotify max_user_watches` exceeded message. **done**
* Display something sane when kqueue runs out of file descriptors.
* allow removing git remotes **done**
* allow disabling syncing to here, which should temporarily disable all
  local syncing. **done**

## first start **done**

* make git repo **done**
* generate a nice description like "joey@hostname Desktop/annex" **done**
* record repository that was made, and use it next time run **done**
* write a pid file, to prevent more than one first-start process running
  at once **done**

## security **acceptable/done**

* Listen only to localhost. **done**
* Instruct the user's web browser to open an url that contains a secret
  token. This guards against other users on the same system. **done**
  (I would like to avoid passwords or other authentication methods,
  it's your local system.)
* Don't pass the url with secret token directly to the web browser,
  as that exposes it to `ps`. Instead, write a html file only the user can read,
  that redirects to the webapp. **done**
* Alternative for Linux at least would be to write a small program using
  GTK+ Webkit, that runs the webapp, and can know what user ran it, avoiding
  needing authentication.