summaryrefslogtreecommitdiff
path: root/doc/design/assistant/webapp.mdwn
blob: f9844e73ca6d7c99fcd6a86a2af2becf9347dcf5 (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
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.

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