Commit Graph

2060 Commits (8fd0adc4868deebe49d994ae9196102eee5baace)

Author SHA1 Message Date
Scott Nonnenberg 7781f8fa5b
Treat tiffs like unrecognized files; Chrome doesn't render them (#1901) 7 years ago
Scott Nonnenberg f0aaa7a1c5
Introduce intl-friendly sort order for contact lists (#1900) 7 years ago
Scott Nonnenberg b17a67ec65
Support pass-through proxies with HTTPS_PROXY env var (#1878)
We've simplified; HTTPS_PROXY or https_proxy is used for all requests.

We also require that only our self-signed certificates are used for
secure traffic. That rules out all SSL-terminating MITM proxies, since
we don't trust their root certificate.

Once we're sure that this system works for people, we'll improve config
on MacOS and Windows.
7 years ago
Scott Nonnenberg 3ac29a4ba3
Fix merge confilict in rotate_signed_prekey_listener.js 7 years ago
Scott Nonnenberg f013eed9d1
Merge branch 'master' into development
Bringing beta up to date with production v1.0.40
7 years ago
Scott Nonnenberg acc94edd23
Add proxy support based on environment variables (#1855)
We pull proxy settings from environment variables:

- HTTPS_PROXY for sending, profile pulls, and attachment download/upload
- WSS_PROXY for connecting to the websocket for receiving messages
- ALL_PROXY to provide one server for both

More details on our proxy handling:

- https://github.com/Rob--W/proxy-from-env#environment-variables
- https://github.com/TooTallNate/node-proxy-agent

This is the natural way of things for Linux. My understanding is that
most proxies on MacOS are system-wide and transparent, so it's not so
urgent. But Windows will likely require further UI for configuration.
Will need to do some testing with Windows users.
7 years ago
Scott Nonnenberg 2fdb048721
NullMessage sent before verification sync should not be silent (#1857) 7 years ago
Scott Nonnenberg 2430ee00d4
Emoji: Eliminate unused images, make sure panel clicks add emoji (#1849)
* Emoji: Ensure that all clicks work by using emoji data directly

* Eliminate a number of unused emoji images from final build

* Re-add the generic sheets directory, which we partially filter
7 years ago
Scott Nonnenberg c195ba2630
Save prekeys optimistically, track confirms, new clean behavior (#1846)
* Re-enable libtextsecure unit tests, get passing, run in CI

* Save prekeys optimistically, track confirmed, new clean behavior

* Eliminate potential conflicts when rotating on startup

* Remove last symlink: get libtextsecure tests running on windows
7 years ago
Scott Nonnenberg 21325bc922
Move sync messages to silent = true (#1843)
* Set silent = true for all sync messages

* sendmessage.js: Remove brace-less if
7 years ago
Scott Nonnenberg d9a48478ec
Logging for prekey fetches, load of log files (#1836)
* Log the files discovered in logPath

I've encountered some logs which include very old entries; and my
suspicion is that we're not cleaning up old log files properly.

* Log prekey fetches (success and failure), just like signed keys

* Force log file information into the final web-ready log
7 years ago
Scott Nonnenberg 44da6924f9
A variety of logging improvements to track down bugs (#1832)
* Log when we get a blocked numbers sync message

* Save three old signed keys in addition to the current active

* Remove the mystery from all the error-related log messages

* Log successful load of signed key - to help debug prekey errors

* removeSignedPreKey: Don't hang or crash in error cases

* Log on top-level unhandled promise rejection

* Remove trailing comma in param list, Electron 1.6 does not like

* Harden top-level error handler for strange object shapes
7 years ago
Scott Nonnenberg a5923c2177
Key rotation: log failures, retry, force on new version (#1833)
* Retry failed signed key rotation; start rotation when registered (#1772)

* rotateSignedPrekeys: Fix 'res is not defined' error

* If the server rejects key rotation, don't retry immediately

* Force a signed key rotation on launch of any new version
7 years ago
Scott Nonnenberg b8b26d3e79
On group/contact import: don't re-add hidden entries to left pane (#1811)
* On contact import: don't re-add hidden contacts to left pane

* On group import: don't re-add hidden groups to left pane
7 years ago
Scott Nonnenberg aab4f10509
rotateSignedPrekeys: Fix 'res is not defined' error 8 years ago
Scott Nonnenberg cdfdd6b381
Fix notifications: windows -> window, serialize false setting 8 years ago
Scott Nonnenberg 16ad94148a
Introduce library for notifications on downlevel windows (#1812) 8 years ago
Scott Nonnenberg be2d4535a8
yarn.lock and libtextsecure.js catchup 8 years ago
Scott Nonnenberg 0e328f3911
Merge branch 'master' into development
This catches the development branch up with v1.0.39 in master.
8 years ago
Scott Nonnenberg 0a4f984cf5
Properly localize group changes (#1802)
* Properly localize group updates

* Remove phone number in display name if contact in address book

* New string for multiple new group members
8 years ago
Scott Nonnenberg 87d8ec723a
Remove conversation from left pane on 'delete messages' (#1807) 8 years ago
Scott Nonnenberg abb83a895e
Move to e.target.error, transaction/request.error didn't work (#1785)
* Pull error properly from the indexeddb request

* Move to e.target.error, transaction/request.error didn't work
8 years ago
Scott Nonnenberg 1c455c83e0
Set parent window for about/new version, escape to close (#1795)
* Set parent window for about/new version, escape to close

* Exclude jquery from jshint run
8 years ago
Scott Nonnenberg 158b575885
Proper session reset: Delete sessions before and after (#1796)
* web requests: Don't fail if JSON not well-formed in error cases

Turns out that before our move to node-fetch, we ignored JSON.parse()
failures: https://github.com/WhisperSystems/Signal-Desktop/pull/1552/files#diff-1103a6aff0f28b6066715c6994278767L37518

* Update to libsignal v1.2.0, delete sessions on reset session

Previously we only archived sessions when sending or receiving a
'reset secure session, which didn't match up with the mobile apps.
8 years ago
Scott Nonnenberg 83428e5b81
Remove last seen indicator if we get a sync'd outgoing message (#1805)
This mirrors the way Android does things.
8 years ago
Scott Nonnenberg fd5fa666f9
Retry failed signed key rotation; start rotation when registered (#1772) 8 years ago
Scott Nonnenberg bd65932d94
Import: Better onerror logging, save attachments serially (#1768)
* Import: Proper error handling and reporting from IndexedDB APIs

* Import: Load attachments one at a time, not per-conversation
8 years ago
Scott Nonnenberg f0ec75eef4
removeSignedPrekey: Be resilient to delete returning nothing (#1769) 8 years ago
Scott Nonnenberg 34dd375260
Be resilient to thrown non-errors in import process (#1737) 8 years ago
Scott Nonnenberg 9e6d50b966
Merge branch 'master' into development
Bringing our development (beta) branch inline with all the more urgent
fixes which went directly into the master (production) branch.
8 years ago
Scott Nonnenberg f2b5c53d4c
Immediately remove delivery receipts from the retry cache (#1719) 8 years ago
Scott Nonnenberg cae2b10af6
Increase web request timeout, drop failed delivery receipts (#1699)
Increase web request timeout, drop failed delivery receipts, export error logging
8 years ago
Scott Nonnenberg 845291c51e
Wait for IndexedDB transactions to complete for import scale (#1698)
* No longer reference 'Chrome App' on the start screen

* Imports are only complete when IndexedDB transaction is complete
8 years ago
Lilia 1f967abf0a Update libphonenumber (#1598)
* Update libphonenumber

Also switch from bower to yarn for managing this dependency.

// FREEBIE

* Remove libphonenumber from bower.json

// FREEBIE
8 years ago
Scott Nonnenberg c94d4efd18
Beta versions support: SxS support, in-app env/instance display (#1606)
* Script for beta config; unique data dir, in-app env/type display

To release a beta build, increment the version and add -beta-N to the
end, then go through all the standard release activities.

The prepare-build npm script then updates key bits of the package.json
to ensure that the beta build can be installed alongside a production
build. This includes a new name ('Signal Beta') and a different location
for application data.

Note: Beta builds can be installed alongside production builds.

As part of this, a couple new bits of data are shown across the app:

- Environment (development or test, not shown if production)
- App Instance (disabled in production; used for multiple accounts)

These are shown in:

- The window title - both environment and app instance. You can tell
  beta builds because the app name, preceding these data bits, is
  different.
- The about window - both environment and app instance. You can tell
  beta builds from the version number.
- The header added to the debug log - just environment. The version
  number will tell us if it's a beta build, and app instance isn't
  helpful.

* Turn on single-window mode in non-production modes

Because it's really frightening when you see 'unable to read from db'
errors in the console.

* aply.sh: More instructions for initial setup and testing

* Gruntfile: Get consistent with use of package.json datas

* Linux: manually update desktop keys, since macros not available
8 years ago
Caner Elci a3fbb9a6aa Fixed drawAttention() position to comply with user's settings (#1612)
This fix is related about issue #1587
window.drawAttention() repositioned to allow complete control over notifications by settings. It now does not draw attention when the notifications are off.
8 years ago
Lilia fb931b4733 Emoji picker (#1608)
* Add emoji button and popup panel

This integrates a simple third party emoji panel with a few css overrides to
correct some relative paths and colors.

The trickiest thing about this is ensuring we don't break the layout, which is
acheived through precise control over the panel's height, and prodigious calls
to updateMessageFieldSize.

// FREEBIE

* Don't close emoji panel on click, do close on send

To better facilitate multiple emoji entry.

// FREEBIE

* Make panel emojis bigger and higher resolution

// FREEBIE

* Move paperclip button to the right of the microphone

This makes our bottom-bar button arrangement more comfortable and consistent
with Android.

// FREEBIE

* Move emoji picker padding to inner container

* Insert emojis at cursor position

Don't just append to the end like a n00b! Also handle selected text correctly.
https://stackoverflow.com/questions/11076975

// FREEBIE

* A few visual tweaks to reduce visual complexity of emoji panel

- No gray buffer on the right side of the emoji panel
- No gray buffer between message compose text box and emoji window
- The scroll bar for the emojis is the same as our normal scrollbars
8 years ago
Lilia d1f7f5ee8c Fix json parsing exceptions obscuring server errors (#1605)
I got a 413 (Rate limit exceeded) error from the server while fetching prekeys.
The client tried to parse the response as json since we expect json from the
prekey endpoint, which threw an exception because the response was not json.
This change prevents us from treating the response as json unless it has the
Content-Type header set accordingly.

If for some reason, the client and server disagree on whether the response
should be or is json, we'll default to treating it as text.

// FREEBIE
8 years ago
Scott Nonnenberg efb5c10d36 Re-enable read receipts and read syncs (#1604) 8 years ago
Scott Nonnenberg 5c8a0d4836 Don't send read syncs or read receipts for messages with errors (#1596) 8 years ago
Scott Nonnenberg 632c8c063c Only start the app up when we've fetched all conversations (#1597)
It's a race condition today, and we don't always win the race.
8 years ago
Lilia 22ccd46f4c Fix setSignedPreKey request - don't expect a JSON response (#1595)
Don't expect a json response from this endpoint. It will only give you
empty responses and exceptions. And sadness.

// FREEBIE
8 years ago
Scott Nonnenberg 6a895f0e27 Better handling of online/offline behavior, socket shutdown (#1593)
* Online/offline: Always stop timer, don't connect if closed

* Sockets: Send our own close event faster, shutdown only on close

Seems that we were too-aggressively disconnecting from all socket
events. Also, we should be able to send our own close event a lot
faster with no ill effects.

* Catch-up libtextsecure changes
8 years ago
lilia ce0e39aaa7 Fix timeouts
// FREEBIE
8 years ago
Scott Nonnenberg 735aec90e8 Add 5s timeout for all requests but attachment up/down, avatar (#1584)
* Remove hang workaround in api.js since we have global workaround

* Add 5s timeout for all requests exept attachment up/down, avatar
8 years ago
Lilia af8b0164b5 Move to node fetch API for web requests instead of XHR (#1552)
* Use node-fetch instead of xhr

* Remove XMLHttpRequest.js

// FREEBIE

* Avoid calling json() on non json responses

Previously we would catch and swallow JSON parsing errors resulting from an
empty response, though empty responses are normal from a few endpoints, like
requesting sms or voice registration codes.

Since the JSON parsing call is now handled internally by node-fetch, we have to
keep closer track of our expected response type to avoid throwing an exception.

// FREEBIE
8 years ago
Scott Nonnenberg dabc56d0cf Load profiles for a conversation without blocking convo load (#1570) 8 years ago
Scott Nonnenberg f68604c412 models/conversation: Refer to proper error variable (#1569) 8 years ago
Scott Nonnenberg 66d78d3ca6 Log when we've detected a new version (#1567)
Helps with tracking down per-version bugs when log could contain output
from more than one version.
8 years ago
Scott Nonnenberg 1f9fcd64c7 Wait to manually disconnect after receiving 'offline' event (#1561)
* Wait to manually disconnect after receiving 'offline' event

We've received Linux logs indicating that we can get offline/online
blips - only 30ms between the two events. The app was never realy
offline. So this change slows the whole disconnect process down.

* Handle offline startup: register for online event, don't connect
8 years ago