diff --git a/.buildkite/pipeline.yaml b/.buildkite/pipeline.yaml new file mode 100644 index 000000000..8b658be0b --- /dev/null +++ b/.buildkite/pipeline.yaml @@ -0,0 +1,33 @@ +steps: + - label: ":eslint: Lint" + command: + - "yarn install" + - "yarn lint" + plugins: + - docker#v3.0.1: + image: "node:10" + + - label: ":karma: Tests" + agents: + # We use a medium sized instance instead of the normal small ones because + # webpack loves to gorge itself on resources. + queue: "medium" + command: + # Install chrome + - "echo '--- Installing Chrome'" + - "wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -" + - "sh -c 'echo \"deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main\" >> /etc/apt/sources.list.d/google.list'" + - "apt-get update" + - "apt-get install -y google-chrome-stable" + # Run tests + - "echo '--- Fetching Dependencies'" + - "./scripts/fetch-develop.deps.sh --depth 1" + - "yarn install" + - "echo '+++ Running Tests'" + - "yarn test" + env: + CHROME_BIN: "/usr/bin/google-chrome-stable" + plugins: + - docker#v3.0.1: + image: "node:10" + propagate-environment: true diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index ba4adf39f..a2042975e 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -43,4 +43,4 @@ For the web app: For the desktop app: - **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? -- **Version**: 0.x.y +- **Version**: 1.x.y diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 6caffdb01..ffca51c6d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -2,7 +2,7 @@ name: Bug report about: Create a report to help us improve title: '' -labels: '' +labels: bug assignees: '' --- @@ -52,4 +52,4 @@ For the web app: For the desktop app: - **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? -- **Version**: 0.x.y +- **Version**: 1.x.y diff --git a/.github/ISSUE_TEMPLATE/user-interface-or-usability-bug-report.md b/.github/ISSUE_TEMPLATE/user-interface-or-usability-bug-report.md new file mode 100644 index 000000000..df9cfe4f2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/user-interface-or-usability-bug-report.md @@ -0,0 +1,57 @@ +--- +name: User Interface or Usability Bug report +about: Please include screenshots in UI/UX bug reports +title: '' +labels: '' +assignees: '' + +--- + + + + + + + +### Description + +Describe here the problem that you are experiencing, or the feature you are requesting. + +### Steps to reproduce + +- For bugs, list the steps +- that reproduce the bug +- using hyphens as bullet points + +Describe how what happens differs from what you expected. + +Log: sent/not sent? + + + +### Version information + + + +- **Platform**: web (in-browser) or desktop? + +For the web app: + +- **Browser**: Chrome, Safari, Firefox? which version? +- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? +- **URL**: riot.im/develop / riot.im/app / somewhere else? If a private server, what version of riot-web? + +For the desktop app: + +- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc? +- **Version**: 1.x.y diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5149c81d8..000000000 --- a/.travis.yml +++ /dev/null @@ -1,31 +0,0 @@ -# we need trusty for the chrome addon -dist: trusty - -# we don't need sudo, so can run in a container, which makes startup much -# quicker. -# -# unfortunately we do temporarily require sudo as a workaround for -# https://github.com/travis-ci/travis-ci/issues/8836 -sudo: required - -language: node_js -node_js: - # make sure we work with a range of node versions. - # - # Current status of node versions: https://github.com/nodejs/LTS/ - # We don't work with node 6 because it doesn't support package-lock - # files which we need to avoid the broken version of base-x - - 8 - - 10 -addons: - chrome: stable -before_install: - - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.13.0 - - export PATH=$HOME/.yarn/bin:$PATH -install: - # clone the deps with depth 1: we know we will only ever need that one - # commit. - - scripts/fetch-develop.deps.sh --depth 1 && yarn install -script: - - CHROME_BIN='/usr/bin/google-chrome-stable' yarn test - - yarn lint diff --git a/CHANGELOG.md b/CHANGELOG.md index fd9256cb2..7308b0fad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,38 @@ +Changes in [1.0.5](https://github.com/vector-im/riot-web/releases/tag/v1.0.5) (2019-03-21) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.4...v1.0.5) + + * Hotfix for [\#9205](https://github.com/vector-im/riot-web/issues/9205) disabling jump prevention for typing notifications, while we're reworking this functionally to enable it again soon. + +Changes in [1.0.4](https://github.com/vector-im/riot-web/releases/tag/v1.0.4) (2019-03-18) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.4-rc.1...v1.0.4) + + * No changes since rc.1 + +Changes in [1.0.4-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.0.4-rc.1) (2019-03-13) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.3...v1.0.4-rc.1) + + * Update from Weblate + [\#9152](https://github.com/vector-im/riot-web/pull/9152) + * Use modern Yarn version on Travis CI + [\#9151](https://github.com/vector-im/riot-web/pull/9151) + * Switch to `yarn` for dependency management + [\#9132](https://github.com/vector-im/riot-web/pull/9132) + * Update from Weblate + [\#9104](https://github.com/vector-im/riot-web/pull/9104) + * Don't copy the 32 bit linux deb + [\#9075](https://github.com/vector-im/riot-web/pull/9075) + * Change olm dependency to normal dep + [\#9068](https://github.com/vector-im/riot-web/pull/9068) + * Add modular.im hosting link to electron app config + [\#9047](https://github.com/vector-im/riot-web/pull/9047) + * Nudge karma to 3.1.2 + [\#8991](https://github.com/vector-im/riot-web/pull/8991) + * Add support for localConfig at $appData/config.json. + [\#8983](https://github.com/vector-im/riot-web/pull/8983) + Changes in [1.0.3](https://github.com/vector-im/riot-web/releases/tag/v1.0.3) (2019-03-06) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.2...v1.0.3) diff --git a/README.md b/README.md index 764a24aa8..6578e55ef 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,10 @@ Riot Riot (formerly known as Vector) is a Matrix web client built using the [Matrix React SDK](https://github.com/matrix-org/matrix-react-sdk). +Riot is officially supported on the web in modern versions of Chrome, Firefox, and Safari. Other browsers may work, however +official support is not provided. For accessing Riot on an Android or iOS device, check out [riot-android](https://github.com/vector-im/riot-android) +and [riot-ios](https://github.com/vector-im/riot-ios) - riot-web does not support mobile devices. + Getting Started =============== @@ -240,6 +244,18 @@ yarn global add nativefier nativefier https://riot.im/app/ ``` +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. + +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 ++ `~Library/Application Support/$NAME/config.json` on macOS + +In the paths above, `$NAME` is typically `Riot`, unless you use `--profile $PROFILE` in which case it becomes `Riot-$PROFILE`. + Development =========== diff --git a/electron_app/package.json b/electron_app/package.json index 81985294b..158783bd4 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "1.0.3", + "version": "1.0.5", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "dependencies": { diff --git a/electron_app/src/vectormenu.js b/electron_app/src/vectormenu.js index ce35cf7c8..a8f998bef 100644 --- a/electron_app/src/vectormenu.js +++ b/electron_app/src/vectormenu.js @@ -57,8 +57,8 @@ const template = [ role: 'help', submenu: [ { - label: 'riot.im', - click() { shell.openExternal('https://riot.im/'); }, + label: 'Riot Help', + click() { shell.openExternal('https://about.riot.im/help'); }, }, ], }, diff --git a/karma.conf.js b/karma.conf.js index 4cb9a7295..610541a56 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -138,10 +138,10 @@ module.exports = function (config) { ], customLaunchers: { - 'ChromeHeadless': { + 'VectorChromeHeadless': { base: 'Chrome', flags: [ - // '--no-sandbox', + '--no-sandbox', // See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md '--headless', '--disable-gpu', diff --git a/package.json b/package.json index e2af18b57..40ace117f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron_app/src/electron-main.js", - "version": "1.0.3", + "version": "1.0.5", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { @@ -56,7 +56,7 @@ "lintall": "eslint src/ test/", "clean": "rimraf lib webapp electron_app/dist", "prepare": "yarn clean && yarn build:compile", - "test": "karma start --single-run=true --autoWatch=false --browsers ChromeHeadless", + "test": "karma start --single-run=true --autoWatch=false --browsers VectorChromeHeadless", "test-multi": "karma start" }, "dependencies": { @@ -70,8 +70,8 @@ "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279", "gfm.css": "^1.1.2", "highlight.js": "^9.13.1", - "matrix-js-sdk": "1.0.1", - "matrix-react-sdk": "1.0.3", + "matrix-js-sdk": "1.0.2", + "matrix-react-sdk": "1.0.5", "modernizr": "^3.6.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.1.0-pre1.tgz", "prop-types": "^15.6.2", @@ -117,7 +117,7 @@ "html-webpack-plugin": "^3.2.0", "json-loader": "^0.5.3", "karma": "^3.1.2", - "karma-chrome-launcher": "^0.2.3", + "karma-chrome-launcher": "^2.2.0", "karma-cli": "^1.0.1", "karma-junit-reporter": "^2.0.0", "karma-logcapture-reporter": "0.0.1", diff --git a/release.sh b/release.sh index ff3e2ce6d..33b3676f1 100755 --- a/release.sh +++ b/release.sh @@ -41,7 +41,7 @@ tag="v${release}" echo "electron yarn version" cd electron_app -yarn version --no-git-tag-version "$release" +yarn version --no-git-tag-version --new-version "$release" git commit package.json -m "$tag" cd .. diff --git a/scripts/fetch-develop.deps.sh b/scripts/fetch-develop.deps.sh index 7fbb76f4a..e74197184 100755 --- a/scripts/fetch-develop.deps.sh +++ b/scripts/fetch-develop.deps.sh @@ -6,7 +6,7 @@ # the branch the current checkout is on, use that branch. Otherwise, # use develop. -set -e +set -ex GIT_CLONE_ARGS=("$@") [ -z "$defbranch" ] && defbranch="develop" @@ -25,7 +25,7 @@ function clone() { if [ -n "$branch" ] then echo "Trying to use $org/$repo#$branch" - git clone https://github.com/$org/$repo.git $repo --branch $branch \ + git clone git://github.com/$org/$repo.git $repo --branch $branch \ "${GIT_CLONE_ARGS[@]}" return $? fi @@ -33,27 +33,39 @@ function clone() { } function dodep() { - org=$1 - repo=$2 - rm -rf $repo + deforg=$1 + defrepo=$2 + rm -rf $defrepo # Try the PR author's branch in case it exists on the deps as well. # Try the target branch of the push or PR. # Use the default branch as the last resort. - if [[ "$TRAVIS" == true ]]; then - clone $org $repo $TRAVIS_PULL_REQUEST_BRANCH || - clone $org $repo $TRAVIS_BRANCH || - clone $org $repo $defbranch || + if [[ "$BUILDKITE" == true ]]; then + # If BUILDKITE_BRANCH is set, it will contain either: + # * "branch" when the author's branch and target branch are in the same repo + # * "author:branch" when the author's branch is in their fork + # We can split on `:` into an array to check. + BUILDKITE_BRANCH_ARRAY=(${BUILDKITE_BRANCH//:/ }) + if [[ "${#BUILDKITE_BRANCH_ARRAY[@]}" == "2" ]]; then + prAuthor=${BUILDKITE_BRANCH_ARRAY[0]} + prBranch=${BUILDKITE_BRANCH_ARRAY[1]} + else + prAuthor=$deforg + prBranch=$BUILDKITE_BRANCH + fi + clone $prAuthor $defrepo $prBranch || + clone $deforg $defrepo $BUILDKITE_PULL_REQUEST_BASE_BRANCH || + clone $deforg $defrepo $defbranch || return $? else - clone $org $repo $ghprbSourceBranch || - clone $org $repo $GIT_BRANCH || - clone $org $repo `git rev-parse --abbrev-ref HEAD` || - clone $org $repo $defbranch || + clone $deforg $defrepo $ghprbSourceBranch || + clone $deforg $defrepo $GIT_BRANCH || + clone $deforg $defrepo `git rev-parse --abbrev-ref HEAD` || + clone $deforg $defrepo $defbranch || return $? fi - echo "$repo set to branch "`git -C "$repo" rev-parse --abbrev-ref HEAD` + echo "$defrepo set to branch "`git -C "$defrepo" rev-parse --abbrev-ref HEAD` } ############################## diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index e5b060cf7..ce05de0f8 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -35,5 +35,12 @@ "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home 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.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home 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.", - "Co-ordination for Riot translators": "Co-ordination for Riot translators" + "Co-ordination for Riot translators": "Co-ordination for Riot translators", + "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.": "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.", + "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.": "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.", + "Sign In": "Sign In", + "Create Account": "Create Account", + "Need help?": "Need help?", + "Explore rooms": "Explore rooms", + "Room Directory": "Room Directory" } diff --git a/src/i18n/strings/ga.json b/src/i18n/strings/ga.json new file mode 100644 index 000000000..dacb5c708 --- /dev/null +++ b/src/i18n/strings/ga.json @@ -0,0 +1,21 @@ +{ + "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", + "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.", + "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]", + "Sign In": "Sínigh Isteach", + "Create Account": "Déan cuntas a chruthú", + "Need help?": "An bhfuil cabhair uait?", + "Chat with Riot Bot": "Labhair le Riot Bot", + "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!" +} diff --git a/yarn.lock b/yarn.lock index 55e137cf2..98880ba26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5336,10 +5336,10 @@ jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" -karma-chrome-launcher@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz#4c6d700d163a9d34c618efd87918be49e7a4a8c9" - integrity sha1-TG1wDRY6nTTGGO/YeRi+SeekqMk= +karma-chrome-launcher@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== dependencies: fs-access "^1.0.0" which "^1.2.1" @@ -5732,10 +5732,10 @@ math-random@^1.0.1: resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= -matrix-js-sdk@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-1.0.1.tgz#783efc501e2521997869cfe8e719134d9e10a45c" - integrity sha512-+ErnXHfkxOoRHUYbY/R+2ZHvPKdPCx/eoYjb2Oy7L9pBqCNllI0WRVsro6oqRJQs0krVP8blyIjWOJynWSw96g== +matrix-js-sdk@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-1.0.2.tgz#482d8d2076c7565cf7354722e96c9971e372182a" + integrity sha512-4WCBJFSoOLelHi7IUAcVxPQF+gTc/i9NUKZ77qwUfcZVED8VKTIyWZnwpeLgocK5gAOJV9fkAyO5mny9SkZaGg== dependencies: another-json "^0.2.0" babel-runtime "^6.26.0" @@ -5757,10 +5757,10 @@ matrix-mock-request@^1.2.2: bluebird "^3.5.0" expect "^1.20.2" -matrix-react-sdk@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.0.3.tgz#e2d027a68e47461abcad779219b028eee9399a53" - integrity sha512-Igc9ChLpRbN0E/bwA3HMhiYo2c21RA7dQ+eoZ9XEN6vh87ZJz0rUidqmAdvgZQycxW1lZWQ8Aj7/kefHeRswDA== +matrix-react-sdk@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.0.4.tgz#cf6ef3d68f29af8ba590ceea74b20979522ef9cb" + integrity sha512-7qpnyXNnGvO/i+TPMoYayI4rWy6+hxnpjInx5Odgkw7PhCiapiYRU4poQsgVnOomkihrUWxuksWUmnkGhJ6O+Q== dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" babel-runtime "^6.26.0" @@ -5786,11 +5786,12 @@ matrix-react-sdk@1.0.3: linkifyjs "^2.1.6" lodash "^4.13.1" lolex "2.3.2" - matrix-js-sdk "1.0.1" + matrix-js-sdk "1.0.2" optimist "^0.6.1" pako "^1.0.5" prop-types "^15.5.8" qrcode-react "^0.1.16" + qs "^6.6.0" querystring "^0.2.0" react "^15.6.0" react-addons-css-transition-group "15.3.2" @@ -7113,6 +7114,11 @@ qs@6.5.2, qs@^6.5.2, qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +qs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" + integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA== + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"