A private messenger for Windows, macOS, and Linux.
Go to file
Daniel Gasienica 3a05201501
Improve URL Auto-Linking In Messages (#2240)
As a user, I’d like the app to autolink as many possible URL formats I write in
messages as possible, e.g.

- [x] URLs without protocol: `github.com`
- [x] URLs with in different languages (Unicode):
  - [x] `https://zh.wikipedia.org/zh-hans/信号`
  - [x] `https://ru.wikipedia.org/wiki/Сигнал`
- [x] URLs with single quotes: `https://www.example.com/this-couldn't-be-true`
- [x] Messages with URLs right after special characters:
      `wink ;)https://www.youtube.com/watch?v=oHg5SJYRHA0`
- [x] URLs with square brackets:
      `https://www.example.com/test.html?foo=bar&baz[qux]=quux`
- [x] **Infrastructure:** Include TypeScript files in build.
- [x] **Infrastructure:** Rename `ts/test` to `ts/styleguide`.
- [x] **Infrastructure:** Decouple linting from testing.
- [x] **Infrastructure:** Run all tests in CI.
- [x] **Infrastructure:** Compile TypeScript on CI.

### Dependencies
- Forked `link-text` to disable HTML escaping: It only has the minimum required
  dependencies:
    - `linkify-it`: Best-in-class link detection library with support for
                    Unicode/IDN. Popular alternative: `linkifyjs`.
                    Doesn’t handle Unicode in URLs.
    - ~~`escape-html`: Standalone dependency for escaping HTML.~~
    - `uc.micro`: Standalone dependency of Unicode data files.

### Known Issues

We don’t auto-link trailing exclamation points which in most cases would be
expected to be part of the message body rather than the link.
**Counterexample:** `https://en.wikipedia.org/wiki/Mother!`.
N.B. GitHub doesn’t do this right either.

Fixes #598.
2018-04-11 17:31:16 -04:00
.github Request translation changes to be made via Transifex 2018-03-21 11:29:34 -04:00
.tx Transifex config specific to electron, updated translations (#1478) 2017-09-14 17:48:09 -07:00
_locales Add initialization view 2018-03-26 16:56:37 -04:00
app Use single quotes for identifiers 2018-04-11 15:54:32 -04:00
build Bypass often-corrupt node_modules/.bin/grunt.cmd on windows (#1481) 2017-09-15 10:20:29 -07:00
components Move moment from bower deps to npm deps 2018-04-04 16:00:38 -07:00
config New design for import/install, 'light' import (#2053) 2018-02-22 10:40:32 -08:00
fixtures Add mp3 to project, make binary files available in rsg on util 2018-04-05 08:30:30 -07:00
fonts Add fonts so we don't have to hit googlefonts 2015-02-11 17:37:57 -08:00
images New section in settings screen, full-screen 'are you sure?' 2018-03-14 14:42:13 -07:00
js ESLint auto-fix `link_text` 2018-04-11 16:36:42 -04:00
libtextsecure Verify `makeAttachmentPointer` and `encryptAttachment` arguments 2018-03-26 16:38:34 -04:00
protos Sync Protocol Buffers with `libsignal-service-java` (#2046) 2018-02-15 15:06:14 -05:00
scripts Add `start-backup` script 2018-04-04 19:11:46 -04:00
stylesheets Ensure first message is not cut off in iOS theme 2018-03-20 14:31:43 -04:00
test Bump timeout of `debuglogs` test 2018-04-11 16:36:42 -04:00
ts Rename `ts/test` to `ts/styleguide` 2018-04-11 16:36:42 -04:00
.aptly.conf Setup publishing to s3 2017-09-14 16:53:36 -07:00
.bowerrc Rename bower_components 2014-10-30 16:53:08 -07:00
.editorconfig UX Improvements: Global Menu & Copy Changes (#2078) 2018-03-02 15:59:39 -05:00
.eslintignore window.Signal.React -> window.Signal.Components 2018-04-05 16:10:59 -07:00
.eslintrc.js Add ESLint `quotes` rule 2018-04-11 15:41:40 -04:00
.gitignore Big refactor: ts/ directory for all typescript, including react 2018-04-05 15:30:40 -07:00
.jscsrc Fix minor style errors 2016-02-18 13:45:22 -08:00
.jshintrc jshint: Turn on ES6 mode, fix a few issues in new logging file 2017-09-25 15:32:31 -07:00
.nvmrc Upgrade to Electron 1.8.2 / Node.js 8.2.1 (#2066) 2018-03-02 14:43:03 -05:00
.travis.yml Run Node.js tests early 2018-04-11 16:36:42 -04:00
.yarnclean Full styleguide now available via `yarn styleguide` 2018-04-04 16:08:38 -07:00
CONTRIBUTING.md Mention correct branch to rebase off of 2018-03-23 12:15:52 -07:00
Gruntfile.js Simplify testing and linting 2018-04-11 16:36:42 -04:00
LICENSE Add GPLv3 LICENSE file (#1309) 2017-10-20 09:36:49 -07:00
README.md Update links to community forum (#2083) 2018-02-28 15:50:56 -05:00
about.html Merge branch 'master' into development 2017-11-21 18:25:59 -08:00
appveyor.yml Run Node.js tests early 2018-04-11 16:36:42 -04:00
aptly.sh aptly.sh: Fix broken switch commands - distro and config fix 2017-12-04 18:51:38 -08:00
background.html Rename file for Whisper.ReactWrapperView (#2232) 2018-04-11 09:30:28 -07:00
bower.json Move moment from bower deps to npm deps 2018-04-04 16:00:38 -07:00
dev-app-update.yml.sample Show dialog box when there's an update for download 2017-09-14 16:53:50 -07:00
find_broken_perms.sh Add two scripts to handle broken permissions in release dir 2017-09-14 16:53:49 -07:00
fix_broken_perms.sh Beta builds: A few updates required for successful release (#1739) 2017-11-08 19:32:44 -08:00
index.html App loading screen: show messages processed so far 2017-08-04 12:03:25 -07:00
main.js Wire up `writeAttachment` 2018-03-26 16:38:34 -04:00
package.json Rename `ts/test` to `ts/styleguide` 2018-04-11 16:36:42 -04:00
preload.js Rename `ts/test` to `ts/styleguide` 2018-04-11 16:36:42 -04:00
prepare_beta_build.js New design for import/install, 'light' import (#2053) 2018-02-22 10:40:32 -08:00
prepare_import_build.js New design for import/install, 'light' import (#2053) 2018-02-22 10:40:32 -08:00
styleguide.config.js Rename `ts/test` to `ts/styleguide` 2018-04-11 16:36:42 -04:00
travis.sh Simplify testing and linting 2018-04-11 16:36:42 -04:00
tsconfig.json Big refactor: ts/ directory for all typescript, including react 2018-04-05 15:30:40 -07:00
tslint.json Add TSLint rules 2018-04-11 16:36:42 -04:00
yarn.lock Remove escaping from `linkText` 2018-04-11 16:36:42 -04:00

README.md

Build Status Signal Desktop

Signal Desktop is an Electron application that links with your Signal Android or Signal iOS app.

Install production version: https://signal.org/download/

Install the beta

You can install it on a computer which already has the production version installed. It uses different data and install locations.

Got a question?

You can find answers to a number of frequently asked questions on our support site: https://support.signal.org/. The community forum is another good place for questions: https://community.signalusers.org/.

Found a Bug? Have a feature request?

Please search the existing issues for your bug and create a new one if the issue is not yet tracked!

https://github.com/signalapp/Signal-Desktop/issues

Contributing Translations

Interested in helping to translate Signal? Contribute here:

https://www.transifex.com/projects/p/signal-desktop

Contributing Code

Please see CONTRIBUTING.md for setup instructions and contributor guidelines. And don't forget to sign the CLA.

Contributing Funds

You can donate to Signal development through the Freedom of the Press Foundation.

Cryptography Notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

License

Copyright 2014-2017 Open Whisper Systems

Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html