Commit graph

3043 commits

Author SHA1 Message Date
Scott Nonnenberg
2786baf2b5 Additional logging when we can't decrypt a user's profile (#1483)
Found a number of 'Illegal buffer' errors in an Electron log submitted
today. As far as I can tell, these same profiles are succeedig for me,
so it's time to collect more data.

FREEBIE
2017-09-18 15:33:08 -07:00
Scott Nonnenberg
c420c597f9 Remove images/emoji directory (#1485)
FREEBIE
2017-09-18 15:31:00 -07:00
Scott Nonnenberg
bf3eb6d30c
v1.0.25
Update to Emojiset 4.0 (#1482)

Fix unthemed Submit Debug Log dialog (#1479)

Additional logging to help track down socket disconnect problems
(#1469)

Dismiss loading screen if we have network problems (#1466)

Setup:
  On network error during setup, show error screen instead of hanging
  (#1472)
  Allow user to setup new install with pre-profiles mobile device
  (#1470)

Ensure that we stay pinned to Windows taskbar on upgrade (#1473)
Ensure we are in the right category on Linux (#1473)
Ensure that we Heavye the right icon in the GNOME taskbar (#1473)

Transifex config specific to electron, updated translations (#1478)

CI:
  Bypass often-corrupt node_modules/.bin/grunt.cmd on windows (#1481)
  AppVeyor: Reduce build output due to xcopy of all emoji files
  (c2c9cd0aa2)

FREEBIE
2017-09-15 13:32:48 -07:00
Lilia
4449a5f110 Upgrade emoji support (#1482)
* Upgrade emoji deps and move to node_modules

Add support for Emoji 3.0 and switch from bower to yarn for managing emoji
dependencies.

// FREEBIE

* Delete old emoji deps

// FREEBIE

* Don't copy emoji on windows

It is no longer necessary since the symlinked image dir is gone.

// FREEBIE

* Update emoji test

// FREEBIE

* Fix emoji tests; remove all overrides of emoji-js functions

FREEBIE
2017-09-15 13:22:11 -07:00
Scott Nonnenberg
c6d461c579
Bypass often-corrupt node_modules/.bin/grunt.cmd on windows (#1481)
FREEBIE
2017-09-15 10:20:29 -07:00
Scott Nonnenberg
c2c9cd0aa2
AppVeyor: Reduce build output due to xcopy of all emoji files
FREEBIE
2017-09-14 17:48:15 -07:00
Scott Nonnenberg
48f625c392
Move app theming from index to app view (#1479)
Apply theming one level higher so it applies to the debug log.

// FREEBIE
2017-09-14 17:48:15 -07:00
Lilia
fe4738a6e8
Transifex config specific to electron, updated translations (#1478)
* Add transifex config to git

So we can pull different translation resources from different branches.

// FREEBIE

* Pull the electron strings from transifex

* Update translations
2017-09-14 17:48:09 -07:00
Lilia
f698d0bc51
Better install view error handling (#1472)
If linking fails because an http request didn't connect, show a message and
allow the user to start over.

// FREEBIE
2017-09-14 17:04:03 -07:00
Scott Nonnenberg
e6c7ebcaf9
Update builder (Windows taskbar), tweak config (GNOME taskbar) (#1473)
* Update electron-builder and config, grunt-exec, and spellchecker

electron-builder is a major update: ^18.8.1 -> ^19.27.3

Fixes #1463, where we lose the user's decision to pin to taskbar

The other three are all minor changes, but it's generally good to stay
up to date.

FREEBIE

* Add category for our Linux build target

Fixes #1460, though the recommended list of categories doesn't seem to
match what is shown in Linux Mint. Hopefully it understands that
what was previously 'Networking' should now be 'Internet'

Standard list:
  https://standards.freedesktop.org/menu-spec/latest/apa.html

FREEBIE

* Add StartupWMClass to .desktop file so GNOME can find running app

Fixes #1432

FREEBIE
2017-09-14 17:04:03 -07:00
Lilia
fc952fbaf6
Handle provisioning messages with no profile key (#1470)
This can happen while linking to an older mobile client.

// FREEBIE
2017-09-14 17:04:03 -07:00
Lilia
c832324cb9
Trigger empty event on keepalive timeout (#1466) 2017-09-14 17:04:03 -07:00
Scott Nonnenberg
420cfc46be
Additional logging to help track down socket disconnect problems (#1469)
FREEBIE
2017-09-14 17:04:03 -07:00
Scott Nonnenberg
20ebdf130e
v1.0.24
Contact profiles support - display avatars and names (#1453)

Audio notes can now be recorded on Windows (#1456)

When window is snap-positioned on windows, no longer automatically
re-position window (#1455)

Ensure that our sound setting applies for all notification types (#1445)

Fix loading screen hang with application is unlinked (#1440)

Fix error dialog on initial load (#1440)

Based on https://github.com/WhisperSystems/Signal-Desktop/releases/tag/v0.43.3

FREEBIE
2017-09-14 17:04:02 -07:00
Lilia
ae190fed44
Profiles (#1453)
* Add AES-GCM encryption for profiles

With tests.

* Add profileKey to DataMessage protobuf

// FREEBIE

* Decrypt and save profile names

// FREEBIE

* Save incoming profile keys

* Move pad/unpad to crypto module

// FREEBIE

* Support fetching avatars from the cdn

// FREEBIE

* Translate failed authentication errors

When AES-GCM authentication fails, webcrypto returns a very generic error. The
same error is thrown for invalid length inputs, but our earlier checks in
decryptProfile should rule out those failure modes and leave us safe to assume
that we either had bad ciphertext or the wrong key.

// FREEBIE

* Handle profile avatars (wip) and log decrypt errors

// FREEBIE

* Display profile avatars

Synced contact avatars will still override profile avatars.

* Display profile names in convo list

Only if we don't have a synced contact name.

// FREEBIE

* Make cdn url an environment config

Use different ones for staging and production

// FREEBIE

* Display profile name in conversation header

* Display profile name in group messages

* Update conversation header if profile avatar changes

// FREEBIE

* Style profile names small with ~

* Save profileKeys from contact sync messages

// FREEBIE

* Save profile keys from provisioning messages

For standalone accounts, generate a random profile key.

// FREEBIE

* Special case for one-time sync of our profile key

Android will use a contact sync message to sync a profile key from Android
clients who have just upgraded and generated their profile key. Normally we
should receive this data in a provisioning message.

// FREEBIE

* Infer profile sharing from synced data messages

* Populate profile keys on outgoing messages

Requires that `profileSharing` be set on the conversation.

// FREEBIE

* Support for the profile key update flag

When receiving a message with this flag, don't init a message record, just
process the profile key and move on.

// FREEBIE

* Display profile names in group member list

* Refresh contact's profile on profile key changes

// FREEBIE

* Catch errors on profile save

// FREEBIE

* Save our own synced contact info

Don't return early if we get a contact sync for our own number

// FREEBIE
2017-09-14 17:04:00 -07:00
Scott Nonnenberg
02571b7ae9
Copy audio-related files into js/ instead of symlinking them (#1456)
This adds a new copy:deps task into the overall default task, and it
needs to be run before running the product for the first time, and after
upgrading audio-related deps.

FREEBIE
2017-09-14 17:03:18 -07:00
Scott Nonnenberg
272955b9d6
focus() visible window on show-window instead of show() (#1455)
When clicking on a notification in Windows when a window had been stuck
to one side of the screen using Snap, the window would be repositioned.

Fixes #1453

FREEBIE
2017-09-14 17:03:18 -07:00
Scott Nonnenberg
db869c6ce4
Scroll to bottom when adding a new message (#1450)
Added a comment to try to make this easier to understand as you read it.

FREEBIE
2017-09-14 17:03:18 -07:00
Lilia
1b444a5e23
Make os notifications respect our sound setting (#1445)
This removes our custom notification sound in favor of the system sound, and
ensures that the system sound is disabled if the user unchecks the audio
notification option.

// FREEBIE
2017-09-14 17:03:18 -07:00
Michael Kirk
f389380b26
scroll only when needed (#1441)
I believe this was just a simple typo

// FREEBIE
2017-09-14 17:03:18 -07:00
Scott Nonnenberg
af81b1a045
Fix unlinked loading screen hang, fix error dialog on start (#1440)
* main.js: check for truthiness of mainwindow, not === null

FREEBIE

* background.js: Connect to websocket even if we are unlinked

We know registration isn't done, but it has been done before. So instead
of sitting tight, we connect to the socket to start everything up and
attempt to the websocket once more.

FREEBIE
2017-09-14 17:03:18 -07:00
Scott Nonnenberg
6e5afce7d2
v1.0.23
Rebased on v0.42.3, with two additional changes.

Certificate pinning via node XMLHttpRequest implementation (#1394)

Import: Wait until db writes resolve before saying we're done (#1401)

FREEBIE
2017-09-14 17:03:18 -07:00
Lilia
50c470e53d
Certificate pinning via node XMLHttpRequest implementation (#1394)
* Add certificate pinning on https service requests

Make https requests to the server using node apis instead of browser apis, so we
can specify our own CA list, which contains only our own CA.

This protects us from MITM by a rogue CA.

As a bonus, this let's us drop the use of non-standard ports and just use good
ol' default 443 all the time, at least for http requests.

// FREEBIE

* Make certificateAuthorities an option on requests

Modify node-based xhr implementation based on driverdan/node-XMLHttpRequest,
adding support for setting certificate authorities on each request.

This allows us to pin our master CA for requests to the server and cdn but not
to the s3 attachment server, for instance. Also fix an exception when sending
binary data in a request: it is submitted as an array buffer, and must be
converted to a node Buffer since we are now using a node based request api.

// FREEBIE

* Import node-based xhr implementation

Add a copy of https://github.com/driverdan/node-XMLHttpRequest@86ff70e, and
expose it to the renderer in the preload script.

In later commits this module will be extended to support custom certificate
authorities.

// FREEBIE

* Support "arraybuffer" responseType on requests

When fetching attachments, we want the result as binary data rather than a utf8
string. This lets our node-based XMLHttpRequest honor the responseType property
if it is set on the xhr.

Note that naively using the raw `.buffer` from a node Buffer won't work, since
it is a reuseable backing buffer that is often much larger than the actual
content defined by the Buffer's offset and length.

Instead, we'll prepare a return buffer based on the response's content length
header, and incrementally write chunks of data into it as they arrive.

// FREEBIE

* Switch to self-signed server endpoint

* Log more error info on failed requests

With the node-based xhr, relevant error info are stored in statusText and
responseText when a request fails.

// FREEBIE

* Add node-based websocket w/ support for custom CA

// FREEBIE

* Support handling array buffers instead of blobs

Our node-based websocket calls onmessage with an arraybuffer instead of a blob.
For robustness (on the off chance we switch or update the socket implementation
agian) I've kept the machinery for converting blobs to array buffers.

// FREEBIE

* Destroy all wacky server ports

// FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
7a2c8e815c
Import: Wait until db writes resolve before saying we're done (#1401)
FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
9a2587eaca
v1.0.22
Rebased on v0.42.7

FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
44d8c8a06c
v1.0.21
Rebased on v0.42.6 -> migration branch

FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
5099ca0ccd
Merge locale-provided strings into english for failover support
FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
270f626cd7
Add lodash for server-side utility functions
FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
e8c7e31363
Multi-error, multi-language, and cross-platform spell-check
FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
122719688a
Add os-locale to reliably get xx-XX style locale on all OSes
FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
51768a16c4
Add semver and spellchecker directly, remove electron-provider
FREEBIE
2017-09-14 17:03:17 -07:00
lilia
ff1bad674e
Fix exception in install view
These lines throw TypeErrors for previously registered clients.

// FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
ac237b9e31
AppView: Store initialLoadComplete value for late openInbox
FREEBIE
2017-09-14 17:03:17 -07:00
Scott Nonnenberg
082919abd1
Copy emoji from components to images directory for asar creation
FREEBIE
2017-09-14 17:03:16 -07:00
Scott Nonnenberg
106626ae11
v1.0.20
Electron branch currently rebased on top of v0.42.1.

FREEBIE
2017-09-14 17:03:16 -07:00
Scott Nonnenberg
90cc0949b6
InstallView: Refactor step numbers into enum
FREEBIE
2017-09-14 17:03:16 -07:00
Scott Nonnenberg
0416d2162c
Tune the import error message: suggest re-export, debug log link
FREEBIE
2017-09-14 17:03:16 -07:00
Scott Nonnenberg
7f8ade7747
Remove migration-related functionality, leaving export stuff
FREEBIE
2017-09-14 17:03:14 -07:00
Scott Nonnenberg
413fba80af
Separate dir selection from import, better import button text
This allows us to show the 'import in progress' screen only when the
user has successfully selected a directory.

FREEBIE
2017-09-14 17:02:46 -07:00
Scott Nonnenberg
0fbe43c2dc
Protobufs: More logging on failure to load protobufs, fix tests
FREEBIE
2017-09-14 17:02:45 -07:00
Scott Nonnenberg
ff1cb3598d
Remove step 1 of previous setup flow, replaced by choice screen
FREEBIE
2017-09-14 17:02:45 -07:00
Scott Nonnenberg
ba347744ff
Import: choice on first startup, workflow, ported to Node.js fs API
FREEBIE
2017-09-14 17:02:43 -07:00
Scott Nonnenberg
9c8fe1a9d8
Reschedule all timers on time travel, set interval back to 1000ms
FREEBIE
2017-09-14 16:53:53 -07:00
Scott Nonnenberg
bc437095f6
Calm time travel checks, don't continually reschedule key rotation
FREEBIE
2017-09-14 16:53:53 -07:00
Scott Nonnenberg
f37af04818
AppView.createInbox() - set this.inboxView immediately to be ready
If the 'empty' event is fired between the updateInbox() call and the
new InboxView() call afterwards, then the loading screen will never go
away. We fix that by immediately creating the InboxView but only adding
it to the DOM when the backing data is ready.

FREEBIE
2017-09-14 16:53:53 -07:00
Scott Nonnenberg
e441a662f0
Bump version to 1.0.19
FREEBIE
2017-09-14 16:53:52 -07:00
Scott Nonnenberg
eaf31705cc
A number of fixes for loading screen, recent rebase
FREEBIE
2017-09-14 16:53:52 -07:00
lilia
854374dc7c
Remove the old debug log menu item 2017-09-14 16:53:52 -07:00
lilia
11633d7d87
Make debug log available from the installer
Move debug log from inbox view to app view so it can be opened regardless of
whether we are showing the inbox view or the installer.

// FREEBIE
2017-09-14 16:53:52 -07:00
lilia
04e40043d2
Add View -> Debug Log to menu bar
Just send an event from the main process to the renderer,
The latter routes it the appropriate view method.

For now it's a no-op unless the main window exists and it is showing the inbox,
which will be addressed in a future commit.

// FREEBIE
2017-09-14 16:53:52 -07:00