Compare commits
164 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2af3d20a71 | ||
|
|
fde9a7a7ba | ||
|
|
d6fb0bc24f | ||
|
|
f4b1e3307d | ||
|
|
52b2dbec85 | ||
|
|
aa10d7aeed | ||
|
|
7f7b3e747c | ||
|
|
59fa374491 | ||
|
|
001b7fb799 | ||
|
|
260f819e38 | ||
|
|
6306bc0c90 | ||
|
|
913bc6da93 | ||
|
|
6ac035f0b1 | ||
|
|
fa1b2fe70f | ||
|
|
4cbe6c1000 | ||
|
|
c203d3356b | ||
|
|
d617d8ebb3 | ||
|
|
43d2c3bbc8 | ||
|
|
3e17e9f00d | ||
|
|
b54a53d1ac | ||
|
|
bdb0f5e81c | ||
|
|
29398a0ab5 | ||
|
|
6f8c6bf13e | ||
|
|
45e8c26864 | ||
|
|
3123b429f7 | ||
|
|
05a2cb1020 | ||
|
|
5aa88abacc | ||
|
|
e749420196 | ||
|
|
8ac5957186 | ||
|
|
d0def4a80f | ||
|
|
5a6be9a665 | ||
|
|
734221cc3f | ||
|
|
f5e7dd5164 | ||
|
|
da9cde6d18 | ||
|
|
5aa8326dfc | ||
|
|
e4ed0994ce | ||
|
|
875d1b209a | ||
|
|
8ed44e6b64 | ||
|
|
814b5297ad | ||
|
|
2ab8db3c0c | ||
|
|
94979f7ff5 | ||
|
|
5c46bd37e8 | ||
|
|
c81b9bab79 | ||
|
|
818bab9fa4 | ||
|
|
ee0b7e9c82 | ||
|
|
03b2766ca8 | ||
|
|
eee2468a01 | ||
|
|
9cd4ac1df4 | ||
|
|
c612633402 | ||
|
|
0c36849c0f | ||
|
|
1a1f2254e5 | ||
|
|
908a72e00e | ||
|
|
2fe6b5074d | ||
|
|
a7756fc876 | ||
|
|
8cb7eeecd2 | ||
|
|
d4de7f5df3 | ||
|
|
989b75502c | ||
|
|
bb675fde0c | ||
|
|
6df5c35b4e | ||
|
|
9957149115 | ||
|
|
f98870db1f | ||
|
|
7c5e39e170 | ||
|
|
ebe2ab504b | ||
|
|
e4f997113d | ||
|
|
cb155769d5 | ||
|
|
49efece6c6 | ||
|
|
846797be76 | ||
|
|
d6d4d95b20 | ||
|
|
cc8eaea5a7 | ||
|
|
269a995a01 | ||
|
|
77dff119db | ||
|
|
0718d438b8 | ||
|
|
3a2541d3bf | ||
|
|
00d33599f0 | ||
|
|
f49732b036 | ||
|
|
73144c3493 | ||
|
|
c5e7e82b46 | ||
|
|
af6ad9355d | ||
|
|
6c4c908678 | ||
|
|
ae62a46a97 | ||
|
|
bf84c64ea9 | ||
|
|
5ac8a42681 | ||
|
|
03b1914112 | ||
|
|
ff21bde839 | ||
|
|
c62da0eda6 | ||
|
|
932d3a054c | ||
|
|
a67fd48720 | ||
|
|
afc2b48073 | ||
|
|
093d30121d | ||
|
|
1b8583fa51 | ||
|
|
ea37e777cf | ||
|
|
cc5911b4aa | ||
|
|
28d50100d8 | ||
|
|
8ef464597f | ||
|
|
2c64a4f3a1 | ||
|
|
8002d98f50 | ||
|
|
9519ad46a1 | ||
|
|
597b3e16e0 | ||
|
|
addca871ad | ||
|
|
2c0504d596 | ||
|
|
434e8cc937 | ||
|
|
6c950593b7 | ||
|
|
147f77f1dc | ||
|
|
86bbe156db | ||
|
|
bb5dedeeb9 | ||
|
|
261974e9eb | ||
|
|
cbaa7a81bf | ||
|
|
f400cea437 | ||
|
|
d187a437fe | ||
|
|
a263ca8cb3 | ||
|
|
eeae5dbcad | ||
|
|
1bb70930fa | ||
|
|
8e76cf2c13 | ||
|
|
9bf5828079 | ||
|
|
b3bee52ad1 | ||
|
|
2c9b51f29d | ||
|
|
96be8ad072 | ||
|
|
38b661e2cb | ||
|
|
657397b177 | ||
|
|
0796f32c17 | ||
|
|
c70a2925a8 | ||
|
|
17788b2027 | ||
|
|
527dc1982e | ||
|
|
449065b466 | ||
|
|
8a48d9e86b | ||
|
|
a41a14b975 | ||
|
|
26955d2b79 | ||
|
|
0a79496f0c | ||
|
|
1d23f8c2f4 | ||
|
|
8d27ed986c | ||
|
|
9b8607fc64 | ||
|
|
a5993419c4 | ||
|
|
ab136c42a7 | ||
|
|
ec08cd99aa | ||
|
|
2aeaa081fe | ||
|
|
b72ae197e5 | ||
|
|
0d2668f2b1 | ||
|
|
50b4906ea8 | ||
|
|
f36a24fef0 | ||
|
|
b1c885a266 | ||
|
|
958260d559 | ||
|
|
8b2d33ac0a | ||
|
|
95e247ae7c | ||
|
|
c55223e750 | ||
|
|
9cb452ad20 | ||
|
|
bc70577701 | ||
|
|
076c7f54a8 | ||
|
|
0837affa24 | ||
|
|
c82d4f3e44 | ||
|
|
a898aad667 | ||
|
|
f0a997629d | ||
|
|
8ecdb484c3 | ||
|
|
128abb46d2 | ||
|
|
bfa2101da0 | ||
|
|
15ff53dcb6 | ||
|
|
866f8f54ec | ||
|
|
eb1d1517ca | ||
|
|
fa10022496 | ||
|
|
01794ae65f | ||
|
|
5a051824c0 | ||
|
|
f4a0ff3642 | ||
|
|
9d133eea75 | ||
|
|
e47fae034a | ||
|
|
045b0b9889 |
21
.babelrc
21
.babelrc
@@ -1,4 +1,21 @@
|
||||
{
|
||||
"presets": ["react", "es2015", "es2016"],
|
||||
"plugins": ["transform-class-properties", "transform-object-rest-spread", "transform-async-to-bluebird", "transform-runtime", "add-module-exports"]
|
||||
"presets": [
|
||||
"react",
|
||||
"es2015",
|
||||
"es2016"
|
||||
],
|
||||
"plugins": [
|
||||
[
|
||||
"transform-builtin-extend",
|
||||
{
|
||||
"globals": ["Error"]
|
||||
}
|
||||
],
|
||||
"transform-class-properties",
|
||||
"transform-object-rest-spread",
|
||||
"transform-async-to-bluebird",
|
||||
"transform-runtime",
|
||||
"add-module-exports",
|
||||
"syntax-dynamic-import"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -31,3 +31,16 @@ steps:
|
||||
- docker#v3.0.1:
|
||||
image: "node:10"
|
||||
propagate-environment: true
|
||||
|
||||
- label: ":hammer: Package"
|
||||
command:
|
||||
- "echo '--- Fetching Dependencies'"
|
||||
- "./scripts/fetch-develop.deps.sh --depth 1"
|
||||
- "yarn install"
|
||||
- "echo '+++ Packaging'"
|
||||
- "./scripts/ci_package.sh"
|
||||
branches: "develop"
|
||||
artifact_paths: "dist/riot-*.tar.gz"
|
||||
plugins:
|
||||
- docker#v3.0.1:
|
||||
image: "node:10"
|
||||
|
||||
11
.dockerignore
Normal file
11
.dockerignore
Normal file
@@ -0,0 +1,11 @@
|
||||
# Exclude a bunch of stuff which can make the build context a larger than it needs to be
|
||||
.git/
|
||||
test/
|
||||
webapp/
|
||||
lib/
|
||||
node_modules/
|
||||
electron_app/
|
||||
karma-reports/
|
||||
.idea/
|
||||
.tmp/
|
||||
config.json*
|
||||
@@ -2,7 +2,7 @@
|
||||
name: User Interface or Usability Bug report
|
||||
about: Please include screenshots in UI/UX bug reports
|
||||
title: ''
|
||||
labels: ''
|
||||
labels: bug, ui/ux
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,7 +1,6 @@
|
||||
/build
|
||||
/cert.pem
|
||||
/dist
|
||||
/karma-reports
|
||||
/key.pem
|
||||
/lib
|
||||
/node_modules
|
||||
|
||||
101
CHANGELOG.md
101
CHANGELOG.md
@@ -1,3 +1,104 @@
|
||||
Changes in [1.2.0](https://github.com/vector-im/riot-web/releases/tag/v1.2.0) (2019-05-29)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.0-rc.1...v1.2.0)
|
||||
|
||||
* Upgrade to JS SDK v1.2.0 and React SDK v1.2.0 to fix some regressions
|
||||
|
||||
Changes in [1.2.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.0-rc.1) (2019-05-23)
|
||||
====================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.2...v1.2.0-rc.1)
|
||||
|
||||
* Update from Weblate
|
||||
[\#9802](https://github.com/vector-im/riot-web/pull/9802)
|
||||
* remove emojione
|
||||
[\#9766](https://github.com/vector-im/riot-web/pull/9766)
|
||||
* Make Dockerfile work for develop and other branches
|
||||
[\#9736](https://github.com/vector-im/riot-web/pull/9736)
|
||||
* add description of new labs feature for message editing
|
||||
[\#9728](https://github.com/vector-im/riot-web/pull/9728)
|
||||
* Remove karma junit output
|
||||
[\#9628](https://github.com/vector-im/riot-web/pull/9628)
|
||||
* yarn upgrade
|
||||
[\#9626](https://github.com/vector-im/riot-web/pull/9626)
|
||||
* Respond quickly to buildkite pokes
|
||||
[\#9617](https://github.com/vector-im/riot-web/pull/9617)
|
||||
* Delay creating the `Favico` instance
|
||||
[\#9616](https://github.com/vector-im/riot-web/pull/9616)
|
||||
* Add reactions feature to config sample
|
||||
[\#9598](https://github.com/vector-im/riot-web/pull/9598)
|
||||
|
||||
Changes in [1.1.2](https://github.com/vector-im/riot-web/releases/tag/v1.1.2) (2019-05-15)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.1...v1.1.2)
|
||||
|
||||
* react-sdk v1.1.2 to fix single sign-on and GIF autoplaying
|
||||
|
||||
Changes in [1.1.1](https://github.com/vector-im/riot-web/releases/tag/v1.1.1) (2019-05-14)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.0...v1.1.1)
|
||||
|
||||
* react-sdk v1.1.1 to fix regressions with registration
|
||||
|
||||
Changes in [1.1.0](https://github.com/vector-im/riot-web/releases/tag/v1.1.0) (2019-05-07)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.0-rc.1...v1.1.0)
|
||||
|
||||
* Add Dockerfile
|
||||
[\#9632](https://github.com/vector-im/riot-web/pull/9632)
|
||||
* Add Dockerfile (part 2)
|
||||
[\#9426](https://github.com/vector-im/riot-web/pull/9426)
|
||||
* Add new scalar staging url
|
||||
[\#9601](https://github.com/vector-im/riot-web/pull/9601)
|
||||
|
||||
Changes in [1.1.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.1.0-rc.1) (2019-04-30)
|
||||
====================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.8...v1.1.0-rc.1)
|
||||
|
||||
* Convert redeploy.py to buildkite
|
||||
[\#9577](https://github.com/vector-im/riot-web/pull/9577)
|
||||
* Add package step to buildkite pipeline
|
||||
[\#9568](https://github.com/vector-im/riot-web/pull/9568)
|
||||
* Don't fail if there's no local config to remove
|
||||
[\#9571](https://github.com/vector-im/riot-web/pull/9571)
|
||||
* Change jenkins script to package script
|
||||
[\#9567](https://github.com/vector-im/riot-web/pull/9567)
|
||||
* Remove config.json from package dir
|
||||
[\#9555](https://github.com/vector-im/riot-web/pull/9555)
|
||||
* use the release version of olm 3.1.0
|
||||
[\#9550](https://github.com/vector-im/riot-web/pull/9550)
|
||||
* Fix default for --include arg
|
||||
[\#9517](https://github.com/vector-im/riot-web/pull/9517)
|
||||
* update installation instructions with new repo
|
||||
[\#9500](https://github.com/vector-im/riot-web/pull/9500)
|
||||
* Use packages.matrix.org for Olm
|
||||
[\#9498](https://github.com/vector-im/riot-web/pull/9498)
|
||||
* Add separate platform electron build commands
|
||||
[\#9412](https://github.com/vector-im/riot-web/pull/9412)
|
||||
* Add support for custom profile directory
|
||||
[\#9408](https://github.com/vector-im/riot-web/pull/9408)
|
||||
* Improved mobile install guide
|
||||
[\#9410](https://github.com/vector-im/riot-web/pull/9410)
|
||||
* Remove vector-electron-desktop from README
|
||||
[\#9404](https://github.com/vector-im/riot-web/pull/9404)
|
||||
* Update from Weblate
|
||||
[\#9398](https://github.com/vector-im/riot-web/pull/9398)
|
||||
* bump olm version to 3.1.0-pre3
|
||||
[\#9392](https://github.com/vector-im/riot-web/pull/9392)
|
||||
* Add expiration to mobile guide cookie
|
||||
[\#9383](https://github.com/vector-im/riot-web/pull/9383)
|
||||
* Fix autolaunch setting appearing toggled off
|
||||
[\#9368](https://github.com/vector-im/riot-web/pull/9368)
|
||||
* Don't try to save files the user didn't want to save
|
||||
[\#9352](https://github.com/vector-im/riot-web/pull/9352)
|
||||
* Setup crypto store for restore session tests
|
||||
[\#9325](https://github.com/vector-im/riot-web/pull/9325)
|
||||
* Update from Weblate
|
||||
[\#9333](https://github.com/vector-im/riot-web/pull/9333)
|
||||
* Add "Save image as..." button to context menu on images
|
||||
[\#9326](https://github.com/vector-im/riot-web/pull/9326)
|
||||
* Configure auth footer links through Riot config
|
||||
[\#9297](https://github.com/vector-im/riot-web/pull/9297)
|
||||
|
||||
Changes in [1.0.8](https://github.com/vector-im/riot-web/releases/tag/v1.0.8) (2019-04-16)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.7...v1.0.8)
|
||||
|
||||
31
Dockerfile
Normal file
31
Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
||||
# Builder
|
||||
FROM node:10-alpine as builder
|
||||
|
||||
# Support custom branches of the react-sdk and js-sdk. This also helps us build
|
||||
# images of riot-web develop.
|
||||
ARG USE_CUSTOM_SDKS=false
|
||||
ARG REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git"
|
||||
ARG REACT_SDK_BRANCH="master"
|
||||
ARG JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git"
|
||||
ARG JS_SDK_BRANCH="master"
|
||||
|
||||
RUN apk add --no-cache git dos2unix
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY . /src
|
||||
RUN dos2unix /src/scripts/docker-link-repos.sh && sh /src/scripts/docker-link-repos.sh
|
||||
RUN yarn --network-timeout=100000 install
|
||||
RUN yarn build
|
||||
|
||||
# Copy the config now so that we don't create another layer in the app image
|
||||
RUN cp /src/config.sample.json /src/webapp/config.json
|
||||
|
||||
|
||||
# App
|
||||
FROM nginx:latest
|
||||
|
||||
COPY --from=builder /src/webapp /app
|
||||
|
||||
RUN rm -rf /usr/share/nginx/html \
|
||||
&& ln -s /app /usr/share/nginx/html
|
||||
61
README.md
61
README.md
@@ -24,21 +24,15 @@ released version of Riot:
|
||||
as desired. See below for details.
|
||||
1. Enter the URL into your browser and log into Riot!
|
||||
|
||||
Releases are signed by PGP, and can be checked against the public key
|
||||
at https://riot.im/packages/keys/riot.asc .
|
||||
Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located
|
||||
at https://packages.riot.im/riot-release-key.asc.
|
||||
|
||||
Note that Chrome does not allow microphone or webcam access for sites served
|
||||
over http (except localhost), so for working VoIP you will need to serve Riot
|
||||
over https.
|
||||
|
||||
### Desktop Installation for Debian Stretch
|
||||
|
||||
1. Add the repository to your sources.list using either of the following two options:
|
||||
- Directly to sources.list: `echo "deb https://riot.im/packages/debian/ stretch main" | sudo tee -a /etc/apt/sources.list`
|
||||
- As a separate entry in sources.list.d: `echo "deb https://riot.im/packages/debian/ stretch main" | sudo tee /etc/apt/sources.list.d/riot.list`
|
||||
2. Add the gpg signing key for the riot repository: `curl -s https://riot.im/packages/debian/repo-key.asc | sudo apt-key add -`
|
||||
3. Update your package lists: `sudo apt-get update`
|
||||
4. Install Riot: `sudo apt-get install riot-web`
|
||||
To install Riot as a desktop application, see [Running as a desktop
|
||||
app](#running-as-a-desktop-app) below.
|
||||
|
||||
Important Security Note
|
||||
=======================
|
||||
@@ -141,6 +135,8 @@ For a good example, see https://riot.im/develop/config.json.
|
||||
during authentication flows
|
||||
1. `authHeaderLogoUrl`: An logo image that is shown in the header during
|
||||
authentication flows
|
||||
1. `authFooterLinks`: a list of links to show in the authentication page footer:
|
||||
`[{"text": "Link text", "url": "https://link.target"}, {"text": "Other link", ...}]`
|
||||
1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations
|
||||
server is not Riot and normally not your homeserver either. The integration server settings
|
||||
may be left blank to disable integrations.
|
||||
@@ -193,10 +189,10 @@ Running as a Desktop app
|
||||
========================
|
||||
|
||||
Riot can also be run as a desktop app, wrapped in electron. You can download a
|
||||
pre-built version from https://riot.im/desktop.html or, if you prefer,
|
||||
build it yourself. Requires Electron >=1.6.0
|
||||
pre-built version from https://riot.im/download/desktop/ or, if you prefer,
|
||||
build it yourself.
|
||||
|
||||
To run as a desktop app:
|
||||
To build it yourself, follow the instructions below.
|
||||
|
||||
1. Follow the instructions in 'Building From Source' above, but run
|
||||
`yarn build` instead of `yarn dist` (since we don't need the tarball).
|
||||
@@ -236,7 +232,6 @@ All electron packages go into `electron_app/dist/`
|
||||
Many thanks to @aviraldg for the initial work on the electron integration.
|
||||
|
||||
Other options for running as a desktop app:
|
||||
* https://github.com/krisak/vector-electron-desktop
|
||||
* @asdf:matrix.org points out that you can use nativefier and it just works(tm)
|
||||
|
||||
```bash
|
||||
@@ -249,6 +244,8 @@ Desktop app configuration
|
||||
|
||||
To run multiple instances of the desktop app for different accounts, you can launch the executable with the `--profile` argument followed by a unique identifier, e.g `riot-web --profile Work` for it to run a separate profile and not interfere with the default one.
|
||||
|
||||
Alternatively, a custom location for the profile data can be specified using the `--profile-dir` flag followed by the desired path.
|
||||
|
||||
To change the config.json for the desktop app, create a config file which will be used to override values in the config which ships in the package:
|
||||
+ `%APPDATA%\$NAME\config.json` on Windows
|
||||
+ `$XDG_CONFIG_HOME\$NAME\config.json` or `~/.config/$NAME/config.json` on Linux
|
||||
@@ -256,6 +253,42 @@ To change the config.json for the desktop app, create a config file which will b
|
||||
|
||||
In the paths above, `$NAME` is typically `Riot`, unless you use `--profile $PROFILE` in which case it becomes `Riot-$PROFILE`.
|
||||
|
||||
Running from Docker
|
||||
===================
|
||||
|
||||
The Docker image can be used to serve riot-web as a web server. The easiest way to use
|
||||
it is to use the prebuilt image:
|
||||
```bash
|
||||
docker run -p 80:80 vectorim/riot-web
|
||||
```
|
||||
|
||||
To supply your own custom `config.json`, map a volume to `/app/config.json`. For example,
|
||||
if your custom config was located at `/etc/riot-web/config.json` then your Docker command
|
||||
would be:
|
||||
```bash
|
||||
docker run -p 80:80 -v /etc/riot-web/config.json:/app/config.json vectorim/riot-web
|
||||
```
|
||||
|
||||
To build the image yourself:
|
||||
```bash
|
||||
git clone https://github.com/vector-im/riot-web.git riot-web
|
||||
cd riot-web
|
||||
git checkout master
|
||||
docker build -t vectorim/riot-web .
|
||||
```
|
||||
|
||||
If you're building a custom branch, or want to use the develop branch, check out the appropriate
|
||||
riot-web branch and then run:
|
||||
```bash
|
||||
docker build -t vectorim/riot-web:develop \
|
||||
--build-arg USE_CUSTOM_SDKS=true \
|
||||
--build-arg REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git" \
|
||||
--build-arg REACT_SDK_BRANCH="develop" \
|
||||
--build-arg JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git" \
|
||||
--build-arg JS_SDK_BRANCH="develop" \
|
||||
.
|
||||
```
|
||||
|
||||
Labs Features
|
||||
=============
|
||||
|
||||
|
||||
@@ -12,7 +12,9 @@
|
||||
"bug_report_endpoint_url": "https://riot.im/bugreports/submit",
|
||||
"features": {
|
||||
"feature_groups": "labs",
|
||||
"feature_pinning": "labs"
|
||||
"feature_pinning": "labs",
|
||||
"feature_reactions": "labs",
|
||||
"feature_message_editing": "labs"
|
||||
},
|
||||
"default_federate": true,
|
||||
"default_theme": "light",
|
||||
|
||||
17
docs/labs.md
17
docs/labs.md
@@ -1,4 +1,4 @@
|
||||
# riot-web Labs features
|
||||
# Labs features
|
||||
|
||||
Some notes on the features you can enable by going to `Settings->Labs`. Not exhaustive, chat in
|
||||
[#riot-web:matrix.org] for more information.
|
||||
@@ -29,4 +29,17 @@ Once enabled, send a custom state event to a room to set values:
|
||||
|
||||
That's it. Now should see your new counter under the header.
|
||||
|
||||
[#riot-web:matrix.org]: https://matrix.to/#/#riot-web:matrix.org
|
||||
## Reactions
|
||||
|
||||
`feature_reactions` allows reacting to messages with emoji and displaying
|
||||
reactions from other people. This feature is currently under active development,
|
||||
and only portions have been implemented so far.
|
||||
|
||||
## Message editing
|
||||
|
||||
`feature_message_editing` allows editing messages after they have been sent,
|
||||
accessible from the reaction/context bar when hovering a message.
|
||||
This feature is currently under active development,
|
||||
and only portions have been implemented so far.
|
||||
|
||||
[#riot-web:matrix.org]: https://matrix.to/#/#riot-web:matrix.org
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"main": "src/electron-main.js",
|
||||
"version": "1.0.8",
|
||||
"version": "1.2.0",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "New Vector Ltd.",
|
||||
"dependencies": {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"integrations_ui_url": "https://scalar.vector.im/",
|
||||
"integrations_rest_url": "https://scalar.vector.im/api",
|
||||
"integrations_widgets_urls": [
|
||||
"https://scalar-staging.vector.im/api",
|
||||
"https://scalar-staging.riot.im/scalar/api",
|
||||
"https://scalar.vector.im/api"
|
||||
],
|
||||
|
||||
@@ -42,7 +42,9 @@ const Store = require('electron-store');
|
||||
// migrating to mitigate any risk of it being used maliciously.
|
||||
let migratingOrigin = false;
|
||||
|
||||
if (argv['profile']) {
|
||||
if (argv['profile-dir']) {
|
||||
app.setPath('userData', argv['profile-dir']);
|
||||
} else if (argv['profile']) {
|
||||
app.setPath('userData', `${app.getPath('userData')}-${argv['profile']}`);
|
||||
}
|
||||
|
||||
@@ -139,7 +141,7 @@ ipcMain.on('ipcCall', async function(ev, payload) {
|
||||
ret = autoUpdater.getFeedURL();
|
||||
break;
|
||||
case 'getAutoLaunchEnabled':
|
||||
ret = launcher.isEnabled;
|
||||
ret = await launcher.isEnabled();
|
||||
break;
|
||||
case 'setAutoLaunchEnabled':
|
||||
if (args[0]) {
|
||||
|
||||
@@ -96,13 +96,14 @@ function onLinkContextMenu(ev, params) {
|
||||
defaultPath: targetFileName,
|
||||
});
|
||||
|
||||
if (!filePath) return; // user cancelled dialog
|
||||
|
||||
try {
|
||||
if (url.startsWith("data:")) {
|
||||
fs.writeFileSync(filePath, nativeImage.createFromDataURL(url));
|
||||
} else {
|
||||
request.get(url).pipe(fs.createWriteStream(filePath));
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
dialog.showMessageBox({
|
||||
|
||||
@@ -100,7 +100,7 @@ module.exports = function (config) {
|
||||
|
||||
// test results reporter to use
|
||||
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
|
||||
reporters: ['logcapture', 'spec', 'junit', 'summary'],
|
||||
reporters: ['logcapture', 'spec', 'summary'],
|
||||
|
||||
specReporter: {
|
||||
suppressErrorSummary: false, // do print error summary
|
||||
@@ -159,10 +159,6 @@ module.exports = function (config) {
|
||||
// how many browser should be started simultaneous
|
||||
concurrency: Infinity,
|
||||
|
||||
junitReporter: {
|
||||
outputDir: 'karma-reports',
|
||||
},
|
||||
|
||||
webpack: webpack_config,
|
||||
|
||||
webpackMiddleware: {
|
||||
|
||||
17
package.json
17
package.json
@@ -2,7 +2,7 @@
|
||||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"main": "electron_app/src/electron-main.js",
|
||||
"version": "1.0.8",
|
||||
"version": "1.2.0",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "New Vector Ltd.",
|
||||
"repository": {
|
||||
@@ -36,6 +36,9 @@
|
||||
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production",
|
||||
"build:bundle:dev": "webpack --progress --bail --mode development",
|
||||
"build:electron": "yarn clean && yarn build && yarn install:electron && build -wml --ia32 --x64",
|
||||
"build:electron:linux": "yarn build && build -l --x64",
|
||||
"build:electron:macos": "yarn build && build -m --x64",
|
||||
"build:electron:windows": "yarn build && build -w --ia32 --x64",
|
||||
"build:react-sdk": "node scripts/yarn-sub.js matrix-react-sdk build",
|
||||
"build:js-sdk": "node scripts/yarn-sub.js matrix-js-sdk start:init",
|
||||
"build": "yarn build:js-sdk && yarn build:react-sdk && yarn reskindex && yarn build:res && yarn build:bundle",
|
||||
@@ -70,10 +73,10 @@
|
||||
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279",
|
||||
"gfm.css": "^1.1.2",
|
||||
"highlight.js": "^9.13.1",
|
||||
"matrix-js-sdk": "1.0.4",
|
||||
"matrix-react-sdk": "1.0.7",
|
||||
"matrix-js-sdk": "1.2.0",
|
||||
"matrix-react-sdk": "1.2.0",
|
||||
"modernizr": "^3.6.0",
|
||||
"olm": "https://matrix.org/packages/npm/olm/olm-3.1.0-pre1.tgz",
|
||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.0.tgz",
|
||||
"prop-types": "^15.6.2",
|
||||
"react": "^15.6.0",
|
||||
"react-dom": "^15.6.0",
|
||||
@@ -88,7 +91,9 @@
|
||||
"babel-eslint": "^8.1.1",
|
||||
"babel-loader": "^7.1.5",
|
||||
"babel-plugin-add-module-exports": "^0.2.1",
|
||||
"babel-plugin-syntax-dynamic-import": "^6.18.0",
|
||||
"babel-plugin-transform-async-to-bluebird": "^1.1.1",
|
||||
"babel-plugin-transform-builtin-extend": "^1.1.2",
|
||||
"babel-plugin-transform-class-properties": "^6.24.1",
|
||||
"babel-plugin-transform-object-rest-spread": "^6.26.0",
|
||||
"babel-plugin-transform-runtime": "^6.23.0",
|
||||
@@ -105,7 +110,6 @@
|
||||
"electron-builder": "^20.38.5",
|
||||
"electron-builder-squirrel-windows": "^20.38.5",
|
||||
"electron-devtools-installer": "^2.2.4",
|
||||
"emojione": "^2.2.7",
|
||||
"eslint": "^5.8.0",
|
||||
"eslint-config-google": "^0.7.1",
|
||||
"eslint-plugin-babel": "^4.1.2",
|
||||
@@ -119,7 +123,6 @@
|
||||
"karma": "^3.1.2",
|
||||
"karma-chrome-launcher": "^2.2.0",
|
||||
"karma-cli": "^1.0.1",
|
||||
"karma-junit-reporter": "^2.0.0",
|
||||
"karma-logcapture-reporter": "0.0.1",
|
||||
"karma-mocha": "^1.3.0",
|
||||
"karma-sourcemap-loader": "^0.3.7",
|
||||
@@ -150,7 +153,7 @@
|
||||
},
|
||||
"build": {
|
||||
"appId": "im.riot.app",
|
||||
"electronVersion": "4.1.3",
|
||||
"electronVersion": "4.2.2",
|
||||
"files": [
|
||||
"node_modules/**",
|
||||
"src/**",
|
||||
|
||||
@@ -1 +1 @@
|
||||
signing_id: packages@riot.im
|
||||
signing_id: releases@riot.im
|
||||
|
||||
@@ -1,24 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
# Runs package.sh setting the version to git hashes of the riot-web,
|
||||
# react-sdk & js-sdk checkouts, for the case where these dependencies
|
||||
# are git checkouts.
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
||||
nvm use 10
|
||||
|
||||
set -x
|
||||
|
||||
# check out corresponding branches of dependencies.
|
||||
# clone the deps with depth 1: we know we will only ever need that one commit.
|
||||
`dirname $0`/fetch-develop.deps.sh --depth 1
|
||||
|
||||
yarn install
|
||||
|
||||
# run the mocha tests
|
||||
yarn test
|
||||
|
||||
# run eslint
|
||||
yarn lintall -- -f checkstyle -o eslint.xml || true
|
||||
set -ex
|
||||
|
||||
rm dist/riot-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist
|
||||
|
||||
@@ -57,8 +57,6 @@ const COPY_LIST = [
|
||||
["res/themes/**", "webapp/themes"],
|
||||
["res/vector-icons/**", "webapp/vector-icons"],
|
||||
["node_modules/matrix-react-sdk/res/media/**", "webapp/media"],
|
||||
["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"],
|
||||
["node_modules/emojione/assets/png/*", "webapp/emojione/png/"],
|
||||
["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
|
||||
["./config.json", "webapp", { directwatch: 1 }],
|
||||
];
|
||||
|
||||
@@ -166,7 +166,7 @@ if __name__ == "__main__":
|
||||
)
|
||||
)
|
||||
parser.add_argument(
|
||||
"--include", nargs='*', default='./config*.json', help=(
|
||||
"--include", nargs='*', default=['./config*.json'], help=(
|
||||
"Symlink these files into the root of the deployed tarball. \
|
||||
Useful for config files and home pages. Supports glob syntax. \
|
||||
(Default: '%(default)s')"
|
||||
|
||||
30
scripts/docker-link-repos.sh
Normal file
30
scripts/docker-link-repos.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
if [ $USE_CUSTOM_SDKS == false ]
|
||||
then
|
||||
echo "skipping react-sdk and js-sdk installs: USE_CUSTOM_SDKS is false"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Linking js-sdk"
|
||||
git clone $JS_SDK_REPO js-sdk
|
||||
cd js-sdk
|
||||
git checkout $JS_SDK_BRANCH
|
||||
yarn link
|
||||
yarn --network-timeout=100000 install
|
||||
cd ../
|
||||
|
||||
echo "Linking react-sdk"
|
||||
git clone $REACT_SDK_REPO react-sdk
|
||||
cd react-sdk
|
||||
git checkout $REACT_SDK_BRANCH
|
||||
yarn link
|
||||
yarn link matrix-js-sdk
|
||||
yarn --network-timeout=100000 install
|
||||
cd ../
|
||||
|
||||
echo "Setting up riot-web with react-sdk and js-sdk packages"
|
||||
yarn link matrix-js-sdk
|
||||
yarn link matrix-react-sdk
|
||||
@@ -23,6 +23,9 @@ cp config.sample.json webapp/
|
||||
mkdir -p dist
|
||||
cp -r webapp riot-$version
|
||||
|
||||
# Just in case you have a local config, remove it before packaging
|
||||
rm riot-$version/config.json || true
|
||||
|
||||
# if $version looks like semver with leading v, strip it before writing to file
|
||||
if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then
|
||||
echo ${version:1} > riot-$version/version
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
#
|
||||
# auto-deploy script for https://riot.im/develop
|
||||
#
|
||||
# Listens for HTTP hits. When it gets one, downloads the artifact from jenkins
|
||||
# Listens for buildkite webhook pokes (https://buildkite.com/docs/apis/webhooks)
|
||||
# When it gets one, downloads the artifact from buildkite
|
||||
# and deploys it as the new version.
|
||||
#
|
||||
# Requires the following python packages:
|
||||
@@ -16,6 +17,10 @@ import time
|
||||
import traceback
|
||||
from urlparse import urljoin
|
||||
import glob
|
||||
import re
|
||||
import shutil
|
||||
import threading
|
||||
from Queue import Queue
|
||||
|
||||
from flask import Flask, jsonify, request, abort
|
||||
|
||||
@@ -23,10 +28,13 @@ from deploy import Deployer, DeployException
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
arg_jenkins_url = None
|
||||
deployer = None
|
||||
arg_extract_path = None
|
||||
arg_symlink = None
|
||||
arg_webhook_token = None
|
||||
arg_api_token = None
|
||||
|
||||
workQueue = Queue()
|
||||
|
||||
def create_symlink(source, linkname):
|
||||
try:
|
||||
@@ -39,81 +47,117 @@ def create_symlink(source, linkname):
|
||||
else:
|
||||
raise e
|
||||
|
||||
def req_headers():
|
||||
return {
|
||||
"Authorization": "Bearer %s" % (arg_api_token,),
|
||||
}
|
||||
|
||||
# Buildkite considers a poke to have failed if it has to wait more than 10s for
|
||||
# data (any data, not just the initial response) and it normally takes longer than
|
||||
# that to download an artifact from buildkite. Apparently there is no way in flask
|
||||
# to finish the response and then keep doing stuff, so instead this has to involve
|
||||
# threading. Sigh.
|
||||
def worker_thread():
|
||||
while True:
|
||||
toDeploy = workQueue.get()
|
||||
deploy_buildkite_artifact(*toDeploy)
|
||||
|
||||
@app.route("/", methods=["POST"])
|
||||
def on_receive_jenkins_poke():
|
||||
# {
|
||||
# "name": "VectorWebDevelop",
|
||||
# "build": {
|
||||
# "number": 8
|
||||
# }
|
||||
# }
|
||||
def on_receive_buildkite_poke():
|
||||
got_webhook_token = request.headers.get('X-Buildkite-Token')
|
||||
if got_webhook_token != arg_webbook_token:
|
||||
print("Denying request with incorrect webhook token: %s" % (got_webhook_token,))
|
||||
abort(400, "Incorrect webhook token")
|
||||
return
|
||||
|
||||
required_api_prefix = None
|
||||
if arg_buildkite_org is not None:
|
||||
required_api_prefix = 'https://api.buildkite.com/v2/organizations/%s' % (arg_buildkite_org,)
|
||||
|
||||
incoming_json = request.get_json()
|
||||
if not incoming_json:
|
||||
abort(400, "No JSON provided!")
|
||||
return
|
||||
print("Incoming JSON: %s" % (incoming_json,))
|
||||
|
||||
job_name = incoming_json.get("name")
|
||||
if not isinstance(job_name, basestring):
|
||||
abort(400, "Bad job name: %s" % (job_name,))
|
||||
event = incoming_json.get("event")
|
||||
if event is None:
|
||||
abort(400, "No 'event' specified")
|
||||
return
|
||||
|
||||
build_num = incoming_json.get("build", {}).get("number", 0)
|
||||
if not build_num or build_num <= 0 or not isinstance(build_num, int):
|
||||
abort(400, "Missing or bad build number")
|
||||
if event == 'ping':
|
||||
print("Got ping request - responding")
|
||||
return jsonify({'response': 'pong!'})
|
||||
|
||||
if event != 'build.finished':
|
||||
print("Rejecting '%s' event")
|
||||
abort(400, "Unrecognised event")
|
||||
return
|
||||
|
||||
return fetch_jenkins_build(job_name, build_num)
|
||||
|
||||
def fetch_jenkins_build(job_name, build_num):
|
||||
artifact_url = urljoin(
|
||||
arg_jenkins_url, "job/%s/%s/api/json" % (job_name, build_num)
|
||||
)
|
||||
artifact_response = requests.get(artifact_url).json()
|
||||
|
||||
# {
|
||||
# "actions": [],
|
||||
# "artifacts": [
|
||||
# {
|
||||
# "displayPath": "vector-043f6991a4ed-react-20f77d1224ef-js-0a7efe3e8bd5.tar.gz",
|
||||
# "fileName": "vector-043f6991a4ed-react-20f77d1224ef-js-0a7efe3e8bd5.tar.gz",
|
||||
# "relativePath": "vector-043f6991a4ed-react-20f77d1224ef-js-0a7efe3e8bd5.tar.gz"
|
||||
# }
|
||||
# ],
|
||||
# "building": false,
|
||||
# "description": null,
|
||||
# "displayName": "#11",
|
||||
# "duration": 137976,
|
||||
# "estimatedDuration": 132008,
|
||||
# "executor": null,
|
||||
# "fullDisplayName": "VectorWebDevelop #11",
|
||||
# "id": "11",
|
||||
# "keepLog": false,
|
||||
# "number": 11,
|
||||
# "queueId": 12254,
|
||||
# "result": "SUCCESS",
|
||||
# "timestamp": 1454432640079,
|
||||
# "url": "http://matrix.org/jenkins/job/VectorWebDevelop/11/",
|
||||
# "builtOn": "",
|
||||
# "changeSet": {},
|
||||
# "culprits": []
|
||||
# }
|
||||
if artifact_response.get("result") != "SUCCESS":
|
||||
abort(404, "Not deploying. Build was not marked as SUCCESS.")
|
||||
build_obj = incoming_json.get("build")
|
||||
if build_obj is None:
|
||||
abort(400, "No 'build' object")
|
||||
return
|
||||
|
||||
if len(artifact_response.get("artifacts", [])) != 1:
|
||||
abort(404, "Not deploying. Build has an unexpected number of artifacts.")
|
||||
build_url = build_obj.get('url')
|
||||
if build_url is None:
|
||||
abort(400, "build has no url")
|
||||
return
|
||||
|
||||
tar_gz_path = artifact_response["artifacts"][0]["relativePath"]
|
||||
if not tar_gz_path.endswith(".tar.gz"):
|
||||
abort(404, "Not deploying. Artifact is not a .tar.gz file")
|
||||
if required_api_prefix is not None and not build_url.startswith(required_api_prefix):
|
||||
print("Denying poke for build url with incorrect prefix: %s" % (build_url,))
|
||||
abort(400, "Invalid build url")
|
||||
return
|
||||
|
||||
tar_gz_url = urljoin(
|
||||
arg_jenkins_url, "job/%s/%s/artifact/%s" % (job_name, build_num, tar_gz_path)
|
||||
)
|
||||
build_num = build_obj.get('number')
|
||||
if build_num is None:
|
||||
abort(400, "build has no number")
|
||||
return
|
||||
|
||||
pipeline_obj = incoming_json.get("pipeline")
|
||||
if pipeline_obj is None:
|
||||
abort(400, "No 'pipeline' object")
|
||||
return
|
||||
|
||||
pipeline_name = pipeline_obj.get('name')
|
||||
if pipeline_name is None:
|
||||
abort(400, "pipeline has no name")
|
||||
return
|
||||
|
||||
artifacts_url = build_url + "/artifacts"
|
||||
artifacts_resp = requests.get(artifacts_url, headers=req_headers())
|
||||
artifacts_resp.raise_for_status()
|
||||
artifacts_array = artifacts_resp.json()
|
||||
|
||||
artifact_to_deploy = None
|
||||
for artifact in artifacts_array:
|
||||
if re.match(r"dist/.*.tar.gz", artifact['path']):
|
||||
artifact_to_deploy = artifact
|
||||
if artifact_to_deploy is None:
|
||||
print("No suitable artifacts found")
|
||||
return jsonify({})
|
||||
|
||||
# double paranoia check: make sure the artifact is on the right org too
|
||||
if required_api_prefix is not None and not artifact_to_deploy['url'].startswith(required_api_prefix):
|
||||
print("Denying poke for build url with incorrect prefix: %s" % (artifact_to_deploy['url'],))
|
||||
abort(400, "Refusing to deploy artifact from URL %s", artifact_to_deploy['url'])
|
||||
return
|
||||
|
||||
# there's no point building up a queue of things to deploy, so if there are any pending jobs,
|
||||
# remove them
|
||||
while not workQueue.empty():
|
||||
try:
|
||||
workQueue.get(False)
|
||||
except:
|
||||
pass
|
||||
workQueue.put([artifact_to_deploy, pipeline_name, build_num])
|
||||
|
||||
return jsonify({})
|
||||
|
||||
def deploy_buildkite_artifact(artifact, pipeline_name, build_num):
|
||||
artifact_response = requests.get(artifact['url'], headers=req_headers())
|
||||
artifact_response.raise_for_status()
|
||||
artifact_obj = artifact_response.json()
|
||||
|
||||
# we extract into a directory based on the build number. This avoids the
|
||||
# problem of multiple builds building the same git version and thus having
|
||||
@@ -122,18 +166,16 @@ def fetch_jenkins_build(job_name, build_num):
|
||||
# a good deploy with a bad one
|
||||
# (b) we'll be overwriting the live deployment, which means people might
|
||||
# see half-written files.
|
||||
build_dir = os.path.join(arg_extract_path, "%s-#%s" % (job_name, build_num))
|
||||
build_dir = os.path.join(arg_extract_path, "%s-#%s" % (pipeline_name, build_num))
|
||||
try:
|
||||
extracted_dir = deploy_tarball(tar_gz_url, build_dir)
|
||||
extracted_dir = deploy_tarball(artifact_obj, build_dir)
|
||||
except DeployException as e:
|
||||
traceback.print_exc()
|
||||
abort(400, e.message)
|
||||
|
||||
create_symlink(source=extracted_dir, linkname=arg_symlink)
|
||||
|
||||
return jsonify({})
|
||||
|
||||
def deploy_tarball(tar_gz_url, build_dir):
|
||||
def deploy_tarball(artifact, build_dir):
|
||||
"""Download a tarball from jenkins and unpack it
|
||||
|
||||
Returns:
|
||||
@@ -145,20 +187,25 @@ def deploy_tarball(tar_gz_url, build_dir):
|
||||
)
|
||||
os.mkdir(build_dir)
|
||||
|
||||
print("Fetching artifact %s -> %s..." % (artifact['download_url'], artifact['filename']))
|
||||
|
||||
# Download the tarball here as buildkite needs auth to do this
|
||||
# we don't pgp-sign buildkite artifacts, relying on HTTPS and buildkite
|
||||
# not being evil. If that's not good enough for you, don't use riot.im/develop.
|
||||
resp = requests.get(artifact['download_url'], stream=True, headers=req_headers())
|
||||
resp.raise_for_status()
|
||||
with open(artifact['filename'], 'wb') as ofp:
|
||||
shutil.copyfileobj(resp.raw, ofp)
|
||||
print("...download complete. Deploying...")
|
||||
|
||||
# we rely on the fact that flask only serves one request at a time to
|
||||
# ensure that we do not overwrite a tarball from a concurrent request.
|
||||
|
||||
return deployer.deploy(tar_gz_url, build_dir)
|
||||
return deployer.deploy(artifact['filename'], build_dir)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser("Runs a Vector redeployment server.")
|
||||
parser.add_argument(
|
||||
"-j", "--jenkins", dest="jenkins", default="https://matrix.org/jenkins/", help=(
|
||||
"The base URL of the Jenkins web server. This will be hit to get the\
|
||||
built artifacts (the .gz file) for redeploying."
|
||||
)
|
||||
)
|
||||
parser.add_argument(
|
||||
"-p", "--port", dest="port", default=4000, type=int, help=(
|
||||
"The port to listen on for requests from Jenkins."
|
||||
@@ -204,13 +251,33 @@ if __name__ == "__main__":
|
||||
),
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--webhook-token", dest="webhook_token", help=(
|
||||
"Only accept pokes with this buildkite token."
|
||||
), required=True,
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--api-token", dest="api_token", help=(
|
||||
"API access token for buildkite. Require read_artifacts scope."
|
||||
), required=True,
|
||||
)
|
||||
|
||||
# We require a matching webhook token, but because we take everything else
|
||||
# about what to deploy from the poke body, we can be a little more paranoid
|
||||
# and only accept builds / artifacts from a specific buildkite org
|
||||
parser.add_argument(
|
||||
"--org", dest="buildkite_org", help=(
|
||||
"Lock down to this buildkite org"
|
||||
)
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
if args.jenkins.endswith("/"): # important for urljoin
|
||||
arg_jenkins_url = args.jenkins
|
||||
else:
|
||||
arg_jenkins_url = args.jenkins + "/"
|
||||
arg_extract_path = args.extract
|
||||
arg_symlink = args.symlink
|
||||
arg_webbook_token = args.webhook_token
|
||||
arg_api_token = args.api_token
|
||||
arg_buildkite_org = args.buildkite_org
|
||||
|
||||
if not os.path.isdir(arg_extract_path):
|
||||
os.mkdir(arg_extract_path)
|
||||
@@ -222,25 +289,20 @@ if __name__ == "__main__":
|
||||
for include in args.include:
|
||||
deployer.symlink_paths.update({ os.path.basename(pth): pth for pth in glob.iglob(include) })
|
||||
|
||||
|
||||
# we don't pgp-sign jenkins artifacts; instead we rely on HTTPS access to
|
||||
# the jenkins server (and the jenkins server not being compromised and/or
|
||||
# github not serving it compromised source). If that's not good enough for
|
||||
# you, don't use riot.im/develop.
|
||||
deployer.verify_signature = False
|
||||
|
||||
if args.tarball_uri is not None:
|
||||
build_dir = os.path.join(arg_extract_path, "test-%i" % (time.time()))
|
||||
deploy_tarball(args.tarball_uri, build_dir)
|
||||
else:
|
||||
print(
|
||||
"Listening on port %s. Extracting to %s%s. Symlinking to %s. Jenkins URL: %s. Include files: %s" %
|
||||
"Listening on port %s. Extracting to %s%s. Symlinking to %s. Include files: %s" %
|
||||
(args.port,
|
||||
arg_extract_path,
|
||||
" (clean after)" if deployer.should_clean else "",
|
||||
arg_symlink,
|
||||
arg_jenkins_url,
|
||||
deployer.symlink_paths,
|
||||
)
|
||||
)
|
||||
app.run(host="0.0.0.0", port=args.port, debug=True)
|
||||
fred = threading.Thread(target=worker_thread)
|
||||
fred.daemon = True
|
||||
fred.start()
|
||||
app.run(port=args.port, debug=False)
|
||||
|
||||
@@ -18,6 +18,8 @@ limitations under the License.
|
||||
'use strict';
|
||||
|
||||
const React = require('react');
|
||||
import SdkConfig from 'matrix-react-sdk/lib/SdkConfig';
|
||||
|
||||
import { _t } from 'matrix-react-sdk/lib/languageHandler';
|
||||
|
||||
module.exports = React.createClass({
|
||||
@@ -27,11 +29,29 @@ module.exports = React.createClass({
|
||||
},
|
||||
|
||||
render: function() {
|
||||
const brandingConfig = SdkConfig.get().branding;
|
||||
let links = [
|
||||
{"text": "blog", "url": "https://medium.com/@RiotChat"},
|
||||
{"text": "twitter", "url": "https://twitter.com/@RiotChat"},
|
||||
{"text": "github", "url": "https://github.com/vector-im/riot-web"},
|
||||
];
|
||||
|
||||
if (brandingConfig && brandingConfig.authFooterLinks) {
|
||||
links = brandingConfig.authFooterLinks;
|
||||
}
|
||||
|
||||
const authFooterLinks = [];
|
||||
for (const linkEntry of links) {
|
||||
authFooterLinks.push(
|
||||
<a href={linkEntry.url} key={linkEntry.text} target="_blank" rel="noopener">
|
||||
{linkEntry.text}
|
||||
</a>,
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="mx_AuthFooter">
|
||||
<a href="https://medium.com/@RiotChat" target="_blank" rel="noopener">blog</a>
|
||||
<a href="https://twitter.com/@RiotChat" target="_blank" rel="noopener">twitter</a>
|
||||
<a href="https://github.com/vector-im/riot-web" target="_blank" rel="noopener">github</a>
|
||||
{authFooterLinks}
|
||||
<a href="https://matrix.org" target="_blank" rel="noopener">{ _t('powered by Matrix') }</a>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"Dismiss": "Rezigni",
|
||||
"powered by Matrix": "funkciigata de Matrix",
|
||||
"powered by Matrix": "povigita per Matrix",
|
||||
"Custom Server Options": "Propraj servilaj elektoj",
|
||||
"Riot Desktop on %(platformName)s": "Riot Labortablo sur %(platformName)s",
|
||||
"Riot is not supported on mobile web. Install the app?": "Riot ne estas subtenata sur poŝkomputila reto. Ĉu instali la aplikaĵon?",
|
||||
"Unknown device": "Nekonata aparato",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Vi devas uzi HTTPS por ekranvidadi.",
|
||||
"Welcome to Riot.im": "Bonvenu al Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Malcentra, ĉifrita babilado & kunlaboro povigita de [matrix]",
|
||||
"Search the room directory": "Serĉi en la babilejo-listo",
|
||||
"Welcome to Riot.im": "Bonvenon al Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Malcentra, ĉifrita babilado & kunlaboro povigita per [matrix]",
|
||||
"Search the room directory": "Serĉi en la ĉambra dosierujo",
|
||||
"Chat with Riot Bot": "Babilu kun la roboto Riot Bot",
|
||||
"Get started with some tips from Riot Bot!": "Komencu kun kelkaj sugestoj de la roboto Riot Bot!",
|
||||
"General discussion about Matrix and Riot": "Ĝenerala diskutado pri Matrix kaj Riot",
|
||||
@@ -35,5 +35,12 @@
|
||||
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Multaj ĉambroj jam ekzistas en Matrix; kaj sendependaj, kaj ligitaj kun jamaj retoj (Slock, IRC, Gitter, ktp.). Rigardu la ĉambrujon!",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s je %(osName)s",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem.",
|
||||
"Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot"
|
||||
"Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas ankaŭ agordi propran identigan servilon, sed vi ne eblos inviti uzantojn per retpoŝtadresoj, nek eblos esti invitita per retpoŝtadreso.",
|
||||
"Sign In": "Saluti",
|
||||
"Create Account": "Krei konton",
|
||||
"Need help?": "Ĉu vi bezonas helpon?",
|
||||
"Explore rooms": "Esplori ĉambrojn",
|
||||
"Room Directory": "Ĉambra dosierujo",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Vi povas uzi proprajn servilajn elekteblojn por saluti aliajn servilojn de Matrix, donante alian hejmeservilan URL-on. Tio povigos vin uzi programon Riot kun jama konto de Matrix en alia hejmservilo."
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"Dismiss": "Hylkää",
|
||||
"Unknown device": "Tuntematon laite",
|
||||
"Welcome to Riot.im": "Tervetuloa Riot.im -palveluun",
|
||||
"Search the room directory": "Hae hakemistosta",
|
||||
"Welcome to Riot.im": "Tervetuloa Riot.im-palveluun",
|
||||
"Search the room directory": "Hae luettelosta",
|
||||
"Custom Server Options": "Palvelinasetukset",
|
||||
"Riot Desktop on %(platformName)s": "Riot Desktop %(platformName)s",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Sinun täytyy käyttää HTTPS -yhteyttä, jotta voit jakaa ruudun.",
|
||||
"Riot Desktop on %(platformName)s": "Riot Desktop, %(platformName)s",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Sinun täytyy käyttää HTTPS-yhteyttä, jotta voit jakaa ruudun puhelussa.",
|
||||
"Chat with Riot Bot": "Keskustele Riot-botin kanssa",
|
||||
"Get started with some tips from Riot Bot!": "Aloita Riot Botin vinkkien avulla!",
|
||||
"Get started with some tips from Riot Bot!": "Aloita Riot-botin vinkkien avulla!",
|
||||
"General discussion about Matrix and Riot": "Matrix- ja Riot keskustelut",
|
||||
"Discussion of all things Matrix!": "Keskustelu kaikesta Matrixiin liittyvästä!",
|
||||
"Riot/Web & Desktop chat": "Riot/Web & Työpöytä-keskustelu",
|
||||
@@ -32,14 +32,14 @@
|
||||
"Riot is not supported on mobile web. Install the app?": "Riot ei tue laitettasi. Asenna mobiilisovellus?",
|
||||
"Design and implementation of E2E in Matrix": "Matrix päästä-päähän salauksen suunnittelu ja implementointi",
|
||||
"Contributing code to Matrix and Riot": "Osallistu kehitystyöhön",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s %(osName)s",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Salattua ja vikasietoista viestintää Matrix -teknologialla",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s, %(browserName)s, %(osName)s",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Hajautettua ja salattua viestintää Matrix-teknologialla",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit käyttää edistyksellisiä asetuksia kirjautuaksesi muille Matrix palvelimille, määrittelemällä kotipalvelimen URL-osoitteen.<br/>Tämän avulla voit käyttää Riot:ia olemassa olevalla toisen Matrix palvelimen käyttäjätilillä.<br/><br/>Voit myös asettaa valinnaisen identiteettipalvelimen, mutta et voi kutsua käyttäjiä sähköpostiosoitteella tai tulla kutsutuksi.",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Voit käyttää mukautettuja palvelinasetuksia kirjautuaksesi muihin Matrix-palvelimiin. Tämä mahdollistaa Riotin käyttämisen toisella palvelimella olevalla Matrix-tunnuksella.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit myös määrittää toisen identiteettipalvelimen, mutta et voi kutsua muita käyttäjiä sähköpostin perusteella, eivätkä se voi kutsua sinua.",
|
||||
"Sign In": "Kirjaudu sisään",
|
||||
"Create Account": "Luo tunnus",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Voit käyttää mukautettuja palvelinasetuksia kirjautuaksesi muihin Matrix-palvelimiin. Tämä mahdollistaa Riotin käyttämisen toisella kotipalvelimella olevalla Matrix-tilillä.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit myös määrittää toisen identiteettipalvelimen, mutta et voi kutsua muita käyttäjiä sähköpostin perusteella tai saada itse kutsua sähköpostin perusteella.",
|
||||
"Sign In": "Kirjaudu",
|
||||
"Create Account": "Luo tili",
|
||||
"Need help?": "Tarvitsetko apua?",
|
||||
"Explore rooms": "Etsi huoneita",
|
||||
"Room Directory": "Huonehakemisto"
|
||||
"Room Directory": "Huoneluettelo"
|
||||
}
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
"Riot Desktop on %(platformName)s": "Leagan gnáthríomhaire Riot ar %(platformName)s",
|
||||
"Unknown device": "Gléas nár aithníodh",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s trí %(browserName)s ar %(osName)s",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Ní mór HTTPS a úsáid chun glaoch ina dhéantar an scáileán a roinnt a chuir.",
|
||||
"powered by Matrix": "á thiomáint le Matrix",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Ní mór HTTPS a úsáid chun glaoch comhroinnt scáileáin a chur.",
|
||||
"powered by Matrix": "cumhachtaithe ag Matrix",
|
||||
"Custom Server Options": "Socruithe do fhreastalaí saincheaptha",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Is féidir na socruithe do fhreastalaí saincheaptha a úsáid chun síniú isteach le freastalaí Matrix eile tríd URL freastalaí ar leith a sholáthar. Cuirfidh sé seo ar do chumas Riot a úsáid le cuntas Matrix atá ar taifead ag freastalaí difriúil.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Freisin is féidir freastalaí aitheantais saincheaptha a úsáid, ach le seo ní bheidh tú in ann cuireadh a thabhairt do dhaoine tríd seoladh ríomhphoist a sholáthar, nó glacadh le cuireadh trí ríomhphoist ach an oiread.",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Is féidir na socruithe do fhreastalaí saincheaptha a úsáid chun síniú isteach le freastalaithe Matrix eile ach URL freastalaí ar leith a shainiú. Cuirfidh sé seo ar do chumas Riot a úsáid le cuntas Matrix atá ar taifead ag an bhfreastalaí eile sin.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Freisin is féidir freastalaí aitheantais saincheaptha a úsáid, ach sa chás sin ní bheidh tú in ann cuireadh a thabhairt do dhaoine trí sheoladh ríomhphoist a sholáthar, ná glacadh le cuireadh trí ríomhphoist ach an oiread.",
|
||||
"Dismiss": "Cuir uait",
|
||||
"Welcome to Riot.im": "Fáilte chuig Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Meán comhrá agus comhoibriú neamhláraithe agus criptithe á thiomáint le [matrix]",
|
||||
"Welcome to Riot.im": "Fáilte romhat chuig Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Meán comhrá agus comhoibriú, díláraithe agus criptithe, cumhachtaithe ag [matrix]",
|
||||
"Sign In": "Sínigh Isteach",
|
||||
"Create Account": "Déan cuntas a chruthú",
|
||||
"Need help?": "An bhfuil cabhair uait?",
|
||||
@@ -17,5 +17,5 @@
|
||||
"Explore rooms": "Breathnaigh thart ar na seomraí",
|
||||
"Room Directory": "Eolaire na Seomraí",
|
||||
"Search the room directory": "Cuardaigh eolaire na seomraí",
|
||||
"Get started with some tips from Riot Bot!": "Tosaigh le nod ó Riot Bot!"
|
||||
"Get started with some tips from Riot Bot!": "Tosaigh le roinnt nod ó Riot Bot!"
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"Riot is not supported on mobile web. Install the app?": "Riot non è supportato sul web mobile. Installare l'applicazione?",
|
||||
"Unknown device": "Dispositivo sconosciuto",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Devi usare HTTPS per effettuare una chiamata con la condivisione dello schermo.",
|
||||
"Welcome to Riot.im": "Benvenuto/a su Riot.im",
|
||||
"Welcome to Riot.im": "Benvenuti su Riot.im",
|
||||
"Search the room directory": "Cerca nella lista delle stanze",
|
||||
"Chat with Riot Bot": "Chatta con Riot Bot",
|
||||
"Get started with some tips from Riot Bot!": "Inizia con alcuni consigli di Riot Bot!",
|
||||
@@ -35,5 +35,12 @@
|
||||
"Dev chat for the Dendrite dev team": "Chat per gli sviluppatori di Dendrite",
|
||||
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti esistenti (Slack, IRC, Gitter, ecc.) o indipendenti. Controlla l'elenco!",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo del server home.<br/> Questo permette di usare Riot con un account Matrix esistente su un server home diverso.<br/><br/>È anche possibile impostare un diverso server identità, ma in tal caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail.",
|
||||
"Co-ordination for Riot translators": "Coordinazione per i traduttori di Riot"
|
||||
"Co-ordination for Riot translators": "Coordinazione per i traduttori di Riot",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Puoi usare le opzioni di server personalizzato per accedere ad altri server Matrix specificando un URL homeserver diverso. Ciò ti permette di usare Riot con un account Matrix esistente su un homeserver differente.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi anche impostare un server di identità personalizzato, ma non sarai in grado di invitare utenti via email o di essere invitato via email.",
|
||||
"Sign In": "Accedi",
|
||||
"Create Account": "Crea account",
|
||||
"Need help?": "Serve aiuto?",
|
||||
"Explore rooms": "Esplora stanze",
|
||||
"Room Directory": "Elenco stanze"
|
||||
}
|
||||
|
||||
@@ -34,5 +34,12 @@
|
||||
"Dev chat for the Riot/Web dev team": "Riot/Web izstrādātāju komandas čats",
|
||||
"Dev chat for the Dendrite dev team": "Dendrite izstrādatāju komandas čats",
|
||||
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix-ā pastāv daudzas neatkarīgas un/vai eksistējošiem tīmekļa resursiem (Slack, IRC, Gitter u.tml.) piesaistītas istabas. Ieskaties katalogā!",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Tu vari lietot \"custom\" servera opcijas, lai ielogotos citos Matrix serveros, norādot citu Bāzes servera URL.<br> Tas atļaus tev lietot Riot ar esošo Matrix kontu uz cita Bāzes servera.<br/><br/>Tu arī vari uzstādīt atsevišķu Identitāšu serveri, taču tad Tev nebūs iespēju uzaicināt lietotājus, izmantojot epasta adresi, vai pašam tikt uzaicinātam, izmantojot epasta adresi."
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Tu vari lietot \"custom\" servera opcijas, lai ielogotos citos Matrix serveros, norādot citu Bāzes servera URL.<br> Tas atļaus tev lietot Riot ar esošo Matrix kontu uz cita Bāzes servera.<br/><br/>Tu arī vari uzstādīt atsevišķu Identitāšu serveri, taču tad Tev nebūs iespēju uzaicināt lietotājus, izmantojot epasta adresi, vai pašam tikt uzaicinātam, izmantojot epasta adresi.",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Varat izmantot pielāgotās servera opcijas, lai pierakstītos citos Matrix serveros, norādot citu mājas servera URL. Tas ļauj jums izmantot Riot ar esošu Matrix kontu citā mājas serverī.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Varat arī iestatīt pielāgotu identitātes serveri, bet jūs nevarēsiet uzaicināt lietotājus izmantojot e-pasta adresi, kā arī tikt uzaicināts pēc e-pasta adreses.",
|
||||
"Sign In": "Ienākt",
|
||||
"Create Account": "Izveidot kontu",
|
||||
"Need help?": "Nepieciešama palīdzība?",
|
||||
"Explore rooms": "Atklāt istabas",
|
||||
"Room Directory": "Istabu Katalogs"
|
||||
}
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
"Unknown device": "Onbekend apparaat",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "U moet HTTPS gebruiken om een oproep met schermdelen te kunnen starten.",
|
||||
"Welcome to Riot.im": "Welkom bij Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentaliseerd en versleuteld chatten & samenwerken mogelijk gemaakt door [matrix]",
|
||||
"Search the room directory": "De kamerlijst doorzoeken",
|
||||
"Chat with Riot Bot": "Met Riot Bot chatten",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentraliseerd en versleuteld chatten & samenwerken mogelijk gemaakt door [matrix]",
|
||||
"Search the room directory": "De gesprekscatalogus doorzoeken",
|
||||
"Chat with Riot Bot": "Chatten met Riot-robot",
|
||||
"Get started with some tips from Riot Bot!": "Begin met enkele tips van Riot Bot!",
|
||||
"General discussion about Matrix and Riot": "Algemene discussie over Matrix en Riot",
|
||||
"Discussion of all things Matrix!": "Discussie over alles wat met Matrix te maken heeft!",
|
||||
@@ -35,5 +35,12 @@
|
||||
"Dev chat for the Riot/Web dev team": "Dev-chat voor het Riot/Web ontwikkelteam",
|
||||
"Dev chat for the Dendrite dev team": "Dev-chat voor het Dendrite-ontwikkelteam",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom serveropties gebruiken om op andere Matrix-servers in te loggen door een andere thuisserver-URL op te geven.<br/> Dit laat je toe om Riot te gebruiken met een bestaand Matrix-account op een andere thuisserver.<br/><br/>Je kan ook een aangepaste-identiteitsserver opzetten maar dan kan je geen gebruikers uitnodigen via hun e-mailadres, of zelf uitgenodigd worden via je e-mailadres.",
|
||||
"Co-ordination for Riot translators": "Coördinatie voor Riot vertalers"
|
||||
"Co-ordination for Riot translators": "Coördinatie voor Riot vertalers",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "U kunt de aangepaste serverinstellingen gebruiken om u aan te melden bij andere Matrix-servers, door een andere thuisserver-URL in te voeren. Dit laat u toe Riot te gebruiken met een bestaande Matrix-account bij een andere thuisserver.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "U kunt ook een aangepaste identiteitsserver instellen, maar u zult geen gebruikers kunnen uitnodigen via e-mail, of zelf via e-mail uitgenodigd worden.",
|
||||
"Sign In": "Aanmelden",
|
||||
"Create Account": "Account aanmaken",
|
||||
"Need help?": "Hulp nodig?",
|
||||
"Explore rooms": "Kamers ontdekken",
|
||||
"Room Directory": "Gesprekscatalogus"
|
||||
}
|
||||
|
||||
@@ -39,5 +39,6 @@
|
||||
"Create Account": "Stwórz konto",
|
||||
"Sign In": "Zaloguj",
|
||||
"Need help?": "Potrzebujesz pomocy?",
|
||||
"Room Directory": "Katalog pokojów"
|
||||
"Room Directory": "Katalog pokojów",
|
||||
"Explore rooms": "Przeglądaj pokoje"
|
||||
}
|
||||
|
||||
@@ -35,5 +35,12 @@
|
||||
"Co-ordination for Riot translators": "Coordonare pentru translatorii Riot",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s pe %(osName)s",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Trebuie să folosești HTTPS pentru a plasa un apel de tip screen-sharing.",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Poți folosi opțiunile server personalizate pentru a te conecta la alte servere Matrix prin specificarea unui URL de tip Home server diferit.<br/>Acestă opțiune îți permite să utilizezi Riot cu un cont existent pe un home server diferit.<br/><br/>Poți folosi și un server de identitate personalizat, dar nu vei putea invita alți utilizatori prin adresa de email sau să fii tu însuți invitat prim email."
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Poți folosi opțiunile server personalizate pentru a te conecta la alte servere Matrix prin specificarea unui URL de tip Home server diferit.<br/>Acestă opțiune îți permite să utilizezi Riot cu un cont existent pe un home server diferit.<br/><br/>Poți folosi și un server de identitate personalizat, dar nu vei putea invita alți utilizatori prin adresa de email sau să fii tu însuți invitat prim email.",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Puteți utiliza opțiunile personalizate ale serverului pentru a vă conecta la alte servere Matrix specificând o adresă URL diferită pentru homeserver. Acest lucru vă permite să utilizați Riot cu un cont Matrix existent pe un alt server de domiciliu.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "De asemenea, puteți seta un server de identitate personalizat, dar nu veți putea să invitați utilizatorii pe adresa de e-mail sau să vă invitați personal pe adresa de e-mail.",
|
||||
"Sign In": "Autentificare",
|
||||
"Create Account": "Înregistare",
|
||||
"Need help?": "Ai nevoie de ajutor?",
|
||||
"Explore rooms": "Explorează camerele",
|
||||
"Room Directory": "Lista de camere"
|
||||
}
|
||||
|
||||
@@ -35,5 +35,12 @@
|
||||
"Contributing code to Matrix and Riot": "Prispievanie kódu projektom Matrix a Riot",
|
||||
"Dev chat for the Riot/Web dev team": "Diskusia pre tím vývojárov Riot/Web",
|
||||
"Dev chat for the Dendrite dev team": "Diskusia pre tím vývojárov Dendrite",
|
||||
"Co-ordination for Riot translators": "Koordinácia prekladov Riot"
|
||||
"Co-ordination for Riot translators": "Koordinácia prekladov Riot",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Môžete použiť vlastné možnosti servera na prihlásenie sa k ďalším serverom Matrix zadaním URL adresy domovského servera. Toto vám umožní použiť Riot na prihlásenie sa k existujúcemu Matrix účtu na inom domovskom servery.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Môžete tiež nastaviť vlastnú URL adresu servera totožností, potom ale nebudete môcť pozývať používateľov zadaním ich emailovej adresy a telefónneho čísla a ani ostatní nebudú môcť pozvať vás zadaním vašej emailovej adresy a telefónneho čísla.",
|
||||
"Sign In": "Prihlásiť sa",
|
||||
"Create Account": "Vytvoriť účet",
|
||||
"Need help?": "Potrebujete pomoc?",
|
||||
"Explore rooms": "Preskúmať miestnosti",
|
||||
"Room Directory": "Adresár miestností"
|
||||
}
|
||||
|
||||
21
src/i18n/strings/sl.json
Normal file
21
src/i18n/strings/sl.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"Riot Desktop on %(platformName)s": "Namizni Riot za %(platformName)s",
|
||||
"Unknown device": "Neznana naprava",
|
||||
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s s %(browserName)s na %(osName)s",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Za klic s skupno rabo zaslona potrebujete HTTPS.",
|
||||
"powered by Matrix": "poganja Matrix",
|
||||
"Custom Server Options": "Možnosti strežnika po meri",
|
||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Možnosti strežnika po meri lahko uporabite za prijavo v druge Matrix strežnike, s tem da podate drug URL domačega strežnika. To vam omogoča, da uporabljate Riot z obstoječim Matrix računom na drugem strežniku.",
|
||||
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Nastavite lahko tudi strežnik za identiteto po meri, vendar ne boste mogli povabiti uporabnikov prek e-pošte, prav tako pa vas ne bodo mogli povabiti drugi.",
|
||||
"Dismiss": "Opusti",
|
||||
"Welcome to Riot.im": "Dobrodošli v Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirano šifrirano sporočanje & sodelovanje s pomočjo [matrix]",
|
||||
"Sign In": "Prijava",
|
||||
"Create Account": "Registracija",
|
||||
"Need help?": "Potrebujete pomoč?",
|
||||
"Chat with Riot Bot": "Klepetajte z Riot Botom",
|
||||
"Explore rooms": "Raziščite sobe",
|
||||
"Room Directory": "Imenik sob",
|
||||
"Search the room directory": "Preiščite imenik sob",
|
||||
"Get started with some tips from Riot Bot!": "Začnite z nekaterimi nasveti Riot Bota!"
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
"Dismiss": "Mos e merr parasysh",
|
||||
"powered by Matrix": "bazuar në Matrix",
|
||||
"Welcome to Riot.im": "Mirë se vini te Riot.im",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Fjalosje & bashkëpunim i decentralizuar, i fshehtëzuar, bazuar në [matrix]",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Fjalosje & bashkëpunim të decentralizuar, të fshehtëzuar, bazuar në [matrix]",
|
||||
"Search the room directory": "Kërkoni te drejtoria e dhomave",
|
||||
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Ka tashmë plot dhoma në Matrix, të lidhura me rrjete ekzistues (Slack, IRC, Gitter, etj) ose të pavarur. Hidhini një sy listës!",
|
||||
"Chat with Riot Bot": "Fjalosuni me Robotin Riot",
|
||||
|
||||
@@ -272,7 +272,7 @@ async function loadApp() {
|
||||
const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
||||
const isAndroid = /Android/.test(navigator.userAgent);
|
||||
if (isIos || isAndroid) {
|
||||
if (!document.cookie.split(';').some((c) => c.startsWith('mobile_redirect_to_guide'))) {
|
||||
if (document.cookie.indexOf("riot_mobile_redirect_to_guide=false") === -1) {
|
||||
window.location = "mobile_guide/";
|
||||
return;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,7 +1,8 @@
|
||||
import {getVectorConfig} from '../getconfig';
|
||||
|
||||
function onBackToRiotClick() {
|
||||
document.cookie = 'mobile_redirect_to_guide=false;path=/';
|
||||
// Cookie should expire in 4 hours
|
||||
document.cookie = 'riot_mobile_redirect_to_guide=false;path=/;max-age=14400';
|
||||
window.location.href = '../';
|
||||
}
|
||||
|
||||
|
||||
@@ -39,14 +39,7 @@ export default class VectorBasePlatform extends BasePlatform {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
// The 'animations' are really low framerate and look terrible.
|
||||
// Also it re-starts the animation every time you set the badge,
|
||||
// and we set the state each time, even if the value hasn't changed,
|
||||
// so we'd need to fix that if enabling the animation.
|
||||
this.favicon = new Favico({animation: 'none'});
|
||||
this.showUpdateCheck = false;
|
||||
this._updateFavicon();
|
||||
|
||||
this.startUpdateCheck = this.startUpdateCheck.bind(this);
|
||||
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
|
||||
}
|
||||
@@ -55,6 +48,24 @@ export default class VectorBasePlatform extends BasePlatform {
|
||||
return 'Vector Base Platform'; // no translation required: only used for analytics
|
||||
}
|
||||
|
||||
/**
|
||||
* Delay creating the `Favico` instance until first use (on the first notification) as
|
||||
* it uses canvas, which can trigger a permission prompt in Firefox's resist
|
||||
* fingerprinting mode.
|
||||
* See https://github.com/vector-im/riot-web/issues/9605.
|
||||
*/
|
||||
get favicon() {
|
||||
if (this._favicon) {
|
||||
return this._favicon;
|
||||
}
|
||||
// The 'animations' are really low framerate and look terrible.
|
||||
// Also it re-starts the animation every time you set the badge,
|
||||
// and we set the state each time, even if the value hasn't changed,
|
||||
// so we'd need to fix that if enabling the animation.
|
||||
this._favicon = new Favico({ animation: 'none' });
|
||||
return this._favicon;
|
||||
}
|
||||
|
||||
_updateFavicon() {
|
||||
try {
|
||||
// This needs to be in in a try block as it will throw
|
||||
|
||||
@@ -293,12 +293,19 @@ describe('loading:', function() {
|
||||
});
|
||||
|
||||
describe("MatrixClient rehydrated from stored credentials:", function() {
|
||||
beforeEach(function() {
|
||||
beforeEach(async function() {
|
||||
localStorage.setItem("mx_hs_url", "http://localhost" );
|
||||
localStorage.setItem("mx_is_url", "http://localhost" );
|
||||
localStorage.setItem("mx_access_token", "access_token");
|
||||
localStorage.setItem("mx_user_id", "@me:localhost");
|
||||
localStorage.setItem("mx_last_room_id", "!last_room:id");
|
||||
|
||||
// Create a crypto store as well to satisfy storage consistency checks
|
||||
const cryptoStore = new jssdk.IndexedDBCryptoStore(
|
||||
indexedDB,
|
||||
"matrix-js-sdk:crypto",
|
||||
);
|
||||
await cryptoStore._connect();
|
||||
});
|
||||
|
||||
it('shows the last known room by default', function() {
|
||||
|
||||
@@ -71,7 +71,7 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.(gif|png|svg|ttf|xml|ico)$/,
|
||||
test: /\.(gif|png|svg|ttf|woff|woff2|xml|ico)$/,
|
||||
// Use a content-based hash in the name so that we can set a long cache
|
||||
// lifetime for assets while still delivering changes quickly.
|
||||
oneOf: [
|
||||
|
||||
Reference in New Issue
Block a user