2015-07-22 13:45:01 +08:00
|
|
|
Vector/Web
|
|
|
|
==========
|
2015-06-10 00:40:42 +08:00
|
|
|
|
2015-07-22 13:45:01 +08:00
|
|
|
Vector is a Matrix web client built using the Matrix React SDK (https://github.com/matrix-org/matrix-react-sdk).
|
2015-06-24 23:33:53 +08:00
|
|
|
|
2015-07-22 13:45:01 +08:00
|
|
|
Getting started
|
|
|
|
===============
|
2015-06-25 00:58:13 +08:00
|
|
|
|
|
|
|
1. Install or update `node.js` so that your `npm` is at least at version `2.0.0`
|
2015-07-28 23:30:01 +08:00
|
|
|
2. Clone the repo: `git clone https://github.com/vector-im/vector-web.git`
|
|
|
|
3. Switch to the SDK directory: `cd vector-web`
|
2015-07-03 22:56:04 +08:00
|
|
|
4. Install the prerequisites: `npm install`
|
2015-10-01 23:02:44 +08:00
|
|
|
5. Start the development builder and a testing server: `npm start`
|
|
|
|
6. Wait a few seconds for the initial build to finish.
|
|
|
|
7. Open http://127.0.0.1:8080/ in your browser to see your newly built Vector.
|
2015-06-25 00:58:13 +08:00
|
|
|
|
2015-10-02 23:44:35 +08:00
|
|
|
With `npm start`, any changes you make to the source files will cause a rebuild so
|
2016-02-05 02:43:23 +08:00
|
|
|
your changes will show up when you refresh. This development server also disables
|
|
|
|
caching, so do NOT use it in production.
|
2015-10-01 23:02:44 +08:00
|
|
|
|
|
|
|
For production use, run `npm run build` to build all the necessary files
|
|
|
|
into the `vector` directory and run your own server.
|
2015-06-25 00:58:13 +08:00
|
|
|
|
2015-07-22 13:45:01 +08:00
|
|
|
Development
|
|
|
|
===========
|
2015-10-25 19:56:29 +08:00
|
|
|
|
|
|
|
For simple tweaks, you can work on any of the source files within Vector with the
|
|
|
|
setup above, and your changes will cause an instant rebuild.
|
|
|
|
|
|
|
|
However, all serious development on Vector happens on the `develop` branch. This typically
|
|
|
|
depends on the `develop` snapshot versions of `matrix-react-sdk` and `matrix-js-sdk`
|
2015-10-25 20:35:52 +08:00
|
|
|
too, which isn't handled by Vector's `package.json`. To get the right dependencies, check out
|
2016-02-24 04:55:37 +08:00
|
|
|
the `develop` branches of these libraries and then use `ln -s` to tell Vector
|
2015-10-25 19:56:29 +08:00
|
|
|
about them:
|
2015-06-25 00:58:13 +08:00
|
|
|
|
2016-02-24 04:55:37 +08:00
|
|
|
[Be aware that there may be problems with this process under npm version 3.]
|
|
|
|
|
|
|
|
First clone and build `matrix-js-sdk`:
|
|
|
|
|
|
|
|
1. `git clone git@github.com:matrix-org/matrix-js-sdk.git`
|
|
|
|
1. `pushd matrix-js-sdk`
|
|
|
|
1. `git checkout develop`
|
|
|
|
1. `npm install`
|
|
|
|
1. `npm install source-map-loader` # because webpack is made of fail
|
|
|
|
1. `popd`
|
|
|
|
|
|
|
|
Then similarly with `matrix-react-sdk`:
|
|
|
|
|
2015-10-25 20:33:13 +08:00
|
|
|
1. `git clone git@github.com:matrix-org/matrix-react-sdk.git`
|
2016-02-24 04:55:37 +08:00
|
|
|
2. `pushd matrix-react-sdk`
|
2015-10-25 20:33:13 +08:00
|
|
|
3. `git checkout develop`
|
|
|
|
4. `npm install`
|
2016-02-24 04:55:37 +08:00
|
|
|
5. `rm -r node_modules/matrix-js-sdk; ln -s ../../matrix-js-sdk node_modules/`
|
|
|
|
6. `popd`
|
|
|
|
|
|
|
|
Finally, build and start vector itself:
|
|
|
|
|
|
|
|
1. `git clone git@github.com:vector-im/vector-web.git`
|
|
|
|
1. `cd vector-web`
|
|
|
|
1. `git checkout develop`
|
|
|
|
1. `npm install`
|
|
|
|
1. `rm -r node_modules/matrix-js-sdk; ln -s ../../matrix-js-sdk node_modules/`
|
|
|
|
1. `rm -r node_modules/matrix-react-sdk; ln -s ../../matrix-react-sdk node_modules/`
|
|
|
|
1. `npm start`
|
|
|
|
1. Wait a few seconds for the initial build to finish; you should see something like:
|
2016-02-24 05:00:27 +08:00
|
|
|
|
|
|
|
```
|
2016-02-24 04:55:37 +08:00
|
|
|
Hash: b0af76309dd56d7275c8
|
|
|
|
Version: webpack 1.12.14
|
|
|
|
Time: 14533ms
|
|
|
|
Asset Size Chunks Chunk Names
|
|
|
|
bundle.js 4.2 MB 0 [emitted] main
|
|
|
|
bundle.css 91.5 kB 0 [emitted] main
|
|
|
|
bundle.js.map 5.29 MB 0 [emitted] main
|
|
|
|
bundle.css.map 116 kB 0 [emitted] main
|
|
|
|
+ 1013 hidden modules
|
2016-02-24 05:00:27 +08:00
|
|
|
```
|
2016-02-24 04:55:37 +08:00
|
|
|
1. Open http://127.0.0.1:8080/ in your browser to see your newly built Vector.
|
|
|
|
|
|
|
|
When you make changes to `matrix-js-sdk` or `matrix-react-sdk`, you will need
|
|
|
|
to run `npm run build` in the relevant directory. You can do this automatically
|
|
|
|
by instead running `npm start` in each directory, to start a development
|
|
|
|
builder which will watch for changes to the files and rebuild automatically.
|
2015-10-25 19:56:29 +08:00
|
|
|
|
2015-10-01 23:02:44 +08:00
|
|
|
If you add or remove any components from the Vector skin, you will need to rebuild
|
|
|
|
the skin's index by running, `npm run reskindex`.
|
2015-07-08 00:46:06 +08:00
|
|
|
|
2015-09-20 03:17:45 +08:00
|
|
|
Deployment
|
|
|
|
==========
|
|
|
|
|
2015-11-22 09:13:08 +08:00
|
|
|
Just run `npm run build` and then mount the `vector` directory on your webserver to
|
2015-10-01 23:02:44 +08:00
|
|
|
actually serve up the app, which is entirely static content.
|
2015-07-08 01:27:34 +08:00
|
|
|
|
2015-12-04 02:24:44 +08:00
|
|
|
Enabling encryption
|
|
|
|
===================
|
|
|
|
|
2015-12-04 23:39:39 +08:00
|
|
|
End-to-end encryption in Vector and Matrix is not yet considered ready for
|
|
|
|
day-to-day use; it is experimental and should be considered only as a
|
2015-12-09 00:03:12 +08:00
|
|
|
proof-of-concept. See https://matrix.org/jira/browse/SPEC-162 for an overview
|
|
|
|
of the current progress.
|
2015-12-04 23:39:39 +08:00
|
|
|
|
|
|
|
To build a version of vector with support for end-to-end encryption, install
|
|
|
|
the olm module with `npm i https://matrix.org/packages/npm/olm/olm-0.1.0.tgz`
|
|
|
|
before running `npm start`. The olm library will be detected and used if
|
|
|
|
available.
|
|
|
|
|
|
|
|
To enable encryption for a room, type
|
|
|
|
|
|
|
|
```
|
|
|
|
/encrypt on
|
|
|
|
```
|
|
|
|
|
|
|
|
in the message bar in that room. Vector will then generate a set of keys, and
|
|
|
|
encrypt all outgoing messages in that room. (Note that other people in that
|
|
|
|
room will send messages in the clear unless they also `/encrypt on`.)
|
|
|
|
|
|
|
|
Note that historical encrypted messages cannot currently be decoded - history
|
|
|
|
is therefore lost when the page is reloaded.
|
|
|
|
|
|
|
|
There is currently no visual indication of whether encryption is enabled for a
|
|
|
|
room, or whether a particular message was encrypted.
|